<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: version code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Fri, 16 May 2008 03:38:00 GMT</pubDate>
    <description>DZone Snippets: version code</description>
    <item>
      <title>Downgrading a new rails app</title>
      <link>http://snippets.dzone.com/posts/show/4687</link>
      <description>Use this code to downgrade to version X of rails. Use the tags found in &lt;a href="http://dev.rubyonrails.org/browser/tags"&gt;the repository&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;rails my_project&lt;br /&gt;cd my_project&lt;br /&gt;&lt;br /&gt;rake rails:freeze:edge TAG=rel_1-1-0&lt;br /&gt;ruby vendor/rails/railties/bin/rails .&lt;br /&gt;&lt;/pre&gt;</description>
      <pubDate>Mon, 22 Oct 2007 13:29:41 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4687</guid>
      <author>leethal (August Lilleaas)</author>
    </item>
    <item>
      <title>Get OS version</title>
      <link>http://snippets.dzone.com/posts/show/3892</link>
      <description>&lt;code&gt;&lt;br /&gt; public static string GetMachineOS()&lt;br /&gt; {&lt;br /&gt;  if (Environment.OSVersion.Platform == PlatformID.Win32NT)&lt;br /&gt;  {&lt;br /&gt;   if (Environment.OSVersion.Version.Major&lt;=4)&lt;br /&gt;    return String.Format("Windows NT {0}", Environment.OSVersion.Version.ToString());&lt;br /&gt;   if (Environment.OSVersion.Version.Major==5)&lt;br /&gt;   {&lt;br /&gt;    if (Environment.OSVersion.Version.Minor==0)&lt;br /&gt;     return String.Format("Windows 2000 {0}", Environment.OSVersion.Version.ToString());&lt;br /&gt;    else&lt;br /&gt;     return String.Format("Windows XP {0}", Environment.OSVersion.Version.ToString());&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;   &lt;br /&gt;  if (Environment.OSVersion.Platform == PlatformID.Win32Windows)&lt;br /&gt;  {&lt;br /&gt;   if (Environment.OSVersion.Version.Major&gt;=4)&lt;br /&gt;   {&lt;br /&gt;    if (Environment.OSVersion.Version.Minor==0)&lt;br /&gt;     return String.Format("Windows 95 {0}", Environment.OSVersion.Version.ToString());    &lt;br /&gt;    else if (Environment.OSVersion.Version.Minor&lt;90)&lt;br /&gt;     return String.Format("Windows 98 {0}", Environment.OSVersion.Version.ToString());&lt;br /&gt;    else&lt;br /&gt;     return String.Format("Windows Millenim Edition {0}", Environment.OSVersion.Version.ToString());&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  return Environment.OSVersion.ToString(); //ELSE&lt;br /&gt; }&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Tue, 24 Apr 2007 22:43:39 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/3892</guid>
      <author>mstampar (Miroslav Stampar)</author>
    </item>
    <item>
      <title>step-version</title>
      <link>http://snippets.dzone.com/posts/show/2454</link>
      <description>&lt;code&gt;&lt;br /&gt;step-version: func [&lt;br /&gt;    val [tuple!]&lt;br /&gt;    segment [word!] "'major, 'minor, or 'build"&lt;br /&gt;    /local res&lt;br /&gt;][&lt;br /&gt;    switch segment [&lt;br /&gt;        build [res: val + 0.0.1]&lt;br /&gt;        minor [res: val + 0.1.0  res/3: 0]&lt;br /&gt;        major [res: val + 1.0.0  res/2: 0  res/3: 0]&lt;br /&gt;    ]&lt;br /&gt;    either res &gt; val [res] [none]&lt;br /&gt;]&lt;br /&gt;&lt;br /&gt;can-step-version?: func [&lt;br /&gt;    val [tuple!]&lt;br /&gt;    segment [word!] "'major, 'minor, or 'build"&lt;br /&gt;][&lt;br /&gt;    either step-version val segment [true] [false]&lt;br /&gt;]&lt;br /&gt;&lt;br /&gt;; foreach val [&lt;br /&gt;;     0.0.0 0.0.255&lt;br /&gt;;     0.1.0 0.255.0 0.255.255&lt;br /&gt;;     1.0.0 0.255.255&lt;br /&gt;;     254.255.255 255.255.254&lt;br /&gt;;     255.254.255 254.255.255&lt;br /&gt;; ][&lt;br /&gt;;     foreach seg [build minor major] [&lt;br /&gt;;         print [val tab seg tab can-step-version? val seg tab attempt [step-version val seg]]&lt;br /&gt;;     ]&lt;br /&gt;; ]&lt;br /&gt;; print attempt [step-version 254.255.255 'test]&lt;br /&gt;; halt&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Tue, 22 Aug 2006 01:34:41 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2454</guid>
      <author>gregg.irwin (Gregg Irwin)</author>
    </item>
    <item>
      <title>Getting phone model</title>
      <link>http://snippets.dzone.com/posts/show/1670</link>
      <description>I put Korakot snippet &lt;a href="http://www.bigbold.com/snippets/posts/show/1641"&gt; (Looking up phone model using firmware &lt;/a&gt;code) into an useful module.&lt;br /&gt;&lt;br /&gt;You need &lt;a href="http://pdis.hiit.fi/pdis/download/miso"&gt;miso module&lt;/a&gt;. &lt;br /&gt;All info can be found at &lt;a href="http://homepage.mac.com/alvinmok/nokia/firmware.html"&gt;this site&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#&lt;br /&gt;# Firmware.py  infos found at http://homepage.mac.com/alvinmok/nokia/firmware.html&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;'''&lt;br /&gt;firmware.prefix_name &lt;br /&gt;firmware.suffix_name &lt;br /&gt;firmware.phone_model&lt;br /&gt;firmware.phone_cpu_speed&lt;br /&gt;'''&lt;br /&gt;import sysinfo&lt;br /&gt;import miso&lt;br /&gt;&lt;br /&gt;ECPUSpeed = 0x0B&lt;br /&gt;&lt;br /&gt;mapping_firmware_model={&lt;br /&gt;  'RM-51': '3230',&lt;br /&gt;  'RM-38': '3250',&lt;br /&gt;  'NHM-10': '3600',&lt;br /&gt;  'NHM-10X': '3620',&lt;br /&gt;  'NHL-8': '3650',&lt;br /&gt;  'NHL-8X': '3660',&lt;br /&gt;  'RM-25': '6260',&lt;br /&gt;  'RM-29': '6260b',&lt;br /&gt;  'NHL-10': '6600',&lt;br /&gt;  'NHL-12': '6620',&lt;br /&gt;  'NHL-12X': '6620',&lt;br /&gt;  'RM-1': '6630',&lt;br /&gt;  'RH-67': '6670',&lt;br /&gt;  'RH-68': '6670b',&lt;br /&gt;  'RM-36': '6680',&lt;br /&gt;  'RM-57': '6681',&lt;br /&gt;  'RM-58': '6682',&lt;br /&gt;  'RH-51': '7610',&lt;br /&gt;  'RH-52': '7610b',&lt;br /&gt;  'NHL-2NA': '7650',&lt;br /&gt;  'RM-49': 'E60-1',&lt;br /&gt;  'RM-89': 'E61-1',&lt;br /&gt;  'RM-10': 'E70-1',&lt;br /&gt;  'RM-24': 'E70-?',&lt;br /&gt;  'NEM-4': 'N-Gage',&lt;br /&gt;  'RH-29': 'N-Gage QD (asia/europe)',&lt;br /&gt;  'RH-47': 'N-Gage QD (americas)',&lt;br /&gt;  'RM-84': 'N70-1',&lt;br /&gt;  'RM-99': 'N70-5',&lt;br /&gt;  'RM-67': 'N71-1',&lt;br /&gt;  'RM-112': 'N71-5',&lt;br /&gt;  'RM-91': 'N80-3',&lt;br /&gt;  'RM-92': 'N80-1',&lt;br /&gt;  'RM-42': 'N90-1',&lt;br /&gt;  'RM-43': 'N91-1',&lt;br /&gt;  'RM-158': 'N91-5' }&lt;br /&gt;&lt;br /&gt;mapping_prefix_description ={&lt;br /&gt; 'N':'Mobile Phone',&lt;br /&gt; 'R':'Computing Device',&lt;br /&gt; 'T':'Terminal'}&lt;br /&gt;&lt;br /&gt;mapping_suffix_description ={&lt;br /&gt;    'B': 'GSM 900/1900',&lt;br /&gt;    'C': 'DAMPS 800',&lt;br /&gt;    'D': 'CDMA/AMPS 800',&lt;br /&gt;    'E': 'GSM 900/1800',&lt;br /&gt;    'F': 'NMT-450',&lt;br /&gt;    'K': 'GSM 1800',&lt;br /&gt;    'L': 'GSM 900/1800/1900 or GSM 850/1800/1900',&lt;br /&gt;    'M': 'EGSM 900/1800 (may include WCDMA)',&lt;br /&gt;    'N': 'IEEE 802.11b',&lt;br /&gt;    'P': 'CDMA 800',&lt;br /&gt;    'W': 'AMPS/TDMA 800/1900',&lt;br /&gt;    'X': 'ETACS/TACS'}&lt;br /&gt;&lt;br /&gt;sw = sysinfo.sw_version()&lt;br /&gt;sw_list = sw.split(' ')&lt;br /&gt;&lt;br /&gt;firmware_version = sw_list[1]&lt;br /&gt;firmware_date = sw_list[2]&lt;br /&gt;firmware_code=sw_list[3]&lt;br /&gt;&lt;br /&gt;temp = firmware_code.split('-')&lt;br /&gt;firmware_prefix = temp[0][0]&lt;br /&gt;firmware_suffix = temp[0][-1]&lt;br /&gt;&lt;br /&gt;prefix_name = mapping_prefix_description[firmware_prefix]&lt;br /&gt;suffix_name = mapping_suffix_description[firmware_suffix]&lt;br /&gt;phone_model = mapping_firmware_model[firmware_code] &lt;br /&gt;phone_cpu_speed = miso.get_hal_attr(ECPUSpeed) # CPU speed in Hz&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;usage:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&gt;&gt;&gt;import firmware&lt;br /&gt;&gt;&gt;&gt;firmware.phone_model&lt;br /&gt;&gt;&gt;&gt;'6600'&lt;br /&gt;&gt;&gt;&gt;firmware.phone_cpu_speed&lt;br /&gt;&gt;&gt;&gt;104000&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;</description>
      <pubDate>Thu, 09 Mar 2006 17:11:46 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/1670</guid>
      <author>cyke64 (cyke64)</author>
    </item>
    <item>
      <title>Looking up phone model using firmware code</title>
      <link>http://snippets.dzone.com/posts/show/1641</link>
      <description>You can lookup the firmware code by&lt;br /&gt;&lt;code&gt;&lt;br /&gt;dial *#0000#&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;For pys60 you can use&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&gt;&gt;&gt; import sysinfo&lt;br /&gt;&gt;&gt;&gt; sysinfo.sw_version()&lt;br /&gt;u'V 3.42.1 16-10-03 NHL-10 (c) NMP'&lt;br /&gt;&gt;&gt;&gt; firmware = _.split(' ')[3]&lt;br /&gt;&gt;&gt;&gt; firmware&lt;br /&gt;u'NHL-10'&lt;br /&gt;&gt;&gt;&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Looking at the table &lt;a href=http://homepage.mac.com/alvinmok/nokia/firmware.html&gt;here&lt;/a&gt;, a mapping can be made.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&gt;&gt;&gt; mapping = {&lt;br /&gt;  'RM-51': '3230',&lt;br /&gt;  'RM-38': '3250',&lt;br /&gt;  'NHM-10': '3600',&lt;br /&gt;  'NHM-10X': '3620',&lt;br /&gt;  'NHL-8': '3650',&lt;br /&gt;  'NHL-8X': '3660',&lt;br /&gt;  'RM-25': '6260',&lt;br /&gt;  'RM-29': '6260b',&lt;br /&gt;  'NHL-10': '6600',&lt;br /&gt;  'NHL-12': '6620',&lt;br /&gt;  'NHL-12X': '6620',&lt;br /&gt;  'RM-1': '6630',&lt;br /&gt;  'RH-67': '6670',&lt;br /&gt;  'RH-68': '6670b',&lt;br /&gt;  'RM-36': '6680',&lt;br /&gt;  'RM-57': '6681',&lt;br /&gt;  'RM-58': '6682',&lt;br /&gt;  'RH-51': '7610',&lt;br /&gt;  'RH-52': '7610b',&lt;br /&gt;  'NHL-2NA': '7650',&lt;br /&gt;  'RM-49': 'E60-1',&lt;br /&gt;  'RM-89': 'E61-1',&lt;br /&gt;  'RM-10': 'E70-1',&lt;br /&gt;  'RM-24': 'E70-?',&lt;br /&gt;  'NEM-4': 'N-Gage',&lt;br /&gt;  'RH-29': 'N-Gage QD (asia/europe)',&lt;br /&gt;  'RH-47': 'N-Gage QD (americas)',&lt;br /&gt;  'RM-84': 'N70-1',&lt;br /&gt;  'RM-99': 'N70-5',&lt;br /&gt;  'RM-67': 'N71-1',&lt;br /&gt;  'RM-112': 'N71-5',&lt;br /&gt;  'RM-91': 'N80-3',&lt;br /&gt;  'RM-92': 'N80-1',&lt;br /&gt;  'RM-42': 'N90-1',&lt;br /&gt;  'RM-43': 'N91-1',&lt;br /&gt;  'RM-158': 'N91-5' }&lt;br /&gt;&gt;&gt;&gt; mapping[firmware]&lt;br /&gt;'6600'&lt;br /&gt;&gt;&gt;&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Mon, 06 Mar 2006 16:49:46 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/1641</guid>
      <author>korakot (Korakot Chaovavanich)</author>
    </item>
    <item>
      <title>get-version-ex API</title>
      <link>http://snippets.dzone.com/posts/show/1152</link>
      <description>&lt;code&gt;&lt;br /&gt;REBOL [&lt;br /&gt;    Title:   "Get Windows Version"&lt;br /&gt;    File:    %get-version-ex.r&lt;br /&gt;    Author:  "Gregg Irwin"&lt;br /&gt;    Email:   greggirwin@acm.org&lt;br /&gt;    Version: 0.0.1&lt;br /&gt;    Date:    23-sep-2003&lt;br /&gt;    Purpose: {&lt;br /&gt;        Shows how to call Windows GetVersonEx function.&lt;br /&gt;    }&lt;br /&gt;    library: [&lt;br /&gt;        level:    'intermediate&lt;br /&gt;        platform: 'windows&lt;br /&gt;        type:     [function how-to]&lt;br /&gt;        domain:   [external-library win-api]&lt;br /&gt;        tested-under: [view/pro 1.2.8.3.1 on W2K]&lt;br /&gt;        support:  none&lt;br /&gt;        license:  none&lt;br /&gt;        see-also: none&lt;br /&gt;    ]&lt;br /&gt;]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;; The credit for this technique of dealing with fixed char arrays&lt;br /&gt;; in structs belongs to Pekr and Cyphre. I just modded the idea a&lt;br /&gt;; bit for my own uses.&lt;br /&gt;make-elements: func [name count type /local result][&lt;br /&gt;    if not word? type [type: type?/word type]&lt;br /&gt;    result: copy "^/"&lt;br /&gt;    repeat i count [&lt;br /&gt;        append result join name [i " [" type "]" newline]&lt;br /&gt;    ]&lt;br /&gt;    to block! result&lt;br /&gt;]&lt;br /&gt;&lt;br /&gt;kernel.dll: load/library %kernel32.dll&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;OSVERSIONINFOEXA: make struct! OSVERSIONINFOEXA-def: compose/deep [&lt;br /&gt;    dwOSVersionInfoSize [integer!]  ; DWORD&lt;br /&gt;    dwMajorVersion      [integer!]  ; DWORD&lt;br /&gt;    dwMinorVersion      [integer!]  ; DWORD&lt;br /&gt;    dwBuildNumber       [integer!]  ; DWORD&lt;br /&gt;    dwPlatformId        [integer!]  ; DWORD&lt;br /&gt;    (make-elements 'szCSDVersion 128 #"@")  ; TCHAR&lt;br /&gt;    wServicePackMajor   [short]     ; WORD&lt;br /&gt;    wServicePackMinor   [short]     ; WORD&lt;br /&gt;    wSuiteMask          [short]     ; WORD&lt;br /&gt;    wProductType        [char!]     ; BYTE&lt;br /&gt;    wReserved           [char!]     ; BYTE&lt;br /&gt;] none&lt;br /&gt;OSVERSIONINFOEXA/dwOSVersionInfoSize: length? third OSVERSIONINFOEXA&lt;br /&gt;&lt;br /&gt;GetLastError: make routine! [return: [integer!]] kernel.dll "GetLastError"&lt;br /&gt;&lt;br /&gt;GetVersionEx: make routine! compose/deep/only [&lt;br /&gt;    lpVersionInformation    [struct! (OSVERSIONINFOEXA-def)] ;LPOSVERSIONINFO&lt;br /&gt;    return:     [integer!]  ;BOOL&lt;br /&gt;] kernel.dll "GetVersionExA"&lt;br /&gt;&lt;br /&gt;get-version: has [res] [&lt;br /&gt;    res: GetVersionEx OSVERSIONINFOEXA&lt;br /&gt;    either 0 = res [none][OSVERSIONINFOEXA]&lt;br /&gt;]&lt;br /&gt;&lt;br /&gt;; test call&lt;br /&gt;print either res: get-version [&lt;br /&gt;    [&lt;br /&gt;        "Major:" res/dwMajorVersion newline&lt;br /&gt;        "Minor:" res/dwMinorVersion newline&lt;br /&gt;        "Build:" res/dwBuildNumber  newline&lt;br /&gt;        "SP.Major:" res/wServicePackMajor   newline&lt;br /&gt;        "SP.Minor:" res/wServicePackMinor   newline&lt;br /&gt;        "Suite"   mold res/wSuiteMask    newline&lt;br /&gt;        "Product" mold res/wProductType  newline&lt;br /&gt;        "Version:" to-string copy/part at third OSVERSIONINFOEXA 21 128&lt;br /&gt;    ]&lt;br /&gt;][&lt;br /&gt;    ["Call failed: " GetLastError]&lt;br /&gt;]&lt;br /&gt;&lt;br /&gt;free kernel.dll&lt;br /&gt;&lt;br /&gt;halt&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Fri, 13 Jan 2006 04:21:52 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/1152</guid>
      <author>gregg.irwin (Gregg Irwin)</author>
    </item>
    <item>
      <title>Release description</title>
      <link>http://snippets.dzone.com/posts/show/1002</link>
      <description>// Release description&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#                                 1.1.0 patchlevel 1&lt;br /&gt;#                                 | | |            |&lt;br /&gt;#          Code base version -----/ | |            |&lt;br /&gt;#          Major version -----------/ |            |&lt;br /&gt;#          Minor version -------------/            |&lt;br /&gt;#          Patchlevel -----------------------------/&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Thu, 22 Dec 2005 00:16:53 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/1002</guid>
      <author>levysoft (Antonio)</author>
    </item>
    <item>
      <title>New sysinfo module</title>
      <link>http://snippets.dzone.com/posts/show/378</link>
      <description>In the 1.1.0 release of python series 60, the sysinfo module &lt;br /&gt;provides some useful information&lt;br /&gt;&lt;code&gt;&lt;br /&gt;from sysinfo import *&lt;br /&gt;&lt;br /&gt;level = battery()  # from 0 to 7&lt;br /&gt;sig = signal() # signal strength 0-7&lt;br /&gt;&lt;br /&gt;width, height = displaypixels() # 176, 208&lt;br /&gt;free_space = drive_free()['C:'] # 'E:' for memcard&lt;br /&gt;&lt;br /&gt;imei_num = imei()  # can be used as ID&lt;br /&gt;osversion() # (major, minor, build)&lt;br /&gt;swversion() # "V 3.42.1 16-10-03 NHL-10 (c) NMP"</description>
      <pubDate>Thu, 09 Jun 2005 14:55:20 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/378</guid>
      <author>korakot (Korakot Chaovavanich)</author>
    </item>
  </channel>
</rss>
