<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1136927038369577335</id><updated>2012-01-28T13:20:45.530+08:00</updated><category term='Stock'/><category term='MZK-NAS02SG'/><category term='hotmail'/><category term='Android Phone'/><category term='openssh server'/><category term='Android NDK C++'/><category term='HK Radio'/><category term='decrpyt key'/><category term='pastbin'/><category term='SystemVersion.plist'/><category term='remove ads'/><category term='iPhone ipa'/><category term='iPod Firmware'/><category term='MSI Wind'/><category term='iPhone OS 3.0'/><category term='NAS'/><category term='mytv.tvb.com'/><category term='Skype'/><category term='pthread_cancel'/><category term='Google Sync'/><category term='Stanza USB'/><category term='epub'/><category term='Galaxy Tab'/><category term='iPhone3G'/><category term='git'/><category term='WinRAR v3.80'/><category term='HUAWEI'/><category term='iPod'/><category term='Firewall iP'/><category term='Mac'/><category term='App Store'/><category term='香港天氣及日曆'/><category term='iPhone ToolChain'/><category term='Mac-Mini'/><category term='wget'/><category term='iPhone unlock'/><category term='Parallels Desktop'/><category term='Binary strstr'/><category term='iPhone SDK'/><category term='vfdecrypt'/><category term='mysql'/><category term='MZK-NAS01SG'/><category term='iPhone restore'/><category term='Windows 7 Product Key'/><category term='Pwnage'/><category term='MCleaner Activation Code'/><category term='Android SDK'/><category term='OSX'/><category term='decrypt ipa'/><category term='WP7 Hacks'/><category term='main.h'/><category term='photo'/><category term='Call Recording'/><category term='iPhone'/><category term='iTunes'/><category term='emulator'/><category term='ringtones'/><category term='WhatsApp'/><category term='VNC'/><category term='iPhone backup'/><category term='IES4OSX'/><category term='Android skin'/><category term='MobileInstallation'/><category term='SSH timeout'/><category term='WP7 Registration Error'/><category term='decrypt'/><category term='weather.yahooapis'/><category term='iPhone 3GS'/><category term='iPhone Firmware'/><category term='VirtualBox'/><category term='display-mirroring'/><category term='iTunes Account'/><category term='fedora'/><category term='gadget'/><category term='Debian Chinese'/><category term='png'/><category term='default write'/><category term='Windows Phone'/><category term='mytv live'/><category term='Makefile'/><category term='appcfg.py upload_data'/><category term='Donation'/><category term='Virtual PC 2007'/><category term='iLife 09'/><category term='vfdecrypt113'/><category term='iPhone Utilities'/><category term='xpwntool'/><category term='Office For Mac 2011'/><category term='Input Method'/><category term='Terminal'/><category term='Windows OS'/><category term='ziPhone'/><category term='Android'/><category term='replace tar sed'/><category term='iOS 4.2 beta 3'/><category term='Mac OSX'/><category term='Aspen'/><category term='NSA-320'/><category term='redsn0w'/><category term='Free iTunes Song'/><category term='Microsoft Office'/><category term='PCI'/><category term='Debian'/><category term='SBSettings'/><category term='ikee'/><category term='Fonts'/><category term='SImuator'/><category term='Mac Office SP1'/><category term='Emulator Hack'/><category term='iWork 09'/><category term='appulous'/><category term='MyWi'/><category term='Google App Engine'/><category term='Flash Player old versions'/><category term='Snow Leopard'/><category term='Stocks'/><category term='iPhone Installer Scripts'/><category term='appcfg.py download_data'/><category term='iPA God'/><category term='eee pc'/><category term='iPhone 2.0 application'/><category term='Android NDK'/><category term='img2png'/><category term='Ubuntu'/><category term='iPad'/><category term='iTunes Old Versions'/><category term='Google Apps'/><category term='mkisofs'/><category term='支付寶增值方法'/><title type='text'>CK's IT blog</title><subtitle type='html'>This is my blog on the use of  &lt;br/&gt;iPhone in Mac, Windows &amp; Linux.
&lt;br/&gt;</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default?start-index=101&amp;max-results=100'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>145</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-6640195551612543147</id><published>2012-01-25T07:45:00.001+08:00</published><updated>2012-01-25T07:45:43.103+08:00</updated><title type='text'>hosts</title><content type='html'>&lt;code&gt;&lt;br /&gt;127.0.0.1 activate.adobe.com&lt;br /&gt;127.0.0.1 practivate.adobe.com&lt;br /&gt;127.0.0.1 ereg.adobe.com&lt;br /&gt;127.0.0.1 activate.wip3.adobe.com&lt;br /&gt;127.0.0.1 wip3.adobe.com&lt;br /&gt;127.0.0.1 3dns-3.adobe.com&lt;br /&gt;127.0.0.1 3dns-2.adobe.com&lt;br /&gt;127.0.0.1 adobe-dns.adobe.com&lt;br /&gt;127.0.0.1 adobe-dns-2.adobe.com&lt;br /&gt;127.0.0.1 adobe-dns-3.adobe.com&lt;br /&gt;127.0.0.1 ereg.wip3.adobe.com&lt;br /&gt;127.0.0.1 activate-sea.adobe.com&lt;br /&gt;127.0.0.1 wwis-dubc1-vip60.adobe.com&lt;br /&gt;127.0.0.1 activate-sjc0.adobe.com&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-6640195551612543147?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/6640195551612543147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=6640195551612543147' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/6640195551612543147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/6640195551612543147'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2012/01/hosts.html' title='hosts'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-5432467002420584797</id><published>2011-10-23T09:52:00.005+08:00</published><updated>2011-10-30T10:53:47.214+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Call Recording'/><category scheme='http://www.blogger.com/atom/ns#' term='Skype'/><category scheme='http://www.blogger.com/atom/ns#' term='Android Phone'/><title type='text'>Android Phone Call Recording - Milestone (Droid) 3</title><content type='html'>&lt;span class="Apple-style-span"   style="font-size:180%;color:#cc0000;"&gt;ME863 Milestone 3&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-Ih2oiDpkAP8/TqN0xyLXQxI/AAAAAAAABaM/dA7ga0UgI2o/s1600/milestone3phonerecording_en.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 353px;" src="http://4.bp.blogspot.com/-Ih2oiDpkAP8/TqN0xyLXQxI/AAAAAAAABaM/dA7ga0UgI2o/s400/milestone3phonerecording_en.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5666501154794062610" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-epZ_yHf3tVE/TqNzk65bTEI/AAAAAAAABaA/rcYDZPbx3E0/s1600/milestone3phonerecording.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 353px;" src="http://4.bp.blogspot.com/-epZ_yHf3tVE/TqNzk65bTEI/AAAAAAAABaA/rcYDZPbx3E0/s400/milestone3phonerecording.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5666499834284821570" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here is the working Skype for Milestone 3 / Droid 3&lt;br /&gt;http://www.mediafire.com/?my50anhr2lp7ueq&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-5432467002420584797?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/5432467002420584797/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=5432467002420584797' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/5432467002420584797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/5432467002420584797'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2011/10/android-phone-recording-milestone-droid.html' title='Android Phone Call Recording - Milestone (Droid) 3'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-Ih2oiDpkAP8/TqN0xyLXQxI/AAAAAAAABaM/dA7ga0UgI2o/s72-c/milestone3phonerecording_en.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-7620439941823557349</id><published>2011-10-14T04:04:00.001+08:00</published><updated>2011-10-14T04:06:16.248+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='display-mirroring'/><title type='text'>Enable Display Mirroring for iPad 1</title><content type='html'>This is how to use the plutil utility&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#back up K48AP.plist&lt;br /&gt;cp -p /System/Library/CoreServices/SpringBoard.app/K48AP.plist /System/Library/CoreServices/SpringBoard.app/K48AP.plist.bak&lt;br /&gt;#patch&lt;br /&gt;plutil -key capabilities -key display-mirroring -yes /System/Library/CoreServices/SpringBoard.app/K48AP.plist &lt;br /&gt;#check&lt;br /&gt;plutil -key capabilities  /System/Library/CoreServices/SpringBoard.app/K48AP.plist &lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-7620439941823557349?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/7620439941823557349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=7620439941823557349' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/7620439941823557349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/7620439941823557349'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2011/10/enable-display-mirroring-for-ipad-1.html' title='Enable Display Mirroring for iPad 1'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-5921433761279482483</id><published>2011-09-03T20:06:00.006+08:00</published><updated>2011-09-03T20:18:15.769+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Office For Mac 2011'/><title type='text'>Office For Mac 2011 Direct Download Links</title><content type='html'>Office For Mac 2011&lt;br /&gt;&lt;br /&gt;English Version http://msft.digitalrivercontent.net/mac/X17-45975.dmg&lt;br /&gt;&lt;br /&gt;Traditional Chinese Version http://msft.digitalrivercontent.net/mac/X17-45992.dmg&lt;br /&gt;&lt;br /&gt;Updates (Eng): http://www.microsoft.com/mac/downloads&lt;br /&gt;Updates (zh): http://www.microsoft.com/hk/mac/zh-hk/downloads&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.2shared.com/file/mv4xcvqq/Office_For_Mac_2011_Patchpkg.html"&gt;&lt;span class="Apple-style-span"  style="color:#ff0000;"&gt;Patch&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-5921433761279482483?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/5921433761279482483/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=5921433761279482483' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/5921433761279482483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/5921433761279482483'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2011/09/office-for-mac-2011-direct-download.html' title='Office For Mac 2011 Direct Download Links'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-5122362433691079490</id><published>2011-08-28T16:47:00.003+08:00</published><updated>2011-08-30T12:55:05.590+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mytv.tvb.com'/><title type='text'>XBMC plugin mytv.tvb.com</title><content type='html'>&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-Mhy2rgYl6n8/TloAvyuq4EI/AAAAAAAABYs/yGmdZv07uuY/s1600/mytv.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://2.bp.blogspot.com/-Mhy2rgYl6n8/TloAvyuq4EI/AAAAAAAABYs/yGmdZv07uuY/s400/mytv.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5645825903933710402" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-_x1NGcgOu1c/TlxtHkXIu_I/AAAAAAAABY0/Mv9aHRn_sVc/s1600/mytv2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/-_x1NGcgOu1c/TlxtHkXIu_I/AAAAAAAABY0/Mv9aHRn_sVc/s400/mytv2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5646508009602989042" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-5122362433691079490?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/5122362433691079490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=5122362433691079490' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/5122362433691079490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/5122362433691079490'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2011/08/xbmc-plugin-mytvtvbcom.html' title='XBMC plugin mytv.tvb.com'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-Mhy2rgYl6n8/TloAvyuq4EI/AAAAAAAABYs/yGmdZv07uuY/s72-c/mytv.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-6937779811312016054</id><published>2011-08-14T15:47:00.029+08:00</published><updated>2011-11-27T19:34:49.367+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android NDK'/><title type='text'>How to build Android ndk sample using ant</title><content type='html'>This is a walkthrough of how to build the hello-jni sample from Android ndk after you have installed sdk and ndk.  You want to use ant instead of Eclipse for building sample project.&lt;br /&gt;&lt;br /&gt;Suppose your install paths of sdk and ndk are&lt;br /&gt;&lt;code&gt;~/android-sdk-mac_x86  and ~/android-ndk-r5c&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Setup PATH&lt;br /&gt;&lt;code&gt;export PATH=${PATH}:~/android-sdk-mac_x86/tools:~/android-ndk-r5c&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;ndk-build&lt;br /&gt;&lt;code&gt;cd ~/android-ndk-r5c/samples/hello-jni&lt;br /&gt;ndk-build&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;list target (assume sdk installed)&lt;br /&gt;&lt;code&gt;android list target&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;update project with target 1&lt;br /&gt;&lt;code&gt;android update project -t 1 -p .&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;list avd  (suppose AVD4G created during sdk installation)&lt;br /&gt;&lt;code&gt;android list avd&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;start emulator&lt;br /&gt;&lt;code&gt;emulator -avd AVD4G -scale 0.5 &amp;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;debug build&lt;br /&gt;&lt;code&gt;ant debug&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;install to emulator&lt;br /&gt;&lt;code&gt;ant install&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;use ant uninstall to remove&lt;br /&gt;&lt;br /&gt;If you want to code-sign the binary, first create the build.properties and self-signing certificate and compile release&lt;br /&gt;&lt;br /&gt;create build.properties&lt;br /&gt;&lt;code&gt;&lt;br /&gt;# location of the keystore. This is used by ant release&lt;br /&gt;key.store= /my-path-to-mykey/my.keystore&lt;br /&gt;key.alias=mykeystore&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;create self-signing certificate and compile release&lt;br /&gt;&lt;code&gt;keytool -genkey -v -keystore /my-path-to-mykey/my.keystore -alias mykeystore -keyalg RSA -keysize 2048 -validity 10000&lt;br /&gt;ant release&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;&lt;br /&gt;This is how to compile C++ program with stlport in ndk&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd ~/android-ndk-r5c/samples/test-libstdc++&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;modify jni/test-libstl.cpp to&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;using namespace std;&lt;br /&gt;&lt;br /&gt;int main() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;cout &lt;&lt; "hello, world\n";&lt;br /&gt;&amp;nbsp;&amp;nbsp;return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;create jni/Application.mk with&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;APP_STL := stlport_static&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;modify jni/Android.mk with&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;LOCAL_PATH := $(call my-dir)&lt;br /&gt;&lt;br /&gt;include $(CLEAR_VARS)&lt;br /&gt;LOCAL_MODULE := test-libstl&lt;br /&gt;LOCAL_SRC_FILES := test-libstl.cpp&lt;br /&gt;LOCAL_LDLIBS    := -llog&lt;br /&gt;&lt;br /&gt;include $(BUILD_EXECUTABLE)&lt;br /&gt;&lt;br /&gt;include $(CLEAR_VARS) &lt;br /&gt;LOCAL_EXECUTABLE := test-libstl&lt;br /&gt;&lt;br /&gt;run:&lt;br /&gt; ~/android-sdk-mac_x86/platform-tools/adb push libs/armeabi/$(LOCAL_MODULE) /data/local/bin/$(LOCAL_MODULE)&lt;br /&gt; ~/android-sdk-mac_x86/platform-tools/adb shell chmod 755 /data/local/bin/$(LOCAL_MODULE)&lt;br /&gt; ~/android-sdk-mac_x86/platform-tools/adb shell /data/local/bin/$(LOCAL_MODULE)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;run with emulator&lt;br /&gt;&lt;code&gt;&lt;br /&gt;ndk-build clean &amp;&amp; ndk-build&lt;br /&gt;ndk-build run&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;For Windows, add this PATH in environment (path should not have spaces)&lt;br /&gt;C:\Android\android-sdk\tools;C:\Android\apache-ant-1.8.2\bin;C:\Android\android-ndk-r6;&lt;br /&gt;&lt;br /&gt;JAVA_HOME=C:\Program Files\Java\jdk1.6.0_29&lt;br /&gt;&lt;br /&gt;and you need cygwin to start ndk-build&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-6937779811312016054?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/6937779811312016054/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=6937779811312016054' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/6937779811312016054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/6937779811312016054'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2011/08/how-to-build-android-ndk-sample-using.html' title='How to build Android ndk sample using ant'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-6376705716870913855</id><published>2011-07-15T12:23:00.010+08:00</published><updated>2011-07-17T09:32:46.449+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Binary strstr'/><title type='text'>Binary strstr</title><content type='html'>strstr is a Standard C function but it cannot handle '\0'.  Here is the modified version to handle binary data.  The bstrstr confronts to strstr and returns char*&lt;br /&gt;&lt;br /&gt;&lt;dl class="codebox"&gt;&lt;dt&gt;bstrstr    &lt;a href="#" onclick="selectCode(this); return false;"&gt;Select all&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;code&gt;&lt;br /&gt;char *(bstrstr)(const char *s1, size_t l1, const char *s2, size_t l2) {&lt;br /&gt;  /* find first occurrence of s2[] in s1[] for length l1*/&lt;br /&gt;  const char *ss1 = s1;&lt;br /&gt;  const char *ss2 = s2;&lt;br /&gt;  /* handle special case */&lt;br /&gt;  if (l1 == 0)&lt;br /&gt;    return (NULL);&lt;br /&gt;  if (l2 == 0)&lt;br /&gt;    return ((char *)s1);&lt;br /&gt;&lt;br /&gt;  /* match prefix */&lt;br /&gt;    for (; (s1 = bstrchr(s1, *s2, ss1-s1+l1)) != NULL &amp;&amp; ss1-s1+l1!=0; ++s1) {&lt;br /&gt;&lt;br /&gt;    /* match rest of prefix */&lt;br /&gt;    const char *sc1, *sc2;&lt;br /&gt;    for (sc1 = s1, sc2 = s2; ;)&lt;br /&gt;      if (++sc2 &gt;= ss2+l2)&lt;br /&gt;        return ((char *)s1);&lt;br /&gt;      else if (*++sc1 != *sc2)&lt;br /&gt;        break;&lt;br /&gt;  }&lt;br /&gt;  return (NULL);&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;br /&gt;&lt;br /&gt;It needs a bstrchr function as well.&lt;br /&gt;&lt;dl class="codebox"&gt;&lt;dt&gt;bstrchr    &lt;a href="#" onclick="selectCode(this); return false;"&gt;Select all&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;code&gt;&lt;br /&gt;char *(bstrchr) (const char *s, int c, size_t l) {&lt;br /&gt;  /* find first occurrence of c in char s[] for length l*/&lt;br /&gt;  const char ch = c;&lt;br /&gt;  /* handle special case */&lt;br /&gt;  if (l == 0)&lt;br /&gt;    return (NULL);&lt;br /&gt;&lt;br /&gt;  for (; *s != ch; ++s, --l)&lt;br /&gt;    if (l == 0)&lt;br /&gt;      return (NULL);&lt;br /&gt;  return ((char*)s);&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;br /&gt;&lt;br /&gt;here is the testing program&lt;br /&gt;&lt;dl class="codebox"&gt;&lt;dt&gt;bstsrstr_test.c    &lt;a href="#" onclick="selectCode(this); return false;"&gt;Select all&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;code&gt;&lt;br /&gt;/* bstsrstr test */&lt;br /&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;#include &amp;lt;string.h&amp;gt;&lt;br /&gt;#include &amp;lt;ctype.h&amp;gt;&lt;br /&gt;&lt;br /&gt;char *(bstrchr) (const char *s, int c, size_t l) {&lt;br /&gt;  /* find first occurrence of c in char s[] for length l*/&lt;br /&gt;  const char ch = c;&lt;br /&gt;  /* handle special case */&lt;br /&gt;  if (l == 0)&lt;br /&gt;    return (NULL);&lt;br /&gt;&lt;br /&gt;  for (; *s != ch; ++s, --l)&lt;br /&gt;    if (l == 0)&lt;br /&gt;      return (NULL);&lt;br /&gt;  return ((char*)s);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;char *(bstrstr)(const char *s1, size_t l1, const char *s2, size_t l2) {&lt;br /&gt;  /* find first occurrence of s2[] in s1[] for length l1*/&lt;br /&gt;  const char *ss1 = s1;&lt;br /&gt;  const char *ss2 = s2;&lt;br /&gt;  /* handle special case */&lt;br /&gt;  if (l1 == 0)&lt;br /&gt;    return (NULL);&lt;br /&gt;  if (l2 == 0)&lt;br /&gt;    return ((char *)s1);&lt;br /&gt;&lt;br /&gt;  /* match prefix */&lt;br /&gt;    for (; (s1 = bstrchr(s1, *s2, ss1-s1+l1)) != NULL &amp;&amp; ss1-s1+l1!=0; ++s1) {&lt;br /&gt;&lt;br /&gt;    /* match rest of prefix */&lt;br /&gt;    const char *sc1, *sc2;&lt;br /&gt;    for (sc1 = s1, sc2 = s2; ;)&lt;br /&gt;      if (++sc2 &gt;= ss2+l2)&lt;br /&gt;        return ((char *)s1);&lt;br /&gt;      else if (*++sc1 != *sc2)&lt;br /&gt;        break;&lt;br /&gt;  }&lt;br /&gt;  return (NULL);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void printbstr(const char *s, size_t l) {&lt;br /&gt;  for (; l!=0 ; --l) {&lt;br /&gt;    printf("%c", isprint(*(s))?*(s):'.');&lt;br /&gt;    s++;&lt;br /&gt;  }&lt;br /&gt;  printf("\n");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void test(const char *s1, size_t l1, const char *s2, size_t l2) {&lt;br /&gt;  printf("\n");&lt;br /&gt;  printbstr(s1, l1);&lt;br /&gt;  printf("locate ");&lt;br /&gt;  printbstr(s2, l2);&lt;br /&gt;  const char *r = bstrstr(s1,l1,s2,l2);&lt;br /&gt;  if (!r)&lt;br /&gt;    printf("not found\n");&lt;br /&gt;  else {&lt;br /&gt;    printf("result ");&lt;br /&gt;    printbstr(r, l1-(size_t)(r-s1));&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int main () {&lt;br /&gt;  char *s1 = "I\0am a\0manz";&lt;br /&gt;  size_t l1 = 11;&lt;br /&gt;&lt;br /&gt;  printf("bstrstr test\n------\n");&lt;br /&gt;  printbstr(s1, l1);&lt;br /&gt;  printf("locate \\%c:%s\n", '0', bstrchr(s1,'\0',l1));&lt;br /&gt;  printf("locate %c:%s\n", 'I', bstrchr(s1,'I',l1));&lt;br /&gt;  printf("locate %c:%s\n", 'a', bstrchr(s1,'a',l1));&lt;br /&gt;  printf("locate %c:%s\n", 'n', bstrchr(s1,'n',l1));&lt;br /&gt;  printf("locate %c:%s\n", 'i', bstrchr(s1,'i',l1));&lt;br /&gt;  printf("locate %c:%s\n", 'z', bstrchr(s1,'z',l1));&lt;br /&gt;&lt;br /&gt;  test(s1, l1, "a\0m", 3);&lt;br /&gt;  test(s1, l1, "z", 1);&lt;br /&gt;  test(s1, l1, "I", 1);&lt;br /&gt;  test(s1, l1, "am a", 4);&lt;br /&gt;  test(s1, l1, "anz", 3);&lt;br /&gt;  test(s1, l1, "ax", 2);&lt;br /&gt;  test(s1, l1, "\0x", 2);&lt;br /&gt;  test(s1, l1, " x", 2);&lt;br /&gt;  test(s1, l1, "\0a", 2);&lt;br /&gt;  test(s1, l1, "a\0m", 3);&lt;br /&gt;  test(s1, l1, "x", 1);&lt;br /&gt;  test(s1, l1, "z", 1);&lt;br /&gt;&lt;br /&gt;  return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-6376705716870913855?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/6376705716870913855/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=6376705716870913855' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/6376705716870913855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/6376705716870913855'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2011/07/binary-strstr.html' title='Binary strstr'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-4944525506431396513</id><published>2011-06-29T12:43:00.012+08:00</published><updated>2011-06-30T22:40:28.994+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NAS'/><category scheme='http://www.blogger.com/atom/ns#' term='git'/><category scheme='http://www.blogger.com/atom/ns#' term='NSA-320'/><title type='text'>How to install GIT repo in ZyXEL NSA-320</title><content type='html'>ZyXEL NSA-320 is 1.2GHz NAS box with maximum of 2 x 2T harddisk (SATA I/II only)&lt;br /&gt;The current firmware is 4.01 and is OK for the fun_plug&lt;br /&gt;&lt;br /&gt;This box provides a very cheap alternative for the git repo plus your other storage need such as video, music download and backup as well.&lt;br /&gt;&lt;br /&gt;You can gain telnet access following the instruction here :  http://zyxel.nas-central.org/wiki/FFP-stick&lt;br /&gt;&lt;br /&gt;and if you want to install GIT repo in this box, follow these steps.&lt;br /&gt;&lt;br /&gt;(1) Follow the instruction here to gain telnet access, enable ssh server in the box, move the ffproot to harddisk and reboot your NAS box&lt;br /&gt;&lt;a href="http://zyxel.nas-central.org/wiki/FFP-stick"&gt;http://zyxel.nas-central.org/wiki/FFP-stick&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you failed the installation, I suggest you to download this directly http://www.inreto.de/dns323/fun-plug/0.5/fun_plug.tgz and put the fun_plug.tgz in your USB stick rather than let it download during setup.&lt;br /&gt;&lt;br /&gt;(2) install all packages (as you need most of them to build the git binary) from &lt;a href="http://www.inreto.de/dns323/fun-plug/0.5/packages/"&gt;here&lt;/a&gt; &lt;br /&gt;assume your server ipaddress is 192.168.0.10 and use ssh to access the NAS box&lt;br /&gt;&lt;code&gt;&lt;br /&gt;ssh root@192.168.0.10&lt;br /&gt;mkdir -p /ffp/pkg&lt;br /&gt;cd /ffp/pkg&lt;br /&gt;rsync -av inreto.de::dns323/fun-plug/0.5/packages .&lt;br /&gt;cd packages&lt;br /&gt;funpkg -i *.tgz&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(3) remove dns323 utilities which are not useful for NSA-320&lt;br /&gt;&lt;code&gt;funpkg -r dns323-utils-0.7.176-2.tgz&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(4) install PERL &amp; python&lt;br /&gt;&lt;code&gt;cd /ffp/pkg&lt;br /&gt;wget http://www.inreto.de/dns323/fun-plug/0.5/extra-packages/perl/perl-5.10-2.tgz&lt;br /&gt;wget http://www.plord.co.uk/funplug/0.5/python-2.6.4-1.tgz&lt;br /&gt;funpkg -i python-2.6.4-1.tgz perl-5.10-2.tgz&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(5) install the build environment&lt;br /&gt;&lt;code&gt;mkdir -p /i-data/md0/ffpbuildenv&lt;br /&gt;cd /i-data/md0/ffpbuildenv&lt;br /&gt;svn co svn://inreto.de/svn/dns323/funplug/trunk .&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(6) modify the file chroot.sh to this&lt;br /&gt;&lt;dl class="codebox"&gt;&lt;dt&gt;chroot.sh    &lt;a href="#" onclick="selectCode(this); return false;"&gt;Select all&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;code&gt;&lt;br /&gt;#!/ffp/bin/sh&lt;br /&gt;set -x&lt;br /&gt;CWD=$(pwd)&lt;br /&gt;ffp=$(readlink -f /ffp)&lt;br /&gt;root=/ffp-chroot&lt;br /&gt;if [ -d "$root" ]; then&lt;br /&gt;        echo "$root exists"&lt;br /&gt;        exit 1&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;mkdir -p $root&lt;br /&gt;cd $root&lt;br /&gt;&lt;br /&gt;mkdir -p ffp dev etc proc sys mnt i-data/md0&lt;br /&gt;mount -t proc proc proc&lt;br /&gt;mount -t sysfs sysfs sys&lt;br /&gt;mount --bind /dev dev&lt;br /&gt;mount --bind /etc etc&lt;br /&gt;mount --bind $ffp ffp&lt;br /&gt;mount --bind /i-data/md0 i-data/md0&lt;br /&gt;&lt;br /&gt;ln -s ffp/bin bin&lt;br /&gt;ln -s ffp/lib lib&lt;br /&gt;ln -s ffp/sbin sbin&lt;br /&gt;ln -s ffp usr&lt;br /&gt;ln -s i-data/md0/ffproot/home home&lt;br /&gt;&lt;br /&gt;chroot . $SHELL&lt;br /&gt;&lt;br /&gt;umount i-data/md0&lt;br /&gt;umount ffp&lt;br /&gt;umount etc&lt;br /&gt;umount dev&lt;br /&gt;umount sys&lt;br /&gt;umount proc&lt;br /&gt;&lt;br /&gt;rm bin lib sbin usr home&lt;br /&gt;rmdir ffp dev etc proc sys i-data/md0 mnt&lt;br /&gt;rmdir i-data&lt;br /&gt;&lt;br /&gt;cd ..&lt;br /&gt;rmdir $root&lt;br /&gt;&lt;/code&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;br /&gt;&lt;br /&gt;(7) chroot to the build environment and get the git source and install it in NAS box&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd  /i-data/md0/ffpbuildenv&lt;br /&gt;sh chroot.sh&lt;br /&gt;cd  i-data/md0/ffpbuildenv/source&lt;br /&gt;wget http://kernel.org/pub/software/scm/git/git-1.7.6.tar.bz2&lt;br /&gt;tar xjvf git-1.7.6.tar.bz2&lt;br /&gt;cd git-1.7.6&lt;br /&gt;./configure --prefix=/ffp&lt;br /&gt;NO_NSEC=YesPlease make install&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(8) after installation of git, exit the build environment &lt;br /&gt;&lt;code&gt;&lt;br /&gt;exit&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(9) create git repo in the box (from your desktop)&lt;br /&gt;&lt;code&gt;&lt;br /&gt;ssh root@192.168.0.10 "mkdir -p /home/root/git/yourproject.git; cd /home/root/git/yourproject.git; git --bare init; touch git-daemon-export-ok"&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(10) push your project to the git repo in the NAS box (from your desktop)&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd ~/yourprojectdir&lt;br /&gt;git init&lt;br /&gt;git add . # include everything below ./ in the first commit;&lt;br /&gt;          # if you want to remove use git rm -r --cache xxx&lt;br /&gt;git commit&lt;br /&gt;git remote add origin ssh://root@192.168.0.10/home/root/git/yourproject.git&lt;br /&gt;git push origin master&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(11) If you don't want to build it.  Just download &lt;a href="http://www.2shared.com/file/IrRUD0hh/git-176.html"&gt;this package&lt;/a&gt; and install it using funpkg -i git-1.7.6.tgz  However, you still need to have some package dependencies like PERL &amp; python in order  to run.&lt;br /&gt;&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-4944525506431396513?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/4944525506431396513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=4944525506431396513' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/4944525506431396513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/4944525506431396513'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2011/06/how-to-install-git-repo-in-zyxel-nsa.html' title='How to install GIT repo in ZyXEL NSA-320'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-3399129425517170970</id><published>2011-04-24T12:00:00.004+08:00</published><updated>2011-04-24T12:16:20.466+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Debian Chinese'/><title type='text'>Install Chinese Support in Debain Squeeze</title><content type='html'>Install Unicode Fonts&lt;br /&gt;&lt;code&gt;&lt;br /&gt;su&lt;br /&gt;apt-get install xfonts-intl-chinese xfonts-base unifont &lt;br /&gt;apt-get install ttf-arphic-bkai00mp ttf-arphic-bsmi00lp &lt;br /&gt;apt-get install ttf-arphic-gbsn00lp ttf-arphic-gkai00mp &lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Reconfigure locales &lt;br /&gt;Install dpkg configure&lt;br /&gt;Method 1&lt;br /&gt;&lt;code&gt;&lt;br /&gt;su&lt;br /&gt;apt-get install gkdebconf&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Applications -&gt; System Tools -&gt; GKDebConf&lt;br /&gt;select locales in packages&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Method 2&lt;br /&gt;&lt;code&gt;&lt;br /&gt;su&lt;br /&gt;/usr/sbin/dpkg-reconfigure locales&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Add the followings in the locale generation&lt;br /&gt;&lt;br /&gt;    * zh_TW BIG5 - 繁體中文(台灣)，使用 Big5 碼。&lt;br /&gt;    * zh_TW.UTF-8 UTF-8 - 繁體中文(台灣)，使用 UTF-8 碼。&lt;br /&gt;    * zh_HK.UTF-8 UTF-8 - 繁體中文(香港)，使用 UTF-8 碼。&lt;br /&gt;    * zh_CN GB2312 - 簡體中文，使用 GB2312-80&lt;br /&gt;    * zh_CN.GBK GBK - 簡體中文，使用 GBK&lt;br /&gt;    * zh_CN.UTF-8 UTF-8 - 簡體中文，使用 GB18030 &lt;br /&gt;&lt;br /&gt;Then choose your default locale&lt;br /&gt;&lt;br /&gt;Done&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-3399129425517170970?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/3399129425517170970/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=3399129425517170970' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/3399129425517170970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/3399129425517170970'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2011/04/install-chinese-support-in-debain.html' title='Install Chinese Support in Debain Squeeze'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-767291690914573449</id><published>2011-03-28T02:00:00.002+08:00</published><updated>2011-03-28T02:04:07.529+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flash Player old versions'/><title type='text'>Flash Player plugin old versions</title><content type='html'>I got problems for the new flash player plugin for Mac mini upgrade to 10.6.6 or 10.6.7 and here is the old version that you can get. &lt;br /&gt;&lt;br /&gt;I have to install Flash Player 9.0.289.0&lt;br /&gt;&lt;br /&gt;http://kb2.adobe.com/cps/142/tn_14266.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-767291690914573449?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/767291690914573449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=767291690914573449' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/767291690914573449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/767291690914573449'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2011/03/flash-player-plugin-old-versions.html' title='Flash Player plugin old versions'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-4771770872481282115</id><published>2011-02-07T07:07:00.007+08:00</published><updated>2011-02-07T09:37:25.986+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone Utilities'/><title type='text'>iPhone Utilities for Mac</title><content type='html'>iPhone Explorer&lt;br /&gt;http://www.macroplant.com/iphoneexplorer/&lt;br /&gt;&lt;br /&gt;Backup Extractor&lt;br /&gt;http://supercrazyawesome.com/&lt;br /&gt;&lt;br /&gt;SQLite Database Browser&lt;br /&gt;http://sourceforge.net/projects/sqlitebrowser/&lt;br /&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;Rescue Data after Recovery for Jailbreak&lt;br /&gt;&lt;br /&gt;usbmuxd - iPhone SSH via USB&lt;br /&gt;http://marcansoft.com/uploads/usbmuxd/usbmuxd-1.0.6.tar.bz2&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd usbmuxd-1.0.6/python-client&lt;br /&gt;python tcprelay.py -t 22:2222 &amp;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;ssh command to recover user data partition using usbmuxd: (wait for about an hour and requires 29G for 32G iPhone)&lt;br /&gt;&lt;code&gt;&lt;br /&gt;ssh -p 2222 root@localhost dd if=/dev/rdisk0s2s1 bs=1M | dd of=iphone-user.img&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;ssh command to recover the system partition using usbmuxd:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;ssh -p 2222 root@localhost dd if=/dev/rdisk0s1 bs=1M | dd of=iphone-root.img&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;To convert the raw disk image to HFS/+ dmg format (mountable by Mac), change the byte HX to H+  as below&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3LRNVfBfliQ/TU9JemKePRI/AAAAAAAABL8/xeBjjM470Cs/s1600/hfx.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 120px;" src="http://2.bp.blogspot.com/_3LRNVfBfliQ/TU9JemKePRI/AAAAAAAABL8/xeBjjM470Cs/s400/hfx.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5570752054069968146" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;scanning with scalpel 1.60&lt;br /&gt;http://www.digitalforensicssolutions.com/Scalpel/&lt;br /&gt;&lt;code&gt;&lt;br /&gt;tar -zxvf scalpel-1.60.tar.gz&lt;br /&gt;cd scalpel-1.60&lt;br /&gt;make bsd&lt;br /&gt;sudo mkdir -p /usr/local/bin /usr/local/etc&lt;br /&gt;sudo cp -p scalpel /usr/local/bin&lt;br /&gt;sudo cp -p scalpel.conf /usr/local/etc&lt;br /&gt;scalpel -c scalpel.conf iphone-root.img&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-4771770872481282115?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/4771770872481282115/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=4771770872481282115' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/4771770872481282115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/4771770872481282115'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2011/02/iphone-utilities-for-mac.html' title='iPhone Utilities for Mac'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_3LRNVfBfliQ/TU9JemKePRI/AAAAAAAABL8/xeBjjM470Cs/s72-c/hfx.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-33372972820098740</id><published>2011-01-10T23:15:00.001+08:00</published><updated>2011-01-10T23:15:44.411+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iOS 4.2 beta 3'/><title type='text'>iOS 4.2 beta 3</title><content type='html'>https://developer.apple.com/ios/download.action?path=/ios/ios_sdk_4.2_beta_3/ios_4.2_beta_3__ipad__8c5115c.dmg&lt;br /&gt;https://developer.apple.com/ios/download.action?path=/ios/ios_sdk_4.2_beta_3/ios_4.2_beta_3__iphone_4__8c5115c.dmg&lt;br /&gt;https://developer.apple.com/ios/download.action?path=/ios/ios_sdk_4.2_beta_3/ios_4.2_beta_3__iphone_3gs__8c5115c.dmg&lt;br /&gt;https://developer.apple.com/ios/download.action?path=/ios/ios_sdk_4.2_beta_3/ios_4.2_beta_3__iphone_3g__8c5115c.dmg&lt;br /&gt;https://developer.apple.com/ios/download.action?path=/ios/ios_sdk_4.2_beta_3/ios_4.2_beta_3__ipod_touch_4th_generation__8c5115c.dmg&lt;br /&gt;https://developer.apple.com/ios/download.action?path=/ios/ios_sdk_4.2_beta_3/ios_4.2_beta_3__ipod_touch_3rd_generation__8c5115c.dmg&lt;br /&gt;https://developer.apple.com/ios/download.action?path=/ios/ios_sdk_4.2_beta_3/ios_4.2_beta_3__ipod_touch_2nd_generation__8c5115c.dmg&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-33372972820098740?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/33372972820098740/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=33372972820098740' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/33372972820098740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/33372972820098740'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2011/01/ios-42-beta-3.html' title='iOS 4.2 beta 3'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-1687669548172547466</id><published>2010-12-06T21:06:00.003+08:00</published><updated>2010-12-06T21:11:26.647+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WhatsApp'/><title type='text'>How to install Whatsapp on iPad</title><content type='html'>&lt;img src="http://a1.phobos.apple.com/us/r1000/012/Purple/61/9b/f2/mzi.cezibuqg.100x100-75.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;The developer has stopped the support for iPad&lt;br /&gt;But if you have jailbreak your iPad&lt;br /&gt;&lt;br /&gt;You can first install 2.5.3 version in iPad, register it&lt;br /&gt;and then upgrade to the latest version 2.5.11 or 2.5.12&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-1687669548172547466?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/1687669548172547466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=1687669548172547466' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/1687669548172547466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/1687669548172547466'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2010/12/how-to-install-whatsapp-on-ipad.html' title='How to install Whatsapp on iPad'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-6016516704972161026</id><published>2010-12-05T22:16:00.001+08:00</published><updated>2010-12-05T22:18:14.164+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Galaxy Tab'/><category scheme='http://www.blogger.com/atom/ns#' term='mytv live'/><title type='text'>mytv.tvb.com live on Samsung Galaxy Tab</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3LRNVfBfliQ/TPufDRxgqMI/AAAAAAAAA4w/rS5EwrBD2E8/s1600/tvb1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 234px;" src="http://3.bp.blogspot.com/_3LRNVfBfliQ/TPufDRxgqMI/AAAAAAAAA4w/rS5EwrBD2E8/s400/tvb1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5547202244696385730" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-6016516704972161026?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/6016516704972161026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=6016516704972161026' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/6016516704972161026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/6016516704972161026'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2010/12/mytvtvbcom-live-on-samsung-galaxy-tab.html' title='mytv.tvb.com live on Samsung Galaxy Tab'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_3LRNVfBfliQ/TPufDRxgqMI/AAAAAAAAA4w/rS5EwrBD2E8/s72-c/tvb1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-708537638026717343</id><published>2010-12-05T08:41:00.016+08:00</published><updated>2010-12-07T22:49:37.668+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Galaxy Tab'/><category scheme='http://www.blogger.com/atom/ns#' term='Debian'/><title type='text'>How to install debian on Samsung Galaxy Tab</title><content type='html'>Assume you have rooted the Samsung Galaxy Tab and want to install debian&lt;br /&gt;&lt;br /&gt;The instruction of setting up debian in G1 is in saurik's site here &lt;a href="http://www.saurik.com/id/10"&gt;http://www.saurik.com/id/10&lt;/a&gt;&lt;br /&gt;But some of the information are outdated, as the rooting is very simple now and the busybox comes with one click z4root&lt;br /&gt;&lt;br /&gt;z4root is here http://www.multiupload.com/EPKDWWLWD9&lt;br /&gt;&lt;br /&gt;I like this method as the Debian system is installed in a standalone img file which can be copied to other Android phones.&lt;br /&gt;&lt;br /&gt;(1) Download the Debain G1 image here&lt;br /&gt;&lt;a href="http://rapidshare.com/files/161776007/debian-armel-750.img.bz2"&gt;http://rapidshare.com/files/161776007/debian-armel-750.img.bz2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;or here&lt;br /&gt;&lt;a href="http://www.multiupload.com/VUKS8LQ7EP"&gt;http://www.multiupload.com/VUKS8LQ7EP&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There is a ubuntu.img out there and is 2G in size (but trust me, running a graphical desktop via vnc is overkilling on mobile device). If you want shell access only, this debian.img is better.&lt;br /&gt;&lt;br /&gt;(2) copy it to sdcard.&lt;br /&gt;&lt;code&gt;adb push debian-armel-750.img.bz2 /sdcard/&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(3) su shell access to Tab&lt;br /&gt;&lt;code&gt;&lt;br /&gt;adb shell&lt;br /&gt;su&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(4) unzip the file in Tab.  The image after unzip is 750M in size, so make sure you have enough space in sdcard.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd /sdcard&lt;br /&gt;busybox bunzip2 debian-armel-750.img.bz2&lt;br /&gt;mv debian-armel-750.img debian.img&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(5) setup mount and chroot&lt;br /&gt;&lt;br /&gt;create and run this script in&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd /data/local&lt;br /&gt;busybox vi startdeb.sh&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;dl class="codebox"&gt;&lt;dt&gt;startdeb.sh    &lt;a href="#" onclick="selectCode(this); return false;"&gt;Select all&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;code&gt;&lt;br /&gt;export kit=/sdcard&lt;br /&gt;export mnt=/data/local/mnt&lt;br /&gt;export TERM=linux&lt;br /&gt;export HOME=/root&lt;br /&gt;export PATH=$bin:/usr/bin:/usr/sbin:/bin:$PATH&lt;br /&gt;&lt;br /&gt;busybox clear&lt;br /&gt;&lt;br /&gt;busybox mkdir -p $mnt&lt;br /&gt;&lt;br /&gt;busybox mount -o loop,noatime $kit/debian.img $mnt&lt;br /&gt;&lt;br /&gt;busybox mount -t devpts devpts $mnt/dev/pts&lt;br /&gt;busybox mount -t proc proc $mnt/proc&lt;br /&gt;busybox mount -t sysfs sysfs $mnt/sys&lt;br /&gt;&lt;br /&gt;busybox mkdir -p $mnt/mnt&lt;br /&gt;busybox mkdir -p $mnt/mnt/sdcard $mnt/mnt/system&lt;br /&gt;busybox mkdir -p $mnt/mnt/data $mnt/mnt/dev&lt;br /&gt;&lt;br /&gt;busybox mount -o bind /sdcard $mnt/mnt/sdcard&lt;br /&gt;busybox mount -o bind /system $mnt/mnt/system&lt;br /&gt;busybox mount -o bind /data $mnt/mnt/data&lt;br /&gt;busybox mount -o bind /dev $mnt/mnt/dev&lt;br /&gt;busybox mount -t tmpfs tmpfs $mnt/tmp -o noatime,mode=1777&lt;br /&gt;&lt;br /&gt;busybox chroot $mnt /bin/bash&lt;br /&gt;&lt;br /&gt;#After exit command is executed clear it all up&lt;br /&gt;echo " "&lt;br /&gt;&lt;br /&gt;echo "Shutting down Debian........"&lt;br /&gt;&lt;br /&gt;umount $mnt/dev/pts&lt;br /&gt;umount $mnt/proc&lt;br /&gt;umount $mnt/sys&lt;br /&gt;umount $mnt/mnt/sdcard&lt;br /&gt;umount $mnt/mnt/system&lt;br /&gt;umount $mnt/mnt/data&lt;br /&gt;umount $mnt/mnt/dev&lt;br /&gt;umount $mnt/tmp&lt;br /&gt;umount $mnt&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;br /&gt;&lt;br /&gt;run the startdeb.sh script&lt;br /&gt;&lt;code&gt;&lt;br /&gt;sh startdeb.sh&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# now Tab should be in Debian System&lt;br /&gt;&lt;br /&gt;(6) do some fixing and change root password and install OpenSSH and start it&lt;br /&gt;&lt;code&gt;&lt;br /&gt;rm -f /etc/mtab&lt;br /&gt;ln -s /proc/mounts /etc/mtab&lt;br /&gt;passwd root&lt;br /&gt;apt-get update&lt;br /&gt;apt-get install debian-keyring debian-archive-keyring&lt;br /&gt;apt-get update&lt;br /&gt;apt-get upgrade&lt;br /&gt;apt-get install openssh-server openssh-client&lt;br /&gt;/etc/init.d/ssh start&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(7) If the default package source does not work, you can change this file /etc/apt/sources.list to&lt;br /&gt;&lt;code&gt;&lt;br /&gt;deb http://ftp.us.debian.org/debian lenny main&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(8) Then you can ssh to your Tab by using ssh root@xxx.xxx.xxx.xxx after enable wifi in Tab, where xxx.xxx.xxx.xxx is the IP address of Tab.&lt;br /&gt;&lt;br /&gt;(9) If you want to change the DNS server say to Google Public DNS&lt;br /&gt;&lt;code&gt;&lt;br /&gt;echo "nameserver 8.8.8.8" &gt; /etc/resolv.conf&lt;br /&gt;echo "nameserver 8.8.4.4" &gt;&gt; /etc/resolv.conf&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-708537638026717343?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/708537638026717343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=708537638026717343' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/708537638026717343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/708537638026717343'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2010/12/how-to-install-debian-on-samsung-galaxy.html' title='How to install debian on Samsung Galaxy Tab'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-8885266987658379534</id><published>2010-11-27T00:18:00.003+08:00</published><updated>2010-11-27T00:26:28.312+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WP7 Hacks'/><title type='text'>Windows Phone 7 Developer Unlock</title><content type='html'>Source http://www.chevronwp7.com/&lt;br /&gt;&lt;br /&gt;Instruction&lt;br /&gt;&lt;br /&gt;(1) Install this certificate in your &lt;span style="color:red;"&gt;Windows Phone 7&lt;/span&gt; via IE : http://www.chevronwp7.com/cert&lt;br /&gt;&lt;br /&gt;(2) Download and install this registration key in your Windows 7 OS http://walshie.me/PhoneRegAdd.reg&lt;br /&gt;&lt;br /&gt;(3) Download and run this program http://walshie.me/ChevronWP7.exe in Windows 7 OS&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Other Hacks&lt;/u&gt;&lt;br /&gt;copy files to WP7 device in Windows Explorer&lt;br /&gt;http://downloadsquad.switched.com/2010/11/20/copy-files-to-a-windows-phone-7-device-in-windows-explorer?icid=sphere_blogsmith_inpage_engadget&lt;br /&gt;&lt;br /&gt;USB Tethering&lt;br /&gt;http://www.engadget.com/2010/11/11/windows-phone-7-usb-tethering-uncovered-on-samsung-phones/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-8885266987658379534?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/8885266987658379534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=8885266987658379534' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/8885266987658379534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/8885266987658379534'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2010/11/windows-phone-7-developer-unlock.html' title='Windows Phone 7 Developer Unlock'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-1360266845907203090</id><published>2010-11-25T12:44:00.001+08:00</published><updated>2010-11-25T12:45:47.396+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WP7 Registration Error'/><title type='text'>Windows Phone 7 Developer Registration Step 2 Error</title><content type='html'>see here&lt;br /&gt;http://forums.create.msdn.com/forums/t/66601.aspx&lt;br /&gt;&lt;br /&gt;Error in Step 2 while registering &lt;br /&gt;We are currently tracking an issue developers may experience while registering for App Hub where they receive an error including the following text: &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;            We have detected an error while processing the page you were looking for.&lt;br /&gt;&lt;br /&gt;·         If you reside in Hong Kong, we are aware of this issue but do not have any workarounds available. We are investigating this and will update this announcement as we find more information.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-1360266845907203090?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/1360266845907203090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=1360266845907203090' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/1360266845907203090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/1360266845907203090'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2010/11/windows-phone-7-developer-registration.html' title='Windows Phone 7 Developer Registration Step 2 Error'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-5780490652102069000</id><published>2010-11-20T12:16:00.004+08:00</published><updated>2010-11-20T13:23:46.418+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gadget'/><category scheme='http://www.blogger.com/atom/ns#' term='香港天氣及日曆'/><title type='text'>香港天氣及日曆 gadgets (windows 7)</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_3LRNVfBfliQ/TOdMesdQkvI/AAAAAAAAA3U/BTctZ87-qHA/s1600/hkgadgets.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 192px;" src="http://4.bp.blogspot.com/_3LRNVfBfliQ/TOdMesdQkvI/AAAAAAAAA3U/BTctZ87-qHA/s400/hkgadgets.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5541481956716352242" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;http://www.multiupload.com/XH0PUOTGMT&lt;br /&gt;&lt;br /&gt;Stock 3 gadget is here&lt;br /&gt;http://gallery.live.com/liveitemdetail.aspx?bt=1&amp;li=61b9dca8-214c-41bf-b972-b2050aeaab9c&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-5780490652102069000?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/5780490652102069000/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=5780490652102069000' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/5780490652102069000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/5780490652102069000'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2010/11/gadgets-windows-7.html' title='香港天氣及日曆 gadgets (windows 7)'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_3LRNVfBfliQ/TOdMesdQkvI/AAAAAAAAA3U/BTctZ87-qHA/s72-c/hkgadgets.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-1503105148774555003</id><published>2010-11-14T10:40:00.005+08:00</published><updated>2011-07-16T11:04:43.975+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='replace tar sed'/><title type='text'>How to replace gnutar and gsed for Mac OS X</title><content type='html'>Install MacPorts&lt;br /&gt;&lt;br /&gt;http://www.macports.org/&lt;br /&gt;&lt;br /&gt;Install gnutar&lt;br /&gt;&lt;code&gt;&lt;br /&gt;sudo port install gnutar&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Install gsed&lt;br /&gt;&lt;code&gt;&lt;br /&gt;sudo port install gsed&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Replace tar and sed in Mac OS X&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;sudo mv /usr/bin/tar /usr/bin/darwintar&lt;br /&gt;sudo ln -s /opt/local/bin/gnutar /usr/bin/tar&lt;br /&gt;&lt;br /&gt;sudo mv /usr/bin/sed /usr/bin/darwinsed&lt;br /&gt;sudo ln -s /opt/local/bin/gsed /usr/bin/sed&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;or you can build from source&lt;br /&gt;http://prep.ai.mit.edu/pub/gnu/tar/tar-latest.tar.gz&lt;br /&gt;http://prep.ai.mit.edu/pub/gnu/sed/sed-4.2.tar.gz&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-1503105148774555003?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/1503105148774555003/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=1503105148774555003' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/1503105148774555003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/1503105148774555003'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2010/11/how-to-replace-gnutar-and-gsed-for-mac.html' title='How to replace gnutar and gsed for Mac OS X'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-1383642957608619332</id><published>2010-11-07T23:53:00.005+08:00</published><updated>2010-11-08T00:09:51.787+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPA God'/><title type='text'>iPA God</title><content type='html'>The so called iPA God is just using the developer's certificate to re-codesign the cracked app and install on non-jailbreaked iPhone.&lt;br /&gt;&lt;br /&gt;Staring from iOS 4.0, provisioning profile and app can be distributed and installed via WebServer&lt;br /&gt;&lt;br /&gt;You can simply add this in the WebServer and install the app via http&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;a href="http://192.168.0.10/My_iPhone_Development_2010.mobileprovision"&amp;gt;Install Provisioning Profile&amp;lt;/a&gt;&amp;lt;br/&amp;gt;&lt;br /&gt;&amp;lt;a href="itms-services://?action=download-manifest&amp;url=http://192.168.0.10/MyApp.plist"&amp;gt;Install MyApp&amp;lt;/a&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The content of MYApp.plist is&lt;br /&gt;&lt;br /&gt;&lt;dl class="codebox"&gt;&lt;dt&gt;  MyApp.plist  &lt;a href="http://www.blogger.com/post-edit.g?blogID=6245963027152906987&amp;amp;postID=7631335789485793052#" onclick="selectCode(this); return false;"&gt;Select all&lt;/a&gt;&lt;/dt&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;br /&gt;&amp;lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt;&lt;br /&gt;&amp;lt;plist version="1.0"&gt;&lt;br /&gt;&amp;lt;dict&gt;&lt;br /&gt; &amp;lt;key&gt;items&amp;lt;/key&gt;&lt;br /&gt; &amp;lt;array&gt;&lt;br /&gt;  &amp;lt;dict&gt;&lt;br /&gt;   &amp;lt;key&gt;assets&amp;lt;/key&gt;&lt;br /&gt;   &amp;lt;array&gt;&lt;br /&gt;    &amp;lt;dict&gt;&lt;br /&gt;     &amp;lt;key&gt;kind&amp;lt;/key&gt;&lt;br /&gt;     &amp;lt;string&gt;software-package&amp;lt;/string&gt;&lt;br /&gt;     &amp;lt;key&gt;url&amp;lt;/key&gt;&lt;br /&gt;     &amp;lt;string&gt;http://192.168.0.10/MyApp.ipa&amp;lt;/string&gt;&lt;br /&gt;    &amp;lt;/dict&gt;&lt;br /&gt;   &amp;lt;/array&gt;&lt;br /&gt;   &amp;lt;key&gt;metadata&amp;lt;/key&gt;&lt;br /&gt;   &amp;lt;dict&gt;&lt;br /&gt;    &amp;lt;key&gt;bundle-identifier&amp;lt;/key&gt;&lt;br /&gt;    &amp;lt;string&gt;com.yourcompany.YouApp&amp;lt;/string&gt;&lt;br /&gt;    &amp;lt;key&gt;bundle-version&amp;lt;/key&gt;&lt;br /&gt;    &amp;lt;string&gt;1.0&amp;lt;/string&gt;&lt;br /&gt;    &amp;lt;key&gt;kind&amp;lt;/key&gt;&lt;br /&gt;    &amp;lt;string&gt;software&amp;lt;/string&gt;&lt;br /&gt;    &amp;lt;key&gt;title&amp;lt;/key&gt;&lt;br /&gt;    &amp;lt;string&gt;MyAppName&amp;lt;/string&gt;&lt;br /&gt;   &amp;lt;/dict&gt;&lt;br /&gt;  &amp;lt;/dict&gt;&lt;br /&gt; &amp;lt;/array&gt;&lt;br /&gt;&amp;lt;/dict&gt;&lt;br /&gt;&amp;lt;/plist&gt;&lt;br /&gt;&lt;/code&gt;&lt;/dl&gt;&lt;br /&gt;.&lt;br /&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-1383642957608619332?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/1383642957608619332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=1383642957608619332' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/1383642957608619332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/1383642957608619332'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2010/11/ipa-god.html' title='iPA God'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-5076188251683931449</id><published>2010-11-07T13:15:00.003+08:00</published><updated>2010-11-07T13:19:09.756+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WhatsApp'/><title type='text'>WhatsApp for iPad</title><content type='html'>&lt;img src="http://a1.phobos.apple.com/us/r1000/012/Purple/61/9b/f2/mzi.cezibuqg.175x175-75.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;The new version v2.5.11 doesn't work for iPad 3G&lt;br /&gt;&lt;br /&gt;You have to install 2.5.3 then upgrade to 2.5.11&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-5076188251683931449?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/5076188251683931449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=5076188251683931449' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/5076188251683931449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/5076188251683931449'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2010/11/whatsapp-for-ipad.html' title='WhatsApp for iPad'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-5306275705699235905</id><published>2010-10-17T06:59:00.011+08:00</published><updated>2010-10-17T23:12:53.641+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Phone'/><category scheme='http://www.blogger.com/atom/ns#' term='Emulator Hack'/><title type='text'>Windows Phone 7 Emulator Hack</title><content type='html'>Windows Phone 7 Emulator Hack (Sept Version)&lt;br /&gt;&lt;br /&gt;(1) Download the Windows Phone Developer Tools and install it in Windows (not for VMWare nor other Virtual Machine)&lt;br /&gt;&lt;br /&gt;http://go.microsoft.com/fwlink/?LinkID=189554&lt;br /&gt;&lt;br /&gt;(2) Download the Hacked Image to your Desktop&lt;br /&gt;http://www.multiupload.com/TGBSSOXCO7&lt;br /&gt;&lt;br /&gt;(3) Create a shortcut and with similar to this as (replace YOU as your username)&lt;br /&gt;&lt;code&gt;"C:\Program Files\Microsoft XDE\1.0\XDE.exe" "C:\Users\YOU\Desktop\WM70C1.en-US.unlocked.bin" /VMID {E575DA31-FC47-4766-853F-018D823B9EE6}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Programming Windows Phone 7 (pdf + source code)&lt;br /&gt;http://www.charlespetzold.com/phone/&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_3LRNVfBfliQ/TLoxVxoItQI/AAAAAAAAA0Y/pwVOHJ0kRJk/s1600/winphone7hack.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 217px; height: 400px;" src="http://4.bp.blogspot.com/_3LRNVfBfliQ/TLoxVxoItQI/AAAAAAAAA0Y/pwVOHJ0kRJk/s400/winphone7hack.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5528785742719399170" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;object type="application/x-shockwave-flash" data="http://www.youtube.com/v/VkycNcZCUo4" width="425" height="350"&gt;&lt;br /&gt;&lt;param name="movie" value="http://www.youtube.com/v/VkycNcZCUo4" /&gt;&lt;br /&gt;&lt;param name="wmode" value="transparent" /&gt;&lt;br /&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-5306275705699235905?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/5306275705699235905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=5306275705699235905' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/5306275705699235905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/5306275705699235905'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2010/10/windows-phone-7-emulator-hack.html' title='Windows Phone 7 Emulator Hack'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_3LRNVfBfliQ/TLoxVxoItQI/AAAAAAAAA0Y/pwVOHJ0kRJk/s72-c/winphone7hack.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-136378274653153478</id><published>2010-09-28T20:38:00.006+08:00</published><updated>2010-09-28T20:53:08.296+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MyWi'/><title type='text'>MyWi Not Initialized! Reboot ?</title><content type='html'>If you have installed the cracked version of MyWi and sometimes later you get the MyWi Not Initialized! message like below.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3LRNVfBfliQ/TKHlJPAuVmI/AAAAAAAAA0Q/8M6_n8A1GI8/s1600/mywierror.PNG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 267px; height: 400px;" src="http://2.bp.blogspot.com/_3LRNVfBfliQ/TKHlJPAuVmI/AAAAAAAAA0Q/8M6_n8A1GI8/s400/mywierror.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5521946564944090722" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The easiest solution is here (do these steps in quick succession)&lt;br /&gt;&lt;br /&gt;1. open miwi 1st time&lt;br /&gt;2. when it asked to exit or reboot, click on exit 1st time&lt;br /&gt;3. open mywi 2nd time&lt;br /&gt;4. when it asked to exit or reboot, click on exit 2nd time&lt;br /&gt;5. open mywi 3rd time&lt;br /&gt;6. when it asked to exit or reboot, click on reboot &lt;br /&gt;&lt;br /&gt;Once you have rebooted, now open mywi, and it should work.&lt;br /&gt;&lt;br /&gt;Everytime you run into this problem, just repeat the steps above and it should work everytime . &lt;br /&gt;&lt;br /&gt;Enjoy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-136378274653153478?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/136378274653153478/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=136378274653153478' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/136378274653153478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/136378274653153478'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2010/09/mywi-not-initialized-reboot.html' title='MyWi Not Initialized! Reboot ?'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_3LRNVfBfliQ/TKHlJPAuVmI/AAAAAAAAA0Q/8M6_n8A1GI8/s72-c/mywierror.PNG' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-171153428817534466</id><published>2010-06-20T00:16:00.010+08:00</published><updated>2010-06-20T00:58:34.164+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google App Engine'/><category scheme='http://www.blogger.com/atom/ns#' term='appcfg.py upload_data'/><category scheme='http://www.blogger.com/atom/ns#' term='appcfg.py download_data'/><title type='text'>How to download / upload data to Google App Engine for localhost</title><content type='html'>The appcfg.py --dump option is not working&lt;br /&gt;with this error &lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;appcfg.py: error: no such option: --dump&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Deprecated method (Code for Configuration) is used instead to upload_data / download_data to localhost app&lt;br /&gt;&lt;br /&gt;Here is an example&lt;br /&gt;&lt;br /&gt;(1) modify app.yaml and add this under handlers:&lt;br /&gt;&lt;code&gt;- url: /remote_api&lt;br /&gt; script: $PYTHON_LIB/google/appengine/ext/remote_api/handler.py&lt;br /&gt; login: admin&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;You have to restart the app after modifying app.yaml&lt;br /&gt;&lt;br /&gt;(2) create this file : album_load.py&lt;br /&gt;&lt;code&gt;&lt;br /&gt;# album_loader.py&lt;br /&gt;import datetime&lt;br /&gt;from google.appengine.ext import db&lt;br /&gt;from google.appengine.tools import bulkloader&lt;br /&gt;&lt;br /&gt;class Album(db.Model):&lt;br /&gt;    artist = db.StringProperty()&lt;br /&gt;    title = db.StringProperty()&lt;br /&gt;    publication_date = db.DateProperty()&lt;br /&gt;    length_in_minutes = db.IntegerProperty()&lt;br /&gt;&lt;br /&gt;class AlbumLoader(bulkloader.Loader):&lt;br /&gt;    def __init__(self):&lt;br /&gt;      bulkloader.Loader.__init__(self, 'Album',&lt;br /&gt;        [('title', str),&lt;br /&gt;        ('artist', str),&lt;br /&gt;        ('publication_date',&lt;br /&gt;        lambda x: datetime.datetime.strptime(x, '%m/%d/%Y').date()),&lt;br /&gt;        ('length_in_minutes', int),&lt;br /&gt;        ])&lt;br /&gt;&lt;br /&gt;loaders = [AlbumLoader]&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(3) prepare an upload file : album.csv&lt;br /&gt;&lt;code&gt;&lt;br /&gt;title1,artist1,1/1/2000,12&lt;br /&gt;title2,artist2,1/1/2001,22&lt;br /&gt;title3,artist3,1/1/2002,32&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(3) Launch your app in localhost and upload using this command&lt;br /&gt;&lt;code&gt;&lt;br /&gt;appcfg.py upload_data --config_file=album_loader.py --application=yourappid --kind=Album --url=http://localhost:8080/remote_api --filename=album.csv&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(4) check the table data in your Google App SDK console&lt;br /&gt;&lt;br /&gt;(5) to download data create this file : album_exporter.py&lt;br /&gt;&lt;code&gt;&lt;br /&gt;# album_exporter.py&lt;br /&gt;import datetime&lt;br /&gt;from google.appengine.ext import db&lt;br /&gt;from google.appengine.tools import bulkloader&lt;br /&gt;&lt;br /&gt;class Album(db.Model):&lt;br /&gt;    artist = db.StringProperty()&lt;br /&gt;    title = db.StringProperty()&lt;br /&gt;    publication_date = db.DateProperty()&lt;br /&gt;    length_in_minutes = db.IntegerProperty()&lt;br /&gt;&lt;br /&gt;class AlbumExporter(bulkloader.Exporter):&lt;br /&gt;    def __init__(self):&lt;br /&gt;      bulkloader.Exporter.__init__(self, 'Album',&lt;br /&gt;        [('title', str, None),&lt;br /&gt;        ('artist', str, None),&lt;br /&gt;        ('publication_date', str, None),&lt;br /&gt;        ('length_in_minutes', int, None),&lt;br /&gt;        ])&lt;br /&gt;&lt;br /&gt;exporters = [AlbumExporter]&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(6) use this command to download data&lt;br /&gt;&lt;code&gt;appcfg.py download_data --config_file=album_exporter.py --application=yourappid --kind=Album --url=http://localhost:8080/remote_api --filename=albumout.csv&lt;/code&gt;&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-171153428817534466?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/171153428817534466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=171153428817534466' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/171153428817534466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/171153428817534466'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2010/06/how-to-download-upload-data-to-google.html' title='How to download / upload data to Google App Engine for localhost'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-6405394337954339669</id><published>2010-06-18T10:56:00.011+08:00</published><updated>2011-07-30T12:52:55.588+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iTunes Old Versions'/><title type='text'>Old versions of iTunes</title><content type='html'>iTunes 10.4 Download &lt;br /&gt;Windows X86 http://appldnld.apple.com/iTunes10/041-0718.20110720.YXCZe/iTunesSetup.exe&lt;br /&gt;Windows X64 http://appldnld.apple.com/iTunes10/041-0719.20110720.rE358/iTunes64Setup.exe&lt;br /&gt;Mac OS X http://appldnld.apple.com/iTunes10/041-1988.20110720.Rt5Yp/iTunes10.4.dmg&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;iTunes 10.3.1 Download &lt;br /&gt;Windows X86 http://appldnld.apple.com/iTunes10/041-1633.20110607.FvP5t/iTunesSetup.exe&lt;br /&gt;Windows X64 http://appldnld.apple.com/iTunes10/041-1634.20110607.4EPY6/iTunes64Setup.exe&lt;br /&gt;Mac OS X http://appldnld.apple.com/iTunes10/041-1632.20110607.SUch3/iTunes10.3.1.dmg&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;iTunes 10.2.2 Download &lt;br /&gt;Windows X86 http://appldnld.apple.com/iTunes10/041-0988.20110501.CdEr4/iTunesSetup.exe&lt;br /&gt;Windows X64 http://appldnld.apple.com/iTunes10/041-0989.20110501.Pr4tg/iTunes64Setup.exe&lt;br /&gt;Mac OS X http://appldnld.apple.com/iTunes10/041-0533.20110418.AqP4r/iTunes10.2.2.dmg&lt;br /&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;iTunes for Windows x86&lt;/u&gt;&lt;br /&gt;9.2      http://appldnld.apple.com/iTunes9/061-7656.20100616.ZTns2/iTunesSetup.exe&lt;br /&gt;9.2.1   http://appldnld.apple.com/iTunes9/061-8602.20100719.Tnz92/iTunesSetup.exe&lt;br /&gt;10.0    http://appldnld.apple.com/iTunes10/061-8246.20100901.Zxsew3/iTunesSetup.exe&lt;br /&gt;10.0.1 http://appldnld.apple.com/iTunes10/061-9186.20100924.nbght/iTunesSetup.exe&lt;br /&gt;10.1    http://appldnld.apple.com/iTunes10/061-9842.20101118.Bgyt6/iTunesSetup.exe&lt;br /&gt;10.1.1 http://appldnld.apple.com/iTunes10/061-9926.20101215.XdsP6/iTunesSetup.exe&lt;br /&gt;10.1.2 http://appldnld.apple.com/iTunes10/061-9992.20110127.WdzxP/iTunesSetup.exe&lt;br /&gt;10.2    http://appldnld.apple.com/iTunes10/061-9638.20110302.Wnzse/iTunesSetup.exe &lt;br /&gt;10.2.1 http://appldnld.apple.com/iTunes10/041-0471.20110308.Nzxs2/iTunesSetup.exe&lt;br /&gt;&lt;br /&gt;&lt;u&gt;iTunes for Windows x64&lt;/u&gt;&lt;br /&gt;9.2      http://appldnld.apple.com/iTunes9/061-7657.20100616.92msz/iTunes64Setup.exe&lt;br /&gt;9.2.1   http://appldnld.apple.com/iTunes9/061-8603.20100719.Dcfe4/iTunes64Setup.exe&lt;br /&gt;10.0    http://appldnld.apple.com/iTunes10/061-8245.20100901.Pr4rg/iTunes64Setup.exe&lt;br /&gt;10.0.1 http://appldnld.apple.com/iTunes10/061-9187.20100924.Bnhju/iTunes64Setup.exe&lt;br /&gt;10.1    http://appldnld.apple.com/iTunes10/061-9843.20101118.Txdse/iTunes64Setup.exe&lt;br /&gt;10.1.1 http://appldnld.apple.com/iTunes10/061-9927.20101215.Txsde/iTunes64Setup.exe&lt;br /&gt;10.1.2 http://appldnld.apple.com/iTunes10/061-9993.20110127.Nju7Y/iTunes64Setup.exe&lt;br /&gt;10.2    http://appldnld.apple.com/iTunes10/061-9639.20110302.XcKgt/iTunes64Setup.exe &lt;br /&gt;10.2.1 http://appldnld.apple.com/iTunes10/041-0472.20110308.WnT2z/iTunes64Setup.exe&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;iTunes for Mac&lt;/u&gt;&lt;br /&gt;9.2      http://appldnld.apple.com/iTunes9/061-8440.20100616.Tnzs2/iTunes9.2.dmg&lt;br /&gt;9.2.1   http://appldnld.apple.com/iTunes9/061-8601.20100719.nhy5R/iTunes9.2.1.dmg&lt;br /&gt;10.0    http://appldnld.apple.com/iTunes10/061-9183.20100902.X2ndX/iTunes10.dmg&lt;br /&gt;10.0.1 http://appldnld.apple.com/iTunes10/061-9207.20100924.Nzse2/iTunes10.0.1.dmg&lt;br /&gt;10.1    http://appldnld.apple.com/iTunes10/061-9530.20101112.MSakc/iTunes10.1.dmg&lt;br /&gt;10.1.1 http://appldnld.apple.com/iTunes10/041-0027.20101215.AzsL3/iTunes10.1.1.dmg&lt;br /&gt;10.1.2 http://appldnld.apple.com/iTunes10/061-9991.20110127.ZxsE3/iTunes10.1.2.dmg&lt;br /&gt;10.2    http://appldnld.apple.com/iTunes10/061-9637.20110302.Tnz2t/iTunes10.2.dmg &lt;br /&gt;10.2.1 http://appldnld.apple.com/iTunes10/041-0475.20110308.mAcaz/iTunes10.2.1.dmg&lt;br /&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;&lt;br /&gt;iTunes 9.2&lt;br /&gt;http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iTunes9/061-8440.20100616.Tnzs2/iTunes9.2.dmg&lt;br /&gt;&lt;br /&gt;iTunes 9.1.1 (Mac OS 10.4.11 or later)&lt;br /&gt;http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iTunes9/061-8202.20100427.5vfkH/iTunes9.1.1.dmg&lt;br /&gt;&lt;br /&gt;iTunes 9.1 for Mac&lt;br /&gt;http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iTunes9/061-7203.20100330.XswP8/iTunes9.1.dmg&lt;br /&gt;&lt;br /&gt;iTunes 9.0.3 for Mac&lt;br /&gt;http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iTunes9/061-7752.20100201.Tz39N/iTunes9.0.3.dmg&lt;br /&gt;&lt;br /&gt;iTunes 9.0 for Mac&lt;br /&gt;http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iTunes9/061-6350.20090909.tnzs2/iTunes9.dmg&lt;br /&gt;&lt;br /&gt;iTunes 8.2.1 for Mac&lt;br /&gt;http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iTunes8/061-6715.20090715.cfR54/iTunes8.2.1.dmg &lt;br /&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;iTunes 9.2 for Windows 64 bit&lt;br /&gt;http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iTunes9/061-7657.20100616.92msz/iTunes64Setup.exe&lt;br /&gt;&lt;br /&gt;iTunes 9.2 for Windows 32 bit&lt;br /&gt;http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iTunes9/061-7656.20100616.ZTns2/iTunesSetup.exe&lt;br /&gt;&lt;br /&gt;iTunes 9.1.1 for Windows 64 bit (Windows Vista 64 bit, Windows 7 64 bit)&lt;br /&gt;http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iTunes9/061-8204.20100427.AEueJ/iTunes64Setup.exe&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;iTunes 9.1.1 for Windows 32 bit (Windows XP SP2, Vista)&lt;br /&gt;http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iTunes9/061-8203.20100427.1J2kd/iTunesSetup.exe&lt;br /&gt;&lt;br /&gt;iTunes 9.1 for Windows&lt;br /&gt;http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iTunes9/061-7204.20100330.Cdr4T/iTunesSetup.exe&lt;br /&gt;&lt;br /&gt;iTunes 9.0.3 for Windows&lt;br /&gt;http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iTunes9/061-7753.20100201.Jcv4r/iTunesSetup.exe&lt;br /&gt;&lt;br /&gt;iTunes 9.0 for Windows&lt;br /&gt;http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iTunes9/061-6351.20090909.Tza9j/iTunesSetup.exe&lt;br /&gt;&lt;br /&gt;iTunes 8.2.1 for Windows&lt;br /&gt;http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iTunes8/061-6717.20090715.XsE4R/iTunesSetup.exe&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-6405394337954339669?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/6405394337954339669/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=6405394337954339669' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/6405394337954339669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/6405394337954339669'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2010/06/old-versions-of-itunes.html' title='Old versions of iTunes'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-3566792412360405738</id><published>2010-05-02T10:50:00.008+08:00</published><updated>2010-05-02T11:45:04.397+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPad'/><title type='text'>Bluetooth Keyboard for iPad</title><content type='html'>Here are the shortcut keys that I discovered for the Bluetooth keyboard when using iPad&lt;br /&gt;&lt;br /&gt;Command Z : Undo&lt;br /&gt;Command Shift Z : Redo&lt;br /&gt;Command A : Select All&lt;br /&gt;Command X : Cut&lt;br /&gt;Command C : Copy&lt;br /&gt;Command V : Paste&lt;br /&gt;Command Space : keyboard selection (if you have enabled multiple keyboards in iPad)&lt;br /&gt;Command-delete : Delete to beginning of line&lt;br /&gt;Control H : Delete&lt;br /&gt;Control I : Tab&lt;br /&gt;Control K : delete to end of line&lt;br /&gt;Shift Arrow : Make Selection range&lt;br /&gt;Option Arrow : advance / backward word&lt;br /&gt;Command Arrow : Start / End of line or Top / Bottom&lt;br /&gt;Eject button on the top right : hide /unhide soft keyboard for iPad (when in editing mode)&lt;br /&gt;All the Brightness, playback and sound control function keys are working&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-3566792412360405738?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/3566792412360405738/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=3566792412360405738' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/3566792412360405738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/3566792412360405738'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2010/05/bluetooth-keyboard-for-ipad.html' title='Bluetooth Keyboard for iPad'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-988179485648234628</id><published>2010-05-01T23:17:00.004+08:00</published><updated>2010-05-01T23:23:13.862+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Snow Leopard'/><title type='text'>Snow Leopard Screenshots and Grab not working</title><content type='html'>Recently, I have upgraded from 10.5.x to to 10.6.2 and then 10.6.3 and the Screenshots (Cmd Shit 3 / Cmd Shift 4) and Grab app are not function properly.  That is no images are generated.&lt;br /&gt;&lt;br /&gt;The solution is to reinstall the&lt;br /&gt;Mac OS X 10.6.2 Update (Combo)&lt;br /&gt;http://support.apple.com/downloads/DL959/en_US/MacOSXUpdCombo10.6.2.dmg&lt;br /&gt;or &lt;br /&gt;Mac OS X 10.6.3 Update (Combo)&lt;br /&gt;http://support.apple.com/downloads/DL1017/en_US/MacOSXUpdCombo10.6.3v1.1.dmg&lt;br /&gt;&lt;br /&gt;Then these problems will be fixed.&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-988179485648234628?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/988179485648234628/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=988179485648234628' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/988179485648234628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/988179485648234628'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2010/05/snow-leopard-screenshots-and-grab-not.html' title='Snow Leopard Screenshots and Grab not working'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-3739395501031175954</id><published>2010-04-11T17:51:00.003+08:00</published><updated>2010-04-28T21:57:35.959+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vfdecrypt'/><title type='text'>iPhone OS 4.0 beta 1 vfdecrypt key</title><content type='html'>&lt;u&gt;4.0 beta 1 (8A230m)&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Root Filesystem&lt;br /&gt;&lt;br /&gt;iPhone 3G&lt;br /&gt;0da2d3316d5ee7cd1858e4035e451387cd8156e97535fb09028859e68e5b7b39a6649552&lt;br /&gt;&lt;br /&gt;iPhone 3GS&lt;br /&gt;4fea9105d8445961cbeef29f06d93685af4b7f45a02eaf7f7cdc8f78784762df3f1072c7&lt;br /&gt;&lt;br /&gt;iPod Touch 3G&lt;br /&gt;382dee11b9d80387b16ac2030ee1e903b78d9743a31a18bcafc922b7921eca85ab0aebf7&lt;br /&gt;&lt;br /&gt;iPod Touch 2G&lt;br /&gt;d88fa434f6a8c50fd49cd0923879da5c3079c59c0e534cff521a9cecbcad48d84b4daef0&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;4.0 beta 2 (8A248c)&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Root Filesystem&lt;br /&gt;&lt;br /&gt;iPhone 3G&lt;br /&gt;0da2d3316d5ee7cd1858e4035e451387cd8156e97535fb0902 8859e68e5b7b39a6649552 &lt;br /&gt;&lt;br /&gt;iPhone 3GS&lt;br /&gt;62ea9bf9971e6c410231646f916f80330f9cbc1d1c585f0c03 dab6b6f7158dc0a9c5efaf &lt;br /&gt;&lt;br /&gt;iPod Touch 3G &lt;br /&gt;382dee11b9d80387b16ac2030ee1e903b78d9743a31a18bcaf c922b7921eca85ab0aebf7&lt;br /&gt;&lt;br /&gt;iPod Touch 2G&lt;br /&gt;d88fa434f6a8c50fd49cd0923879da5c3079c59c0e534cff52 1a9cecbcad48d84b4daef0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-3739395501031175954?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/3739395501031175954/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=3739395501031175954' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/3739395501031175954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/3739395501031175954'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2010/04/iphone-os-40-beta-1-vfdecrypt-key.html' title='iPhone OS 4.0 beta 1 vfdecrypt key'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-1866459874288514577</id><published>2010-04-10T07:56:00.010+08:00</published><updated>2010-04-11T12:28:19.550+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Stanza USB'/><category scheme='http://www.blogger.com/atom/ns#' term='epub'/><title type='text'>Stanza 2.1 USB transfer epub file (no jailbreak required)</title><content type='html'>Download iPhone Explorer (Windows or Mac version)&lt;br /&gt;&lt;br /&gt;http://www.iphone-explorer.com/&lt;br /&gt;&lt;br /&gt;Choose /var/mobile/Media as root directory and create Stanza folder under DCIM directory&lt;br /&gt;&lt;br /&gt;upload epub file to say&lt;br /&gt;&lt;br /&gt;DCIM/Stanza/b.epub&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3LRNVfBfliQ/S7-_fnOWACI/AAAAAAAAAyQ/3ao4dR17LNI/s1600/stanza1.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 256px;" src="http://2.bp.blogspot.com/_3LRNVfBfliQ/S7-_fnOWACI/AAAAAAAAAyQ/3ao4dR17LNI/s400/stanza1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5458291823222325282" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;1) Launch Stanza on your iPhone, and go to the "Get Books" tab.&lt;br /&gt;2) Select the "Downloads" segment.&lt;br /&gt;3) Tap the plus sign.&lt;br /&gt;4) enter URL&lt;br /&gt;&lt;br /&gt;file:///private/var/mobile/Media/DCIM/Stanza/b.epub&lt;br /&gt;&lt;br /&gt;Then press Download button&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3LRNVfBfliQ/S7-_mfj4SJI/AAAAAAAAAyY/w0mBfOmP3Y4/s1600/stanza2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 267px; height: 400px;" src="http://3.bp.blogspot.com/_3LRNVfBfliQ/S7-_mfj4SJI/AAAAAAAAAyY/w0mBfOmP3Y4/s400/stanza2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5458291941424253074" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-1866459874288514577?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/1866459874288514577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=1866459874288514577' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/1866459874288514577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/1866459874288514577'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2010/04/stanza-21-usb-transfer-epub-file-no.html' title='Stanza 2.1 USB transfer epub file (no jailbreak required)'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_3LRNVfBfliQ/S7-_fnOWACI/AAAAAAAAAyQ/3ao4dR17LNI/s72-c/stanza1.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-4772525850104580737</id><published>2010-03-31T20:26:00.001+08:00</published><updated>2010-03-31T20:28:25.322+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iTunes Old Versions'/><title type='text'>Old versions of iTunes</title><content type='html'>Windows iTunes version 9.0.3&lt;br /&gt;http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iTunes9/061-7753.20100201.Jcv4r/iTunesSetup.exe&lt;br /&gt;&lt;br /&gt;Windows iTunes version 8.2.1&lt;br /&gt;http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iTunes8/061-6717.20090715.XsE4R/iTunesSetup.exe&lt;br /&gt;&lt;br /&gt;Mac iTunes version 9.0.3&lt;br /&gt;http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iTunes9/061-7752.20100201.Tz39N/iTunes9.0.3.dmg&lt;br /&gt;&lt;br /&gt;Mac iTunes version 8.2.1&lt;br /&gt;http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iTunes8/061-6715.20090715.cfR54/iTunes8.2.1.dmg&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-4772525850104580737?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/4772525850104580737/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=4772525850104580737' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/4772525850104580737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/4772525850104580737'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2010/03/old-versions-of-itunes.html' title='Old versions of iTunes'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-1068301803020670480</id><published>2010-02-24T19:33:00.001+08:00</published><updated>2010-02-24T19:35:23.714+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VNC'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><title type='text'>VNC from Windows 7 to Mac Remote Desktop</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3LRNVfBfliQ/S4UO3j7SxTI/AAAAAAAAAyI/WzsP3uGaf3M/s1600-h/vnc_mac.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 321px;" src="http://4.bp.blogspot.com/_3LRNVfBfliQ/S4UO3j7SxTI/AAAAAAAAAyI/WzsP3uGaf3M/s400/vnc_mac.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5441772072446641458" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-1068301803020670480?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/1068301803020670480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=1068301803020670480' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/1068301803020670480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/1068301803020670480'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2010/02/vnc-from-windows-7-to-mac-remote.html' title='VNC from Windows 7 to Mac Remote Desktop'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_3LRNVfBfliQ/S4UO3j7SxTI/AAAAAAAAAyI/WzsP3uGaf3M/s72-c/vnc_mac.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-536368517749379435</id><published>2010-01-07T12:26:00.012+08:00</published><updated>2010-01-07T15:26:00.507+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='支付寶增值方法'/><title type='text'>香港人支付寶增值方法</title><content type='html'>&lt;u&gt;虛擬商品 / 小數目的話&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;(1) 香港買張中移動&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;神州行&lt;/span&gt;手機充值卡 (序列號/卡號為17位，充值密碼為18位的全國通用充值卡)&lt;br /&gt;(2) 支付寶內選擇[消费卡]充值及[话费充值卡]&lt;br /&gt;(3) 選擇[充值卡面值]50元/100元 及填入 [充值卡号] (序列號/Serial Number) 及 [充值卡密码]&lt;br /&gt;&lt;br /&gt;充值卡面值100元扣除服务费：5.00 元（费率：5%）&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3LRNVfBfliQ/S0Vn5TmW4EI/AAAAAAAAAx8/49gQgsYbmAg/s1600-h/cm100.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 239px; height: 158px;" src="http://3.bp.blogspot.com/_3LRNVfBfliQ/S0Vn5TmW4EI/AAAAAAAAAx8/49gQgsYbmAg/s400/cm100.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5423855560448991298" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;大數目的話&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;淘寶通過「支付寶」平台完成支付，&lt;br /&gt;他們近年努力開拓香港業務。&lt;br /&gt;&lt;br /&gt;目前支持香港、台灣、澳門地區通過Visa 3D驗證的Visa信用卡。&lt;br /&gt;香港的部分，包括以下銀行：&lt;br /&gt;BOCI(中銀香港)&lt;br /&gt;Hang Seng(恆生銀行)&lt;br /&gt;HSBC(香港匯豐銀行)&lt;br /&gt;BEA(東亞銀行)&lt;br /&gt;SCB(渣打銀行)&lt;br /&gt;DBS(星展銀行)&lt;br /&gt;ICBC(中國工商銀行亞洲)&lt;br /&gt;&lt;br /&gt;服務費用及限額：&lt;br /&gt;從2009年7月7日開始, 支付寶將收取3％的服務費（如發生退款，服務費按相同比例退還，但您需要承擔可能的資金損益，例如匯率波動、銀行收費等）。此服務費與VISA卡組織所確定的附加費用無關，是支付寶對用戶使用支付寶系統進行交易所收取的系統使用服務費。&lt;br /&gt;&lt;br /&gt;溫馨提醒：&lt;br /&gt;以下5種情況下不可以使用VISA付款：&lt;br /&gt;1）淘寶以外的交易是不能使用外卡的&lt;br /&gt;2）如運費是由賣家負責，請聯繫賣家在購買前把運費更改為“買家負責” 。&lt;br /&gt;3）如使用了“合併付款”功能，visa暫時是不支持“合併付款” 。&lt;br /&gt;4）虛擬商品是不能用VISA付款。&lt;br /&gt;5）交易金額小於1元人民幣是不能使用外卡的。&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-536368517749379435?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/536368517749379435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=536368517749379435' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/536368517749379435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/536368517749379435'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2010/01/blog-post.html' title='香港人支付寶增值方法'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_3LRNVfBfliQ/S0Vn5TmW4EI/AAAAAAAAAx8/49gQgsYbmAg/s72-c/cm100.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-6162286036163283096</id><published>2010-01-04T01:08:00.007+08:00</published><updated>2010-01-04T02:51:43.141+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ikee'/><category scheme='http://www.blogger.com/atom/ns#' term='main.h'/><title type='text'>Source code for ikee iPhone worm</title><content type='html'>&lt;img src="http://img41.imageshack.us/img41/730/asto.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;http://pastie.org/693452&lt;br /&gt;&lt;br /&gt;What I guess, the missing main.h should be something like this below:&lt;br /&gt;&lt;br /&gt;&lt;dl class="codebox"&gt;&lt;dt&gt;main.h &lt;a href="#" onclick="selectCode(this); return false;"&gt;Select all&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;code&gt;&lt;br /&gt;#include &amp;lt;sys/fcntl.h&amp;gt;&lt;br /&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;#include &amp;lt;sys/time.h&amp;gt;&lt;br /&gt;#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;#include &amp;lt;sys/socket.h&amp;gt;&lt;br /&gt;#include &amp;lt;netinet/in.h&amp;gt;&lt;br /&gt;#include &amp;lt;netdb.h&amp;gt;&lt;br /&gt;#include &amp;lt;arpa/inet.h&amp;gt;&lt;br /&gt;#include &amp;lt;syslog.h&amp;gt;&lt;br /&gt;#include &amp;lt;errno.h&amp;gt;&lt;br /&gt;#include &amp;lt;ifaddrs.h&amp;gt;&lt;br /&gt;#include &amp;lt;string.h&amp;gt;&lt;br /&gt;&lt;br /&gt;#define MAX_NUM 24&lt;br /&gt;#define VULN_PASS "alpine"&lt;br /&gt;&lt;br /&gt;void scanner(char *ipRange);&lt;br /&gt;int scanHost(char* host);&lt;br /&gt;int checkHost(char *host);&lt;br /&gt;int runCommand(char* command, char *host);&lt;br /&gt;int prunCommand(char* command, char *host);&lt;br /&gt;int CopyFile(char* src, char* dst, char* host);&lt;br /&gt;int ChangeOnBoot();&lt;br /&gt;int KillSSHD();&lt;br /&gt;int infectHost(char *host);&lt;br /&gt;char *randHost(void);&lt;br /&gt;int get_lock(void);&lt;br /&gt;char *getAddrRange();&lt;br /&gt;int tokenise (char input[], char *token[], char* spl);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;br /&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-6162286036163283096?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/6162286036163283096/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=6162286036163283096' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/6162286036163283096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/6162286036163283096'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2010/01/source-code-for-ikee-iphone-worm.html' title='Source code for ikee iPhone worm'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-134076630625544602</id><published>2009-12-12T03:20:00.003+08:00</published><updated>2009-12-12T03:25:30.462+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SBSettings'/><category scheme='http://www.blogger.com/atom/ns#' term='remove ads'/><title type='text'>How to remove ads from SBSettings</title><content type='html'>You have to install PHP and run this script&lt;br /&gt;&lt;dl class="codebox"&gt;&lt;dt&gt;removeaps.php &lt;a href="#" onclick="selectCode(this); return false;"&gt;Select all&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;code&gt;&lt;br /&gt;#!/usr/bin/php&lt;br /&gt;&amp;lt;?&lt;br /&gt;$filename = trim(shell_exec("find /Applications.* -type f -name SBSettings"));&lt;br /&gt;$backup_filename = $filename.".bak";&lt;br /&gt;$tmp_filename = $filename.".tmp";&lt;br /&gt;&lt;br /&gt;while (file_exists($backup_filename)) {&lt;br /&gt;$backup_filename .= ".bak";&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;if (!file_exists($filename)) {&lt;br /&gt;die("Can't open: $filename\n");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;copy($filename, $backup_filename);&lt;br /&gt;&lt;br /&gt;echo "Patching file: $filename\n";&lt;br /&gt;echo "Backup saved at: $backup_filename\n";&lt;br /&gt;&lt;br /&gt;$fp = fopen($filename,"r");&lt;br /&gt;$data = fread($fp, filesize($filename));&lt;br /&gt;fclose($fp);&lt;br /&gt;&lt;br /&gt;$data = str_replace('extra.thebigboss.org','extra.th4bigbo ss.org',$data);&lt;br /&gt;$data = str_replace('mm.admob.com','mm.a4mob.com',$data);&lt;br /&gt;$data = str_replace('r.admob.com','r.a4mob.com',$data);&lt;br /&gt;$data = str_replace('ads.mobclix.com','ads.m4b4lix.com',$d ata);&lt;br /&gt;$data = str_replace('a.qwapi.com','a.q4api.com',$data);&lt;br /&gt;$data = str_replace('mydas.mobi','my4as.mobi',$data);&lt;br /&gt;&lt;br /&gt;$fp = fopen($tmp_filename,"w");&lt;br /&gt;fwrite($fp,$data);&lt;br /&gt;fclose($fp);&lt;br /&gt;&lt;br /&gt;shell_exec("ldid -s \"$tmp_filename\"");&lt;br /&gt;shell_exec("mv \"$tmp_filename\" \"$filename\"");&lt;br /&gt;shell_exec("chmod 4755 \"$filename\"");&lt;br /&gt;echo "\nDone! :)\n";&lt;br /&gt;&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;br /&gt;&lt;br /&gt;And you have to ldid -s /Applications/SBSettings.app/SBSettings&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-134076630625544602?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/134076630625544602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=134076630625544602' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/134076630625544602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/134076630625544602'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2009/12/how-to-remove-ads-from-sbsettings.html' title='How to remove ads from SBSettings'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-2601755294524091210</id><published>2009-12-09T19:13:00.008+08:00</published><updated>2009-12-10T02:04:25.815+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='weather.yahooapis'/><title type='text'>[How-to] dump yahoo weather city location codes for US</title><content type='html'>Here is the bash script to dump the location codes from weather.yahooapis.com&lt;br /&gt;&lt;br /&gt;&lt;dl class="codebox"&gt;&lt;dt&gt;getcityloccode.sh &lt;a href="#" onclick="selectCode(this); return false;"&gt;Select all&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;#/bin/bash&lt;br /&gt;for a in AL AK AZ AR CA CO CT DE DC FL GA HI ID IL IN IA KS KY LA ME MD MA MI MN MS MO MT NE NV NH NJ NM NY NC ND OH OK OR PA RI SC SD TN TX UT VT VA WA WV WI WY AS GU MP PR VI FM MH PW AA AE AP CZ PI TT CM ; do&lt;br /&gt;countblank=0&lt;br /&gt;for h in 0 1 2 3 4 5 6 7 8 9 ; do&lt;br /&gt;for i in 0 1 2 3 4 5 6 7 8 9 ; do&lt;br /&gt;for j in 0 1 2 3 4 5 6 7 8 9 ; do&lt;br /&gt;for k in 0 1 2 3 4 5 6 7 8 9 ; do&lt;br /&gt;locname=`curl -s -L "http://weather.yahooapis.com/forecastrss?p=US${a}${h}${i}${j}${k}&amp;u=f" | grep "Yahoo! Weather for" | sed -e "s/\(^.*Yahoo! Weather for \)\(.*, ${a}\)\(.*\)/\2/"`&lt;br /&gt;if [ "${locname}" != "" ] ; then&lt;br /&gt;&amp;nbsp;&amp;nbsp;echo US${a}${h}${i}${j}${k} $locname&lt;br /&gt;&amp;nbsp;&amp;nbsp;countblank=0&lt;br /&gt;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;countblank=$[$countblank+1]&lt;br /&gt;&amp;nbsp;&amp;nbsp;if [ $countblank -gt 5 ] ; then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break 4&lt;br /&gt;&amp;nbsp;&amp;nbsp;fi&lt;br /&gt;fi&lt;br /&gt;done&lt;br /&gt;done&lt;br /&gt;done&lt;br /&gt;done&lt;br /&gt;done&lt;br /&gt;&lt;/code&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;br /&gt;&lt;br /&gt;and run it with&lt;br /&gt;&lt;code&gt;./getcityloccode.sh &gt; cityloccodes.txt &amp;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The results are&lt;br /&gt;&lt;code&gt;&lt;br /&gt;USAL0001 Abbeville, AL&lt;br /&gt;USAL0002 Abernant, AL&lt;br /&gt;USAL0003 Adamsville, AL&lt;br /&gt;USAL0004 Addison, AL&lt;br /&gt;USAL0005 Adger, AL&lt;br /&gt;USAL0006 Akron, AL&lt;br /&gt;USAL0007 Alabaster, AL&lt;br /&gt;USAL0008 Alberta, AL&lt;br /&gt;USAL0009 Albertville, AL&lt;br /&gt;USAL0010 Alexander City, AL&lt;br /&gt;...&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-2601755294524091210?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/2601755294524091210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=2601755294524091210' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/2601755294524091210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/2601755294524091210'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2009/12/how-to-dump-yahoo-weather-city-codes.html' title='[How-to] dump yahoo weather city location codes for US'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-4666728174818957293</id><published>2009-12-08T20:47:00.006+08:00</published><updated>2009-12-08T20:53:25.314+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac OSX'/><title type='text'>Collection of 59 ebooks about Mac OSX</title><content type='html'>Collection of 59 ebooks about Mac OSX (1.35 GB)&lt;br /&gt;&lt;br /&gt;List of these ebooks is below.&lt;br /&gt;Addison Wesley – Cocoa Programming for Mac OS X 3rd Edition (2008).chm&lt;br /&gt;Addison Wesley – Mac OS X Leopard Phrasebook (2007).chm&lt;br /&gt;Addison Wesley – Step into Xcode Mac OS X Development (2006).pdf&lt;br /&gt;Apress – Creating Mac Widgets with Dashcode.pdf&lt;br /&gt;Apress – Foundations of Mac OS X Leopard Security (2008).pdf&lt;br /&gt;Apress – Learn Objective-C on the Mac (2009).pdf&lt;br /&gt;Apress – Mac for Linux Geeks (2008).pdf&lt;br /&gt;Apress – Mac OS X Leopard, Beyond the Manual (2008).pdf&lt;br /&gt;Dennis – The Independent Guide to the Mac 2nd edition (2009).pdf&lt;br /&gt;Focal – Mac OS X for Photographers (2008).pdf&lt;br /&gt;FriendsofED – Getting StartED with Mac OS X Leopard (2007).pdf&lt;br /&gt;Macworld – Mac OS X Hints Leopard Edition (2008).pdf&lt;br /&gt;MacWorld – Total Leopard, The Macworld OS X 10.5 Superguide (2008).pdf&lt;br /&gt;Manning – Programming Mac OS X, A Guide For Unix Developers (2003).pdf&lt;br /&gt;McGraw-Hill – How to Do Everything, Mac (2008).pdf&lt;br /&gt;McGraw-Hill – Mac OS X Leopard QuickSteps (2008).pdf&lt;br /&gt;New Riders – Mac OS X Leopard Killer Tips (2008).pdf&lt;br /&gt;O’Reilly – Mac OS X Snow Leopard, The Missing Manual (2009).pdf&lt;br /&gt;O’Reilly – Cocoa In A Nutshell (2003).pdf&lt;br /&gt;O’Reilly – Essential Mac OS X Panther Server Administration (2005).chm&lt;br /&gt;O’Reilly – Inside .Mac (2004).chm&lt;br /&gt;O’Reilly – Mac OS X for UNIX Geeks (2003).pdf&lt;br /&gt;O’Reilly – Mac OS X Hacks (2003).chm&lt;br /&gt;O’Reilly – Mac OS X Leopard Pocket Guide (2007).chm&lt;br /&gt;O’Reilly – Mac OS X Leopard, The Missing Manual (2007).chm&lt;br /&gt;O’Reilly – Mac OS X Panther Hacks (2004).pdf&lt;br /&gt;O’Reilly – Mac OS X Panther In A Nutshell 2nd Edition (2004).chm&lt;br /&gt;O’Reilly – Mac OS X Snow Leopard Pocket Guide (2009).pdf&lt;br /&gt;O’Reilly – Mac OS X Tiger for Unix Geeks (2005).chm&lt;br /&gt;O’Reilly – Switching to the Mac, The Missing Manual Leopard Edition (2008).chm&lt;br /&gt;Peachpit – Apple Training Series, Mac OS X Advanced System Administration v10.5 (2008).pdf&lt;br /&gt;Peachpit – Apple Training Series, Mac OS X Deployment v10.5 (2008).pdf&lt;br /&gt;Peachpit – Apple Training Series, Mac OS X Support Essentials 2nd Edition (2008).pdf&lt;br /&gt;Peachpit – Mac OS X 10.5 Leopard, Peachpit Learning Series (2008).pdf&lt;br /&gt;Peachpit – Mac OS X 10.5 Leopard, Visual QuickStart Guide (2008).pdf&lt;br /&gt;Peachpit – Robin Williams Cool Mac Apps 2nd Edition (2005).chm&lt;br /&gt;Peachpit – The Little Mac Book, Leopard Edition (2008).pdf&lt;br /&gt;Premier – Mac OS X Power User’s Guide (2002).pdf&lt;br /&gt;Que – Mac OS X Snow Leopard In Depth (2009).pdf&lt;br /&gt;Que – Mac OS X Snow Leopard On Demand (2009).pdf&lt;br /&gt;Que – Sleeping with the Enemy, Running Windows on a Mac (2006).chm&lt;br /&gt;Que – Special Edition Using Mac OS X Leopard (2008).pdf&lt;br /&gt;Sams – Mac OS X Tiger Unleashed (2005).chm&lt;br /&gt;Sams – Teach Yourself Mac OS X Leopard All in One (2007).chm&lt;br /&gt;Sams – Teach Yourself Mac OS X Tiger All in One (2005).chm&lt;br /&gt;Sams – Xcode 3 Unleashed (2008).pdf&lt;br /&gt;Sybex – Mac OS X Power Tools (2003).chm&lt;br /&gt;Sybex – The Mac OS X Command Line, Unix Under the Hood (2005).pdf&lt;br /&gt;Wiley – Cocoa Programming for Mac OS X For Dummies (2009).pdf&lt;br /&gt;Wiley – MAC OS X Leopard Bible (2008).pdf&lt;br /&gt;Wiley – Mac OS X Leopard, Just the Steps For Dummies (2007).pdf&lt;br /&gt;Wiley – MAC OS X UNIX Toolbox (2009).pdf&lt;br /&gt;Wiley – Mac OS X v 10.3 Panther, Top 100 Simplified Tips and Tricks (2004).chm&lt;br /&gt;Wiley – MacBook Portable Genius (2009).pdf&lt;br /&gt;Wiley – Macs All-in-One Desk Reference For Dummies (2008).pdf&lt;br /&gt;Wiley – Macs For Dummies 8th Edition (2004).pdf&lt;br /&gt;Wrox – Beginning Mac OS X Programming (2005).pdf&lt;br /&gt;Wrox – Beginning Mac OS X Tiger Dashboard Widget Development (2006).pdf&lt;br /&gt;Wrox – Beginning Xcode (2006).chm&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Download&lt;/u&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;http://hotfile.com/dl/15057730/68b617b/Mac_OS_ebook_collection.part01.rar.html&lt;br /&gt;http://hotfile.com/dl/15057787/1d29fcd/Mac_OS_ebook_collection.part02.rar.html&lt;br /&gt;http://hotfile.com/dl/15057832/d83aca5/Mac_OS_ebook_collection.part03.rar.html&lt;br /&gt;http://hotfile.com/dl/15057879/fc3b801/Mac_OS_ebook_collection.part04.rar.html&lt;br /&gt;http://hotfile.com/dl/15057939/664a5b1/Mac_OS_ebook_collection.part05.rar.html&lt;br /&gt;http://hotfile.com/dl/15057979/d7834d9/Mac_OS_ebook_collection.part06.rar.html&lt;br /&gt;http://hotfile.com/dl/15058029/7f5a694/Mac_OS_ebook_collection.part07.rar.html&lt;br /&gt;http://hotfile.com/dl/15058075/63a7a3d/Mac_OS_ebook_collection.part08.rar.html&lt;br /&gt;http://hotfile.com/dl/15058126/66d2a22/Mac_OS_ebook_collection.part09.rar.html&lt;br /&gt;http://hotfile.com/dl/15058183/595533c/Mac_OS_ebook_collection.part10.rar.html&lt;br /&gt;http://hotfile.com/dl/15058415/fbdd174/Mac_OS_ebook_collection.part11.rar.html&lt;br /&gt;http://hotfile.com/dl/15058478/a43d14e/Mac_OS_ebook_collection.part12.rar.html&lt;br /&gt;http://hotfile.com/dl/15058539/195d3bb/Mac_OS_ebook_collection.part13.rar.html&lt;br /&gt;http://hotfile.com/dl/15059551/1b71449/Mac_OS_ebook_collection.part14.rar.html&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-4666728174818957293?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/4666728174818957293/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=4666728174818957293' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/4666728174818957293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/4666728174818957293'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2009/12/collection-of-59-ebooks-about-mac-osx.html' title='Collection of 59 ebooks about Mac OSX'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-2968901904867145329</id><published>2009-12-07T00:57:00.002+08:00</published><updated>2009-12-07T00:58:17.491+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac OSX'/><title type='text'>Remove print jobs in Mac OS X</title><content type='html'>Type this in Terminal to remove all print jobs&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cancel -a -&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-2968901904867145329?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/2968901904867145329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=2968901904867145329' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/2968901904867145329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/2968901904867145329'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2009/12/remove-print-jobs-in-mac-os-x.html' title='Remove print jobs in Mac OS X'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-7309855005246106481</id><published>2009-11-25T07:30:00.008+08:00</published><updated>2009-11-25T07:53:41.489+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='Firewall iP'/><title type='text'>Firewall iP v1.1-2 Cracked</title><content type='html'>Firewall iP v1.1-2 download&lt;br /&gt;&lt;a href="http://www.zshare.net/download/68956170edaa0e1f/"&gt;http://www.zshare.net/download/68956170edaa0e1f/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Requirement:&lt;br /&gt;mobilesubstrate&lt;br /&gt;firmware 3.0 or above&lt;br /&gt;jailbreak iPhone/iPod Touch&lt;br /&gt;&lt;br /&gt;Installation Method&lt;br /&gt;(1) Put it in /var/root/Media/Cydia/AutoInstall/&lt;br /&gt;(2) Restart your device&lt;br /&gt;&lt;br /&gt;Description:&lt;br /&gt;Decide yourself, Securtity for your iPhone and iPod touch Ony for iPhone OS 3.x Firewall iP allows you to block outgoing connections (TCP &amp; UDP). It hooks into applications from AppStore and Cydia. Firewall iP will warn you if the app wants to establish a connection to a host and shows you the hostname. Then you have the options to allow/deny the connection once/always or allow/deny all connections for the application.&lt;br /&gt;&lt;br /&gt;Screenshots:&lt;br /&gt;&lt;panel&gt;&lt;br /&gt;&lt;div class="horizontal-scroll-wrapper" id="scroller"&gt;&lt;br /&gt;&lt;div class="horizontal-scroll-area" style="width:1700px;"&gt; &lt;!-- = at least (190 + 20) * num_of_pics --&gt;&lt;br /&gt;&lt;img src="http://moreinfo.thebigboss.org/moreinfo/firewall1.png"/&gt;&lt;img src="http://moreinfo.thebigboss.org/moreinfo/firewall2.png"/&gt;&lt;img src="http://moreinfo.thebigboss.org/moreinfo/firewall3.png"/&gt;&lt;img src="http://moreinfo.thebigboss.org/moreinfo/firewall4.png"/&gt;&lt;img src="http://moreinfo.thebigboss.org/moreinfo/firewall5.png"/&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="horizontal-scroll-pips"&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/panel&gt;&lt;br /&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-7309855005246106481?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/7309855005246106481/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=7309855005246106481' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/7309855005246106481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/7309855005246106481'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2009/11/fireware-ip-v11-2-cracked.html' title='Firewall iP v1.1-2 Cracked'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-4378799799753717910</id><published>2009-11-24T18:40:00.006+08:00</published><updated>2010-05-02T16:11:39.512+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='SystemVersion.plist'/><title type='text'>How to fake or change iPhone Firmware Version</title><content type='html'>&lt;code&gt;&lt;br /&gt;#backup SystemVersion.plist&lt;br /&gt;cp -p /System/Library/CoreServices/SystemVersion.plist /System/Library/CoreServices/SystemVersion.plist.bak&lt;br /&gt;&lt;br /&gt;#change product build version&lt;br /&gt;plutil  -key ProductBuildVersion -value 7C144 /System/Library/CoreServices/SystemVersion.plist&lt;br /&gt;#Writing new value for ProductBuildVersion to /System/Library/CoreServices/SystemVersion.plist&lt;br /&gt;&lt;br /&gt;#change product version number&lt;br /&gt;plutil  -key ProductVersion -value 3.1 /System/Library/CoreServices/SystemVersion.plist&lt;br /&gt;#Writing new value for ProductVersion to /System/Library/CoreServices/SystemVersion.plist&lt;br /&gt;&lt;br /&gt;#check firmware version number after change&lt;br /&gt;plutil /System/Library/CoreServices/SystemVersion.plist&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Firmware and Build Version&lt;br /&gt;3.0 (7A341)&lt;br /&gt;3.0.1 (7A400)&lt;br /&gt;3.1 (7C144)&lt;br /&gt;3.1.2 (7D11)&lt;br /&gt;3.1.3 (7E18)&lt;br /&gt;plutil -key ProductBuildVersion -value 7E18 /System/Library/CoreServices/SystemVersion.plist&lt;br /&gt;plutil -key ProductVersion -value 3.1.3 /System/Library/CoreServices/SystemVersion.plist&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-4378799799753717910?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/4378799799753717910/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=4378799799753717910' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/4378799799753717910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/4378799799753717910'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2009/11/how-to-fake-or-change-iphone-firmware.html' title='How to fake or change iPhone Firmware Version'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-3874731843780215452</id><published>2009-11-21T18:49:00.003+08:00</published><updated>2009-11-21T18:53:29.807+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='Google Sync'/><category scheme='http://www.blogger.com/atom/ns#' term='Google Apps'/><title type='text'>Google Apps and Google Sync to iPhone</title><content type='html'>If you have google apps email (that is your own domain, you have to enable mobile sync in your google app dashboard &lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.iphone.org.hk/attach/50943-googleappsync-embed.png"/&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;and follow this guide to enable google sync &lt;br /&gt;&lt;br /&gt;http://www.knowliz.com/2009/02/how-to-sync-multiple-calendars-with.html &lt;br /&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-3874731843780215452?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/3874731843780215452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=3874731843780215452' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/3874731843780215452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/3874731843780215452'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2009/11/google-apps-and-google-sync-to-iphone.html' title='Google Apps and Google Sync to iPhone'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-4870221630353858276</id><published>2009-11-19T21:19:00.027+08:00</published><updated>2011-08-15T05:27:14.269+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='git'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac OSX'/><title type='text'>Install git for Mac OS X Snow Leopard</title><content type='html'>&lt;code&gt;&lt;br /&gt;mkdir ~/src&lt;br /&gt;cd ~/src/&lt;br /&gt;curl -O http://kernel.org/pub/software/scm/git/git-1.6.5.3.tar.bz2&lt;br /&gt;tar -xjvf git-1.6.5.3.tar.bz2&lt;br /&gt;cd git-1.6.5.3&lt;br /&gt;./configure --prefix=/usr/local&lt;br /&gt;make&lt;br /&gt;sudo make install&lt;br /&gt;git --version&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;This is how to create git-repo over ssh&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;suppose you have a project in ~/yourprojectdir&lt;br /&gt;and the remote ssh server login is user@xxx.xxx.xxx.xxx&lt;br /&gt;both client and server have git installed&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="color:#660000;"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Method 1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd ~/yourprojectdir&lt;br /&gt;&lt;br /&gt;git init&lt;br /&gt;&lt;br /&gt;git add . # include everything below ./ in the first commit; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;# if you want to remove use git rm -r --cache xxx&lt;br /&gt;&lt;br /&gt;git commit&lt;br /&gt;&lt;br /&gt;cd ..&lt;br /&gt;&lt;br /&gt;git clone --bare ~/yourprojectdir yourproject.git&lt;br /&gt;&lt;br /&gt;touch yourproject.git/git-daemon-export-ok&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;then copy the git directory to your ssh sever&lt;br /&gt;&lt;code&gt;&lt;br /&gt;scp -r yourproject.git user@xxx.xxx.xxx.xx:/Volumes/HD/git/&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;setup git repo in ssh server&lt;br /&gt;&lt;code&gt;&lt;br /&gt;ssh  user@xxx.xxx.xxx.xx "cd /Volumes/HD/git/yourproject.git; git --bare update-server-info; mv hooks/post-update.sample hooks/post-update"&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;check the location of remote git binary and the remote ssh login shell&lt;br /&gt;&lt;code&gt;&lt;br /&gt;ssh user@xxx.xxx.xxx.xxx "which git-upload-pack"&lt;br /&gt;ssh user@xxx.xxx.xxx.xxx "echo \$PATH"&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;mine is /usr/local/bin/git-upload-pack&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;if the remote login shell does not include path of git, create ~/.bashrc in your remote ssh login shell&lt;br /&gt;&lt;code&gt;&lt;br /&gt;ssh user@xxx.xxx.xxx.xxx "echo 'export PATH=\${PATH}:/usr/local/bin' &gt; ~/.bashrc"&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;push to remote git repo&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd ~/yourprojectdir&lt;br /&gt;&lt;br /&gt;git remote add origin ssh://user@xxx.xxx.xxx.xxx/Volumes/HD/git/yourproject.git&lt;br /&gt;&lt;br /&gt;git push origin master&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="color:#660000;"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Method 2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Create git repo in remote server&lt;br /&gt;&lt;code&gt;&lt;br /&gt;ssh user@xxx.xxx.xxx.xxx "mkdir -p /Volumes/HD/git/yourproject.git; cd /Volumes/HD/git/yourproject.git; git --bare init; touch git-daemon-export-ok"&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Check the location of remote git binary and the remote ssh login shell as per Method 1&lt;br /&gt;&lt;br /&gt;Commit project in your local and push to git repo&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd ~/yourprojectdir&lt;br /&gt;&lt;br /&gt;git init&lt;br /&gt;&lt;br /&gt;git add . # include everything below ./ in the first commit; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;# if you want to remove use git rm -r --cache xxx&lt;br /&gt;&lt;br /&gt;git commit&lt;br /&gt;&lt;br /&gt;git remote add origin ssh://user@xxx.xxx.xxx.xxx/Volumes/HD/git/yourproject.git&lt;br /&gt;&lt;br /&gt;git push origin master&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="color:#660000;"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Test git clone&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd ~&lt;br /&gt;git clone ssh://user@xxx.xxx.xxx.xxx/Volumes/HD/git/yourproject.git working&lt;br /&gt;cd working&lt;br /&gt;git log&lt;br /&gt;git checkout&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="color:#660000;"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;How to Branch&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;git branch -r # show branch in repo&lt;br /&gt;git checkout -b todo origin/to-do-branch  # checkout a new branch&lt;br /&gt;git checkout master # checkout the master branch&lt;br /&gt;&lt;br /&gt;git branch next  # create new branch&lt;br /&gt;git add .&lt;br /&gt;git commit -m 'commit nextbranch'&lt;br /&gt;git push origin next&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="color:#660000;"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;How to fetch Branch from github repo&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;git clone git://github.com/username/repo-name.git&lt;br /&gt;cd repo-name &lt;br /&gt;git branch -r # show branch in repo&lt;br /&gt;git checkout origin/to-do-branch  # quick peek at an upstream branch&lt;br /&gt;git checkout -b todo origin/to-do-branch  # checkout a new tracking branch&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;For subversion, it is here&lt;br /&gt;http://subversion.apache.org/download/#recommended-release&lt;br /&gt;&lt;br /&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-4870221630353858276?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/4870221630353858276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=4870221630353858276' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/4870221630353858276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/4870221630353858276'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2009/11/install-git-for-mac-os-x-snow-leopard.html' title='Install git for Mac OS X Snow Leopard'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-5788904672456232357</id><published>2009-11-17T11:55:00.001+08:00</published><updated>2009-11-17T11:57:44.800+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mkisofs'/><title type='text'>How to create an iso image with mkisofs in cygwin</title><content type='html'>&lt;code&gt;&lt;br /&gt;&amp;nbsp;mkisofs -iso-level 2 -J -R -l -D -N -joliet-long \&lt;br /&gt;&amp;nbsp;-relaxed-filenames -V "yourlabel" \&lt;br /&gt;&amp;nbsp;-o yourcd.iso yourdirectory&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-5788904672456232357?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/5788904672456232357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=5788904672456232357' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/5788904672456232357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/5788904672456232357'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2009/11/how-to-create-iso-image-with-mkisofs-in.html' title='How to create an iso image with mkisofs in cygwin'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-486776146662581798</id><published>2009-11-14T14:43:00.017+08:00</published><updated>2009-11-17T14:50:55.079+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='appulous'/><title type='text'>appulous who am i ?</title><content type='html'>the answer is&lt;br /&gt;kyek&lt;br /&gt;&lt;br /&gt;What was the name of Hackulous' April Fool's Day app?&lt;br /&gt;Winulous&lt;br /&gt;&lt;br /&gt;Hackulous started off as ___________.net?&lt;br /&gt;Geniusblog&lt;br /&gt;&lt;br /&gt;The very first public forum dedicated specifically to iPhone 2.0 app cracking was hosted at ___________.com?&lt;br /&gt;haklabs&lt;br /&gt;&lt;br /&gt;Who is the cracker most credited with discovering the cracking method we use today?&lt;br /&gt;lsemtex&lt;br /&gt;&lt;br /&gt;Who was the admin of Hakstore?&lt;br /&gt;labrat&lt;br /&gt;&lt;br /&gt;Who wrote the very first autocracking BASH script?&lt;br /&gt;Flox&lt;br /&gt;&lt;br /&gt;__________4fun&lt;br /&gt;b00sted&lt;br /&gt;&lt;br /&gt;__________aasdf&lt;br /&gt;bugmenot&lt;br /&gt;&lt;br /&gt;What is Haklab's favorite food?&lt;br /&gt;P e n i s&lt;br /&gt;&lt;br /&gt;I work for Apple's law firm and have been trying to get Appulous shut down since the beginning.&lt;br /&gt;ian ramage&lt;br /&gt;&lt;br /&gt;Who did Labrat attempt to con into writing a private Appulous clone for his website? (It wasn't Hoover Dam.)&lt;br /&gt;&lt;b&gt;andydam&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;http://iphoneaddict.fr/index.php?post/2009/11/14/Le-site-Appulous-est-desormais-protege-par-un-mot-de-passe&lt;br /&gt;&lt;br /&gt;There is a trick to use google search engine cache&lt;br /&gt;e.g. enter this into the google search box&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);font-size:180%;" &gt;sims site:appulo.us&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-486776146662581798?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/486776146662581798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=486776146662581798' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/486776146662581798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/486776146662581798'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2009/11/appulous-who-am-i.html' title='appulous who am i ?'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-3790276232918955999</id><published>2009-11-13T07:47:00.014+08:00</published><updated>2011-09-25T07:59:39.326+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Parallels Desktop'/><title type='text'>Parallels Desktop 5 Serial</title><content type='html'>&lt;span style="color:#FF0000;"&gt;Parallels Desktop 5&lt;/span&gt;&lt;br /&gt;GC956T-XQN1ZM-MG0JC0-3B3JRT-XZTW2T&lt;br /&gt;&lt;br /&gt;P1RR7C-A90J0A-0H1HPB-7FENCD-S4MBSG&lt;br /&gt;&lt;br /&gt;http://download.parallels.com/desktop/v5/en_us/parallels/ga/ParallelsDesktop-parallels-en_US-5.0.9220.531002.dmg&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;Update 2009/12/26&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#FF0000;"&gt;Parallels Desktop 5.0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;GC956T-XQN1ZM-MG0JC0-3B3JRT-XZTW2T&lt;br /&gt;windup key QC986-27D34-6M3TY-JJXP9-TBGMD&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;Update 2010/3/17&lt;/span&gt;&lt;br /&gt;Parallels Tools Iso latedSoul5591 (MAC)&lt;br /&gt;http://hotfile.com/dl/32232886/c6e763a/Parallel_Tools_IsolatedSoul5591.rar.html&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;Update 2010/4/26&lt;/span&gt;&lt;br /&gt;Parallels Desktop 5.0.9344.558741&lt;br /&gt;http://download.parallels.com/desktop/v5/en_us/parallels/update3/ParallelsDesktop-parallels-en_US-5.0.9344.558741.dmg&lt;br /&gt;&lt;br /&gt;Serial No&lt;br /&gt;First:&lt;br /&gt;GFB577-DDJJ9A-VGPP47-EAB1YR-EEQDMJ&lt;br /&gt;After:&lt;br /&gt;MJZQ7R-CNDVAJ-605Z8C-2VC1CN-PXQC5T&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;span style="color:#FF0000;"&gt;Parallels Desktop 6&lt;/span&gt;&lt;br /&gt;KRHPFX-CPGPAN-CG13A9-W7VW5S-AS1794&lt;br /&gt;&lt;br /&gt;NQT0GS-BS73JA-B03MF3-DBR8F6-58ZJWA&lt;br /&gt;&lt;br /&gt;Download here http://download.parallels.com/desktop/v6/en_us/parallels/ga/ParallelsDesktop-parallels-en_US-6.0.11820.602974.dmg&lt;br /&gt;&lt;br /&gt;http://download.parallels.com/desktop/v6/en_us/parallels/update2/ParallelsDesktop-parallels-en_US-6.0.12090.660720.dmg&lt;br /&gt;&lt;br /&gt;Add these in /etc/hosts to block activation&lt;br /&gt;127.0.0.1 registration.parallels.com&lt;br /&gt;127.0.0.1 pd6.blist.parallels.com&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;span style="color:#FF0000;"&gt;Parallels Desktop 7&lt;/span&gt;&lt;br /&gt;Parallels Desktop 7 Download (with Lion virtualization and more)&lt;br /&gt;http://download.parallels.com/desktop/v7/ga/ParallelsDesktop-7.0.14920.689535.dmg&lt;br /&gt;&lt;br /&gt;Add these in /etc/hosts to block activation before installation (&lt;span class="Apple-style-span"  style="color:#ff0000;"&gt;must do this before starting installation&lt;/span&gt;)&lt;br /&gt;127.0.0.1 pd6.blist.parallels.com&lt;br /&gt;127.0.0.1 pd7.blist.parallels.com&lt;br /&gt;127.0.0.1 pdfm7.blist.parallels.com&lt;br /&gt;127.0.0.1 registration.parallels.com&lt;br /&gt;127.0.0.1 parallels.com&lt;br /&gt;127.0.0.1 update.parallels.com&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Serial No:&lt;br /&gt;KM7SW A-D0V7WH-40CFX7-WS815F-YV0QRR&lt;br /&gt;&lt;br /&gt;Don't Register&lt;br /&gt;&lt;br /&gt;.&lt;br /&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-3790276232918955999?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/3790276232918955999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=3790276232918955999' title='127 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/3790276232918955999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/3790276232918955999'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2009/11/parallels-desktop-5-serial.html' title='Parallels Desktop 5 Serial'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>127</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-1809779498973594332</id><published>2009-11-10T23:08:00.002+08:00</published><updated>2009-11-10T23:09:33.828+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7 Product Key'/><title type='text'>Windows 7 Product Key</title><content type='html'>22TKD-F8XX6-YG69F-9M66D-PMJBM&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3LRNVfBfliQ/SvmCD1SuZPI/AAAAAAAAAxQ/hEgsMk1anHc/s1600-h/win7-product-key.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 343px; height: 253px;" src="http://1.bp.blogspot.com/_3LRNVfBfliQ/SvmCD1SuZPI/AAAAAAAAAxQ/hEgsMk1anHc/s400/win7-product-key.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5402492230364456178" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-1809779498973594332?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/1809779498973594332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=1809779498973594332' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/1809779498973594332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/1809779498973594332'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2009/11/windows-7-product-key.html' title='Windows 7 Product Key'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_3LRNVfBfliQ/SvmCD1SuZPI/AAAAAAAAAxQ/hEgsMk1anHc/s72-c/win7-product-key.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-153492736504015625</id><published>2009-11-01T13:58:00.038+08:00</published><updated>2010-12-05T11:12:07.333+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openssh server'/><category scheme='http://www.blogger.com/atom/ns#' term='Debian'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>[How-to] install Debian and openssh server in T-Mobile G1</title><content type='html'>Assume you have installed CynogenMod and get busybox in it, you can install Debian system in G1 or other Android phone that has been rooted and have busybox in that custom ROM.&lt;br /&gt;&lt;br /&gt;The instruction of setting up debian in G1 is in saurik's site here &lt;a href="http://www.saurik.com/id/10"&gt;http://www.saurik.com/id/10&lt;/a&gt;&lt;br /&gt;But some of the information are outdated, as the rooting is very simple now and the busybox comes with all custom cooked ROMs.&lt;br /&gt;&lt;br /&gt;I like this method as the Debian system is installed in a standalone img file which can be copied to other Android phones.&lt;br /&gt;&lt;br /&gt;(1) Download the Debain G1 image here&lt;br /&gt;&lt;a href="http://modmygphone.com/files/debian-G1.zip"&gt;http://modmygphone.com/files/debian-G1.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;or&lt;br /&gt;&lt;a href="http://rapidshare.com/files/161776007/debian-armel-750.img.bz2"&gt;http://rapidshare.com/files/161776007/debian-armel-750.img.bz2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;unzip bz2 file with&lt;br /&gt;bunzip2 debian-armel-750.img.bz2&lt;br /&gt;&lt;br /&gt;(2) unzip it and copy the img file to sdcard.  The image is 750M in size, so make sure you have enough space in sdcard.&lt;br /&gt;&lt;code&gt;adb push debian-armel-750.img /sdcard/kit/&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(3) su shell access into G1&lt;br /&gt;&lt;code&gt;&lt;br /&gt;adb shell&lt;br /&gt;su&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(4) setup mount and chroot&lt;br /&gt;&lt;code&gt;&lt;br /&gt;export kit=/sdcard/kit&lt;br /&gt;export mnt=/data/local/mnt&lt;br /&gt;export TERM=linux&lt;br /&gt;export HOME=/root&lt;br /&gt;export PATH=$bin:/usr/bin:/usr/sbin:/bin:$PATH&lt;br /&gt;&lt;br /&gt;busybox clear&lt;br /&gt;&lt;br /&gt;busybox mkdir -p $mnt&lt;br /&gt;&lt;br /&gt;busybox mount -o loop,noatime $kit/debian-armel-750.img $mnt&lt;br /&gt;&lt;br /&gt;busybox mount -t devpts devpts $mnt/dev/pts&lt;br /&gt;busybox mount -t proc proc $mnt/proc&lt;br /&gt;busybox mount -t sysfs sysfs $mnt/sys&lt;br /&gt;&lt;br /&gt;busybox mkdir -p $mnt/mnt&lt;br /&gt;busybox mkdir -p $mnt/mnt/sdcard $mnt/mnt/system&lt;br /&gt;busybox mkdir -p $mnt/mnt/data $mnt/mnt/dev&lt;br /&gt;&lt;br /&gt;busybox mount --bind /sdcard $mnt/mnt/sdcard&lt;br /&gt;busybox mount --bind /system $mnt/mnt/system&lt;br /&gt;busybox mount --bind /data $mnt/mnt/data&lt;br /&gt;busybox mount --bind /dev $mnt/mnt/dev&lt;br /&gt;busybox mount -t tmpfs tmpfs $mnt/tmp -o noatime,mode=1777&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;busybox chroot $mnt /bin/bash&lt;br /&gt;# now G1 should be in Debian System&lt;br /&gt;&lt;br /&gt;rm -f /etc/mtab&lt;br /&gt;ln -s /proc/mounts /etc/mtab&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(5) change root password and install OpenSSH and start it&lt;br /&gt;&lt;code&gt;&lt;br /&gt;passwd root&lt;br /&gt;&lt;br /&gt;apt-get install debian-keyring debian-archive-keyring&lt;br /&gt;apt-get update&lt;br /&gt;apt-get upgrade&lt;br /&gt;apt-get install openssh-server openssh-client&lt;br /&gt;/etc/init.d/ssh start&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(6) If the default package source does not work, you can change this file /etc/apt/sources.list to&lt;br /&gt;&lt;code&gt;&lt;br /&gt;deb http://ftp.us.debian.org/debian lenny main&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(7) if you want to install gcc compiler&lt;br /&gt;&lt;code&gt;&lt;br /&gt;apt-get install build-essential&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(8) exit the debian system&lt;br /&gt;&lt;code&gt;exit&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(9) Before you proceed to copy the Debian system to the /system/sd, please consider to check the partition size of /system/sd first.  If you want to manually increase the ext2 partition size, please follow this guide below.  Please backup before re-partition as the process will wipe your sdcard data.&lt;br /&gt;&lt;br /&gt;http://forum.xda-developers.com/showthread.php?t=534714&lt;br /&gt;&lt;br /&gt;This how you can backup the /system/sd and sdcard&lt;br /&gt;&lt;code&gt;&lt;br /&gt;adb pull /system/sd/app app&lt;br /&gt;adb pull /system/sd/app-private app-private&lt;br /&gt;adb pull /system/sd/dalvik-cache dalvik-cache&lt;br /&gt;adb pull /sdcard sdcard&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;and this is how you restore data after repartition the sdcard (remember this is when the phone is booted up and not in recovery mode&lt;br /&gt;&lt;code&gt;&lt;br /&gt;adb push app /system/sd/app&lt;br /&gt;adb push app-private /system/sd/app-private&lt;br /&gt;adb push dalvik-cache /system/sd/dalvik-cache&lt;br /&gt;adb push sdcard /sdcard&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(10) Reboot G1&lt;br /&gt;&lt;code&gt;reboot&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(11) Copy the Debian system to /system/sd if you use CynogenMod ROM and have ext2 partition in the sdcard&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd /data/local/mnt&lt;br /&gt;tar cf - . | (cd /system/sd/; tar xvf -)&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(12) create the mount script as /system/sd/userinit.sh&lt;br /&gt;&lt;code&gt;&lt;br /&gt;export mnt=/system/sd&lt;br /&gt;&lt;br /&gt;export TERM=linux&lt;br /&gt;export HOME=/root&lt;br /&gt;&lt;br /&gt;busybox mount -t devpts devpts $mnt/dev/pts&lt;br /&gt;busybox mount -t proc proc $mnt/proc&lt;br /&gt;busybox mount -t sysfs sysfs $mnt/sys&lt;br /&gt;&lt;br /&gt;busybox mount --bind /sdcard $mnt/mnt/sdcard&lt;br /&gt;busybox mount --bind /system $mnt/mnt/system&lt;br /&gt;busybox mount --bind /data $mnt/mnt/data&lt;br /&gt;busybox mount --bind /dev $mnt/mnt/dev&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;append this script if you want to start ssh server automatically&lt;br /&gt;&lt;code&gt;busybox chroot /system/sd /etc/init.d/ssh start&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(12) Reboot G1&lt;br /&gt;&lt;code&gt;reboot&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(13) Then you can ssh to your G1 by using ssh root@xxx.xxx.xxx.xxx after enable wifi in G1, where xxx.xxx.xxx.xxx is the IP address of G1.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is how you chroot manually when you use adb shell access&lt;br /&gt;&lt;code&gt;chroot /system/sd /bin/bash&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-153492736504015625?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/153492736504015625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=153492736504015625' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/153492736504015625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/153492736504015625'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2009/11/how-to-install-debian-and-openssh.html' title='[How-to] install Debian and openssh server in T-Mobile G1'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-7707384323434719290</id><published>2009-10-29T12:16:00.011+08:00</published><updated>2009-10-29T15:22:58.162+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android NDK'/><category scheme='http://www.blogger.com/atom/ns#' term='Makefile'/><title type='text'>Android NDK Makefile</title><content type='html'>(1) install NDK 1.6 in say&lt;br /&gt;~/Android/android-ndk-1.6_r1&lt;br /&gt;&lt;br /&gt;download &lt;a href="http://developer.android.com/sdk/ndk/1.6_r1/index.html"&gt;http://developer.android.com/sdk/ndk/1.6_r1/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(2) install SDK 1.6 in say&lt;br /&gt;~/Android/android-sdk-linux_x86-1.6_r1&lt;br /&gt;&lt;br /&gt;download &lt;a href="http://developer.android.com/sdk/1.6_r1/index.html"&gt;http://developer.android.com/sdk/1.6_r1/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(3) you can compile standalone C program like this hello.c using the Makefile below&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;int main() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;printf("hello, NDK makefile world\n");&lt;br /&gt;&amp;nbsp;&amp;nbsp;return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(4) Create Makefile&lt;br /&gt;&lt;dl class="codebox"&gt;&lt;dt&gt;Makefile &lt;a href="#" onclick="selectCode(this); return false;"&gt;Select all&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;code&gt;&lt;br /&gt;APP=hello&lt;br /&gt;&lt;br /&gt;NDK_DIR := /cygdrive/c/Android/android-ndk-1.6_r1&lt;br /&gt;#NDK_DIR := ~/Android/android-ndk-1.6_r1&lt;br /&gt;NDK_HOST := windows&lt;br /&gt;#NDK_HOST := linux-x86&lt;br /&gt;#NDK_HOST := darwin-x86&lt;br /&gt;SDKTOOL := /cygdrive/c/Android/android-sdk-windows-1.6_r1/tools&lt;br /&gt;#SDKTOOL := ~/Android/android-sdk-linux_x86-1.6_r1/tools&lt;br /&gt;#SDKTOOL := ~/Android/android-sdk-mac_x86-1.6_r1/tools&lt;br /&gt;&lt;br /&gt;TOOLCHAIN_PREFIX := $(NDK_DIR)/build/prebuilt/$(NDK_HOST)/arm-eabi-4.2.1/bin/arm-eabi-&lt;br /&gt;CC := $(TOOLCHAIN_PREFIX)gcc&lt;br /&gt;CPP := $(TOOLCHAIN_PREFIX)g++&lt;br /&gt;LD := $(CC)&lt;br /&gt;&lt;br /&gt;COMMON_FLAGS := -mandroid -ffunction-sections -fdata-sections -Os -g &amp;#x9;--sysroot=$(NDK_DIR)/build/platforms/android-4/arch-arm \&lt;br /&gt;&amp;#x9;-fPIC \&lt;br /&gt;&amp;#x9;-fvisibility=hidden \&lt;br /&gt;&amp;#x9;-D__NEW__&lt;br /&gt;&lt;br /&gt;CFLAGS := $(COMMON_FLAGS)&lt;br /&gt;&lt;br /&gt;CFLAGS += -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -DANDROID -DSK_RELEASE -DNDEBUG&lt;br /&gt;&lt;br /&gt;CFLAGS += -UDEBUG -march=armv5te -mtune=xscale -msoft-float -mthumb-interwork -fpic -ffunction-sections -funwind-tables -fstack-protector -fmessage-length=0 -Bdynamic&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CPPFLAGS := $(COMMON_FLAGS) \&lt;br /&gt;&amp;#x9;-fno-rtti -fno-exceptions \&lt;br /&gt;&amp;#x9;-fvisibility-inlines-hidden&lt;br /&gt;&lt;br /&gt;LDFLAGS += --sysroot=$(NDK_DIR)/build/platforms/android-4/arch-arm&lt;br /&gt;LDFLAGS +=  -Bdynamic -Wl,-dynamic-linker,/system/bin/linker -Wl,--gc-sections -Wl,-z,nocopyreloc  &lt;br /&gt;LDFLAGS += -L$(NDK_DIR)/build/prebuilt/$(NDK_HOST)/arm-eabi-4.2.1/lib/gcc/arm-eabi/4.2.1/android&lt;br /&gt;LDFLAGS += -L$(NDK_DIR)/build/prebuilt/$(NDK_HOST)/arm-eabi-4.2.1/lib/gcc/arm-eabi/4.2.1&lt;br /&gt;LDFLAGS += -L$(NDK_DIR)/build/prebuilt/$(NDK_HOST)/arm-eabi-4.2.1/lib/gcc&lt;br /&gt;LDFLAGS += -L$(NDK_DIR)/build/prebuilt/$(NDK_HOST)/arm-eabi-4.2.1/arm-eabi/lib&lt;br /&gt;LDFLAGS += -nostdlib -lc -llog -lgcc \&lt;br /&gt;&amp;#x9;--no-undefined -z $(NDK_DIR)/build/platforms/android-4/arch-arm/usr/lib/crtbegin_dynamic.o $(NDK_DIR)/build/platforms/android-4/arch-arm/usr/lib/crtend_android.o&lt;br /&gt;&lt;br /&gt;OBJS += $(APP).o&lt;br /&gt;&lt;br /&gt;all:&amp;#x9;$(APP)&lt;br /&gt;&lt;br /&gt;$(APP):&amp;#x9;$(OBJS)&lt;br /&gt;&amp;#x9;$(LD) $(LDFLAGS) -o $@ $^&lt;br /&gt;&lt;br /&gt;%.o:&amp;#x9;%.c&lt;br /&gt;&amp;#x9;$(CC) -c $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;&lt;br /&gt;%.o:&amp;#x9;%.cpp&lt;br /&gt;&amp;#x9;$(CPP) -c $(CFLAGS) $(CPPFLAGS) $&amp;lt; -o $@&lt;br /&gt;&lt;br /&gt;install:&amp;#x9;$(APP)&lt;br /&gt;&amp;#x9;$(SDKTOOL)/adb push $(APP) /data/local/bin/$(APP)&lt;br /&gt;&amp;#x9;$(SDKTOOL)/adb shell chmod 755 /data/local/bin/$(APP)&lt;br /&gt;&lt;br /&gt;run:&lt;br /&gt;&amp;#x9;$(SDKTOOL)/adb shell /data/local/bin/$(APP)&lt;br /&gt;&lt;br /&gt;clean:&lt;br /&gt;&amp;#x9;@rm -f $(APP).o $(APP)&lt;br /&gt;&lt;/code&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;br /&gt;&lt;br /&gt;(5) connect device and test using&lt;br /&gt;&lt;code&gt;&lt;br /&gt;make all&lt;br /&gt;make install run&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(6) compile C++ program example1.cpp (no STL)&lt;br /&gt;&lt;code&gt;&lt;br /&gt;make APP=example1 all install run&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;dl class="codebox"&gt;&lt;dt&gt;example1.cpp &lt;a href="#" onclick="selectCode(this); return false;"&gt;Select all&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;code&gt;&lt;br /&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;&lt;br /&gt;class counter {&lt;br /&gt;public:&lt;br /&gt;&amp;#x9;int some_data;&lt;br /&gt;&amp;#x9;char some_other_data[100];&lt;br /&gt;&amp;#x9;int i;&lt;br /&gt;&lt;br /&gt;&amp;#x9;void increment_counter() {i++;}&lt;br /&gt;&amp;#x9;void decrement_counter() {i--;}&lt;br /&gt;&amp;#x9;int query_counter() {return i;}&lt;br /&gt;&lt;br /&gt;&amp;#x9;void set_counter(int new_value);&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;void counter::set_counter(int new_value)&lt;br /&gt;{&lt;br /&gt;&amp;#x9;i = new_value;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;main()&lt;br /&gt;{&lt;br /&gt;&amp;#x9;counter apples;&lt;br /&gt;&amp;#x9;counter oranges;&lt;br /&gt;&amp;#x9;counter *pointer_to_counter = NULL;&lt;br /&gt;&amp;#x9;counter array_of_counters[10];&lt;br /&gt;&amp;#x9;int x = 5;&lt;br /&gt;&lt;br /&gt;&amp;#x9;apples.some_data = x;&lt;br /&gt;&lt;br /&gt;&amp;#x9;apples.set_counter(10);&lt;br /&gt;&amp;#x9;apples.increment_counter();&lt;br /&gt;&amp;#x9;apples.increment_counter();&lt;br /&gt;&lt;br /&gt;&amp;#x9;oranges.set_counter(5);&lt;br /&gt;&amp;#x9;oranges.decrement_counter();&lt;br /&gt;&lt;br /&gt;&amp;#x9;printf("%d apples and %d oranges\n",&lt;br /&gt;&amp;#x9;apples.query_counter(),&lt;br /&gt;&amp;#x9;oranges.query_counter());&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;br /&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-7707384323434719290?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/7707384323434719290/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=7707384323434719290' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/7707384323434719290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/7707384323434719290'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2009/10/android-ndk-makefile.html' title='Android NDK Makefile'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-6417243625741291152</id><published>2009-10-24T16:44:00.023+08:00</published><updated>2009-10-29T12:31:49.521+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android NDK'/><category scheme='http://www.blogger.com/atom/ns#' term='Android NDK C++'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><category scheme='http://www.blogger.com/atom/ns#' term='Makefile'/><title type='text'>Android NDK add stlport and compile C++ program</title><content type='html'>(1) Assume you have Android ndk 1.6 and your ndk directory is in ~/Android/android-ndk-1.6_r1 and you are using mac&lt;br /&gt;download ndk-wrapper from&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd ~/Android&lt;br /&gt;git clone git://umbel.mooo.com/ndk-wrappers.git&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;reference&lt;br /&gt;http://umbel.mooo.com/git?p=ndk-wrappers.git;a=summary&lt;br /&gt;&lt;br /&gt;(2) Edit  ~/Android/ndk-wrappers/setup.sh and add these&lt;br /&gt;&lt;code&gt;&lt;br /&gt;export HOST=darwin-x86&lt;br /&gt;export NDK_DIR=~/Android/android-ndk-1.6_r1&lt;br /&gt;export NDK_WRAPPERS_BASE=~/Android/ndk-wrappers&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(3) Edit  ~/Android/ndk-wrappers/scripts/build-stlport.sh ad add these&lt;br /&gt;&lt;code&gt;&lt;br /&gt;export NDK_WRAPPERS_BASE=~/Android/ndk-wrappers&lt;br /&gt;export PATH=~/Android/ndk-wrappers/bin:$PATH&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(4) Edit  ~/Android/ndk-wrappers/scripts/env-utils.sh and change / add these&lt;br /&gt;&lt;code&gt;&lt;br /&gt;SYSROOT="${NDK_DIR}/build/platforms/android-4/arch-arm"&lt;br /&gt;HOST=darwin-x86&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;For linux &lt;br /&gt;HOST=linux-x86&lt;br /&gt;&lt;br /&gt;For CYGWIN&lt;br /&gt;HOST=windows&lt;br /&gt;&lt;br /&gt;(5) Change  ~/Android/ndk-wrappers/stlport/build/lib/android.mak&lt;br /&gt;from&lt;br /&gt;&lt;code&gt;&lt;br /&gt;--sysroot=$(NDK_DIR)/build/platforms/android-1.5/arch-arm \&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;to&lt;br /&gt;&lt;code&gt;&lt;br /&gt;--sysroot=$(NDK_DIR)/build/platforms/android-4/arch-arm \&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(6) Add link&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd ~/Android/ndk-wrappers/stlport/build/Makefiles/gmake&lt;br /&gt;ln -s linux arm-linux&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(7) For Mac only, upgrade sed using Mac port&lt;br /&gt;&lt;code&gt;&lt;br /&gt;sudo port install gsed&lt;br /&gt;sudo ln -s /opt/local/bin/gsed /opt/local/bin/sed&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(8) build stlport&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd ~/Android/ndk-wrappers&lt;br /&gt;export NDK_DIR=~/Android/android-ndk-1.6_r1&lt;br /&gt;./setup.sh&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(9) Create hello.cpp to test&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;using namespace std;&lt;br /&gt;int main() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;cout &amp;lt;&amp;lt; "hello, world\n";&lt;br /&gt;&amp;nbsp;&amp;nbsp;return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(10) Compile&lt;br /&gt;&lt;code&gt;&lt;br /&gt;~/Android/ndk-wrappers/bin/arm-linux-g++ -o hello hello.cpp -L~/Android/ndk-wrappers/stlport/build/lib/obj/arm-linux-gcc/so&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(11) Sent to device for testing&lt;br /&gt;&lt;code&gt;&lt;br /&gt;adb push hello /data/local/bin/hello&lt;br /&gt;adb shell chmod 755 /data/local/bin/hello&lt;br /&gt;adb shell /data/local/bin/hello&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;You can use Makefile&lt;br /&gt;&lt;dl class="codebox"&gt;&lt;dt&gt;Makefile &lt;a href="#" onclick="selectCode(this); return false;"&gt;Select all&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;code&gt;&lt;br /&gt;APP := hello&lt;br /&gt;SDKTOOL := ~/Android/android-sdk-mac_x86-1.6_r1/tools&lt;br /&gt;WRAPPER := ~/Android/ndk-wrappers&lt;br /&gt;STLLIB := -L~/Android/ndk-wrappers/stlport/build/lib/obj/arm-linux-gcc/so&lt;br /&gt;BIN := $(WRAPPER)/bin&lt;br /&gt;CPP := $(BIN)/arm-linux-g++&lt;br /&gt;CC := $(BIN)/arm-linux-gcc&lt;br /&gt;&lt;br /&gt;all: $(APP)&lt;br /&gt;&lt;br /&gt;OBJS += $(APP).o&lt;br /&gt;&lt;br /&gt;$(APP): $(OBJS)&lt;br /&gt; $(CPP) $(LDFLAGS) -o $@ $(STLLIB) $^ &lt;br /&gt;&lt;br /&gt;%.o: %.c&lt;br /&gt; $(CC) -c $(INCLUDE) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;&lt;br /&gt;%.o: %.cpp&lt;br /&gt; $(CPP) -c $(INCLUDE) $(CFLAGS) $(CPPFLAGS) $&amp;lt; -o $@&lt;br /&gt;&lt;br /&gt;install: $(APP)&lt;br /&gt; $(SDKTOOL)/adb push $(APP) /data/local/bin/$(APP)&lt;br /&gt; $(SDKTOOL)/adb shell chmod 755 /data/local/bin/$(APP)&lt;br /&gt;&lt;br /&gt;shell:&lt;br /&gt; $(SDKTOOL)/adb shell&lt;br /&gt;&lt;br /&gt;run:&lt;br /&gt; $(SDKTOOL)/adb shell /data/local/bin/$(APP)&lt;br /&gt;&lt;br /&gt;clean:&lt;br /&gt; @rm -f $(APP).o $(APP)&lt;br /&gt;&lt;/code&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-6417243625741291152?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/6417243625741291152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=6417243625741291152' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/6417243625741291152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/6417243625741291152'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2009/10/android-ndk-add-stlport-and-compile-c.html' title='Android NDK add stlport and compile C++ program'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-6230382255893062166</id><published>2009-10-06T23:37:00.003+08:00</published><updated>2009-10-06T23:38:56.666+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pastbin'/><category scheme='http://www.blogger.com/atom/ns#' term='hotmail'/><title type='text'>pastebin - Hotmail passwords</title><content type='html'>removed&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-6230382255893062166?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/6230382255893062166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=6230382255893062166' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/6230382255893062166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/6230382255893062166'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2009/10/pastebin-hotmail-passwords.html' title='pastebin - Hotmail passwords'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-7036096977410054870</id><published>2009-09-13T10:50:00.000+08:00</published><updated>2009-09-13T10:51:14.550+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='default write'/><title type='text'>default write</title><content type='html'>Disable iTunes Device backup&lt;br /&gt;&lt;br /&gt;defaults write com.apple.iTunes DeviceBackupsDisabled -bool true&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-7036096977410054870?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/7036096977410054870/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=7036096977410054870' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/7036096977410054870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/7036096977410054870'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2009/09/default-write.html' title='default write'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-3957986137672086684</id><published>2009-07-19T17:28:00.004+08:00</published><updated>2009-07-19T17:30:36.298+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSH timeout'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><title type='text'>Fix SSH timeout for jailbreak iPhone</title><content type='html'>Login iPhone and edit /etc/ssh/sshd_config and change the line&lt;br /&gt;&lt;br /&gt;from&lt;br /&gt;&lt;br /&gt;&lt;code&gt;#ClientAliveInterval 0&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;to&lt;br /&gt;&lt;br /&gt;&lt;code&gt;ClientAliveInterval 60&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;According to man sshd_config, this line,&lt;br /&gt;&lt;br /&gt;Sets a timeout interval in seconds after which if no data has been received from the client, sshd(8) will send a message through the encrypted channel to request a response from the client. The default is 0, indicating that these messages will not be sent to the client. This option applies to protocol version 2 only.&lt;br /&gt;&lt;br /&gt;Don’t forget to restart sshd on the iPhone after you save the file.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-3957986137672086684?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/3957986137672086684/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=3957986137672086684' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/3957986137672086684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/3957986137672086684'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2009/07/fix-ssh-timeout-for-jailbreak-iphone.html' title='Fix SSH timeout for jailbreak iPhone'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-5370579955381541192</id><published>2009-07-16T10:51:00.001+08:00</published><updated>2009-07-16T10:55:59.085+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WinRAR v3.80'/><title type='text'>WinRAR v3.80 Serial Number</title><content type='html'>WinRAR v3.80 &lt;br /&gt;&lt;br /&gt;choose either one of them&lt;br /&gt;create a document called rarreg.key and put it in C:\Program Files\WinRAR&lt;br /&gt;=================================================&lt;br /&gt;&lt;dl class="codebox"&gt;&lt;dt&gt;WinRAR v3.80 &lt;a href="#" onclick="selectCode(this); return false;"&gt;Select all&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;code&gt;&lt;br /&gt;RAR registration data&lt;br /&gt;Federal Agency for Education&lt;br /&gt;1000000 PC usage license&lt;br /&gt;UID=b621cca9a84bc5deffbf&lt;br /&gt;6412612250ffbf533df6db2dfe8ccc3aae5362c06d54762105357d&lt;br /&gt;5e3b1489e751c76bf6e0640001014be50a52303fed29664b074145&lt;br /&gt;7e567d04159ad8defc3fb6edf32831fd1966f72c21c0c53c02fbbb&lt;br /&gt;2f91cfca671d9c482b11b8ac3281cb21378e85606494da349941fa&lt;br /&gt;e9ee328f12dc73e90b6356b921fbfb8522d6562a6a4b97e8ef6c9f&lt;br /&gt;fb866be1e3826b5aa126a4d2bfe9336ad63003fc0e71c307fc2c60&lt;br /&gt;64416495d4c55a0cc82d402110498da970812063934815d81470829275&lt;br /&gt;&lt;/code&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;br /&gt;=================================================&lt;br /&gt;&lt;dl class="codebox"&gt;&lt;dt&gt;WinRAR v3.80 &lt;a href="#" onclick="selectCode(this); return false;"&gt;Select all&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;code&gt;&lt;br /&gt;RAR registration data&lt;br /&gt;Database Administrators&lt;br /&gt;5 PC usage license&lt;br /&gt;UID=54d582e921e445f1bfe8&lt;br /&gt;6412212250bfe8e73e20bdb947f60ef0da9624150bcf8668412c68&lt;br /&gt;84affda559742bbb686d6071302587655a7ba28d516e17834b7616&lt;br /&gt;47cd79a293eb4c0e4fbf5e9f967e6ed5b28a02418d0ab2549fc4da&lt;br /&gt;19e4644f2345190bf26ff7bcd0c819f12560b57cf28adc164a00c6&lt;br /&gt;3174fcbb69509912e7c7c4793779b941901c6c793b7319cc395ee0&lt;br /&gt;8bddb923fa08fc20019b59d0b246e0ac325d2e5854d4f97a602fc0&lt;br /&gt;a4357b8f857cfb717545410ecad088fb28a2a3cf0dff2102863273&lt;br /&gt;&lt;/code&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;br /&gt;&lt;br /&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-5370579955381541192?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/5370579955381541192/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=5370579955381541192' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/5370579955381541192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/5370579955381541192'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2009/07/winrar-v380-serial-number.html' title='WinRAR v3.80 Serial Number'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-7293917680991370179</id><published>2009-07-13T19:13:00.007+08:00</published><updated>2009-07-14T08:47:57.597+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MCleaner Activation Code'/><title type='text'>MCleaner 1.8 Activation Code</title><content type='html'>(1) Start gdb in iPhone SSH putty session&lt;br /&gt;&lt;code&gt;&lt;br /&gt;gdb&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(2) Enter these in gdb&lt;br /&gt;&lt;code&gt;&lt;br /&gt;break *0x00003320&lt;br /&gt;break *0x00003348&lt;br /&gt;commands 1&lt;br /&gt;silent&lt;br /&gt;print $r4&lt;br /&gt;set $pc=0x3328&lt;br /&gt;continue&lt;br /&gt;end&lt;br /&gt;commands 2&lt;br /&gt;silent&lt;br /&gt;printf "\n\n\nSERIAL:%c%c%c%c%c%c%c%c! ENJOY!\n\n\n",$1,$2,$3,$4,$5,$6,$7,$8&lt;br /&gt;end&lt;br /&gt;attach -waitfor MCleaner&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(3)Start MCleaner in iPhone&lt;br /&gt;&lt;br /&gt;(4) In gdb type &lt;span style="color: rgb(255, 0, 0);"&gt;continue&lt;/span&gt; and press enter&lt;br /&gt;&lt;br /&gt;(5) Enter Activation code in MCleaner with 8 zeros that is &lt;span style="color: rgb(153, 0, 0);"&gt;00000000&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;(6) Then gdb will show the real activation code on gdb screen like&lt;br /&gt;&lt;code&gt;SERIAL:99999999!ENJOY!&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(7) Remember that 8 digits number and reenter it again when activation in MCleaner&lt;br /&gt;&lt;br /&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-7293917680991370179?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/7293917680991370179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=7293917680991370179' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/7293917680991370179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/7293917680991370179'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2009/07/mcleaner-activation-code.html' title='MCleaner 1.8 Activation Code'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-4580436466407127347</id><published>2009-06-24T13:13:00.002+08:00</published><updated>2009-06-24T13:16:01.673+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vfdecrypt'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone 3GS'/><title type='text'>vfdecrypt key iPhone 3GS</title><content type='html'>Download&lt;br /&gt;http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-6582.20090617.LlI87/iPhone2,1_3.0_7A341_Restore.ipsw&lt;br /&gt;&lt;br /&gt;vfdecrypt key is &lt;br /&gt;7D779FED28961506CA9443DE210224F211790192B2A2308B8BC0E7D4A2CA61A68E26200E &lt;br /&gt;&lt;br /&gt;The command is &lt;br /&gt;&lt;code&gt;&lt;br /&gt;curl -O http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-6582.20090617.LlI87/iPhone2,1_3.0_7A341_Restore.ipsw&lt;br /&gt;unzip iPhone2,1_3.0_7A341_Restore.ipsw 018-5302-002.dmg&lt;br /&gt;vfdecrypt -i 018-5302-002.dmg -o 3gs.dmg -k 7D779FED28961506CA9443DE210224F211790192B2A2308B8BC0E7D4A2CA61A68E26200E&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-4580436466407127347?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/4580436466407127347/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=4580436466407127347' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/4580436466407127347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/4580436466407127347'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2009/06/vfdecrypt-key-iphone-3gs.html' title='vfdecrypt key iPhone 3GS'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-7928784364354317022</id><published>2009-06-14T11:13:00.004+08:00</published><updated>2009-06-14T11:42:24.663+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android skin'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>A better HTC Magic Android Emulator Skin</title><content type='html'>You might have found a HTC Magic Skin for the Android Emulator, but the button positions are wrong and I have modified it to reflect my actual HTC Magic device.&lt;br /&gt;&lt;br /&gt;You can download from &lt;a href="http://www.gphone.org.hk/attach/184-HVGA-P-HTCMagic.zip"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Screenshot&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.gphone.org.hk/attach/185-htcskin-embed.png"/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-7928784364354317022?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/7928784364354317022/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=7928784364354317022' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/7928784364354317022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/7928784364354317022'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2009/06/better-htc-magic-android-emulator-skin.html' title='A better HTC Magic Android Emulator Skin'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-9219044963697379055</id><published>2009-05-20T20:25:00.001+08:00</published><updated>2009-05-20T20:27:09.724+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Terminal'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac OSX'/><title type='text'>How to send Alt-X in Mac Terminal</title><content type='html'>You need to configure the mac 'terminal' application so the 'alt / option' key sends 'meta'. In order to do this, go to:&lt;br /&gt;&lt;br /&gt;Terminal &gt; Preferences &gt; Settings &gt; Keyboard&lt;br /&gt;&lt;br /&gt;and select the 'Use option as meta key' checkbox at the bottom of the window.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-9219044963697379055?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/9219044963697379055/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=9219044963697379055' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/9219044963697379055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/9219044963697379055'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2009/05/how-to-send-alt-x-in-mac-terminal.html' title='How to send Alt-X in Mac Terminal'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-8089438760870100950</id><published>2009-05-04T15:27:00.002+08:00</published><updated>2009-11-02T07:08:53.296+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Office'/><title type='text'>How to uninstall Microsoft Office Trial Version</title><content type='html'>&lt;a href="http://support.microsoft.com/kb/295545"&gt;http://support.microsoft.com/kb/295545&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-8089438760870100950?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/8089438760870100950/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=8089438760870100950' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/8089438760870100950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/8089438760870100950'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2009/05/how-to-uninstall-microsoft-office-trail.html' title='How to uninstall Microsoft Office Trial Version'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-4926325037359048879</id><published>2009-05-02T22:20:00.002+08:00</published><updated>2009-05-02T22:22:45.164+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Stocks'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><title type='text'>How to use iPhone Stocks App to get currency / precious metal quote</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3LRNVfBfliQ/SfxXEsXiW-I/AAAAAAAAAus/D3ft54b2rLA/s1600-h/yahoocode.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 383px; height: 234px;" src="http://3.bp.blogspot.com/_3LRNVfBfliQ/SfxXEsXiW-I/AAAAAAAAAus/D3ft54b2rLA/s400/yahoocode.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5331231797040798690" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can find more currency codes here&lt;br /&gt;&lt;br /&gt;&lt;a href="http://finance.yahoo.com/currency"&gt;http://finance.yahoo.com/currency&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-4926325037359048879?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/4926325037359048879/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=4926325037359048879' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/4926325037359048879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/4926325037359048879'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2009/05/how-to-use-iphone-stocks-app-to-get.html' title='How to use iPhone Stocks App to get currency / precious metal quote'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_3LRNVfBfliQ/SfxXEsXiW-I/AAAAAAAAAus/D3ft54b2rLA/s72-c/yahoocode.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-1341694502593815597</id><published>2009-04-29T20:13:00.001+08:00</published><updated>2009-04-29T20:14:48.138+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone Firmware'/><title type='text'>iPhone Firmware Beta Expired</title><content type='html'>&lt;img src="http://www.iphone.org.hk/attach/51601-dead-embed.png"/&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-1341694502593815597?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/1341694502593815597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=1341694502593815597' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/1341694502593815597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/1341694502593815597'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2009/04/iphone-firmware-beta-expired.html' title='iPhone Firmware Beta Expired'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-5119638711348494188</id><published>2009-04-15T16:34:00.017+08:00</published><updated>2010-09-28T10:29:21.737+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vfdecrypt'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone OS 3.0'/><category scheme='http://www.blogger.com/atom/ns#' term='xpwntool'/><category scheme='http://www.blogger.com/atom/ns#' term='decrpyt key'/><title type='text'>How-to decrypt iPhone OS 3.0 beta filesystem</title><content type='html'>The procedure is a step by step example for Mac to decrypt iPhone OS 3.0 beta2 (3G) iPhone1,2_3.0_7A259g_Restore.ipsw&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;(1) get the tools here&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;vfdecrypt &lt;a href="http://rgov.org/files/vfdecrypt-mac.zip"&gt;http://rgov.org/files/vfdecrypt-mac.zip&lt;/a&gt;&lt;br /&gt;or here &lt;a href="http://code.google.com/p/iphone-elite/downloads/list"&gt;http://code.google.com/p/iphone-elite/downloads/list&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;P.S. If you compile the vfdecrypt in Mac (&lt;a href="http://iphone-elite.googlecode.com/files/vfdecrypt-linux.tar.gz"&gt;sourre code here&lt;/a&gt;), you need to amend two things&lt;br /&gt;(a) As Mac OS X does not have byteswap.h&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#if HAVE_BYTESWAP_H&lt;br /&gt; #include &amp;lt;byteswap.h&amp;gt;&lt;br /&gt;#else&lt;br /&gt;#define bswap_16(value)  \&lt;br /&gt;  ((((value) &amp; 0xff) &amp;lt;&amp;lt; 8) | ((value) &amp;gt;&amp;gt; 8))&lt;br /&gt;&lt;br /&gt;#define bswap_32(value) \&lt;br /&gt;  (((uint32_t)bswap_16((uint16_t)((value) &amp; 0xffff)) &amp;lt;&amp;lt; 16) | \&lt;br /&gt;    (uint32_t)bswap_16((uint16_t)((value) &amp;gt;&amp;gt; 16)))&lt;br /&gt;&lt;br /&gt;#define bswap_64(value) \&lt;br /&gt;  (((uint64_t)bswap_32((uint32_t)((value) &amp; 0xffffffff)) \&lt;br /&gt;         &amp;lt;&amp;lt; 32) | \&lt;br /&gt;    (uint64_t)bswap_32((uint32_t)((value) &amp;gt;&amp;gt; 32)))&lt;br /&gt;#endif&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(b) change this line 357 to&lt;br /&gt;&lt;code&gt; while((c = getopt(argc, argv, "hvi::o::p:k::")) != -1){&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;xpwntool &lt;a href="http://www.zdziarski.com/iphone-forensics/v2.x-Base/Xpwn/"&gt;http://www.zdziarski.com/iphone-forensics/v2.x-Base/Xpwn/&lt;/a&gt;&lt;br /&gt;or &lt;br /&gt;img3decrypt &lt;a href="http://code.google.com/p/img3decrypt/downloads/list"&gt;http://code.google.com/p/img3decrypt/downloads/list&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;(2) compile genpass.c&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;get the source file here &lt;a href="http://www.theiphonewiki.com/wiki/index.php?title=GenPass"&gt;http://www.theiphonewiki.com/wiki/index.php?title=GenPass&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;or updated source here &lt;a href="http://github.com/posixninja/genpass"&gt;http://github.com/posixninja/genpass&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;First, download OpenSSL from here:&lt;br /&gt;&lt;a href="http://www.openssl.org/source/openssl-0.9.8h.tar.gz"&gt;http://www.openssl.org/source/openssl-0.9.8h.tar.gz&lt;/a&gt;&lt;br /&gt;&lt;code&gt;curl -O http://www.openssl.org/source/openssl-0.9.8h.tar.gz&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Untar it, and cd to the directory it is in, in Terminal. Then, type:&lt;br /&gt;&lt;code&gt;tar -xzvf openssl-0.9.8h.tar.gz&lt;br /&gt;cd openssl-0.9.8h&lt;br /&gt;./config &amp;&amp; make&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;After that, rename the directory to "openssl" instead of "openssl(version)"&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd ..&lt;br /&gt;mv openssl-0.9.8h openssl&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;As long as the "openssl" folder is in the directory you are building this in,&lt;br /&gt;you should be able to now compile it with:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;gcc genpass.c openssl/libcrypto.a -o genpass -I openssl/include/&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;(3) unzip the ram disk from firmware file&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;unzip iPhone1,2_3.0_7A259g_Restore.ipsw 018-4877-7.dmg&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;(4) decrypt ramdisk&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;./xpwntool 018-4877-7.dmg ramdisk.dmg -k 875CACE71C62CDA899D1C22C60466170 -iv DC4D3E13D9CB5F7CDC504DB6B5AB137D&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;(5) unzip root filesystem from ipsw file&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;unzip iPhone1,2_3.0_7A259g_Restore.ipsw 018-4872-6.dmg&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;(6) use genpass to get vfdecrypt key&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;./genpass s5l8900x ramdisk.dmg 018-4872-6.dmg&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;platform = , s5l8720x (for ipod2g), s5l8920x (for iphone3gs), s5l8922x (for &lt;br /&gt;ipod3g), or s5l8930 (for ipad1g)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Platform is the applications processor (i.e. S5L8900X, S5L8720X, S5L8920X, S5L8922X, S5l8930) but in small caps&lt;br /&gt;s5l8900x = iPhone, iPhone 3G and iPod Touch 1G&lt;br /&gt;s5l8720x = iPod Touch 2G&lt;br /&gt;s5l8920x = iPhone 3GS&lt;br /&gt;s5l8922x = iPod Touch 3G&lt;br /&gt;s5l8930 =  A4 Processor used by iPad, iPhone 4, and iPod Touch 4G&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;(7) decrypt root filesystem&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;./vfdecrypt -i 018-4872-6.dmg -o beta2_3g_rootfs.dmg -k 59A86B5A4FCC76FCADE07FDDF72C72D36A6E105BC0C727F508F2B1313EB1B74D97CA8A81&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;You can get the 3.0 OS beta keys here&lt;br /&gt;&lt;a href="http://www.theiphonewiki.com/wiki/index.php?title=VFDecrypt_Keys:_3.x"&gt;http://www.theiphonewiki.com/wiki/index.php?title=VFDecrypt_Keys:_3.x&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-5119638711348494188?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/5119638711348494188/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=5119638711348494188' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/5119638711348494188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/5119638711348494188'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2009/04/how-to-decrypt-iphone-os-30-beta.html' title='How-to decrypt iPhone OS 3.0 beta filesystem'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-4129345338203485904</id><published>2009-04-12T14:07:00.002+08:00</published><updated>2009-04-12T14:11:01.995+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pthread_cancel'/><title type='text'>pthread_cancel in POSIX thread</title><content type='html'>Here is an example to use pthread_cancel in POSIX thread programming.&lt;br /&gt;&lt;br /&gt;&lt;dl class="codebox"&gt;&lt;dt&gt;cancelthread.c &lt;a href="#" onclick="selectCode(this); return false;"&gt;Select all&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;code&gt;&lt;br /&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;#include &amp;lt;pthread.h&amp;gt;&lt;br /&gt;&lt;br /&gt;void cleanup_routine(void *arg)&lt;br /&gt;{&lt;br /&gt; int *c = (int*)arg;&lt;br /&gt; printf("ThreadCleanup: cleanup called at counter %d\n", *c);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void *threadFunc(void *arg)&lt;br /&gt;{&lt;br /&gt; char *str;&lt;br /&gt; int i = 0;&lt;br /&gt; int oldstate;&lt;br /&gt; int retval;&lt;br /&gt;&lt;br /&gt; pthread_cleanup_push(cleanup_routine, &amp;i);&lt;br /&gt;&lt;br /&gt; pthread_setcancelstate (PTHREAD_CANCEL_ENABLE, &amp;oldstate);&lt;br /&gt;&lt;br /&gt; str=(char*)arg;&lt;br /&gt; i = 0;&lt;br /&gt; while(i &lt; 110 )&lt;br /&gt; {&lt;br /&gt;  usleep(1);&lt;br /&gt;  printf("threadFunc says: %s %d\n",str,i);&lt;br /&gt;  if ((i % 10)==0) {&lt;br /&gt;   pthread_testcancel();&lt;br /&gt;   printf("pthread_testcancel\n");&lt;br /&gt;  }&lt;br /&gt;  ++i;&lt;br /&gt; }&lt;br /&gt; pthread_cleanup_pop(0);&lt;br /&gt; return NULL;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int main(void)&lt;br /&gt;{&lt;br /&gt; pthread_t pth; // this is our thread identifier&lt;br /&gt; pthread_attr_t attr;&lt;br /&gt; void *result;&lt;br /&gt; int status;&lt;br /&gt; int join_status;&lt;br /&gt; int i = 0;&lt;br /&gt; /* Initialize and set thread detached attribute */&lt;br /&gt;    pthread_attr_init(&amp;attr);&lt;br /&gt;    pthread_attr_setdetachstate(&amp;attr, PTHREAD_CREATE_JOINABLE);&lt;br /&gt;&lt;br /&gt; pthread_create(&amp;pth,&amp;attr,threadFunc,"foo");&lt;br /&gt; &lt;br /&gt; while(i &lt; 100)&lt;br /&gt; {&lt;br /&gt;  usleep(1);&lt;br /&gt;  printf("main is running... %d\n",i);&lt;br /&gt;             if (i==20) {&lt;br /&gt;     printf("thread is terminating...\n");&lt;br /&gt;     status = pthread_cancel(pth);&lt;br /&gt;     break;&lt;br /&gt;    }&lt;br /&gt;  &lt;br /&gt;  ++i;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; printf("main waiting for thread to terminate...\n");&lt;br /&gt; status = pthread_join(pth,&amp;result);&lt;br /&gt; if (status != 0)&lt;br /&gt;  printf("Error: Join thread");&lt;br /&gt; if (result == PTHREAD_CANCELED)&lt;br /&gt;  printf ("Thread canceled at iteration\n");&lt;br /&gt; else&lt;br /&gt;  printf ("Thread was not canceled\n");&lt;br /&gt; printf("main with thread terminated\n");&lt;br /&gt;&lt;br /&gt; return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-4129345338203485904?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/4129345338203485904/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=4129345338203485904' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/4129345338203485904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/4129345338203485904'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2009/04/pthreadcancel-in-posix-thread.html' title='pthread_cancel in POSIX thread'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-3712052450759281712</id><published>2009-03-28T10:32:00.004+08:00</published><updated>2009-03-28T10:36:56.810+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac OSX'/><category scheme='http://www.blogger.com/atom/ns#' term='Input Method'/><title type='text'>Mac OS X : suddenly disappear Chinese Input  Methods</title><content type='html'>This is the method to solve the problem&lt;br /&gt;&lt;br /&gt;(1) Create a newuser and see if the Input Method can be selected in International Preference&lt;br /&gt;&lt;br /&gt;(2) If the newuser can access the Input Method, then it is preference setting problem&lt;br /&gt;&lt;br /&gt;(3) login the newuser and copy the following files from folder ~/Library/Preferences to in a common folder&lt;br /&gt;com.apple.systempreferences.plist&lt;br /&gt;TCIMHaninUserDictionary&lt;br /&gt;com.apple.inputmethod.TCIM.plist&lt;br /&gt;&lt;br /&gt;(4) login the olduser and copy the above files back to ~/Library/Preferences&lt;br /&gt;&lt;br /&gt;(5) Reboot Mac&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-3712052450759281712?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/3712052450759281712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=3712052450759281712' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/3712052450759281712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/3712052450759281712'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2009/03/mac-os-x-suddenly-disappear-chinese.html' title='Mac OS X : suddenly disappear Chinese Input  Methods'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-2431242014033330324</id><published>2009-02-10T09:31:00.007+08:00</published><updated>2009-05-26T18:59:51.526+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='decrypt ipa'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><title type='text'>How to decrypt iPhone IPA file</title><content type='html'>&lt;span style="font-weight:bold;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Decrypted IPA&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Please take note that you don't need this method to decrypt the IPA file, if you already have the decrypted one downloaded from the net.  This method applies to the app that you have directly purchased from App Store and want to decrypt it in order to be useful for others.  &lt;br /&gt;&lt;br /&gt;One of the decrypt methods is to use a jailbreak iPhone and run the script (source from pr0x.org Forum) below in iPhone to create the decrypted ipa.&lt;br /&gt;&lt;br /&gt;To use this method you must have installed the app from App Store in jailbreak iPhone plus the following packages from Cydia&lt;br /&gt;com.ericasadun.utilities gdb gawk zip ldid odcctools&lt;br /&gt;&lt;br /&gt;Use the following commands in iPhone to install, if you don't like to use Cydia.&lt;br /&gt;&lt;code&gt;apt-get install com.ericasadun.utilities gdb gawk zip ldid odcctools&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;To find out the app names that your iPhone have installed, run this command in iPhone&lt;br /&gt;&lt;code&gt;find /var/mobile/Applications/ -iname *.app&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;and use this command to generated the decrypted ipa e.g. &lt;br /&gt;&lt;code&gt;./DCrypt.sh "Monkey Ball"&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;dl class="codebox"&gt;&lt;dt&gt;DCrypt.sh &lt;a href="#" onclick="selectCode(this); return false;"&gt;Select all&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;code&gt;&lt;br /&gt;#!/bin/sh&lt;br /&gt;#&lt;br /&gt;# DeCrypt - v1.1 (2008-10-21)&lt;br /&gt;#  - v1.1 (2008-10-21)&lt;br /&gt;# FloydianSlip&lt;br /&gt;#&lt;br /&gt;# Heavily based on xcrack&lt;br /&gt;#&lt;br /&gt;# Many thanks to:&lt;br /&gt;#    puy0, SaladFork, Flox, Flawless&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;echo "DeCrypt 1.1 (2008-10-21)"&lt;br /&gt;echo "FloydianSlip"&lt;br /&gt;echo&lt;br /&gt;&lt;br /&gt;if [ ! -e /usr/bin/plutil ]; then&lt;br /&gt;echo "Cannot find plutil (apt-get install com.ericasadun.utilities)"&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;if [ ! -e /usr/bin/gdb ]; then&lt;br /&gt;echo "Cannot find gdb (apt-get install gdb)"&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;if [ ! -e /usr/bin/otool ]; then&lt;br /&gt;echo "Cannot find otool (apt-get install odcctools)"&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;if [ ! -e /usr/bin/ldid ]; then&lt;br /&gt;echo "Cannot find otool (apt-get install ldid)"&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;if [ ! -e /usr/bin/awk ]; then&lt;br /&gt;       echo "Cannot find awk (apt-get install gawk)"&lt;br /&gt;       exit 1&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;if [ ! -e /usr/bin/zip ]; then&lt;br /&gt;       echo "Cannot find zip (apt-get install zip)"&lt;br /&gt;       exit 1&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;if [ $# -ne 1 ]; then&lt;br /&gt;echo "Usage: $(basename $0) &amp;lt;ApplicationName&amp;gt;"&lt;br /&gt;echo&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;AppInput=$1&lt;br /&gt;&lt;br /&gt;if [ -d "$AppInput" ]; then&lt;br /&gt;       tempLoc=$AppInput&lt;br /&gt;else&lt;br /&gt;echo "Locating $AppInput"&lt;br /&gt;tempLoc=$(find /var/mobile/Applications -iname "$AppInput.app")&lt;br /&gt;if [ -z "$tempLoc" ]; then&lt;br /&gt; echo "Unable to locate $AppInput"&lt;br /&gt; exit 1&lt;br /&gt;fi&lt;br /&gt;AppCount=$(find /var/mobile/Applications -iname "$AppInput.app" | wc -l)&lt;br /&gt;if [ $AppCount -gt 1 ]; then&lt;br /&gt; echo "Found two installation directories:"&lt;br /&gt; find /var/mobile/Applications -iname "$AppInput.app"&lt;br /&gt; exit 1&lt;br /&gt;fi&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;AppPath=$(dirname "$tempLoc")&lt;br /&gt;AppName=$(basename "$tempLoc")&lt;br /&gt;AppExec=$(plutil -v CFBundleExecutable "$tempLoc/Info.plist" 2&gt;&amp;amp;1 | awk -F "] " '{ print $2 }')&lt;br /&gt;AppVer=$(plutil -v CFBundleVersion "$tempLoc/Info.plist" 2&gt;&amp;amp;1 | awk -F "] " '{ print $2 }')&lt;br /&gt;AppDisplayName=$(plutil -v CFBundleDisplayName "$tempLoc/Info.plist" 2&gt;&amp;amp;1 | awk -F "] " '{ print $2 }')&lt;br /&gt;&lt;br /&gt;if [ ! -d "$AppPath" ]; then&lt;br /&gt;echo "Unable to locate original installation directory"&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;if [ ! -d "$AppPath/$AppName" ]; then&lt;br /&gt;echo "Unable to locate .app directory"&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;if [ ! -e "$AppPath/$AppName/$AppExec" ]; then&lt;br /&gt;echo "Unable to locate executable"&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;echo "Found $AppName"&lt;br /&gt;&lt;br /&gt;echo "Creating directories"&lt;br /&gt;WorkDir="/tmp/DecryptApp-$(date +%Y%m%d-%H%M%S)"&lt;br /&gt;NewAppDir="$HOME/Documents/Decrypted"&lt;br /&gt;&lt;br /&gt;if [ -e "$WorkDir" ]; then&lt;br /&gt;rm -rf "$WorkDir"&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;mkdir -p "$WorkDir"&lt;br /&gt;&lt;br /&gt;if [ ! -e "$NewAppDir" ]; then&lt;br /&gt;mkdir -p "$NewAppDir"&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;if [ ! -d "$WorkDir" -o ! -d "$NewAppDir" ]; then&lt;br /&gt;echo "Unable to create Directories"&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;echo "Copying application files"&lt;br /&gt;&lt;br /&gt;cp -a "$AppPath/$AppName/" "$WorkDir/"&lt;br /&gt;&lt;br /&gt;if [ ! -e "$WorkDir/$AppName/$AppExec" ]; then&lt;br /&gt;echo "Unable to copy application files"&lt;br /&gt;rm -fr "$WorkDir"&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;echo "Analyzing application"&lt;br /&gt;&lt;br /&gt;CryptID=$(otool -l "$WorkDir/$AppName/$AppExec" | grep cryptid | awk '{print $2}')&lt;br /&gt;if [ $CryptID -ne "1" ]; then&lt;br /&gt;echo "Application is not encrypted"&lt;br /&gt;rm -fr "$WorkDir"&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;CryptSize=$(otool -l "$WorkDir/$AppName/$AppExec" | grep cryptsize | awk '{print $2}')&lt;br /&gt;if [ ! $CryptSize ]; then&lt;br /&gt;echo "Unable to find CryptSize"&lt;br /&gt;rm -fr "$WorkDir"&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;CryptOff=$(otool -l "$WorkDir/$AppName/$AppExec" | grep cryptoff | awk '{print $2}')&lt;br /&gt;if [ ! $CryptOff ]; then&lt;br /&gt;       echo "Unable to find CryptOff"&lt;br /&gt;       rm -fr "$WorkDir"&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;echo "Locating and patching CryptID"&lt;br /&gt;&lt;br /&gt;# "/System/Library/Frameworks" in hex&lt;br /&gt;PathAsHex="2f53797374656d2f4c6962726172792f4672616d65776f726b73"&lt;br /&gt;&lt;br /&gt;# - Convert to hex on 1 long line, only take stuff before the path string,&lt;br /&gt;# - Convert to 1 byte set per line, find 0x01 (line number is offset in the real file),&lt;br /&gt;# - Strip newlines, reverse the order&lt;br /&gt;oneLocations=($(od -A n -t x1 -v "$WorkDir/$AppName/$AppExec" | \&lt;br /&gt;tr -d ' ','\n' | \&lt;br /&gt;sed "s/$PathAsHex.*\$//" | \&lt;br /&gt;sed "s/../&amp;amp;\n/g" | \&lt;br /&gt;grep -n -s 01 | \&lt;br /&gt;cut -d : -f 1 | \&lt;br /&gt;sort -nr | \&lt;br /&gt;tr "\n" " "))&lt;br /&gt;&lt;br /&gt;for TryOffset in "${oneLocations[@]}"; do&lt;br /&gt;cp -a "$WorkDir/$AppName/$AppExec" "$WorkDir/$AppName/$AppExec.trying"&lt;br /&gt;foo=$(echo -ne "\x00" | dd bs=1 seek=$((TryOffset - 1)) conv=notrunc status=noxfer of="$WorkDir/$AppName/$AppExec.trying" 2&gt;&amp;amp;1&gt; /dev/null)&lt;br /&gt;cid=$(otool -l "$WorkDir/$AppName/$AppExec.trying" | grep cryptid | awk '{print $2}')&lt;br /&gt;if [ $cid -eq 0 ]; then&lt;br /&gt; break&lt;br /&gt;fi&lt;br /&gt;rm "$WorkDir/$AppName/$AppExec.trying"&lt;br /&gt;done&lt;br /&gt;&lt;br /&gt;if [ ! -e "$WorkDir/$AppName/$AppExec.trying" ]; then&lt;br /&gt;echo "Unable to find CryptID"&lt;br /&gt;rm -fr "$WorkDir"&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;mv "$WorkDir/$AppName/$AppExec.trying" "$WorkDir/$AppName/$AppExec"&lt;br /&gt;&lt;br /&gt;echo "Dumping unencrypted data from application"&lt;br /&gt;&lt;br /&gt;echo -e "set sharedlibrary load-rules \".*\" \".*\" none\r\n\&lt;br /&gt;set inferior-auto-start-dyld off\r\n\&lt;br /&gt;set sharedlibrary preload-libraries off\r\n\&lt;br /&gt;set sharedlibrary load-dyld-symbols off\r\n\&lt;br /&gt;handle all nostop\r\n\&lt;br /&gt;break *0x2000\r\n&lt;br /&gt;commands 1\r\n\&lt;br /&gt;dump memory $WorkDir/dump.bin 0x2000 $(($CryptSize + 0x2000))\r\n\&lt;br /&gt;kill\r\n\&lt;br /&gt;quit\r\n\&lt;br /&gt;end\r\n\&lt;br /&gt;start" &gt; $WorkDir/batch.gdb&lt;br /&gt;&lt;br /&gt;foo=$(gdb -q -e "$AppPath/$AppName/$AppExec" -x $WorkDir/batch.gdb -batch 2&gt;&amp;amp;1&gt; /dev/null)&lt;br /&gt;&lt;br /&gt;rm $WorkDir/batch.gdb&lt;br /&gt;&lt;br /&gt;echo "Verifiying data dump"&lt;br /&gt;&lt;br /&gt;DumpSize=$(stat -c%s "$WorkDir/dump.bin")&lt;br /&gt;if [ "$DumpSize" != "$CryptSize" ]; then&lt;br /&gt;echo "Memory dump is not the right size or does not exist"&lt;br /&gt;rm -fr "$WorkDir"&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;echo "Replacing encrypted data with data dump"&lt;br /&gt;foo=$(dd seek=4096 bs=1 conv=notrunc if="$WorkDir/dump.bin" of="$WorkDir/$AppName/$AppExec" 2&gt;&amp;amp;1&gt; /dev/null)&lt;br /&gt;rm "$WorkDir/dump.bin"&lt;br /&gt;&lt;br /&gt;echo "Signing the application"&lt;br /&gt;foo=$(ldid -s "$WorkDir/$AppName/$AppExec" 2&gt;&amp;amp;1&gt; /dev/null)&lt;br /&gt;plutil -s 'SignerIdentity' -v 'Apple iPhone OS Application Signing' "$WorkDir/$AppName/Info.plist" 2&gt;&amp;amp;1&gt; /dev/null&lt;br /&gt;&lt;br /&gt;if [ -e "$WorkDir/$AppName/SC_Info" ]; then&lt;br /&gt;echo "Removing SC_Info"&lt;br /&gt;rm -fr "$WorkDir/$AppName/SC_Info"&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;if [ -e "$WorkDir/$AppName/_CodeSignature" ]; then&lt;br /&gt;echo "Removing _CodeSignature"&lt;br /&gt;rm -fr "$WorkDir/$AppName/_CodeSignature"&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;if [ -h "$WorkDir/$AppName/CodeResources" ]; then&lt;br /&gt;echo "Removing CodeResources"&lt;br /&gt;rm -fr "$WorkDir/$AppName/CodeResources"&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;if [ -e "$WorkDir/$AppName/ResourceRules.plist" ]; then&lt;br /&gt;echo "Removing ResourceRules.plist"&lt;br /&gt;rm -fr "$WorkDir/$AppName/ResourceRules.plist"&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;echo "Building .ipa"&lt;br /&gt;&lt;br /&gt;mkdir -p "$WorkDir/Payload"&lt;br /&gt;if [ ! -e "$WorkDir/Payload" ]; then&lt;br /&gt;echo "Failed to create Payload directory"&lt;br /&gt;rm -fr "$WorkDir"&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;br /&gt;mv "$WorkDir/$AppName" "$WorkDir/Payload/"&lt;br /&gt;&lt;br /&gt;echo "Copying iTunesArtwork"&lt;br /&gt;&lt;br /&gt;if [ -e "$AppPath/iTunesArtwork" ]; then&lt;br /&gt;cp -a "$AppPath/iTunesArtwork" "$WorkDir/"&lt;br /&gt;else&lt;br /&gt;echo "Unable to find iTunesArtwork"&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;echo "Compressing the .ipa"&lt;br /&gt;IPAName=$NewAppDir/$(echo $AppDisplayName | sed -e "s: :_:g")-v$AppVer.ipa&lt;br /&gt;cd "$WorkDir"&lt;br /&gt;zip -m -r "$IPAName" * 2&gt;&amp;amp;1&gt; /dev/null&lt;br /&gt;cd - 2&gt;&amp;amp;1&gt; /dev/null&lt;br /&gt;if [ ! -e "$IPAName" ]; then&lt;br /&gt;echo "Failed to compress the .ipa"&lt;br /&gt;rm -fr "$WorkDir"&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;echo "Removing temporary files"&lt;br /&gt;rm -rf "$WorkDir"&lt;br /&gt;&lt;br /&gt;echo "Done"&lt;br /&gt;echo "Created decrypted .ipa at $IPAName"&lt;br /&gt;&lt;/code&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;br /&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you only want to manually get the decrypted binary for reverse engineering.  Suppose the Application Executable is called AppExec and installed in /var/mobile/Applications.  This is the script and using the gdb to dump the decrypted binary&lt;br /&gt;&lt;br /&gt;Let's use a free app AdHoc Helper (by Erica Sadun) as example&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;otool -l `find /var/mobile/Applications -iname AdHoc` | grep cryptsize&lt;br /&gt;&lt;br /&gt;output-&gt; cryptsize 8192&lt;br /&gt;&lt;br /&gt;# get the cryptsize say 8192&lt;br /&gt;&lt;br /&gt;gdb `find /var/mobile/Applications -iname AdHoc`&lt;br /&gt;&lt;br /&gt;(gdb) b *0x2000&lt;br /&gt;Breakpoint 1 at 0x2000&lt;br /&gt;(gdb) r&lt;br /&gt;(gdb) x/20i 0x2000&lt;br /&gt;(gdb) dump binary memory /var/root/dump.bin 0x2000 (0x2000+8192)&lt;br /&gt;(gdb) kill&lt;br /&gt;Kill the program being debugged? (y or n) y&lt;br /&gt;(gdb) quit&lt;br /&gt;&lt;br /&gt;cd /var/root/&lt;br /&gt;cp `find /var/mobile/Applications -iname AdHoc` .&lt;br /&gt;dd seek=4096 bs=1 conv=notrunc if=dump.bin of=AdHoc&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-2431242014033330324?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/2431242014033330324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=2431242014033330324' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/2431242014033330324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/2431242014033330324'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2009/02/how-to-decrypt-iphone-ipa-file.html' title='How to decrypt iPhone IPA file'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-462283998453283890</id><published>2009-02-02T06:13:00.008+08:00</published><updated>2009-02-02T06:43:25.336+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iLife 09'/><title type='text'>How to install iLife 09 on Mac OS X 10.5.5</title><content type='html'>iLife 09 requires Mac OS X 10.5.6&lt;br /&gt;&lt;br /&gt;If you want to install it in 10.5.5, you need to change the SystemVersion.plist&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo vi /System/Library/CoreServices/SystemVersion.plist&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;and change this &lt;br /&gt;&lt;code&gt;&lt;br /&gt; &amp;lt;key&amp;gt;ProductVersion&amp;lt;/key&amp;gt;&lt;br /&gt; &amp;lt;string&amp;gt;10.5.5&amp;lt;/string&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;to&lt;br /&gt;&lt;code&gt;&lt;br /&gt; &amp;lt;key&amp;gt;ProductVersion&amp;lt;/key&amp;gt;&lt;br /&gt; &amp;lt;string&amp;gt;10.5.6&amp;lt;/string&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;You cannot change the SystemVersion.plist back after installation, as iPhoto 09 and iMovie 09 will check this when launch.&lt;br /&gt;&lt;br /&gt;If you want iPhoto 09 to skip the check*, you need to use a hex editor&lt;br /&gt;open and change this file&lt;br /&gt;/Applications/iPhoto.app/Contents/MacOS/iPhoto&lt;br /&gt;then find (do multiple finds) and replace 10.5.6 to 10.5.5 and save it&lt;br /&gt;&lt;br /&gt;*this trick does not work on iMovie 09&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-462283998453283890?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/462283998453283890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=462283998453283890' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/462283998453283890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/462283998453283890'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2009/02/how-to-install-ilife-09-on-mac-os-x_02.html' title='How to install iLife 09 on Mac OS X 10.5.5'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-7567270937982309657</id><published>2009-01-29T15:57:00.014+08:00</published><updated>2009-01-30T10:42:36.032+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iWork 09'/><title type='text'>How to install iWork 09 on Mac OS X 10.5.5</title><content type='html'>iWork 09 requires Mac OS X 10.5.6, but I want to install it in my 10.5.5 machine and don't want to upgrade Mac OS&lt;br /&gt;&lt;br /&gt;Here are the steps&lt;br /&gt;&lt;br /&gt;(1) download iWork 09 Trial from Apple&lt;br /&gt;&lt;a href="http://www.apple.com/iwork/download-trial/"&gt;&lt;img src="http://www.iphone.org.hk/attach/49776-iwork09trial.png"/&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(2) Use Disk Utility to convert the iWork09Trial.dmg into a read-write image file say iWork09.dmg&lt;br /&gt;&lt;br /&gt;(3) Mount the newly created read-write image iWork09.dmg&lt;br /&gt;&lt;br /&gt;(4) Use Terminal to enter the command&lt;br /&gt;&lt;br /&gt;&lt;dl class="codebox"&gt;&lt;dt&gt;shell script: &lt;a href="#" onclick="selectCode(this); return false;"&gt;Select all&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd /Volumes/iWork\ \'09\ Trial\ Install\ DVD/Packages/iWork09Trial.mpkg/Contents/&lt;br /&gt;&lt;br /&gt;vi iWorkTrial.dist&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/dl&gt;&lt;br /&gt;&lt;br /&gt;and change this &lt;br /&gt;&lt;code&gt;&lt;br /&gt;if (-1 == system.compareVersions(system.version.ProductVersion, '10.5.6'))&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;to&lt;br /&gt;&lt;code&gt;&lt;br /&gt;if (-1 == system.compareVersions(system.version.ProductVersion, '10.5.5'))&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(5) Start the Installation from the mounted image&lt;br /&gt;&lt;br /&gt;(6) After Installation completed&lt;br /&gt;&lt;br /&gt;(7) Use Terminal to enter the command&lt;br /&gt;&lt;dl class="codebox"&gt;&lt;dt&gt;shell script: &lt;a href="#" onclick="selectCode(this); return false;"&gt;Select all&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;sudo defaults write /Library/Preferences/com.apple.iWork09.Installer InstallMode -string 'Retail'&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/dl&gt;&lt;br /&gt;&lt;br /&gt;(8) Then start any iWork 09 application, it will ask you to register, click register later&lt;br /&gt;&lt;br /&gt;(9) It will ask you three times after you close and then open any iWork 09 app, then the option of "never register" will appear.  Proceed to click never register.&lt;br /&gt;&lt;br /&gt;(10) In case you did not do step (7), it will ask you for the serial number, enter this&lt;br /&gt;&lt;code&gt;Y93U-HMME-3YRG-MOFO-MOFO-5S2&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Enjoy.&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-7567270937982309657?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/7567270937982309657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=7567270937982309657' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/7567270937982309657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/7567270937982309657'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2009/01/how-to-install-iwork-09-on-mac-os-x.html' title='How to install iWork 09 on Mac OS X 10.5.5'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-7168159448866366590</id><published>2009-01-16T17:26:00.002+08:00</published><updated>2009-01-16T17:31:53.110+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='redsn0w'/><title type='text'>redsn0w is coming</title><content type='html'>&lt;dl class="codebox"&gt;&lt;dt&gt;shell script: &lt;a href="#" onclick="selectCode(this); return false;"&gt;Select all&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;wget http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPod/SBML/osx/061-5358.20081120.Gtghy/iPod2,1_2.2_5G77a_Restore.ipsw  &lt;br /&gt;  &lt;br /&gt;unzip -o iPod2,1_2.2_5G77a_Restore.ipsw 018-4056-128.dmg &lt;br /&gt;  &lt;br /&gt;vfdecrypt -k 148025cde5c51d51d7733e74c6857dfca70d7240287d6eb039a1ed835413120b0af1e296 -i 018-4056-128.dmg -o ipt2g_mainfs.dmg&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-7168159448866366590?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/7168159448866366590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=7168159448866366590' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/7168159448866366590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/7168159448866366590'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2009/01/redsn0w-is-coming.html' title='redsn0w is coming'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-6133061406265646187</id><published>2009-01-14T17:49:00.002+08:00</published><updated>2009-01-14T17:51:16.231+08:00</updated><title type='text'>Bushism</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3LRNVfBfliQ/SW2cESjOUlI/AAAAAAAAApc/ZLYgAfbuX9Y/s1600-h/bushsp.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 156px; height: 116px;" src="http://3.bp.blogspot.com/_3LRNVfBfliQ/SW2cESjOUlI/AAAAAAAAApc/ZLYgAfbuX9Y/s400/bushsp.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5291056734743188050" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;Don't misunderestimated me&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-6133061406265646187?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/6133061406265646187/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=6133061406265646187' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/6133061406265646187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/6133061406265646187'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2009/01/bushism.html' title='Bushism'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_3LRNVfBfliQ/SW2cESjOUlI/AAAAAAAAApc/ZLYgAfbuX9Y/s72-c/bushsp.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-3499735212776516967</id><published>2008-12-30T18:16:00.010+08:00</published><updated>2008-12-31T11:42:42.540+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MZK-NAS02SG'/><category scheme='http://www.blogger.com/atom/ns#' term='MZK-NAS01SG'/><category scheme='http://www.blogger.com/atom/ns#' term='PCI'/><title type='text'>PCI MZK-NAS01SG / MZK-NAS02SG modding</title><content type='html'>This &lt;a href="http://www.amazon.com/Torrent-Gigabit-Attached-NAS-01G-designed/dp/B000JMJQYU/ref=sr_1_13?ie=UTF8&amp;m=AUUXAJNSW69Q9&amp;s=generic&amp;qid=1230647868&amp;sr=1-13"&gt;NAS&lt;/a&gt; comes with Linux OS and BT download / iTunes / UPnP DLNA AV Server and can be modified using the Dlink - DNS323 funplug packages&lt;br /&gt;&lt;br /&gt;Objective of modding&lt;br /&gt;(a) Add ssh server&lt;br /&gt;(b) Add lighttpd (port 80), php &amp; mysql&lt;br /&gt;(c) change the web admin http page to port 81&lt;br /&gt;&lt;br /&gt;Steps&lt;br /&gt;&lt;br /&gt;(1) Upgrade NAS firmware 1.1.2&lt;br /&gt;&lt;br /&gt;(2) Setup the BT Downloader and FTP / Samba server via the web admin of the NAS&lt;br /&gt;&lt;br /&gt;(3) Use telnet to gain access&lt;br /&gt;&lt;code&gt;telnet 192.168.1.100 1192&lt;/code&gt;&lt;br /&gt;ID: root&lt;br /&gt;PASSWORD: password&lt;br /&gt;&lt;br /&gt;(4) install funplug&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd /DataFolder&lt;br /&gt;mkdir ffp&lt;br /&gt;cd ffp&lt;br /&gt;wget http://www.inreto.de/dns323/fun-plug/0.5/fun_plug.tgz&lt;br /&gt;tar zxvf funplug.tgz&lt;br /&gt;ln -sf /DataFolder/ffp /&lt;br /&gt;export PATH=/ffp/bin:/ffp/sbin/:$PATH&lt;br /&gt;&lt;br /&gt;(5) download funplug packages&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd /DataFolder/ffp&lt;br /&gt;rsync -av inreto.de::dns323/fun-plug/0.5/packages .&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(6) start ssh server&lt;br /&gt;&lt;code&gt;&lt;br /&gt;chmod 111 /ffp/var/lib/sshd&lt;br /&gt;sh /ffp/start/sshd.sh start&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(7) Install lighttpd, php and mysql&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd /DataFolder/ffp&lt;br /&gt;mkdir -p packages&lt;br /&gt;wget http://81.216.140.39/dns-323/mysql_and_php/mysql-5.1.28-rc-1.tgz&lt;br /&gt;wget http://81.216.140.39/dns-323/mysql_and_php/php-5.2.6-mysql51-1.tgz&lt;br /&gt;funpkg -i mysql-5.1.28-rc-1.tgz&lt;br /&gt;funpkg -i php-5.2.6-mysql51-1.tgz&lt;br /&gt;chmod u+x /ffp/start/mysqld.sh&lt;br /&gt;/ffp/start/mysqld.sh restart&lt;br /&gt;/ffp/bin/mysqladmin -u root password 'new-password'&lt;br /&gt;ln -s /ffp/var/mysql.sock /tmp/mysql.sock&lt;br /&gt;cp /DataFolder/ffp/etc/examples/lighttpd.conf-with-php /DataFolder/ffp/etc/lighttpd.conf&lt;br /&gt;cp /DataFolder/ffp/etc/examples/my.cnf /DataFolder/ffp/etc/my.cnf&lt;br /&gt;vi /DataFolder/ffp/etc/lighttpd.conf&lt;br /&gt;mkdir -p /DataFolder/ffp/etc/www/logs&lt;br /&gt;mkdir -p /DataFolder/www/tmp&lt;br /&gt;echo '&amp;lt;?php phpinfo(); ?&amp;gt;' &amp;gt; /DataFolder/www/index.php&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;when editing lighttpd.conf change these&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;server.document-root = "/DataFolder/www/"&lt;br /&gt;server.upload-dirs = ( "/DataFolder/www/tmp" )&lt;br /&gt;server.errorlog = "/DataFolder/ffp/etc/www/logs/error.log"&lt;br /&gt;accesslog.filename = "/DataFolder/ffp/etc/www/logs/access.log"&lt;br /&gt;server.port = 80&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(8) Modify btdog (so that the modding will be effective even after NAS reboot)&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;mv /DataFolder/.bittorrent/bin/btdog /DataFolder/.bittorrent/bin/btdog_bak&lt;br /&gt;vi /etc/protocols&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;and add this line to /etc/profile&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;export PATH=/ffp/bin:/ffp/sbin/:$PATH&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cp /etc/profile /DataFolder/.bittorrent/bin/profile.bak &lt;br /&gt;vi /DataFolder/.bittorrent/bin/btdog&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;the content of btdog is&lt;br /&gt;&lt;br /&gt;&lt;dl class="codebox"&gt;&lt;dt&gt;btdog: &lt;a href="#" onclick="selectCode(this); return false;"&gt;Select all&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#ledset 4=USB1 6=USB2 7=Power 17=HDD1 18=HDD2, 0=on 1=off&lt;br /&gt;#/bin/ledset 4 1&lt;br /&gt;#/bin/ledset 6 1&lt;br /&gt;#/bin/ledset 7 1&lt;br /&gt;#/bin/ledset 17 1&lt;br /&gt;#/bin/ledset 18 1&lt;br /&gt;ln -s /DataFolder/ffp/ /ffp&lt;br /&gt;export PATH=/ffp/bin:/ffp/sbin/:/usr/bin:/bin:/usr/sbin:/sbin&lt;br /&gt;killall webs nashttpd&lt;br /&gt;cp /DataFolder/.bittorrent/bin/profile.bak /etc/profile&lt;br /&gt;/DataFolder/ffp/sbin/lighttpd -f /DataFolder/ffp/etc/lighttpd.conf&amp;&lt;br /&gt;chmod 600 /DataFolder/ffp/etc/ssh/ssh_host_rsa_key /DataFolder/ffp/etc/ssh/ssh_host_dsa_key /DataFolder/ffp/etc/ssh/ssh_host_key&lt;br /&gt;chmod 600 -R /DataFolder/ffp/var/lib/sshd&lt;br /&gt;chmod 111 /DataFolder/ffp/var/lib/sshd&lt;br /&gt;sh /DataFolder/ffp/start/sshd.sh start&lt;br /&gt;cp /DataFolder/ffp/etc/my.cnf /etc/my.cnf&lt;br /&gt;chmod 0644 /etc/my.cnf&lt;br /&gt;chmod +x /DataFolder/ffp/start/mysqld.sh&lt;br /&gt;sh /DataFolder/ffp/start/mysqld.sh start&amp;&lt;br /&gt;webs&amp;&lt;br /&gt;ln -sf /DataFolder/ffp/var/mysql.sock /tmp/mysql.sock&lt;br /&gt;/DataFolder/.bittorrent/bin/btdog_bak /DataFolder/.bittorrent/bin/bt -daemon-loop --default-settings-file /DataFolder/.bittorrent/bin/btsettings.txt&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;br /&gt;&lt;br /&gt;change btdog to be executable&lt;br /&gt;&lt;code&gt;&lt;br /&gt;chmod +x /DataFolder/.bittorrent/bin/btdog&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(9) reboot NAS and test lighttpd, php, mysql, ssh and other servers&lt;br /&gt;&lt;br /&gt;and enjoy installing some more packages from fun-plug see &lt;a href="http://www.inreto.de/dns323/fun-plug/0.5/PACKAGES.html"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-3499735212776516967?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/3499735212776516967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=3499735212776516967' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/3499735212776516967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/3499735212776516967'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2008/12/pci-mzk-nas01sg-mzk-nas02sg-modding.html' title='PCI MZK-NAS01SG / MZK-NAS02SG modding'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-436927233006363710</id><published>2008-12-27T11:47:00.000+08:00</published><updated>2008-12-27T11:50:35.004+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac OSX'/><category scheme='http://www.blogger.com/atom/ns#' term='wget'/><title type='text'>How-to compile and install wget binary in Mac OS X</title><content type='html'>&lt;code&gt;&lt;br /&gt;mkdir -p wget; cd wget&lt;br /&gt;curl -O http://ftp.gnu.org/pub/gnu/wget/wget-latest.tar.gz&lt;br /&gt;tar -zxvf wget-latest.tar.gz &lt;br /&gt;cd *&lt;br /&gt;./configure&lt;br /&gt;make&lt;br /&gt;sudo cp -p src/wget /usr/bin/&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-436927233006363710?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/436927233006363710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=436927233006363710' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/436927233006363710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/436927233006363710'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2008/12/how-to-compile-and-install-wget-binary.html' title='How-to compile and install wget binary in Mac OS X'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-9017080971230068188</id><published>2008-12-23T00:23:00.020+08:00</published><updated>2008-12-27T14:46:11.367+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac OSX'/><category scheme='http://www.blogger.com/atom/ns#' term='MSI Wind'/><title type='text'>MSI Wind Notebook Install Mac OS X 10.5.4/5</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3LRNVfBfliQ/SVBueG_JuHI/AAAAAAAAAms/iHgZgSL1zw8/s1600-h/msi.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_3LRNVfBfliQ/SVBueG_JuHI/AAAAAAAAAms/iHgZgSL1zw8/s400/msi.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5282843826456213618" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here is the guide&lt;br /&gt;&lt;a href="http://forums.msiwind.net/mac/how-install-osx-with-and-without-usb-stick-usb-dvd-t4701.html"&gt;http://forums.msiwind.net/mac/how-install-osx-with-and-without-usb-stick-usb-dvd-t4701.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You need these&lt;br /&gt;&lt;br /&gt;for display driver&lt;br /&gt;&lt;a href="http://rapidshare.com/files/150202151/GMA950.pkg.zip.htm"&gt;http://rapidshare.com/files/150202151/GMA950.pkg.zip.htm&lt;/a&gt;l&lt;br /&gt;&lt;br /&gt;for wifi&lt;br /&gt;&lt;a href="http://www.ralinktech.com.tw/data/drivers/STA_RT2860%20D-1.1.1.0%20UI-1.6.8.0_2008_12_04.dm"&gt;http://www.ralinktech.com.tw/data/drivers/STA_RT2860%20D-1.1.1.0%20UI-1.6.8.0_2008_12_04.dm&lt;/a&gt;g&lt;br /&gt;&lt;br /&gt;for creating Lepoard install partition in harddisk&lt;br /&gt;&lt;a href="http://thepiratebay.org/torrent/4307757/"&gt;http://thepiratebay.org/torrent/4307757/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.iphone.org.hk/attach/48221-Leopard_hd_install_helper_v0.3.zip"&gt;http://www.iphone.org.hk/attach/48221-Leopard_hd_install_helper_v0.3.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Headphone jack switch&lt;br /&gt;&lt;a href="http://forums.msiwind.net/mac/news-headphone-jack-works-t4854.html"&gt;http://forums.msiwind.net/mac/news-headphone-jack-works-t4854.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Front Row update 2.1.2 (so that Front Row can see your iTunes Library if you have upgraded to iTunes 8) &lt;br /&gt;&lt;a href="http://supportdownload.apple.com/download.info.apple.com/Apple_Support_Area/Apple_Software_Updates/Mac_OS_X/downloads/061-4397.20080227.gOg5S/FrontRowUpdate2.1.2.dmg"&gt;http://supportdownload.apple.com/download.info.apple.com/Apple_Support_Area/Apple_Software_Updates/Mac_OS_X/downloads/061-4397.20080227.gOg5S/FrontRowUpdate2.1.2.dmg&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Results for Mac OS X 10.5.4/5 Installation&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;WinXP / Mac OS X dual boot : OK&lt;br /&gt;Ethernet : OK&lt;br /&gt;Wifi : OK&lt;br /&gt;Speaker : OK&lt;br /&gt;GMA950 Graphics 1024 x 600 : OK&lt;br /&gt;USB Hard Disk : OK&lt;br /&gt;USB HSDPA modem : OK&lt;br /&gt;Bluetooth : OK&lt;br /&gt;Quick Time Player : OK&lt;br /&gt;iPhone SDK Development : OK&lt;br /&gt;WebCam, Photo Booth : OK&lt;br /&gt;Headphone Jack Output : with switch.sh script (see above)&lt;br /&gt;&lt;br /&gt;Sound Line Input / mic : failed&lt;br /&gt;Trackpad Scrolling : not working (but you can press the upper / lower right corner of the track pad to slowly scroll)&lt;br /&gt;&lt;br /&gt;If you need to upgrade Safari to 3.2.1, you need to first upgrade Mac OS X to 10.5.5 and then update Security Update 2008-007 Client (Leopard)&lt;br /&gt;&lt;br /&gt;To upgrade 10.5.5, you can download this update from Apple &lt;br /&gt;&lt;a href="http://www.apple.com/downloads/macosx/apple/macosx_updates/macosx1055update.html "&gt;http://www.apple.com/downloads/macosx/apple/macosx_updates/macosx1055update.html &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After update to 10.5.5, you just need to reinstall the GMA950 driver and everything works except mic / line input&lt;br /&gt;&lt;br /&gt;Then download the Security Update 2008-007 here &lt;a href="http://www.apple.com/downloads/macosx/apple/security_updates/securityupdate2008007clientleopard.html"&gt;http://www.apple.com/downloads/macosx/apple/security_updates/securityupdate2008007clientleopard.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Then in the Software Update, you can have the option to upgrade Safari to 3.2.1&lt;br /&gt;&lt;br /&gt;&lt;img src="http://pic20.picturetrail.com/VOL175/7414394/20598683/337190565.jpg"/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;FAQ&lt;br /&gt;---&lt;br /&gt;This is how to disable the Realtek utility in startup&lt;br /&gt;&lt;code&gt;&lt;br /&gt;sudo mv WiUtilityCardbusPCIStartUp ~/&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;And also remove it in System Settings -&gt; Accounts -&gt; Login Items&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-9017080971230068188?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/9017080971230068188/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=9017080971230068188' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/9017080971230068188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/9017080971230068188'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2008/12/msi-wind-notebook-install-mac-os-x-1054.html' title='MSI Wind Notebook Install Mac OS X 10.5.4/5'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_3LRNVfBfliQ/SVBueG_JuHI/AAAAAAAAAms/iHgZgSL1zw8/s72-c/msi.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-8206471084952481025</id><published>2008-12-04T01:40:00.007+08:00</published><updated>2008-12-04T01:56:05.559+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iTunes'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='iTunes Account'/><title type='text'>Create US iTunes Account without credit card</title><content type='html'>(1) Open iTunes and change iTunes store to United States.&lt;br /&gt;&lt;br /&gt;(2) Goto App Store of US and Click to buy a free app&lt;br /&gt;&lt;br /&gt;(3) Choose to create a new account and enter email address and password and other questions. Choose &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;none for payment method&lt;/span&gt; to create a new iTunes Account.  Enter a valid US address (find it in Google), you need valid and matching city (e.g. Piscataway), state(e.g. NJ) and zipcode (e.g. 08854) and telephone number (3 digits for area code and 7 digits for telephone number) e.g. (852)9123456. &lt;div&gt;If you want to find a valid address in US, you can also make use of Google Map in iPhone.  For example, first search a city say San Franciso, then search Starbucks.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3LRNVfBfliQ/STbF2OwQVFI/AAAAAAAAAmU/cu1jJ9Xxq7A/s1600-h/USitunes.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 171px;" src="http://1.bp.blogspot.com/_3LRNVfBfliQ/STbF2OwQVFI/AAAAAAAAAmU/cu1jJ9Xxq7A/s400/USitunes.png" alt="" id="BLOGGER_PHOTO_ID_5275621548975215698" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(4) If you want to add Store credit to your iTunes Account to buy paid app,&lt;br /&gt;buy US iTunes gift certificate from ebay (&lt;a href="http://search.ebay.com/search/search.dll?from=R40&amp;amp;_trksid=m37&amp;amp;satitle=itunes+gift"&gt;search here&lt;/a&gt;) or from your friend in US (tell him to email you the Activation Code and the Card Serial Number)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3LRNVfBfliQ/R5dbpDnvjxI/AAAAAAAAAF8/68QiWcbMa5Y/s1600-h/50iTunes.JPG"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_3LRNVfBfliQ/R5dbpDnvjxI/AAAAAAAAAF8/68QiWcbMa5Y/s320/50iTunes.JPG" alt="" id="BLOGGER_PHOTO_ID_5158692659080957714" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-8206471084952481025?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/8206471084952481025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=8206471084952481025' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/8206471084952481025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/8206471084952481025'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2008/12/create-us-itunes-account-without-credit.html' title='Create US iTunes Account without credit card'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_3LRNVfBfliQ/STbF2OwQVFI/AAAAAAAAAmU/cu1jJ9Xxq7A/s72-c/USitunes.png' height='72' width='72'/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-8546064513583308320</id><published>2008-12-03T11:34:00.004+08:00</published><updated>2008-12-03T11:35:58.135+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><title type='text'>apple.com visited my page</title><content type='html'>&lt;span style="font-weight:bold;"&gt;&lt;span class="Apple-style-span" style="color: rgb(153, 0, 0);"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Welcome&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3LRNVfBfliQ/STX-XVVgSiI/AAAAAAAAAmM/6ZHK1hZWn2U/s1600-h/applecom.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 297px;" src="http://1.bp.blogspot.com/_3LRNVfBfliQ/STX-XVVgSiI/AAAAAAAAAmM/6ZHK1hZWn2U/s400/applecom.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5275402215352191522" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-8546064513583308320?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/8546064513583308320/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=8546064513583308320' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/8546064513583308320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/8546064513583308320'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2008/12/applecom-visited-my-page.html' title='apple.com visited my page'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_3LRNVfBfliQ/STX-XVVgSiI/AAAAAAAAAmM/6ZHK1hZWn2U/s72-c/applecom.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-8972465624805068324</id><published>2008-12-03T11:16:00.002+08:00</published><updated>2008-12-03T11:18:21.086+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MobileInstallation'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><title type='text'>Where to patch MobileInstallation binary for firmware 2.2</title><content type='html'>&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Here &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3LRNVfBfliQ/STX6WFY0QWI/AAAAAAAAAmE/c9qhDfYxMyg/s1600-h/patch.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 394px; height: 400px;" src="http://4.bp.blogspot.com/_3LRNVfBfliQ/STX6WFY0QWI/AAAAAAAAAmE/c9qhDfYxMyg/s400/patch.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5275397795844735330" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-8972465624805068324?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/8972465624805068324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=8972465624805068324' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/8972465624805068324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/8972465624805068324'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2008/12/where-to-patch-mobileinstallation.html' title='Where to patch MobileInstallation binary for firmware 2.2'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_3LRNVfBfliQ/STX6WFY0QWI/AAAAAAAAAmE/c9qhDfYxMyg/s72-c/patch.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-8866086788433211317</id><published>2008-11-16T18:52:00.015+08:00</published><updated>2008-11-17T14:03:23.193+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac-Mini'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac OSX'/><title type='text'>Install mysql in PowerPC Mac Mini and make php-mysql works</title><content type='html'>The problem for mysql server in Mac OS X powerpc platform is that there is no binary build for package format (.dmg) for Leopard and the tar.gz binary does not work with the default php5 which uses the unix socket at /var/mysql/mysql.sock plus there is no LaunchDaemon plist.  Either you have to change the etc/php.ini or build the mysql server from source.&lt;br /&gt;&lt;br /&gt;This guide shows how to build from source&lt;br /&gt;&lt;br /&gt;(1) Choose the mirror site and download the source tar.gz file&lt;br /&gt;&lt;a href="http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.29-rc.tar.gz/from/pick#mirrors"&gt;http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.29-rc.tar.gz/from/pick#mirrors&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(2) untar and unzip it&lt;br /&gt;&lt;code&gt;&lt;br /&gt;tar -xzvf mysql-5.1.29-rc.tar.gz &lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(3) config, make and install (make sure you have Xcode installed already)&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd mysql-5.1.29-rc&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;dl class="codebox"&gt;&lt;dt&gt;scipt: &lt;a href="#" onclick="selectCode(this); return false;"&gt;Select all&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;br /&gt;&lt;code&gt;CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer \&lt;br /&gt;-felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql \&lt;br /&gt;--with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile \&lt;br /&gt;--enable-shared --with-unix-socket-path=/var/mysql/mysql.sock \&lt;br /&gt;--with-mysqld-user=mysql&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;make&lt;br /&gt;sudo make install&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(4) create database&lt;br /&gt;&lt;code&gt;&lt;br /&gt;sudo chgrp -R mysql /usr/local/mysql&lt;br /&gt;cd /usr/local/mysql&lt;br /&gt;sudo ./bin/mysql_install_db --user=mysql&lt;br /&gt;sudo chown -R mysql ./var&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(5) create unix-socket directory&lt;br /&gt;&lt;code&gt;&lt;br /&gt;sudo mkdir -p /var/mysql&lt;br /&gt;sudo chown -R mysql /var/mysql&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(6) create LaunchDaemons in /Library/LaunchDaemons/com.mysql.mysqld.plist so that it can autostart&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo vi /Library/LaunchDaemons/com.mysql.mysqld.plist&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;and put this in the file&lt;br /&gt;&lt;br /&gt;&lt;dl class="codebox"&gt;&lt;dt&gt;com.mysql.mysqld.plist: &lt;a href="#" onclick="selectCode(this); return false;"&gt;Select all&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&amp;gt;&lt;br /&gt;&amp;lt;plist version="1.0"&amp;gt;&lt;br /&gt;&amp;lt;dict&gt;&lt;br /&gt;    &amp;lt;key&amp;gt;KeepAlive&amp;lt;/key&amp;gt;&lt;br /&gt;    &amp;lt;true/&amp;gt;&lt;br /&gt;    &amp;lt;key&amp;gt;Label&amp;lt;/key&amp;gt;&lt;br /&gt;    &amp;lt;string&amp;gt;com.mysql.mysqld&amp;lt;/string&amp;gt;&lt;br /&gt;    &amp;lt;key&amp;gt;Program&amp;lt;/key&amp;gt;&lt;br /&gt;    &amp;lt;string&amp;gt;/usr/local/mysql/bin/mysqld_safe&amp;lt;/string&amp;gt;&lt;br /&gt;    &amp;lt;key&amp;gt;RunAtLoad&amp;lt;/key&amp;gt;&lt;br /&gt;    &amp;lt;true/&amp;gt;&lt;br /&gt;    &amp;lt;key&amp;gt;UserName&amp;lt;/key&amp;gt;&lt;br /&gt;    &amp;lt;string&amp;gt;mysql&amp;lt;/string&amp;gt;&lt;br /&gt;    &amp;lt;key&amp;gt;WorkingDirectory&amp;lt;/key&amp;gt;&lt;br /&gt;    &amp;lt;string&amp;gt;/usr/local/mysql&amp;lt;/string&amp;gt;&lt;br /&gt;&amp;lt;/dict&amp;gt;&lt;br /&gt;&amp;lt;/plist&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;br /&gt;&lt;br /&gt;(7) start mysql server and restart apache server&lt;br /&gt;&lt;code&gt;&lt;br /&gt;sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysqld.plist&lt;br /&gt;sudo apachectl restart &lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;and if you want to manually stop the mysql server&lt;br /&gt;&lt;code&gt;&lt;br /&gt;sudo launchctl unload -w /Library/LaunchDaemons/com.mysql.mysqld.plist&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(8) create path in ~/.bash_login&lt;br /&gt;&lt;br /&gt;&lt;code&gt;vi ~/.bash_login&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;and put this&lt;br /&gt;&lt;code&gt;&lt;br /&gt;export PATH="/usr/local/mysql/bin:$PATH"&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;run this&lt;br /&gt;&lt;code&gt;&lt;br /&gt;. ~/.bash_login&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(9) create root password with mypassword&lt;br /&gt;&lt;code&gt;mysqladmin -u root password mypassword&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(10) create databse in mysql&lt;br /&gt;&lt;code&gt;&lt;br /&gt;mysql -u root -p&lt;br /&gt;&gt; CREATE DATABASE database_name DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;&lt;br /&gt;&gt; GRANT ALL PRIVILEGES ON database_name.* TO username@localhost IDENTIFIED BY 'password';&lt;br /&gt;&gt; FLUSH PRIVILEGES;&lt;br /&gt;&gt; QUIT&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-8866086788433211317?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/8866086788433211317/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=8866086788433211317' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/8866086788433211317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/8866086788433211317'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2008/11/install-mysql-in-powerpc-mac-mini-and.html' title='Install mysql in PowerPC Mac Mini and make php-mysql works'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-7481009493484806194</id><published>2008-11-05T21:03:00.023+08:00</published><updated>2008-11-10T21:06:45.943+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Virtual PC 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>[How-to] Install Ubuntu 8.1 in Virtual PC2007</title><content type='html'>Install Ubuntu in Virtual PC 2007 may have screen display problem (similar to Fedora)  and fail during installation.&lt;br /&gt;&lt;br /&gt;Here are the steps to successfully install Ubuntu in VPC2007 and this is the easiest method (as there are many tricks to do it in the past) that I discovered.&lt;br /&gt;&lt;br /&gt;(1) Setup the new Virtual Machine in VPC 2007 and mount the iso image (ubuntu-8-1.10-desktop-i386.iso).&lt;br /&gt;&lt;br /&gt;Please check the size and MD5 Sum to ensure the iso image is successfully downloaded.&lt;br /&gt;&lt;br /&gt;MD5 (ubuntu-8-1.10-desktop-i386.iso) = 24ea1163ea6c9f5dae77de8c49ee7c03&lt;br /&gt;ubuntu-8.10-desktop-i386.iso           699M&lt;br /&gt;  &lt;br /&gt;(2) Inside the Ubuntu Install Screen, first Press "F4" and Select "Safe Graphics mode"&lt;br /&gt;&lt;br /&gt;(3) Then press down arrow and highlight the menu "Install Ubuntu".  &lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;(highlight only and don't press Enter)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;(4) Press "F6" to bring up the "Other Options"&lt;br /&gt;  Then type "&lt;span style="font-weight: bold;font-size:180%;"&gt;vesa vga=771&lt;/span&gt;" at the end of the option line&lt;br /&gt;  Then Press "Enter", the installation will start instantly.&lt;br /&gt;&lt;br /&gt;Note: If you want other resolution, you can try say vga=791 instead of vga=771&lt;br /&gt;&lt;br /&gt;I did not try all these, some of them might not work.  The codes are listed out for reference only.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;vga=769 means 600x480 8 bits color&lt;br /&gt;vga=785 means 600x480 16 bits color&lt;br /&gt;vga=786 means 600x480 24 bits color&lt;br /&gt;vga=771 means 800x600 8 bits color&lt;br /&gt;vga=788 means 800x600 16 bits color&lt;br /&gt;vga=789 means 800x600 24 bits color&lt;br /&gt;vga=773 means 1024x768 8 bits color&lt;br /&gt;vga=791 means 1024x768 16 bits color&lt;br /&gt;vga=792 means 1024x768 24 bits color&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(5) After installation, it will prompt to restart.  But the restart might not work and you have to manually reset the VM in VPC 2007 as in step (6) below&lt;br /&gt;&lt;br /&gt;(6) Then release the mounted iso image and in VPC 2007 menu to reset the VM in VPC 2007, that is, VPC menu choose -&gt; Action -&gt; Reset&lt;br /&gt;&lt;br /&gt;(7) Enjoy using Ubuntu in VPC 2007, and you can start installing other packages / sdks for development following my other guides in this blog&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3LRNVfBfliQ/SRGcbnQfx-I/AAAAAAAAAls/FmV1eMvLTgw/s1600-h/vpcubunu.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 241px;" src="http://1.bp.blogspot.com/_3LRNVfBfliQ/SRGcbnQfx-I/AAAAAAAAAls/FmV1eMvLTgw/s400/vpcubunu.png" alt="" id="BLOGGER_PHOTO_ID_5265161437581395938" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(8) To solve the sound problem, start the Terminal in Ubuntu and type&lt;br /&gt;&lt;br /&gt;sudoedit /etc/rc.local&lt;br /&gt;&lt;br /&gt;At the end of the # lines, but before “exit 0″, type on a new line (again without quotes) “modprobe snd-sb16″&lt;br /&gt;Ctrl + O to write out, enter to accept the name, Ctrl + X to close.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3LRNVfBfliQ/SRgxvm2OlzI/AAAAAAAAAl0/B9g1irQLBLw/s1600-h/vpcubunu2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 270px;" src="http://3.bp.blogspot.com/_3LRNVfBfliQ/SRgxvm2OlzI/AAAAAAAAAl0/B9g1irQLBLw/s400/vpcubunu2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5267014458161403698" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-7481009493484806194?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/7481009493484806194/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=7481009493484806194' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/7481009493484806194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/7481009493484806194'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2008/11/how-to-install-ubuntu-81-in-virtual.html' title='[How-to] Install Ubuntu 8.1 in Virtual PC2007'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_3LRNVfBfliQ/SRGcbnQfx-I/AAAAAAAAAls/FmV1eMvLTgw/s72-c/vpcubunu.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-8683235947182621294</id><published>2008-11-03T16:07:00.072+08:00</published><updated>2011-08-15T18:27:16.473+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android SDK'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone SDK'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Personal Installation Guide for Ubuntu 8.10 in VMWare for iPhone / Android SDK development</title><content type='html'>&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;(1) Download ubuntu-8-1.10-desktop-i386.iso&lt;/span&gt;  (32 bit Intel i386 Desktop)&lt;br /&gt;&lt;a href="http://www.ubuntu.com/getubuntu/download%20"&gt;http://www.ubuntu.com/getubuntu/download&lt;br /&gt;&lt;/a&gt;MD5 (ubuntu-8-1.10-desktop-i386.iso) = 24ea1163ea6c9f5dae77de8c49ee7c03&lt;br /&gt;&lt;br /&gt;Installation is very easy just mount the iso image in the VMWare, and everything goes default.  then install VMWare tools.  If network does not work try command "sudo dhclient"&lt;br /&gt;&lt;br /&gt;If you want to install Ubuntu 8.10 in Virtual PC 2007&lt;br /&gt;see this guide&lt;br /&gt;&lt;a href="http://tungchingkai.blogspot.com/2008/11/how-to-install-ubuntu-81-in-virtual.html"&gt;http://tungchingkai.blogspot.com/2008/11/how-to-install-ubuntu-81-in-virtual.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;(2) VMWare Settings :&lt;/span&gt; Harddisk Size 8G, Ram 512MB&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;(3) Purpose : sdk development on iPhone / Android&lt;/span&gt;&lt;br /&gt;Allows samba mount, ssh / scp access&lt;br /&gt;apache2 server with php5 support for sqlite3 db&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;(4) Add root access for useraccount without password&lt;/span&gt; (this does not work, I don't know why, so you still need password)&lt;br /&gt;Ubuntu default root disabled, so you can disable password input by editing etc/sudoers&lt;br /&gt;&lt;code&gt;sudo visudo&lt;/code&gt;&lt;br /&gt;Add this line (e.g. sdkuser is the default user account)&lt;br /&gt;&lt;code&gt;sdkuser ALL=(ALL) NOPASSWD:ALL&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;(5) install build essential packages&lt;/span&gt; so that you can compile llvm-gcc for iPhone toolchain SDK2.0&lt;br /&gt;&lt;code&gt;&lt;br /&gt;sudo apt-get update&lt;br /&gt;sudo apt-get install build-essential bison flex&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;(6) install server packages&lt;/span&gt; so that you can have local webserver and ssh and samba server&lt;br /&gt;&lt;code&gt;&lt;br /&gt;sudo apt-get install apache2 php5 libapache2-mod-php5 php5-cli php5-common php5-cgi php5-sqlite openssh-server samba&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Install php5-sqlite3&lt;/span&gt;&lt;br /&gt;sudo apt-get install php-db php-pear&lt;br /&gt;wget http://us.archive.ubuntu.com/ubuntu/pool/universe/p/php-sqlite3/php-sqlite3_0.5-1_i386.deb&lt;br /&gt;sudo dpkg -i php-sqlite3_0.5-1_i386.deb&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;(7) Create Project folder for smb mount (guest login ok)&lt;/span&gt; so that you can use windows / smb mount the virtual machine folder&lt;br /&gt;&lt;br /&gt;(assume sdkuser is the default user account)&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;mkdir -p /home/sdkuser/Projects&lt;br /&gt;chmod 777 /home/sdkuser/Projects&lt;br /&gt;&lt;br /&gt;sudoedit /etc/samba/smb.conf&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;and add the followings at the end&lt;br /&gt;&lt;br /&gt;&lt;dl class="codebox"&gt;&lt;dt&gt;smb.conf: &lt;a href="#" onclick="selectCode(this); return false;"&gt;Select all&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;code&gt;&lt;br /&gt;[Projects]&lt;br /&gt;   comment = Projects Folder Share&lt;br /&gt;   writable = yes&lt;br /&gt;   locking = no&lt;br /&gt;   path = /home/sdkuser/Projects&lt;br /&gt;   public = yes&lt;br /&gt;   browseable = yes&lt;br /&gt;   guest ok = yes&lt;br /&gt;   create mask = 0666&lt;br /&gt;   directory mask = 0777&lt;br /&gt;&lt;/code&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;br /&gt;&lt;br /&gt;Note : you have to restart samba server to make the new configuration effective&lt;br /&gt;&lt;code&gt; sudo /etc/init.d/samba restart&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:red;"&gt;Update for Ubuntu 9 /10&lt;/span&gt;&lt;br /&gt;You have to edit &lt;br /&gt;&lt;code&gt;sudo vi /etc/apt/sources.list&lt;/code&gt;&lt;br /&gt;and uncomment these in order to install sun-java6-jdk&lt;br /&gt;&lt;code&gt;deb http://archive.canonical.com/ubuntu maverick partner&lt;br /&gt;deb-src http://archive.canonical.com/ubuntu maverick partner&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;(8) install jdk6&lt;/span&gt; so that you can compile Andriod app&lt;br /&gt;&lt;code&gt;&lt;br /&gt;sudo apt-get update&lt;br /&gt;sudo apt-get install sun-java6-jdk&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;(9) Download Android SDK&lt;/span&gt; http://dl.google.com/android/android-sdk-linux_x86-1.0_r1.zip from &lt;a href="http://code.google.com/android/download_list.html"&gt;http://code.google.com/android/download_list.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;install in ~/Android/&lt;br /&gt;&lt;code&gt;&lt;br /&gt;mkdir -p ~/Android/&lt;br /&gt;sudo unzip ~/Desktop/android-sdk-linux_x86-1.0_r1.zip -d ~/Android/&lt;br /&gt;sudo chown -R sdkuser:sdkuser ~/Andriod&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:red;"&gt;Update for android-sdk 2.0 or above&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;mkdir -p ~/Android/&lt;br /&gt;tar xzvf ~/Downloads/android-sdk_r12-linux_x86.tgz&lt;br /&gt;~/Android/tools/android update sdk&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;create sd card &amp;amp; test emulator&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;~/Android/android-sdk-linux_x86-1.0_r1/tools/mksdcard -l SD500M 500M ~/Android/sd500m.img&lt;br /&gt;&lt;br /&gt;~/Android/android-sdk-linux_x86-1.0_r1/tools/emulator -datadir ~/Android -scale 0.7 -sdcard ~/Android/sd500m.img &amp;amp;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;(10) Download and Install Eclipse 3.4.1&lt;/span&gt; (you can't use the debian package eclipse which is 3.2 only)&lt;br /&gt;from &lt;a href="http://www.eclipse.org/downloads/"&gt;http://www.eclipse.org/downloads/&lt;/a&gt;&lt;br /&gt;http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/ganymede/SR1/eclipse-java-ganymede-SR1-linux-gtk.tar.gz&lt;br /&gt;&lt;br /&gt;install in /usr/lib&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd /usr/lib; sudo tar -xzvf ~/Desktop/eclipse-java-ganymede-SR1-linux-gtk.tar.gz&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:red;"&gt;Update for eclipse-java-helios&lt;/span&gt;&lt;br /&gt;http://www.eclipse.org/downloads/packages/eclipse-ide-java-developers/heliossr2&lt;br /&gt;&lt;code&gt;&lt;br /&gt;mkdir -p ~/Android/&lt;br /&gt;cd /usr/lib; sudo tar -xzvf ~/Downloads/eclipse-java-helios-SR2-linux-gtk.tar.gz&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Add main menu &amp;amp; icon for eclipse in GNOME&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;sudoedit /usr/share/applications/eclipse.desktop&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;and save this&lt;br /&gt;&lt;br /&gt;&lt;dl class="codebox"&gt;&lt;dt&gt;eclipse.desktop: &lt;a href="http://www.blogger.com/post-edit.g?blogID=1136927038369577335&amp;amp;postID=8683235947182621294#" onclick="selectCode(this); return false;"&gt;Select all&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;code&gt;&lt;br /&gt;[Desktop Entry]&lt;br /&gt;Name=Eclipse&lt;br /&gt;Comment=Develop applications in a variety of different programming languages&lt;br /&gt;Exec=/usr/lib/eclipse/eclipse&lt;br /&gt;Icon=eclipse48.png&lt;br /&gt;Terminal=false&lt;br /&gt;Type=Application&lt;br /&gt;Categories=Development;&lt;br /&gt;StartupNotify=true&lt;br /&gt;&lt;/code&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;br /&gt;&lt;br /&gt;There is no eclipse icon in the download file eclipse-java-ganymede-SR1-linux-gtk.tar.gz.  You can get it from eclipse 3.2.2 package&lt;br /&gt;and install it manually&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;download the eclipse 3.2.2 package&lt;/span&gt;&lt;br /&gt;&lt;code&gt;wget http://us.archive.ubuntu.com/ubuntu/pool/universe/e/eclipse/eclipse_3.2.2-5ubuntu2_i386.deb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;extract the package and copy the icons to /usr/share/pixmaps/&lt;/span&gt;&lt;br /&gt;&lt;code&gt;dpkg -x eclipse_3.2.2-5ubuntu2_i386.deb tmp&lt;br /&gt;sudo cp tmp/usr/share/pixmaps/* /usr/share/pixmaps/&lt;br /&gt;rm -fr tmp&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Install Android sdk plug-in for Eclipse&lt;/span&gt;&lt;br /&gt;(based on http://code.google.com/android/intro/installing.html#installingplugin)&lt;br /&gt;add this site and install in Eclipse&lt;br /&gt;http://dl-ssl.google.com/android/eclipse/&lt;br /&gt;&lt;br /&gt;Edit Eclipse's preference for Andriod (Window -&gt; Preferences -&gt; Android)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;SDK location&lt;/span&gt;&lt;br /&gt;&lt;code&gt;/home/sdkuser/Android/android-sdk-linux_x86-1.0_r1/&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;emulator options&lt;/span&gt;&lt;br /&gt;&lt;code&gt;-scale 0.7 -sdcard /home/sdkuser/Android/sd500m.img&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Test HelloActivity in Eclipse&lt;/span&gt;&lt;br /&gt;(a) Create a New Android Project in Eclipse (File -&gt; New -&gt; Project... -&gt; Android -&gt; Android Project)&lt;br /&gt;(b) Choose Create project from existing source and browse to ~/Android/android-sdk-linux_x86-1.0_r1/samples/HelloActivity&lt;br /&gt;(c) Run HelloActivity as Android Application&lt;br /&gt;(d) Then the emulator will start Hello, World! will be on the emulator screen&lt;br /&gt;&lt;br /&gt;Note: Please don't set the workspace of Eclipse to the sample project folder&lt;br /&gt;~/Android/android-sdk-linux_x86-1.0_r1/samples/&lt;br /&gt;or else you will get error when importing project from existing source&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:red;"&gt;Update for iphone toolchain4 for SDK4.x+&lt;/span&gt;&lt;br /&gt;&lt;code&gt;http://github.com/javacom/toolchain4&lt;/code&gt;&lt;br /&gt;You need to install clang 2.7 or above in Ubuntu 8.10&lt;br /&gt;&lt;code&gt;&lt;br /&gt;wget http://archive.ubuntu.com/ubuntu/pool/universe/c/clang/clang_2.7-0ubuntu1_i386.deb&lt;br /&gt;wget http://mirrors.us.kernel.org/ubuntu/pool/main/l/llvm-2.7/libllvm2.7_2.7-5ubuntu2_i386.deb&lt;br /&gt;wget http://mirrors.us.kernel.org/ubuntu/pool/main/libf/libffi/libffi5_3.0.9-2ubuntu2_i386.deb&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;(11) Install iPhone llvm-gcc and toolchain SDK2.0&lt;/span&gt;&lt;br /&gt;Refer to this article and download the file UpgradeToolChain2.tgz and build the llvm-gcc for iPhone&lt;br /&gt;&lt;a href="http://iphonesdkdev.blogspot.com/2008/10/how-to-install-llvm-gcc-for-iphone-sdk.html"&gt;http://iphonesdkdev.blogspot.com/2008/10/how-to-install-llvm-gcc-for-iphone-sdk.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;Install ldid in Linux, so that you can fake codesign it&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd ~/Projects&lt;br /&gt;wget http://svn.telesphoreo.org/trunk/data/ldid/ldid-1.0.476.tgz&lt;br /&gt;tar -zxf ldid-1.0.476.tgz&lt;br /&gt;cd ldid-1.0.476&lt;br /&gt;g++ -I . -o util/ldid{,.cpp} -x c util/{lookup2,sha1}.c&lt;br /&gt;sudo cp -a util/ldid /usr/bin&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;or here&lt;br /&gt;wget http://www.telesphoreo.org/export/477/trunk/data/ldid/ldid-1.0.476.tgz&lt;br /&gt;&lt;br /&gt;updated ldid source&lt;br /&gt;wget http://svn.telesphoreo.org/trunk/data/ldid/ldid-1.0.610.tgz&lt;br /&gt;&lt;br /&gt;Updates : If you compiled it in cgywin, you need to add (uint32_t) in the source code ldid.cpp that has ambiguous overload call error message like this&lt;br /&gt;&lt;code&gt;&lt;br /&gt;error: call of overloaded 'Swap(int)' is ambiguous&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you need to codesign the iPhone binary in Linux add this to your build script&lt;br /&gt;&lt;code&gt;&lt;br /&gt;export CODESIGN_ALLOCATE=/usr/toolchain2/pre/bin/arm-apple-darwin9-codesign_allocate; ldid -S $(PROJECTNAME)&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;(12) test apache2 and php&lt;/span&gt; so that you can see the php info page in the local webserver&lt;br /&gt;&lt;br /&gt;In Firefox browser of Ubuntu enter this address&lt;br /&gt;&lt;code&gt;http://localhost/&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;enable php5 (sometimes you need this)&lt;br /&gt;&lt;code&gt;a2enmod php5&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;restart apache server&lt;br /&gt;&lt;code&gt;sudo /etc/init.d/apache2 restart&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;create this test.php script in /var/www&lt;br /&gt;&lt;code&gt;&lt;br /&gt;sudo chown -R sdkuser:sdkuser /var/www&lt;br /&gt;echo "&amp;lt;?php phpinfo(); ?&amp;gt;" &amp;gt; /var/www/test.php&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;and see the php info in Firefox browser of Ubuntu&lt;br /&gt;&lt;code&gt;http://localhost/test.php&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;(13) create sqlite3 db&lt;/span&gt;&lt;br /&gt;&lt;dl class="codebox"&gt;&lt;dt&gt;sqlite3 test.db: &lt;a href="http://www.blogger.com/post-edit.g?blogID=1136927038369577335&amp;amp;postID=8683235947182621294#" onclick="selectCode(this); return false;"&gt;Select all&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;sudo chown -R sdkuser:sdkuser /var/www&lt;br /&gt;cd /var/www&lt;br /&gt;sqlite3 test.db&lt;br /&gt;sqlite&amp;gt; create table test (id integer primary key, value text);&lt;br /&gt;sqlite&amp;gt; insert into test (value) values('eenie');&lt;br /&gt;sqlite&amp;gt;&lt;br /&gt;sqlite&amp;gt; insert into test (value) values('meenie');&lt;br /&gt;sqlite&amp;gt; insert into test (value) values('miny');&lt;br /&gt;sqlite&amp;gt; insert into test (value) values('mo');&lt;br /&gt;sqlite&amp;gt; select * from test;&lt;br /&gt;sqlite&amp;gt;&lt;br /&gt;sqlite&amp;gt; .exit&lt;br /&gt;&lt;/code&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;br /&gt;&lt;br /&gt;and test sqlite3 &amp;amp; php5-sqlite3 by using testdb.php script to test the access to sqlite3 db on webserver&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;(14) testdb.php&lt;/span&gt;&lt;br /&gt;&lt;dl class="codebox"&gt;&lt;dt&gt;testdb.php: &lt;a href="http://www.blogger.com/post-edit.g?blogID=1136927038369577335&amp;amp;postID=8683235947182621294#" onclick="selectCode(this); return false;"&gt;Select all&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;// Version 0.01&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&amp;lt;meta http-equiv="Content-Type" content="text-html; charset=UTF-8" /&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;iPhone Database&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt; $ip_dbpath[] = '/var/www/test.db';&lt;br /&gt;&lt;br /&gt;//   $ip_dbpath[] = '/var/www/sms.db';&lt;br /&gt;//   $ip_dbpath[] = '/var/www/call_history.db';&lt;br /&gt;//   $ip_dbpath[] = '/var/www/notes.db';&lt;br /&gt;//   $ip_dbpath[] = '/var/www/AddressBook.sqlitedb';&lt;br /&gt;//   $ip_dbpath[] = '/var/www/Calendar.sqlitedb';&lt;br /&gt;&lt;br /&gt;// db location in iPhone /private/var/mobile/Library/SMS/sms.db&lt;br /&gt;// db location in iPhone /private/var/mobile/Library/CallHistory/call_history.db&lt;br /&gt;// db location in iPhone /private/var/mobile/Library/Notes/notes.db&lt;br /&gt;// db location in iPhone /private/var/mobile/Library/AddressBook/AddressBook.sqlitedb&lt;br /&gt;// db location in iPhone /private/var/mobile/Library/Calendar/Calendar.sqlitedb&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; $ip_dbdesc[] = 'test';&lt;br /&gt;&lt;br /&gt;//   $ip_dbdesc[] = 'SMS';&lt;br /&gt;//   $ip_dbdesc[] = 'Call History';&lt;br /&gt;//   $ip_dbdesc[] = 'Notes';&lt;br /&gt;//   $ip_dbdesc[] = 'Address Book';&lt;br /&gt;//   $ip_dbdesc[] = 'Calendar';&lt;br /&gt;&lt;br /&gt;$ip_query[] = 'SELECT * from test order by 1';&lt;br /&gt;// $ip_query[] = 'SELECT  date, address, text FROM message order by 1 desc, 2;';&lt;br /&gt;// $ip_query[] = 'SELECT  date, address, duration FROM call order by 1 desc;';&lt;br /&gt;// $ip_query[] = 'SELECT  creation_date, data, title FROM Note inner join note_bodies on Note.ROWID = note_bodies.note_id order by 1;';&lt;br /&gt;// $ip_query[] = 'SELECT First, Last, Middle, CreationDate, ModificationDate FROM ABPerson;';&lt;br /&gt;// $ip_query[] = 'SELECT start_date, end_date, summary, location, description FROM Event order by 1, 2;';&lt;br /&gt;&lt;br /&gt;// $dbcount = sizeof($ip_dbpath);&lt;br /&gt;// if you uncomment the above db &amp;amp; query and add copy the iPhone db , you can list out the content of sqlitedb of iPhone&lt;br /&gt;$dbcount = 1;&lt;br /&gt;&lt;br /&gt;for ($dbnum=0;$dbnum&amp;lt;$dbcount;$dbnum++){&lt;br /&gt;&lt;br /&gt; try {&lt;br /&gt;   $dbpath = $ip_dbpath[ $dbnum ];&lt;br /&gt;   $dbh = new PDO('sqlite:'.$dbpath);&lt;br /&gt;   $query = $ip_query[ $dbnum ];&lt;br /&gt;   $stmt = $dbh-&amp;gt;prepare($query);&lt;br /&gt;   $stmt-&amp;gt;execute();&lt;br /&gt; }&lt;br /&gt; catch (PDOException $e) {&lt;br /&gt;   die("Could not open database" . $e-&amp;gt;getMessage());&lt;br /&gt; }&lt;br /&gt; $colcount = $stmt-&amp;gt;columnCount();&lt;br /&gt; echo "&amp;lt;h1&amp;gt;". $ip_dbdesc[ $dbnum ] . "&amp;lt;/h1&amp;gt;";&lt;br /&gt; echo "&amp;lt;table cellpadding=10 border=1&amp;gt;";&lt;br /&gt;&lt;br /&gt;   for ($i=0;$i&amp;lt;$colcount;$i++) {&lt;br /&gt;      $meta = $stmt-&amp;gt;getColumnMeta($i);&lt;br /&gt;      echo "&amp;lt;td&amp;gt;".$meta["name"]."&amp;lt;/td&amp;gt;";&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   while ($row = $stmt-&amp;gt;fetch()) {&lt;br /&gt;       echo "&amp;lt;tr&amp;gt;";&lt;br /&gt;       for ($i=0;$i&amp;lt;$colcount;$i++) {&lt;br /&gt;         $meta = $stmt-&amp;gt;getColumnMeta($i);&lt;br /&gt;         if ($meta["native_type"] == "null") {&lt;br /&gt;           echo "&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;";&lt;br /&gt;         }&lt;br /&gt;         elseif (preg_match("/date$/i", $meta["name"])) {&lt;br /&gt;           echo "&amp;lt;td&amp;gt;". date("j M Y D g.i a", $row[$i])."&amp;lt;/td&amp;gt;";&lt;br /&gt;         }&lt;br /&gt;         elseif (preg_match("/[call|sms]$/i", $meta["name"]) &amp;amp;&amp;amp; $meta["name"] == "address" &amp;amp;&amp;amp; strlen(rtrim($row[ $i])) == 8) {&lt;br /&gt;          echo "&amp;lt;td&amp;gt;&amp;lt;A href='Tel:".$row[$i]."'&amp;gt;".$row[$i]."&amp;lt;/A&amp;gt;&amp;lt;/td&amp;gt;";&lt;br /&gt;         }&lt;br /&gt;         else {&lt;br /&gt;           echo "&amp;lt;td&amp;gt;".$row[ $i]."&amp;lt;/td&amp;gt;";&lt;br /&gt;         }&lt;br /&gt;       }&lt;br /&gt;       echo "&amp;lt;/tr&amp;gt;";&lt;br /&gt;   }&lt;br /&gt;   echo "&amp;lt;/table&amp;gt;";&lt;br /&gt;}&lt;br /&gt;?&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;(15) Enjoy building app&lt;/span&gt;&lt;br /&gt;Why to install apache2, php5 and php5-sqlite3 in Ubuntu ?&lt;br /&gt;&lt;br /&gt;Because both iPhone and Andriod SDK use sqlite3 as database engine.&lt;br /&gt;Webserver can be served for many purposes when testing including http get/post access and cydia repository as well.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3LRNVfBfliQ/SRAFBWISjWI/AAAAAAAAAlk/u5I-YoE76iE/s1600-h/ubuntu_android.png"&gt;&lt;img style="cursor: pointer; width: 232px; height: 400px;" src="http://2.bp.blogspot.com/_3LRNVfBfliQ/SRAFBWISjWI/AAAAAAAAAlk/u5I-YoE76iE/s400/ubuntu_android.png" alt="" id="BLOGGER_PHOTO_ID_5264713485074468194" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;Additional Notes&lt;/span&gt;&lt;br /&gt;If you need to install flash plugin in firefox &lt;br /&gt;&lt;code&gt;sudo apt-get install flashplugin-nonfree&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you need to install java plugin in firefox &lt;br /&gt;&lt;code&gt;sudo apt-get install sun-java6-plugin&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you need to install xpdf&lt;br /&gt;&lt;code&gt;sudo apt-get install xpdf-reader&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you need to install jedit&lt;br /&gt;&lt;code&gt;sudo apt-get install jedit&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you want to install mysql, it will promot you to enter the root password of mysql during installation&lt;br /&gt;&lt;code&gt;sudo apt-get install mysql-server php5-mysql&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;use this to login mysql&lt;br /&gt;&lt;code&gt;mysql -u root -h localhost -p&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;To change sql root password from oldpassword to newpassword&lt;br /&gt;&lt;code&gt;mysqladmin -u root -p&lt;i&gt;oldpassword&lt;/i&gt; password &lt;i&gt;newpassword&lt;/i&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Create a new database (newsdb) and new user (newsuser) with password (newspassword)&lt;br /&gt;&lt;code&gt;&lt;br /&gt;mysql -u root -p&lt;br /&gt;&gt; CREATE DATABASE newsdb DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;&lt;br /&gt;&gt; GRANT ALL PRIVILEGES ON newsdb.* TO newsuser@localhost IDENTIFIED BY 'newspassword';&lt;br /&gt;&gt; FLUSH PRIVILEGES;&lt;br /&gt;&gt; QUIT&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-8683235947182621294?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/8683235947182621294/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=8683235947182621294' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/8683235947182621294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/8683235947182621294'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2008/11/personal-installation-guide-for-ubuntu.html' title='Personal Installation Guide for Ubuntu 8.10 in VMWare for iPhone / Android SDK development'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_3LRNVfBfliQ/SRAFBWISjWI/AAAAAAAAAlk/u5I-YoE76iE/s72-c/ubuntu_android.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-4555353565724725230</id><published>2008-10-07T16:53:00.005+08:00</published><updated>2009-10-06T14:22:56.872+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HK Radio'/><title type='text'>HK On-line Radio Stations</title><content type='html'>Metro Plus 新城AM104.4 (AM 1044) &lt;br /&gt;http://s1.104mfonline.com.hk/Encoder3&lt;br /&gt;mms://s1.104mfonline.com.hk/Encoder3?MSWMExt=.asf&lt;br /&gt;&lt;br /&gt;Metro Info 新城知訊台 (FM99.7) &lt;br /&gt;http://s1.104mfonline.com.hk/Encoder4&lt;br /&gt;mms://s1.104mfonline.com.hk/Encoder4?MSWMExt=.asf&lt;br /&gt;&lt;br /&gt;Metro Finance 新城財經台 (FM104) &lt;br /&gt;http://s1.104mfonline.com.hk/Encoder5&lt;br /&gt;mms://s1.104mfonline.com.hk/Encoder5?MSWMExt=.asf&lt;br /&gt;&lt;br /&gt;商業一台 雷霆881&lt;br /&gt;mms://mslive05.881903.com/cr1&lt;br /&gt;&lt;br /&gt;商業二台 叱吒903&lt;br /&gt;mms://mslive05.881903.com/cr2&lt;br /&gt;&lt;br /&gt;香港電台第一台&lt;br /&gt;http://www.rthk.org.hk/live1.asx&lt;br /&gt;mms://202.177.192.111/radio1&lt;br /&gt;&lt;br /&gt;香港電台第二台&lt;br /&gt;http://www.rthk.org.hk/live2.asx&lt;br /&gt;mms://202.177.192.111/radio2&lt;br /&gt;&lt;br /&gt;香港電台第三台&lt;br /&gt;http://www.rthk.org.hk/live3.asx&lt;br /&gt;mms://202.177.192.111/radio3&lt;br /&gt;&lt;br /&gt;香港電台第四台&lt;br /&gt;http://www.rthk.org.hk/live4.asx&lt;br /&gt;mms://202.177.192.111/radio4&lt;br /&gt;&lt;br /&gt;香港電台第五台&lt;br /&gt;http://www.rthk.org.hk/live5.asx&lt;br /&gt;mms://202.177.192.111/radio5&lt;br /&gt;&lt;br /&gt;香港電台普通話台&lt;br /&gt;http://www.rthk.org.hk/live6.asx&lt;br /&gt;mms://202.177.192.111/ptc&lt;br /&gt;&lt;br /&gt;澳門電台網上直播&lt;br /&gt;mms://202.175.80.10/LiveAudio&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-4555353565724725230?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/4555353565724725230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=4555353565724725230' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/4555353565724725230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/4555353565724725230'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2008/10/hk-on-line-radio-stations.html' title='HK On-line Radio Stations'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-7934538684931567022</id><published>2008-09-29T16:37:00.005+08:00</published><updated>2008-11-03T16:44:37.875+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android SDK'/><category scheme='http://www.blogger.com/atom/ns#' term='emulator'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>[How-To] Android emulator</title><content type='html'>&lt;span class="Apple-style-span" style="color: rgb(153, 0, 0);"&gt;(1) How to install emulator only (that is no JDK, Eclipse IDE or compiler)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;(a) Download Android SDK from&lt;br /&gt;&lt;a href="http://code.google.com/android/download_list.html"&gt;http://code.google.com/android/download_list.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The current version is&lt;br /&gt;android-sdk-windows-1.0_r1.zip (windows)&lt;br /&gt;android-sdk-linux_x86-1.0_r1.zip (linux)&lt;br /&gt;&lt;br /&gt;unzip it and put the folder (android-sdk-windows-1.0_r1) to say under&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 153, 0);"&gt;Windows OS&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;D:\Android\&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 204, 204);"&gt;Linux / Mac OS X&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;~/Android/&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(b) start the emulator in command windows (windows-R -&gt; cmd) / (Linux/Mac OS X -&gt; Terminal) for the first time to setup data directory&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 153, 0);"&gt;Windows OS&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;D:&lt;br /&gt;cd D:\Android\android-sdk-windows-1.0_r1\tools&lt;br /&gt;emulator -datadir D:\Android&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 204, 204);"&gt;Linux / Mac OS X&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd ~/Android/android-sdk-linux_x86-1.0_r1/tools&lt;br /&gt;./emulator -datadir ~/Android&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(153, 0, 0);"&gt;(2) How to create sdcard for emulator (e.g. 500M)&lt;/span&gt;&lt;br /&gt;e.g. To create a sdcard image of 500M with filename sd500m.img&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 153, 0);"&gt;Windows OS&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;D:&lt;br /&gt;cd D:\Android\android-sdk-windows-1.0_r1\tools&lt;br /&gt;mksdcard -l SD500M 500M D:\Android\sd500m.img&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 204, 204);"&gt;Linux / Mac OS X&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd ~/Android/android-sdk-linux_x86-1.0_r1/tools&lt;br /&gt;./mksdcard -l SD500M 500M ~/Android/sd500m.img&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;when starting the emulator and adding -sdcard option&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 153, 0);"&gt;Windows OS&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;D:&lt;br /&gt;cd D:\Android\android-sdk-windows-1.0_r1\tools&lt;br /&gt;emulator -sdcard D:\Android\sd500m.img  [.... other options]&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 204, 204);"&gt;Linux / Mac OS X&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd ~/Android/android-sdk-linux_x86-1.0_r1/tools&lt;br /&gt;./emulator -sdcard ~/Android/sd500m.img  [.... other options]&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(153, 0, 0);"&gt;(3) How to scale the emulator size when the emulator screen is out of view of your computer&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;when starting the emulator and adding -scale option (range from 0.1 to 3)&lt;br /&gt;&lt;br /&gt;e.g. start the emulator with a scale of 0.5&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 153, 0);"&gt;Windows OS&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;D:&lt;br /&gt;cd D:\Android\android-sdk-windows-1.0_r1\tools&lt;br /&gt;emulator -scale 0.5 [.... other options]&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 204, 204);"&gt;Linux / Mac OS X&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd ~/Android/android-sdk-linux_x86-1.0_r1/tools&lt;br /&gt;./emulator -scale 0.5 [.... other options]&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(153, 0, 0);"&gt;(4) How to copy Musics and Pictures to the sdcard image for Android emulator&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The sdcard image is a FAT32 image.  You just double click the file in Mac OSX to mount it.&lt;br /&gt;Inside it, create folders called Musics and Pictures and put your mp3 files and pictures as per screen dump below&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(153, 0, 0);"&gt;(5) How to copy files to sdcard while the emulator is running or when you cannot mount it.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can mount the sdcard image while the emulator is running, but sometimes you want to copy files to the sdcard in command line mode run this&lt;br /&gt;&lt;br /&gt;Make Sure that the emulator is running&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 153, 0);"&gt;Windows OS&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;D:&lt;br /&gt;cd D:\Android\android-sdk-windows-1.0_r1\tools&lt;br /&gt;adb push mynotebookphoto.png sdcard/Pictures/&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 204, 204);"&gt;Linux / Mac OS X&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd ~/Android/android-sdk-linux_x86-1.0_r1/tools&lt;br /&gt;./adb push mynotebookphoto.png sdcard/Pictures/&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;However, the emulator will need to restart so that it can acknowledge the new file.  This is currently the limitation of the emulator&lt;br /&gt;&lt;br /&gt;when copying back from emulator sdcard to local file&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 153, 0);"&gt;Windows OS&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;D:&lt;br /&gt;cd D:\Android\android-sdk-windows-1.0_r1\tools&lt;br /&gt;adb pull sdcard/Pictures/image01.jpg images01_fromsdcard.jpg&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 204, 204);"&gt;Linux / Mac OS X&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd ~/Android/android-sdk-linux_x86-1.0_r1/tools&lt;br /&gt;./adb pull sdcard/Pictures/image01.jpg images01_fromsdcard.jpg&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(153, 0, 0);"&gt;(6) How to get shell access to emulator&lt;/span&gt;&lt;br /&gt;The emulator must be running, and run this&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 153, 0);"&gt;Windows OS&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;D:&lt;br /&gt;cd D:\Android\android-sdk-windows-1.0_r1\tools&lt;br /&gt;adb shell&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 204, 204);"&gt;Linux / Mac OS X&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd ~/Android/android-sdk-linux_x86-1.0_r1/tools&lt;br /&gt;./adb shell&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(153, 0, 0);"&gt;(7) How to add path of the emulator tools directory to Windows OS, so as no need to change directory to sdk directory&lt;/span&gt;&lt;br /&gt;On Windows, right click on My Computer, and select Properties. Under the Advanced tab, hit the Environment Variables button, and in the dialog that comes up, double-click on Path under System Variables and add this to end of the text&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 153, 0);"&gt;Windows OS&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;D:\Android\android-sdk-windows-1.0_r1\tools;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Please take note that you have to restart the command window for the path to become effective&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(153, 0, 0);"&gt;(8) How to change skin for the emulator&lt;/span&gt;&lt;br /&gt;You can download some iPhone skins for Android emulator here&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.anddev.org/emulator_iphone_skin_-_qvga-hvga_landscape-portrait-t109.html"&gt;http://www.anddev.org/emulator_iphone_skin_-_qvga-hvga_landscape-portrait-t109.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(153, 0, 0);"&gt;(9) How to change wallpaper, add new icons to homescreen and move/delete icons.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;At Home Screen, press Menu&lt;br /&gt;&lt;br /&gt;+ Add -&gt; for adding icons to home screen&lt;br /&gt;Wallpaper -&gt; to change wallpaper&lt;br /&gt;&lt;br /&gt;You can flip the homescreen to left and right and add icons there&lt;br /&gt;&lt;br /&gt;To delete the icon just click and hold the button and a trash will appear above the menu button then you can drag the icon to the trash and delete it&lt;br /&gt;&lt;br /&gt;To move the icon, click and hold the icon and then drag to new position.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.gphone.org.hk/attach/31-android_music-embed.png" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-7934538684931567022?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/7934538684931567022/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=7934538684931567022' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/7934538684931567022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/7934538684931567022'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2008/09/how-to-android-emulator.html' title='[How-To] Android emulator'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-4946280532289669486</id><published>2008-09-27T23:50:00.021+08:00</published><updated>2008-09-29T17:56:39.079+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android SDK'/><category scheme='http://www.blogger.com/atom/ns#' term='eee pc'/><title type='text'>[How-to] Install Android SDK on Asus eeepc Linux</title><content type='html'>Asus eeepc comes with xandros Debian Linux version but does not have development tools.  This guide shows you how to setup the development tools for Android SDK.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;Part (A) You need to add the debian package source and install the compiling tools and JDK from Sun in eee pc Linux&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;(1) Launch Terminal (Ctrl-Alt-T)&lt;br /&gt;&lt;br /&gt;(2) edit the file/etc/apt/sources.list&lt;br /&gt;&lt;code&gt;sudo vi /etc/apt/sources.list&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;and add this line to the end of the file "sources.list"&lt;br /&gt;&lt;code&gt;deb http://http.us.debian.org/debian/ stable main&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(3) Run these commands in Terminal to install building tools&lt;br /&gt;&lt;code&gt;&lt;br /&gt;sudo apt-get update&lt;br /&gt;sudo apt-get upgrade&lt;br /&gt;sudo apt-get install build-essential ant &lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(4) Download JDK from Sun&lt;br /&gt;(Latest Release)&lt;br /&gt;http://java.sun.com/javase/downloads/index.jsp&lt;br /&gt;&lt;br /&gt;The current version of JDK is&lt;br /&gt;Java SE Development Kit 6u7&lt;br /&gt;Download the Linux version and the file without rpm. That is&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;jdk-6u7-linux-i586.bin&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;(5) Run these commands in Terminal to install JDK&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;chmod +x jdk-6u7-linux-i586.bin&lt;br /&gt;./jdk-6u7-linux-i586.bin&lt;br /&gt;&lt;br /&gt;#then follow the install instructions and answer yes and then a directory jdk1.6.0_07 will be created&lt;br /&gt;&lt;br /&gt;sudo mv jdk1.6.0_07 /usr/&lt;br /&gt;cd /usr/bin&lt;br /&gt;sudo ln -sf /usr/jdk1.6.0_07/bin/java&lt;br /&gt;sudo ln -sf /usr/jdk1.6.0_07/bin/javac&lt;br /&gt;sudo ln -sf /usr/jdk1.6.0_07/bin/jar&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;Part (B) Download and Install Android SDK&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;(1) Download the Android SDK&lt;br /&gt;&lt;a href="http://code.google.com/android/download.html"&gt;http://code.google.com/android/download.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;download the Linux version, the current version is&lt;br /&gt;Linux (i386)    android-sdk-linux_x86-1.0_r1.zip&lt;br /&gt;&lt;br /&gt;(2) unzip and install the android SDK say to /usr/&lt;br /&gt;&lt;br /&gt;&lt;code&gt;unzip android-sdk-linux_x86-1.0_r1.zip&lt;br /&gt;sudo mv android-sdk-linux_x86-1.0_r1 /usr/&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(3) edit ~/.bash_profile&lt;br /&gt;&lt;code&gt;vi ~/.bash_profile&lt;/code&gt;&lt;br /&gt;change&lt;br /&gt;&lt;code&gt;PATH=~/bin:"${PATH}"&lt;/code&gt;&lt;br /&gt;to&lt;br /&gt;&lt;code&gt;PATH=~/bin:/usr/android-sdk-linux_x86-1.0_r1/tools:"${PATH}"&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(4) Test run Android emulator&lt;br /&gt;&lt;br /&gt;starting emulator in portrait mode   will be out of view in eeepc, so we need to run it in landscape mode.  Moreover the sound does not work.&lt;br /&gt;To start the emuator for the first time, use these commands in Terminal&lt;br /&gt;&lt;br /&gt;Assume, Android SDK is installed in /usr and android data will be kept at ~/androiddata&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;export PATH=${PATH}:/usr/android-sdk-linux_x86-1.0_r1/tools&lt;br /&gt;mkdir -p ~/androiddata&lt;br /&gt;emulator -datadir ~/androiddata -noaudio -skin HVGA-L&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;or, alternatively, if you have to run the emulator in portrait mode, you need to scale it say by 0.6 &lt;br /&gt;&lt;code&gt;&lt;br /&gt;emulator -datadir ~/androiddata -noaudio -scale 0.6&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Please be patient for the Emulator for the first time as it takes very long to create the data on first installation&lt;br /&gt;&lt;img src="http://www.gphone.org.hk/attach/28-android2-embed.png" width="75%" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;Part (C) Test building HelloActivity from the sample code&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;(1) If you have installed the Andriod SDK and started the emulator for the first time, it is better to reboot the computer first and then start the emulator again.&lt;br /&gt;&lt;br /&gt;(2) Create the Projects directory say&lt;br /&gt;&lt;code&gt;mkdir -p ~/Projects&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(3) start emulator in Terminal&lt;br /&gt;&lt;code&gt;emulator -noaudio -skin HVGA-L &amp;amp;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(4) copy the HelloActivity from sample of SDK to Projects directory&lt;br /&gt;&lt;code&gt;cp -r /usr/android-sdk-linux_x86-1.0_r1/samples/HelloActivity  ~/Projects/&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(5) Use activityCreator to create the build file&lt;br /&gt;&lt;code&gt;activitycreator --out ~/Projects/HelloActivity com.example.android.helloactivity&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(6) Build the HelloActivity project&lt;br /&gt;&lt;code&gt;cd ~/Projects/&lt;br /&gt;ant&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(7) Install the HelloActivity project to emulator&lt;br /&gt;&lt;code&gt;cd ~/Projects/&lt;br /&gt;ant install&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;Remember, you must start the emulator before installing binary&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;(8) Then you can test the installed program HelloActivity in the emulator&lt;br /&gt;To uninstall the program do this in Terminal&lt;br /&gt;&lt;code&gt;cd ~/Projects/&lt;br /&gt;ant uninstall&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you need an integrated development environment, use Eclipse and install the plug-ins as described in the Android download site.&lt;br /&gt;&lt;br /&gt;If you amend some codes in the Project and want to reinstall use&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd ~/Projects/&lt;br /&gt;ant reinstall&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;For Mac OS X installation, just skip the Part (A) of this guide and follow similar procedure in other parts, as Mac OS X has these building tools / JDK already installed.&lt;br /&gt;&lt;br /&gt;For other sample projects from SDK the activityCreate scripts are&lt;br /&gt;&lt;code&gt;cp -r /usr/android-sdk-linux_x86-1.0_r1/samples/LunarLander ~/Projects/&lt;br /&gt;activitycreator --out ~/Projects/LunarLander com.example.android.lunarlander&lt;br /&gt;cd ~/Projects/LunarLander&lt;br /&gt;ant install&lt;br /&gt;&lt;br /&gt;cp -r /usr/android-sdk-linux_x86-1.0_r1/samples/NotePad ~/Projects/&lt;br /&gt;activitycreator --out ~/Projects/NotePad com.example.android.notepad&lt;br /&gt;cd ~/Projects/NotePad&lt;br /&gt;ant install&lt;br /&gt;&lt;br /&gt;cp -r /usr/android-sdk-linux_x86-1.0_r1/samples/Snake ~/Projects/&lt;br /&gt;activitycreator --out ~/Projects/Snake com.example.android.snake&lt;br /&gt;cd ~/Projects/Snake&lt;br /&gt;ant install&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Enjoy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-4946280532289669486?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/4946280532289669486/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=4946280532289669486' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/4946280532289669486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/4946280532289669486'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2008/09/how-to-install-android-sdk-on-asus.html' title='[How-to] Install Android SDK on Asus eeepc Linux'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-5109638203780657396</id><published>2008-09-26T17:39:00.009+08:00</published><updated>2008-09-29T16:33:55.930+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone3G'/><title type='text'>iPhone 3G official unlock and without carrier contract in Hong Kong</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3LRNVfBfliQ/SNyuALMD84I/AAAAAAAAAlE/MjOkJ41n3ew/s1600-h/apple.jpeg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_3LRNVfBfliQ/SNyuALMD84I/AAAAAAAAAlE/MjOkJ41n3ew/s400/apple.jpeg" border="0" alt=""id="BLOGGER_PHOTO_ID_5250262583633769346" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://store.apple.com/hk/browse/home/shop_iphone/family/iphone?mco=MTE2NTQ"&gt;http://store.apple.com/hk/browse/home/shop_iphone/family/iphone?mco=MTE2NTQ&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.iphone.org.hk/attach/43163-iphone3ghk-embed.png" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-5109638203780657396?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/5109638203780657396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=5109638203780657396' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/5109638203780657396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/5109638203780657396'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2008/09/iphone-3g-official-unlock-and-without.html' title='iPhone 3G official unlock and without carrier contract in Hong Kong'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_3LRNVfBfliQ/SNyuALMD84I/AAAAAAAAAlE/MjOkJ41n3ew/s72-c/apple.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-1963795750426932315</id><published>2008-09-24T10:52:00.007+08:00</published><updated>2008-09-24T12:12:28.515+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Android SDK</title><content type='html'>Really good looking on my Mac&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.iphone.org.hk/attach/43009-android-embed.png" width="75%" height="50%"&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src ="http://www.iphone.org.hk/attach/43018-androidiphone-embed.png"&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-1963795750426932315?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/1963795750426932315/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=1963795750426932315' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/1963795750426932315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/1963795750426932315'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2008/09/android-sdk.html' title='Android SDK'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-8539070053973935109</id><published>2008-09-17T05:27:00.001+08:00</published><updated>2008-09-17T05:29:27.158+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><title type='text'>Recent apps on your dock for Mac</title><content type='html'>http://www.tuaw.com/2008/09/16/terminal-tips-add-recent-applications-as-a-stack-on-dock/&lt;br /&gt;&lt;br /&gt;Type this in Mac Terminal&lt;br /&gt;&lt;code&gt;&lt;br /&gt;defaults write com.apple.dock persistent-others -array-add '{ "tile-data" = { "list-type" = 1; }; "tile-type" = "recents-tile"; }'&lt;br /&gt;killall Dock&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-8539070053973935109?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/8539070053973935109/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=8539070053973935109' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/8539070053973935109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/8539070053973935109'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2008/09/recent-apps-on-your-dock-for-mac.html' title='Recent apps on your dock for Mac'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-8328349924590205272</id><published>2008-09-08T18:10:00.006+08:00</published><updated>2008-09-17T05:33:20.779+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone ipa'/><title type='text'>How do you create an .ipa file?</title><content type='html'>&lt;span class="Apple-style-span" style="color: rgb(153, 0, 0);"&gt;This is taken from discussion forum and I found it very useful&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;What you need:&lt;/span&gt;&lt;br /&gt;1: An app&lt;br /&gt;2: A patched MobileInstallation file installed on your iPhone or iPod Touch.&lt;br /&gt;3: Lastly, you need to know that when I say "ProgName", substitute the name of the program you're working with&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;Getting the iTunesArtwork file&lt;/span&gt;&lt;br /&gt;The iTunesArtwork file is simply a jpeg image with the extension taken off, and is included in application's install folder on your device for every app downloaded from the app store. This image is what appears in the Applications section of iTunes as the icon for the app, and is definitely nice to have -- if you don't have it, you get a generic, black icon that no one wants to see. If you have the iTunesArtwork file, skip all this and go down to the next red headline! Otherwise, read on:&lt;br /&gt;1: Open iTunes on your computer and find your application in the iTunes Music Store. On the application's page, find the app icon at the top-left corner of the page and right-click it. Now choose "Copy iTunes Store URL". Your clipboard now contains something like this:&lt;br /&gt;Code:&lt;br /&gt;http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=284962368&amp;amp;mt=8&lt;br /&gt;&lt;br /&gt;2. run this script (which I created) in mac, eg ./getappicon.sh 284962368&lt;br /&gt;&lt;dl class="codebox"&gt;&lt;dt&gt;Shell script: getappicon.sh&lt;a href="http://www.blogger.com/post-edit.g?blogID=1136927038369577335&amp;amp;postID=8825188502427327925#" onclick="selectCode(this); return false;"&gt;Select all&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;code&gt;&lt;br /&gt;#!/bin/sh&lt;br /&gt;url=`curl -s -L "http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStore.woa/wa/viewSoftware?id={$1}&amp;mt=8" | gunzip | grep '100x100-75.jpg'  | cut -f22 -d"\""`&lt;br /&gt;appname=`curl -s -L "http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStore.woa/wa/viewSoftware?id={$1}&amp;mt=8" | gunzip | grep '100x100-75.jpg'  | cut -f16 -d"\""`&lt;br /&gt;if [ "$appname" = "0" ] ;  then&lt;br /&gt;appname=`curl -s -L "http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStore.woa/wa/viewSoftware?id={$1}&amp;mt=8" | gunzip | grep '100x100-75.jpg'  | cut -f18 -d"\""`&lt;br /&gt;fi&lt;br /&gt;echo ${appname}&lt;br /&gt;&lt;br /&gt;url100=${url}&lt;br /&gt;curl ${url100} &gt; ${1}.jpg&lt;br /&gt;&lt;br /&gt;url512=`echo ${url100} | perl -pe 's/100/512/g'`&lt;br /&gt;curl ${url512} &gt; ${1}_512.jpg&lt;br /&gt;&lt;/code&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;br /&gt;&lt;br /&gt;3: Then you will get two jpg files, 284962368_512.jpg &amp; 284962368.jpg Rename the 512 jpeg to  iTunesArtwork. You've just gotten your iTunesArtwork file.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;Bundling the .IPA&lt;/span&gt;&lt;br /&gt;1: Create a folder on your desktop called "working". Open that, and create another folder inside of it called "Payload". Case-sensitive.&lt;br /&gt;2: Move your iTunesArtwork file into the "working" folder, and your .app into the Payload folder.&lt;br /&gt;3: Mac and Linux users only: Open Terminal and run the following command:&lt;br /&gt;Code:&lt;br /&gt;chmod -R 775 ~/Desktop/working/Payload&lt;br /&gt;4: Go into your ProgName.app folder within Payload (Mac users, right-click ProgName.app and choose Show Package Contents).&lt;br /&gt;5 (For Mac users with Dev Tools installed ONLY): Double-click the Info.plist file. The Property List Editor will open and show a simple table. Click the last row of the table, then press the + button that appears to create a new row at the bottom. In the first new cell enter&lt;br /&gt;Code:&lt;br /&gt;SignerIdentity&lt;br /&gt;and in the second new cell, enter&lt;br /&gt;Code:&lt;br /&gt;Apple iPhone OS Application Signing&lt;br /&gt;Save this file.&lt;br /&gt;5 (For Windows, Linux, and other Macs): Visit the following site: https://brokolice.drsny.net/iphone/plutil/ (You may have to Approve the security certificate -- don't worry, it's safe)&lt;br /&gt;Browse for your Info.plist file, and press the "Convert" button. Save the resulting file to your computer. Windows users, open this file in WordPad. Mac and Linux users can use any text editor.&lt;br /&gt;scroll to the bottom of the file and make a new line just before&lt;br /&gt;Code:&lt;br /&gt;&amp;lt;/dict&amp;gt;&lt;br /&gt;And paste the following in that spot:&lt;br /&gt;Code:&lt;br /&gt;&amp;lt;key&amp;gt;SignerIdentity&amp;lt;/key&amp;gt;&lt;br /&gt;&amp;lt;string&gt;Apple iPhone OS Application Signing&amp;lt;/string&amp;gt;&lt;br /&gt;The end of the file should now look like this:&lt;br /&gt;Code:&lt;br /&gt;&amp;lt;key&amp;gt;SignerIdentity&amp;lt;/key&amp;gt;&lt;br /&gt;&amp;lt;string&amp;gt;Apple iPhone OS Application Signing&amp;lt;/string&amp;gt;&lt;br /&gt;&amp;lt;/dict&amp;gt;&lt;br /&gt;&amp;lt;/plist&amp;gt;&lt;br /&gt;Save the file (Make sure the name is Info.plist -- case sensitive!) and replace the Info.plist in ProgName.app with it.&lt;br /&gt;6: Time to zip it up. Use your favorite method to zip the iTunesArtwork file and Payload folder together in one .zip file. Mac users can select both, right-click, and choose "Compress 2 Items". Windows users can select both, right-click, and choose "Add to Archive" (remember to select ZIP, not RAR if that option is available).&lt;br /&gt;If you unzip the file, you should see this structure:&lt;br /&gt;Code:&lt;br /&gt;&lt;br /&gt;iTunesArtwork&lt;br /&gt;+Payload&lt;br /&gt;AppName.app&lt;br /&gt;7: Rename the zip file to ProgName.ipa&lt;br /&gt;8: All done! Congratulations!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-8328349924590205272?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/8328349924590205272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=8328349924590205272' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/8328349924590205272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/8328349924590205272'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2008/09/how-do-you-create-ipa-file.html' title='How do you create an .ipa file?'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-8825188502427327925</id><published>2008-08-22T17:07:00.002+08:00</published><updated>2008-08-26T22:13:37.611+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone Firmware'/><category scheme='http://www.blogger.com/atom/ns#' term='iPod Firmware'/><title type='text'>iPhone / iPod Firmware Link</title><content type='html'>&lt;a href="http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStore.woa/wa/com.apple.jingle.appserver.client.MZITunesClientCheck/version?touchUpdate=true"&gt;http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStore.woa/wa/com.apple.jingle.appserver.client.MZITunesClientCheck/version?touchUpdate=true&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;dl class="codebox"&gt;&lt;dt&gt;Shell script: &lt;a href="#" onclick="selectCode(this); return false;"&gt;Select all&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;code&gt;&lt;br /&gt;#!/bin/sh&lt;br /&gt;curl -s -L http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStore.woa/wa/com.apple.jingle.appserver.client.MZITunesClientCheck/version?touchUpdate=true | gunzip | grep appldnld |  grep "iP*.*Restore"  | awk '{print $1;}' | uniq&lt;br /&gt;&lt;/code&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-8825188502427327925?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/8825188502427327925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=8825188502427327925' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/8825188502427327925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/8825188502427327925'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2008/08/iphone-ipod-firmware-link.html' title='iPhone / iPod Firmware Link'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-5561172370442468751</id><published>2008-08-20T18:39:00.004+08:00</published><updated>2008-08-20T18:54:48.073+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone Installer Scripts'/><title type='text'>Installer Script Command</title><content type='html'>&lt;a href="http://www.hackint0sh.org/forum/showpost.php?p=335937&amp;postcount=2"&gt;http://www.hackint0sh.org/forum/showpost.php?p=335937&amp;postcount=2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Common Script Commands of Installer&lt;br /&gt;These are old script commands for Installer, I think some of them are still applicable in Installer 4&lt;br /&gt;&lt;br /&gt;CopyPath() and RemovePath()&lt;br /&gt;&lt;dl class="codebox"&gt;&lt;dt&gt;Code: &lt;a href="#" onclick="selectCode(this); return false;"&gt;Select all&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;array&amp;gt;&lt;br /&gt; &amp;lt;string&amp;gt;CopyPath&amp;lt;/string&amp;gt;&lt;br /&gt; &amp;lt;string&amp;gt;YourProg.app/&amp;lt;/string&amp;gt;&lt;br /&gt; &amp;lt;string&amp;gt;/Applications/YourProg.app&amp;lt;/string&amp;gt;&lt;br /&gt;&amp;lt;/array&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;br /&gt;&lt;br /&gt;and&lt;br /&gt;&lt;dl class="codebox"&gt;&lt;dt&gt;Code: &lt;a href="#" onclick="selectCode(this); return false;"&gt;Select all&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;array&amp;gt;&lt;br /&gt; &amp;lt;string&amp;gt;RemovePath&amp;lt;/string&amp;gt;&lt;br /&gt; &amp;lt;string&amp;gt;/Applications/YourProg.app&amp;lt;/string&amp;gt;&lt;br /&gt; &amp;lt;string&amp;gt;/var/mobile/Library/Preferences/com.yourcompany.YourProg.plist&amp;lt;/string&amp;gt;&lt;br /&gt;&amp;lt;/array&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;br /&gt;&lt;br /&gt;Other Common Commands&lt;br /&gt;AbortOperation(string)  This will make Installer both abort the install process and displays a message telling the user why&lt;br /&gt;Confirm(string,string,string)  Confirm an action.&lt;br /&gt;Exec(terminalCommand)  Runs a Terminal command. Useful for things like chmod, chown, etc.&lt;br /&gt;ExecNoError(terminalCommand) Runs a Terminal command.&lt;br /&gt;LinkPath(oldPath, newPath)  Links the two paths.&lt;br /&gt;MovePath(oldPath, newPath)  Moves files from one location to another&lt;br /&gt;Notice(string)  Displays a pop message while Installing&lt;br /&gt;SetStatus(string)  Sets the status of the install process. Useful for lengthy installs.&lt;br /&gt;&lt;br /&gt;Example&lt;br /&gt;&lt;dl class="codebox"&gt;&lt;dt&gt;Code: &lt;a href="#" onclick="selectCode(this); return false;"&gt;Select all&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;code&gt; &lt;br /&gt;&amp;lt;array&amp;gt;&lt;br /&gt; &amp;lt;string&amp;gt;Confirm&amp;lt;/string&amp;gt;&lt;br /&gt; &amp;lt;string&amp;gt;Changing Permission. Do you wish to continue?&amp;lt;/string&amp;gt;&lt;br /&gt; &amp;lt;string&amp;gt;Yes&amp;lt;/string&amp;gt;&lt;br /&gt; &amp;lt;string&amp;gt;No&amp;lt;/string&amp;gt;&lt;br /&gt;&amp;lt;/array&amp;gt;&lt;br /&gt;&amp;lt;array&amp;gt;&lt;br /&gt; &amp;lt;string&amp;gt;SetStatus&amp;lt;/string&amp;gt;&lt;br /&gt; &amp;lt;string&amp;gt;Changing Permissions&amp;lt;/string&amp;gt;&lt;br /&gt;&amp;lt;/array&amp;gt;&lt;br /&gt;&amp;lt;array&amp;gt;&lt;br /&gt; &amp;lt;string&amp;gt;Exec&amp;lt;/string&amp;gt;&lt;br /&gt; &amp;lt;string&amp;gt;/bin/chmod -R 755 /var/mobile/Media/MyProgData&amp;lt;/string&amp;gt;&lt;br /&gt;&amp;lt;/array&amp;gt;&lt;br /&gt;&amp;lt;array&amp;gt;&lt;br /&gt; &amp;lt;string&amp;gt;Exec&amp;lt;/string&amp;gt;&lt;br /&gt; &amp;lt;string&amp;gt;/usr/bin/chown -R mobile /var/mobile/Media/MyProgData/.&amp;lt;/string&amp;gt;&lt;br /&gt;&amp;lt;/array&amp;gt;&lt;br /&gt;&amp;lt;array&amp;gt;&lt;br /&gt; &amp;lt;string&amp;gt;Notice&amp;lt;/string&amp;gt;&lt;br /&gt; &amp;lt;string&amp;gt;Installation Completed.  Please restart iPhone.&amp;lt;/string&amp;gt;&lt;br /&gt;&amp;lt;/array&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;br /&gt;&lt;br /&gt;If / IfNot&lt;br /&gt;If(condition[array], action[array]) Use this to check for specific conditions and have Installer react accordingly. Example&lt;br /&gt;&lt;dl class="codebox"&gt;&lt;dt&gt;Code: &lt;a href="#" onclick="selectCode(this); return false;"&gt;Select all&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;code&gt; &lt;br /&gt;&amp;lt;array&amp;gt;&lt;br /&gt; &amp;lt;string&amp;gt;IfNot&amp;lt;/string&amp;gt;&lt;br /&gt; &amp;lt;array&amp;gt;&lt;br /&gt;  &amp;lt;array&amp;gt;&lt;br /&gt;   &amp;lt;string&amp;gt;InstalledPackage&amp;lt;/string&amp;gt;&lt;br /&gt;   &amp;lt;string&amp;gt;com.anothercompany.anotherprog&amp;lt;/string&amp;gt;&lt;br /&gt;  &amp;lt;/array&amp;gt;&lt;br /&gt; &amp;lt;/array&amp;gt;&lt;br /&gt; &amp;lt;array&amp;gt;&lt;br /&gt;  &amp;lt;array&amp;gt;&lt;br /&gt;   &amp;lt;string&amp;gt;AbortOperation&amp;lt;/string&amp;gt;&lt;br /&gt;   &amp;lt;string&amp;gt;You must install another package first.&amp;lt;/string&amp;gt;&lt;br /&gt;  &amp;lt;/array&amp;gt;&lt;br /&gt; &amp;lt;/array&amp;gt;&lt;br /&gt;&amp;lt;/array&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;br /&gt;&lt;br /&gt;Some common things to check with If / IfNot&lt;br /&gt;InstalledPackage(bundleIdentifier)  Checks to see whether or not an application is installed.&lt;br /&gt;ExistsPath(path)  Checks to see whether a specific file or directory exists&lt;br /&gt;FirmwareVersionIs(arrayOfFirmwaresTocheck)  Checks the firmware version&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-5561172370442468751?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/5561172370442468751/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=5561172370442468751' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/5561172370442468751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/5561172370442468751'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2008/08/installer-script-command.html' title='Installer Script Command'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-7862433631780212215</id><published>2008-08-15T00:07:00.001+08:00</published><updated>2008-08-15T00:09:01.584+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone 2.0 application'/><category scheme='http://www.blogger.com/atom/ns#' term='App Store'/><title type='text'>Touch Dial Free is now in App Store</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3LRNVfBfliQ/SJEvcgxPp1I/AAAAAAAAAQw/jfqUZB7PDOI/s1600-h/TouchDialFreeAppStoreBadge.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_3LRNVfBfliQ/SJEvcgxPp1I/AAAAAAAAAQw/jfqUZB7PDOI/s400/TouchDialFreeAppStoreBadge.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5229012809233180498" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=286527637&amp;mt=8"&gt;http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=286527637&amp;mt=8&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-7862433631780212215?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/7862433631780212215/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=7862433631780212215' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/7862433631780212215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/7862433631780212215'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2008/08/touch-dial-free-is-now-in-app-store.html' title='Touch Dial Free is now in App Store'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_3LRNVfBfliQ/SJEvcgxPp1I/AAAAAAAAAQw/jfqUZB7PDOI/s72-c/TouchDialFreeAppStoreBadge.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-8443644519290390599</id><published>2008-06-08T19:24:00.005+08:00</published><updated>2008-06-18T21:34:41.218+08:00</updated><title type='text'>New blog</title><content type='html'>Just created a new blog about iPhone software development&lt;br /&gt;&lt;a href="http://iphonesdkdev.blogspot.com/"&gt;http://iphonesdkdev.blogspot.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-8443644519290390599?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/8443644519290390599/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=8443644519290390599' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/8443644519290390599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/8443644519290390599'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2008/06/new-blog.html' title='New blog'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-6695042356609604219</id><published>2008-05-30T11:35:00.006+08:00</published><updated>2009-12-25T21:25:04.890+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac Office SP1'/><title type='text'>Remove and reenter the Mac Office 2008 product key</title><content type='html'>This is needed after you have installed Mac Office 2008 SP1&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Remove and reenter the Mac Office 2008 product key&lt;/span&gt;&lt;br /&gt;If your copy of Office 2008 was installed with an invalid product key, or if you mistakenly used the same product key to install Office 2008 on more than one computer, you must remove the invalid product key and enter a valid product key to use Office 2008.&lt;br /&gt;&lt;br /&gt;(1) In the Finder, select /Applications/Microsoft Office 2008/Office/OfficePID.plist&lt;br /&gt;, and then on the File menu, click Move to Trash.&lt;br /&gt;&lt;br /&gt;(2) Select /Users/&lt;i&gt;yourusername&lt;/i&gt;/Library/Preferences/Microsoft/Office 2008/Microsoft Office 2008 settings.plist&lt;br /&gt;, and then on the File menu, click Move to Trash.&lt;br /&gt;&lt;br /&gt;(3) On the Apple menu, click Restart.&lt;br /&gt;&lt;br /&gt;(4) After your computer restarts, open any Office 2008 application.&lt;br /&gt;&lt;br /&gt;(5) The Office Setup Assistant opens.&lt;br /&gt;&lt;br /&gt;(6) Accept the software license agreement, and then enter your valid product key.&lt;br /&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-6695042356609604219?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/6695042356609604219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=6695042356609604219' title='20 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/6695042356609604219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/6695042356609604219'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2008/05/remove-and-reenter-office-2008-product.html' title='Remove and reenter the Mac Office 2008 product key'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>20</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-8880832307762827915</id><published>2008-05-25T23:35:00.003+08:00</published><updated>2008-05-25T23:43:10.338+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IES4OSX'/><category scheme='http://www.blogger.com/atom/ns#' term='OSX'/><category scheme='http://www.blogger.com/atom/ns#' term='Fonts'/><title type='text'>Mac OS X Leopard runs IE6 (Active X) natively</title><content type='html'>You don't need VMWare, bootcamp nor Parellel Desktop.  And it is free.  You can run IE6 with Active X support in Mac OS X under X11&lt;br /&gt;&lt;br /&gt;see this instruction&lt;br /&gt;&lt;br /&gt;http://www.kronenberg.org/ies4osx/&lt;br /&gt;&lt;br /&gt;If you need to install additional fonts, put them here&lt;br /&gt;&lt;br /&gt;Internet Explorer 6.0.app/Contents/Resources/ie6/drive_c/windows/Fonts&lt;br /&gt;&lt;br /&gt;I use these commands to install Chinese Font inside&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;cd Desktop/Internet Explorer 6.0.app/Contents/Resources/ie6/drive_c/windows/Fonts&lt;br /&gt;ln -s /System/Library/Fonts/儷黑\ Pro.ttf .&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3LRNVfBfliQ/SDmIkF2f16I/AAAAAAAAAKU/pNxrsank52Q/s1600-h/ies4osx.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_3LRNVfBfliQ/SDmIkF2f16I/AAAAAAAAAKU/pNxrsank52Q/s320/ies4osx.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5204340998030743458" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-8880832307762827915?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/8880832307762827915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=8880832307762827915' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/8880832307762827915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/8880832307762827915'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2008/05/mac-os-x-leopard-runs-ie6-active-x.html' title='Mac OS X Leopard runs IE6 (Active X) natively'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_3LRNVfBfliQ/SDmIkF2f16I/AAAAAAAAAKU/pNxrsank52Q/s72-c/ies4osx.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-6238409743903978594</id><published>2008-05-24T15:30:00.002+08:00</published><updated>2008-05-24T15:35:52.402+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone ToolChain'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone SDK'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><title type='text'>iPhone Open Toolchain Header runs UIShowCase</title><content type='html'>The missing UIKit clasees of open toolchain headers for IPhone SDK is now partially solved.  You can now build UIShowCase in your Open Toolchain Template in iPhone SDK.&lt;br /&gt;&lt;br /&gt;Read this&lt;br /&gt;&lt;a href="http://www.hackint0sh.org/forum/showpost.php?p=297245&amp;postcount=15"&gt;http://www.hackint0sh.org/forum/showpost.php?p=297245&amp;postcount=15&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://cocoatouchdev.com/javacom/pwnimg/uishowcase.gif"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px;" src="http://cocoatouchdev.com/javacom/pwnimg/uishowcase.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-6238409743903978594?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/6238409743903978594/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=6238409743903978594' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/6238409743903978594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/6238409743903978594'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2008/05/iphone-open-toolchain-header-runs.html' title='iPhone Open Toolchain Header runs UIShowCase'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-3865151328589291808</id><published>2008-05-14T16:48:00.008+08:00</published><updated>2008-05-18T08:45:16.014+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone ToolChain'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone SDK'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><title type='text'>What is needed to be an iPhone programmer (firmware 2.0 OS)</title><content type='html'>Even if you are not a registered iPhone developer of Apple (US$99 program), you still can code and test your iPhone program in firmware 2.0&lt;br /&gt;&lt;br /&gt;This is how:&lt;br /&gt;&lt;br /&gt;(1) You need a machine running Mac OS X 10.5.2 with Intel CPU because you need to run iPhone SDK for the iPhone OS 2.0&lt;br /&gt;there are several possibilities, e.g. &lt;br /&gt;(a) you can get a Intel Mac with Mac OS X 10.5.2 (which I think is the easiest one and save a lot of troubles, thus you can put omore time in the learning of iPhone programming)&lt;br /&gt;(b) Use the VMWare image (and use VMWare Workstation/Player for PC), &lt;a href="http://pcwizcomputer.com/index.php?option=com_content&amp;task=view&amp;id=76&amp;Itemid=48"&gt;read this&lt;/a&gt;, and install iPhone SDK in it.  You need C2D Intel CPU and lots of RAM (2G) in your existing PC.&lt;br /&gt;(c) Install OSX86 on PC (you must be a power user), read this forum on how &lt;a href="http://www.hackint0sh.org/forum/forumdisplay.php?f=104"&gt;http://www.hackint0sh.org/forum/forumdisplay.php?f=104&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(2)  Get the iPhone SDK from Apple which is free after registration with Apple.&lt;br /&gt;&lt;br /&gt;(3) You need to read some books on Objective C and Foundation framework of Mac OS X, I think Oreilly has good source of books in this subject.  This site also gives some tutorial exmaples on cocoa programming &lt;a href="http://cocoadevcentral.com/"&gt;http://cocoadevcentral.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(4) Get a pwned iPhone with iPhone OS 2.0 firmware beta 3 (build 5A240d)&lt;br /&gt;read this for the pwnage tools &lt;a href="http://www.hackint0sh.org/forum/forumdisplay.php?f=146"&gt;http://www.hackint0sh.org/forum/forumdisplay.php?f=146&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(5) Read this Forum and use the Xcode template (open toolchain header) here to start some coding and testing on iPhone&lt;br /&gt;&lt;a href="http://www.hackint0sh.org/forum/showthread.php?t=38389"&gt;http://www.hackint0sh.org/forum/showthread.php?t=38389&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(6) get some project code (based on open toolchain) from the right menu of this blog to compile and test run on iPhone&lt;br /&gt;&lt;br /&gt;(7) start coding your own idea in your own iPhone project.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-3865151328589291808?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/3865151328589291808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=3865151328589291808' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/3865151328589291808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/3865151328589291808'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2008/05/what-is-needed-to-be-iphone-programmer.html' title='What is needed to be an iPhone programmer (firmware 2.0 OS)'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-2360091061886709604</id><published>2008-05-11T08:34:00.005+08:00</published><updated>2008-05-13T14:50:10.700+08:00</updated><title type='text'>Run Mac OS X Leopard on VMWare (Windows or Mac)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.iphone.org.hk/attach/29535-leopard-embed.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px;" src="http://www.iphone.org.hk/attach/29535-leopard-embed.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://cocoatouchdev.com/javacom/pwnimg/leopard.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px;" src="http://cocoatouchdev.com/javacom/pwnimg/leopard.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;a href="http://pcwizcomputer.com/index.php?option=com_content&amp;amp;task=view&amp;amp;id=76&amp;amp;Itemid=48"&gt;Check this out&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-2360091061886709604?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/2360091061886709604/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=2360091061886709604' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/2360091061886709604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/2360091061886709604'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2008/05/run-mac-os-x-on-pc.html' title='Run Mac OS X Leopard on VMWare (Windows or Mac)'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-7260974175654818019</id><published>2008-05-10T21:54:00.007+08:00</published><updated>2008-05-10T22:01:08.383+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone restore'/><title type='text'>Rainbow screen of death</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://cocoatouchdev.com/javacom/pwnimg/restore.gif"&gt;&lt;img style="cursor: pointer; width: 120px;" src="http://cocoatouchdev.com/javacom/pwnimg/restore.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-7260974175654818019?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/7260974175654818019/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=7260974175654818019' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/7260974175654818019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/7260974175654818019'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2008/05/rainbow-screen-of-death.html' title='Rainbow screen of death'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-6621419440647488670</id><published>2008-05-10T10:07:00.001+08:00</published><updated>2008-05-10T10:09:54.468+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone ToolChain'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone SDK'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><title type='text'>class-dump for iPhone SDK header file</title><content type='html'>&lt;a href="http://iphone.freecoder.org/classdump_en.html"&gt;http://iphone.freecoder.org/classdump_en.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;with this wonderful tool, you don't need to worry about header files problem any more&lt;br /&gt;e.g.&lt;br /&gt;put the class-dump binary (Mac OS X) in your bin and do this&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;class-dump -H /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.0.sdk/System/Library/Frameworks/UIKit.framework/UIKit&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;you will get the most updated header files in your current directory from the SDK&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-6621419440647488670?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/6621419440647488670/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=6621419440647488670' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/6621419440647488670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/6621419440647488670'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2008/05/class-dump-for-iphone-sdk-header-file.html' title='class-dump for iPhone SDK header file'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-6649435319755977256</id><published>2008-05-06T17:52:00.012+08:00</published><updated>2008-06-18T13:02:50.717+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone SDK'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone 2.0 application'/><title type='text'>Two versions of Hello World (SDK headers vs Open Tool Chain headers)</title><content type='html'>It is possible to use Open Tool Chain Header with the SDK and the iPhone OS 2.0 SDK headers, this example gives these two version to compare&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;iPhone OS 2.0 SDK headers version&lt;/span&gt;&lt;br /&gt;&lt;dl class="codebox"&gt;&lt;dt&gt;Code: &lt;a href="#" onclick="selectCode(this); return false;"&gt;Select all&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;code&gt; &lt;br /&gt;//&lt;br /&gt;//  main.m&lt;br /&gt;//  HelloSDK&lt;br /&gt;//&lt;br /&gt;#import &amp;lt;UIKit/UIKit.h&amp;gt;&lt;br /&gt;@interface MyView : UIView {&lt;br /&gt;}&lt;br /&gt;@end&lt;br /&gt;@implementation MyView&lt;br /&gt;- (void)drawRect:(CGRect)rect {&lt;br /&gt;  [[UIColor whiteColor] set];&lt;br /&gt;  [@"Hello SDK" drawInRect:CGRectMake(0, 100, 320, 50)&lt;br /&gt;                         withFont:[UIFont fontWithName:@"Marker Felt" size:50]&lt;br /&gt;                         lineBreakMode:UILineBreakModeMiddleTruncation&lt;br /&gt;                         alignment:UITextAlignmentCenter];&lt;br /&gt;}&lt;br /&gt;@end&lt;br /&gt;&lt;br /&gt;@interface HelloSDK2AppDelegate : NSObject {&lt;br /&gt;    UIWindow *window;&lt;br /&gt;    MyView *contentView;&lt;br /&gt;}&lt;br /&gt;@property (nonatomic, retain) UIWindow *window;&lt;br /&gt;@property (nonatomic, retain) MyView *contentView;&lt;br /&gt;@end&lt;br /&gt;&lt;br /&gt;@implementation HelloSDK2AppDelegate&lt;br /&gt;@synthesize window;&lt;br /&gt;@synthesize contentView;&lt;br /&gt;&lt;br /&gt;- (void)applicationDidFinishLaunching:(UIApplication *)application { &lt;br /&gt; // Create window&lt;br /&gt; self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];&lt;br /&gt;    &lt;br /&gt;    // Set up content view&lt;br /&gt; self.contentView = [[[MyView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] autorelease];&lt;br /&gt; [window addSubview:contentView];&lt;br /&gt;    &lt;br /&gt; // Show window&lt;br /&gt; [window makeKeyAndVisible];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;- (void)dealloc {&lt;br /&gt; [contentView release];&lt;br /&gt; [window release];&lt;br /&gt; [super dealloc];&lt;br /&gt;}&lt;br /&gt;@end&lt;br /&gt;&lt;br /&gt;int main(int argc, char *argv[])&lt;br /&gt;{&lt;br /&gt;    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];&lt;br /&gt;    int retVal = UIApplicationMain(argc, argv, nil, @"HelloSDK2AppDelegate");&lt;br /&gt;    [pool release];&lt;br /&gt;    return retVal;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Open Tool Chain headers version&lt;/span&gt;&lt;br /&gt;&lt;dl class="codebox"&gt;&lt;dt&gt;Code: &lt;a href="#" onclick="selectCode(this); return false;"&gt;Select all&lt;/a&gt;&lt;/dt&gt;&lt;code&gt; &lt;br /&gt;/*&lt;br /&gt; HelloToolChain.app&lt;br /&gt; main.m&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;#import &amp;lt;Foundation/Foundation.h&amp;gt;&lt;br /&gt;#import &amp;lt;UIKit/UIKit.h&amp;gt;&lt;br /&gt;&lt;br /&gt;// include for the sdk compiler and open toolchain headers&lt;br /&gt;#ifndef UIKIT_UIFont_UIColor_H&lt;br /&gt;#define UIKIT_UIFont_UIColor_H&lt;br /&gt;typedef float CGFloat;&lt;br /&gt;#import &amp;lt;UIKit/UIFont.h&amp;gt;&lt;br /&gt;#import &amp;lt;UIKit/UIColor.h&amp;gt;&lt;br /&gt;#endif&lt;br /&gt;&lt;br /&gt;@interface HelloToolChain : UIApplication&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;@end&lt;br /&gt;&lt;br /&gt;@implementation HelloToolChain&lt;br /&gt;- (void) applicationDidFinishLaunching: (NSNotification *)aNotification&lt;br /&gt;{&lt;br /&gt; UIWindow *window = [[UIWindow alloc] initWithContentRect: [UIHardware fullScreenApplicationContentRect]];&lt;br /&gt; UITextLabel *label = [[UITextLabel alloc] initWithFrame: CGRectMake(0, 100, 320, 50)];&lt;br /&gt; [label setFont:[UIFont fontWithName:@"Marker Felt" size:50]];&lt;br /&gt; [label setCentersHorizontally: YES];&lt;br /&gt; [label setText:@"Hello ToolChain"];&lt;br /&gt; [label setBackgroundColor:[UIColor blackColor]];&lt;br /&gt; [label setColor:[UIColor whiteColor]];&lt;br /&gt; UIView *mainView = [[UIView alloc] initWithFrame: [UIHardware fullScreenApplicationContentRect]];&lt;br /&gt; [mainView addSubview: label];&lt;br /&gt; [mainView becomeFirstResponder];&lt;br /&gt; [window orderFront: self];&lt;br /&gt; [window makeKeyAndVisible];&lt;br /&gt; [window setContentView: mainView];&lt;br /&gt;}&lt;br /&gt;@end&lt;br /&gt;&lt;br /&gt;int main(int argc, char *argv[]) {&lt;br /&gt; int returnCode;&lt;br /&gt; NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];&lt;br /&gt; returnCode = UIApplicationMain(argc, argv, [HelloToolChain class]);&lt;br /&gt; [pool release];&lt;br /&gt; return returnCode;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/dl&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-6649435319755977256?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/6649435319755977256/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=6649435319755977256' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/6649435319755977256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/6649435319755977256'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2008/05/two-versions-of-hello-world-sdk-vs-open.html' title='Two versions of Hello World (SDK headers vs Open Tool Chain headers)'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-4770794426062857203</id><published>2008-05-05T22:02:00.021+08:00</published><updated>2008-05-09T03:26:46.394+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone Firmware'/><category scheme='http://www.blogger.com/atom/ns#' term='vfdecrypt'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='decrypt'/><title type='text'>iPhone1,1_2.0_5A258f_Restore.ipsw decrypt method</title><content type='html'>Steps to decrypt the iPhone firmware 2.0 beta 4 (build 5A258f) and extract the files from ramdisk and rootfs&lt;br /&gt;1. Decompress firmware (using unzip command)&lt;br /&gt;2. Decrypt ramdisk (using dd command)&lt;br /&gt;3. Extract rootfs decryption key (using strings command)&lt;br /&gt;4. Decrypt rootfs (using vfdecrypt utility)&lt;br /&gt;5. Extract important files (for Mac just double click the decrypted dmg file, for windows use PowerISO to open)&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;$ md5 iPhone1,1_2.0_5A258f_Restore.ipsw&lt;br /&gt;MD5 (iPhone1,1_2.0_5A258f_Restore.ipsw) = f7a2937c32615545ba339c330356d9ad&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Run these commands to get the ramdisk of iPhone firmware 2.0 beta 4 (build 5A258f)&lt;br /&gt;&lt;pre&gt;$ unzip -o iPhone1,1_2.0_5A258f_Restore.ipsw 018-3587-8.dmg&lt;br /&gt;$ echo `hexdump -s12 -n4 -e '"%d\n"' 018-3587-8.dmg ` / 32 | bc&lt;/pre&gt;&lt;br /&gt;The output is 610816 which will be used for the next command&lt;br /&gt;&lt;br /&gt;strip off the first 32 bytes (0x20) and remove the trailing certificate information&lt;br /&gt;&lt;pre&gt;$ dd if=018-3587-8.dmg of=018-3587-8.ramdisk.dmg bs=32 skip=1 count=610816 conv=sync&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The baseband is in the following folder of the converted ramdisk (018-3587-8.ramdisk.dmg) mounted image&lt;br /&gt;/Volumes/ramdisk/usr/local/standalone/firmware&lt;br /&gt;&lt;br /&gt;Run these commands to get the decrypt key of iPhone firmware 2.0 beta 4 (build 5A258f)&lt;br /&gt;&lt;pre&gt;$ unzip -o iPhone1,1_2.0_5A258f_Restore.ipsw 018-3587-8.dmg&lt;br /&gt;$ strings 018-3587-8.dmg | egrep "^[0-9a-fA-F]{72}$"&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The decrypt key is&lt;br /&gt;&lt;pre&gt;198d6602ba2ad2d427adf7058045fff5f20d05846622c186cca3d423ad03b5bc3f43c61c&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Run these commands to decrypt the rootfs of iPhone firmware 2.0 beta 4 (build 5A258f)&lt;br /&gt;&lt;pre&gt;$ unzip -o iPhone1,1_2.0_5A258f_Restore.ipsw 018-3585-6.dmg&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;$ ./vfdecrypt -i 018-3585-6.dmg -o decrypted20b4.dmg -k 198d6602ba2ad2d427adf7058045fff5f20d05846622c186cca3d423ad03b5bc3f43c61c&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;For Mac OS, you need this (universal binary for PPC and Intel)&lt;br /&gt;&lt;a href="http://rapidshare.com/files/40981513/vfdecrypt.zip.html"&gt;http://rapidshare.com/files/40981513/vfdecrypt.zip.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For windows OS, you need these&lt;br /&gt;&lt;a href="http://rapidshare.com/files/41004473/vfdecrypt.exe.html"&gt;http://rapidshare.com/files/41004473/vfdecrypt.exe.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://pecl4win.php.net/download.php/dll/061dae89b309a98382dedc04942bd8a2/libeay32.dll"&gt;http://pecl4win.php.net/download.php/dll/061dae89b309a98382dedc04942bd8a2/libeay32.dll&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.poweriso.com/"&gt;http://www.poweriso.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;Here is the shell script to implement the above procedure and support the previous 8900 decrypt method in Mac OS X&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/bin/sh&lt;br /&gt;#v0.3&lt;br /&gt;if [ $# -lt 1 ]&lt;br /&gt;then&lt;br /&gt;  echo "usage : $0 iPhone1,1_2.0_5A274d_Restore.ipsw"&lt;br /&gt;  exit 0&lt;br /&gt;else&lt;br /&gt;  IPSWNAMES=$@&lt;br /&gt;fi&lt;br /&gt;DDONE=0&lt;br /&gt;for IPSWNAME in $IPSWNAMES&lt;br /&gt;do&lt;br /&gt;if [ -f "$IPSWNAME" ]&lt;br /&gt;then&lt;br /&gt;PWD=`pwd`&lt;br /&gt;rm -f Restore.plist&lt;br /&gt;unzip -o $IPSWNAME Restore.plist &gt; /dev/null 2&gt;/dev/null&lt;br /&gt;if [ -f Restore.plist ]; then&lt;br /&gt;DEVICECLASS=`defaults read $PWD/Restore DeviceClass`&lt;br /&gt;PRODUCTVERSION=`defaults read $PWD/Restore ProductVersion`&lt;br /&gt;BUILDVERSION=`defaults read $PWD/Restore ProductBuildVersion`&lt;br /&gt;RESTORERAMDISK=`defaults read $PWD/Restore RestoreRamDisks | awk '/User/ { split($0, line, "\""); printf("%s\n", line[2]); }'`&lt;br /&gt;SYSTEMRESTOREIMAGE=`defaults read $PWD/Restore SystemRestoreImages | awk '/User/ { split($0, line, "\""); printf("%s\n", line[2]); }'`&lt;br /&gt;unzip -o $IPSWNAME $RESTORERAMDISK  &gt; /dev/null 2&gt;/dev/null&lt;br /&gt;FILEFORMAT=`hexdump -n4 -e '"%c%c%c%c\n"' $RESTORERAMDISK`&lt;br /&gt;if [ "$FILEFORMAT" == "8900" ]&lt;br /&gt;then&lt;br /&gt;  DECRYPTKEY=`strings $RESTORERAMDISK | egrep "^[0-9a-fA-F]{72}\$"`&lt;br /&gt;  if [ "$DECRYPTKEY" == "" ]; then&lt;br /&gt;    RAMDISKLENGTH=`hexdump -s12 -n4 -e '"%d\n"' $RESTORERAMDISK`&lt;br /&gt;    RAMDISKCOUNT=`echo $RAMDISKLENGTH / 512 | bc`&lt;br /&gt;    dd if=$RESTORERAMDISK of=$DEVICECLASS$PRODUCTVERSION$BUILDVERSION.stripped.dmg bs=512 skip=4 count=$RAMDISKCOUNT conv=sync  &gt; /dev/null 2&gt;/dev/null&lt;br /&gt;    openssl enc -d -in $DEVICECLASS$PRODUCTVERSION$BUILDVERSION.stripped.dmg -out $DEVICECLASS$PRODUCTVERSION$BUILDVERSION.ramdisk.dmg  -aes-128-cbc -K 188458A6D15034DFE386F23B61D43774 -iv 0  &gt; /dev/null 2&gt;/dev/null&lt;br /&gt;    rm -f $DEVICECLASS$PRODUCTVERSION$BUILDVERSION.stripped.dmg&lt;br /&gt;  else&lt;br /&gt;    dd if=$RESTORERAMDISK of=$DEVICECLASS$PRODUCTVERSION$BUILDVERSION.ramdisk.dmg bs=512 skip=4 conv=sync  &gt; /dev/null 2&gt;/dev/null&lt;br /&gt;  fi&lt;br /&gt;else&lt;br /&gt;  RAMDISKLENGTH=`hexdump -s12 -n4 -e '"%d\n"' $RESTORERAMDISK`&lt;br /&gt;  RAMDISKCOUNT=`echo $RAMDISKLENGTH / 32 | bc`&lt;br /&gt;  dd if=$RESTORERAMDISK of=$DEVICECLASS$PRODUCTVERSION$BUILDVERSION.ramdisk.dmg bs=32 skip=1 count=$RAMDISKCOUNT conv=sync  &gt; /dev/null 2&gt;/dev/null&lt;br /&gt;fi&lt;br /&gt;rm -f $RESTORERAMDISK&lt;br /&gt;DECRYPTKEY=`strings $DEVICECLASS$PRODUCTVERSION$BUILDVERSION.ramdisk.dmg | egrep "^[0-9a-fA-F]{72}\$"`&lt;br /&gt;if [ "$DECRYPTKEY" == "" ]; then&lt;br /&gt;  echo "Decrypt failed : $IPSWNAME"&lt;br /&gt;else&lt;br /&gt;unzip -o $IPSWNAME $SYSTEMRESTOREIMAGE  &gt; /dev/null 2&gt;/dev/null&lt;br /&gt;./vfdecrypt -i $SYSTEMRESTOREIMAGE -o $DEVICECLASS$PRODUCTVERSION$BUILDVERSION.decrypted.dmg -k $DECRYPTKEY  &gt; /dev/null 2&gt;/dev/null&lt;br /&gt;rm -f $SYSTEMRESTOREIMAGE&lt;br /&gt;echo &lt;br /&gt;md5 $IPSWNAME&lt;br /&gt;echo "RAMDISK = $DEVICECLASS$PRODUCTVERSION$BUILDVERSION.ramdisk.dmg"&lt;br /&gt;echo "FILESYSTEM = $DEVICECLASS$PRODUCTVERSION$BUILDVERSION.decrypted.dmg"&lt;br /&gt;echo "DECRYPTKEY = $DECRYPTKEY"&lt;br /&gt;DDONE=1&lt;br /&gt;fi&lt;br /&gt;else&lt;br /&gt;  echo "Invalid ipsw file $IPSWNAME"&lt;br /&gt;fi&lt;br /&gt;else&lt;br /&gt;echo "$IPSWNAME NOT FOUND"&lt;br /&gt;fi&lt;br /&gt;done&lt;br /&gt;if [ "$DDONE" == "1" ]; then&lt;br /&gt;  echo "Job Completed!!!"&lt;br /&gt;fi&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;If you find this info useful, please consider to &lt;a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&amp;amp;business=tungchingkai%40gmail%2ecom&amp;amp;item_name=CK%27s%20IT%20blog&amp;amp;item_number=D1&amp;amp;amount=1%2e00&amp;amp;no_shipping=0&amp;amp;no_note=1&amp;amp;tax=0&amp;amp;currency_code=USD&amp;amp;lc=US&amp;amp;bn=PP%2dDonationsBF&amp;amp;charset=UTF%2d8"&gt; &lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_3LRNVfBfliQ/R5hBOTnvj6I/AAAAAAAAAHw/J0hBY2TEAuc/s320/btn_donate_small.gif" alt="" id="BLOGGER_PHOTO_ID_5158945087193845666" border="0" /&gt;&lt;/a&gt; $1 by clicking the Donate button.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-4770794426062857203?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/4770794426062857203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=4770794426062857203' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/4770794426062857203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/4770794426062857203'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2008/05/iphone11205a258frestoreipsw-decrypt.html' title='iPhone1,1_2.0_5A258f_Restore.ipsw decrypt method'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_3LRNVfBfliQ/R5hBOTnvj6I/AAAAAAAAAHw/J0hBY2TEAuc/s72-c/btn_donate_small.gif' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-1988910953271771282</id><published>2008-05-05T16:19:00.002+08:00</published><updated>2008-05-05T22:39:26.903+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='png'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><title type='text'>iPhone PNG collections</title><content type='html'>see here &lt;a href="http://cocoatouchdev.com/iphone-png-collection-t27.html"&gt;http://cocoatouchdev.com/iphone-png-collection-t27.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;and here &lt;a href="http://cocoatouchdev.com/iphone-2-0-applications-png-collection-t28.html"&gt;http://cocoatouchdev.com/iphone-2-0-applications-png-collection-t28.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-1988910953271771282?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/1988910953271771282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=1988910953271771282' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/1988910953271771282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/1988910953271771282'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2008/05/iphone-png-collections.html' title='iPhone PNG collections'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-8523802840014587615</id><published>2008-05-05T12:37:00.004+08:00</published><updated>2008-05-05T14:50:07.359+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone SDK'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><title type='text'>Xcode workspace</title><content type='html'>In order to use the Xcode workspace more efficiently, these are the additional guides as most of the times, a programmer will work on the text/code editor&lt;br /&gt;&lt;br /&gt;(1) Use the View -&gt; Zoom Editor in&lt;br /&gt;when you select a source file e.g. main.m&lt;br /&gt;&lt;br /&gt;(2) Use split button (grey square on the right) to create text/code editor window to create additional text/code editor view&lt;br /&gt;when you are editing the source file&lt;br /&gt;&lt;br /&gt;(3) Use pragma marks in your code, so that you can jump quickly to your code in the text/code editor window using the navigation bar&lt;br /&gt;e.g.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#pragma mark -&lt;br /&gt;#pragma mark PreferencesTable Datasource Methods&lt;br /&gt;// MARK:&lt;br /&gt;// TODO:&lt;br /&gt;// FIXME:&lt;br /&gt;// !!!:&lt;br /&gt;// ???:&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;(4) Highlight the identifier and press "command+ double click" to jump definition&lt;br /&gt;&lt;br /&gt;(5) use shortcut key "esc" for code completion&lt;br /&gt;&lt;br /&gt;(6) View -&gt; Text -&gt; Wrap Lines&lt;br /&gt;&lt;br /&gt;(7) Use code folding in text/code editor&lt;br /&gt;&lt;br /&gt;Please goto Help -&gt; Xcode workspace guide in Xcode environment for details on how to perform these functions&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-8523802840014587615?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/8523802840014587615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=8523802840014587615' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/8523802840014587615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/8523802840014587615'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2008/05/xcode-workspace.html' title='Xcode workspace'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-1097161053842887210</id><published>2008-05-04T02:43:00.000+08:00</published><updated>2008-05-04T02:44:58.025+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone ToolChain'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone SDK'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone 2.0 application'/><title type='text'>Firmware 2.0 ported app : iCountDown</title><content type='html'>see here&lt;br /&gt;&lt;a href="http://hackint0sh.org/forum/showthread.php?t=39955"&gt;http://hackint0sh.org/forum/showthread.php?t=39955&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-1097161053842887210?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/1097161053842887210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=1097161053842887210' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/1097161053842887210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/1097161053842887210'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2008/05/firmware-20-ported-app-icountdown.html' title='Firmware 2.0 ported app : iCountDown'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1136927038369577335.post-3562191687312269902</id><published>2008-04-19T14:30:00.005+08:00</published><updated>2008-04-19T14:40:36.659+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone SDK'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone 2.0 application'/><title type='text'>My First iPhone firmware 2.0 application Embark</title><content type='html'>I have written a small application for firmware 2.0 beta 3 iPhone using the open tool chain header&lt;br /&gt;&lt;br /&gt;This small application allows you to have place shortcut icon in homescreen for &lt;br /&gt;telephone dial, sms, email or webpage&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3LRNVfBfliQ/SAmTTnJUF9I/AAAAAAAAAKI/G4zxwcEgzIE/s1600-h/embarkicon.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_3LRNVfBfliQ/SAmTTnJUF9I/AAAAAAAAAKI/G4zxwcEgzIE/s320/embarkicon.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5190842010656053202" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Requirements :&lt;br /&gt;PWNED iPhone with firmware 2.0 beta 3 (build 5A240d)&lt;br /&gt;SSH installed in your iPhone, so that you can install it via wifi&lt;br /&gt;&lt;br /&gt;Details see this post&lt;br /&gt;&lt;a href="http://www.iphone.org.hk/cgi-bin/ch/topic_show.cgi?id=6264&amp;h=1#27987"&gt;http://www.iphone.org.hk/cgi-bin/ch/topic_show.cgi?id=6264&amp;h=1#27987&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Application Binary can be downloaded from &lt;a href="http://www.iphone.org.hk/attach/27987-Embark.zip"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1136927038369577335-3562191687312269902?l=tungchingkai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tungchingkai.blogspot.com/feeds/3562191687312269902/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1136927038369577335&amp;postID=3562191687312269902' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/3562191687312269902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1136927038369577335/posts/default/3562191687312269902'/><link rel='alternate' type='text/html' href='http://tungchingkai.blogspot.com/2008/04/my-first-iphone-firmware-20-application.html' title='My First iPhone firmware 2.0 application Embark'/><author><name>javacom</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_3LRNVfBfliQ/SAmTTnJUF9I/AAAAAAAAAKI/G4zxwcEgzIE/s72-c/embarkicon.png' height='72' width='72'/><thr:total>2</thr:total></entry></feed>
