<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;A08FRHY_eSp7ImA9WhRaGUU.&quot;"><id>tag:blogger.com,1999:blog-2104108011617545171</id><updated>2012-02-23T17:36:55.841+08:00</updated><category term="droiddoc" /><category term="Remote desktop" /><category term="activity" /><category term="SSH" /><category term="vi" /><category term="vsftp" /><category term="sqlite" /><category term="adb" /><category term="Build" /><category term="M$" /><category term="file system" /><category term="Environment" /><category term="android" /><category term="emulator" /><category term="git" /><category term="shell" /><category term="SDCard" /><category term="sdk" /><category term="sign" /><category term="skin" /><category term="tips" /><category term="apn" /><category term="Eclipse" /><category term="Google API" /><category term="Ubuntu" /><category term="connectivity" /><category term="Manifest" /><category term="error" /><title>Android experiences</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://bradchow.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://bradchow.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Brad</name><uri>http://www.blogger.com/profile/14474472269520424510</uri><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>34</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/blogspot/rbmgN" /><feedburner:info uri="blogspot/rbmgn" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;A08FRHc5eCp7ImA9WhRaGUU.&quot;"><id>tag:blogger.com,1999:blog-2104108011617545171.post-3896598415158636312</id><published>2012-02-23T16:44:00.001+08:00</published><updated>2012-02-23T17:36:55.920+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-23T17:36:55.920+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="file system" /><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu" /><title>How to support exFAT on ubuntu</title><content type="html">&lt;em style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;sudo apt-add-repository ppa:relan/exfat&lt;/em&gt;&lt;br /&gt;
&lt;em style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt; sudo apt-get update&lt;br /&gt;
sudo apt-get install fuse-exfat&lt;/em&gt;&lt;br /&gt;
&lt;b style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small; line-height: 18px;"&gt;Success on 11.04&lt;/b&gt;&lt;br /&gt;
&lt;i style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small; line-height: 18px;"&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;span style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: x-small;"&gt;&lt;span style="line-height: 18px;"&gt;If you use 10.04, you should continue below.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;i style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small; line-height: 18px;"&gt;&lt;b&gt;Success on 10.04&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;span style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: x-small; line-height: 18px;"&gt;sudo mkdir /media/Data&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: x-small; line-height: 18px;"&gt;sudo mount -t exfat-fuse /dev/sda6 /media/Data&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: x-small;"&gt;&lt;span style="line-height: 18px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: x-small;"&gt;&lt;span style="line-height: 18px;"&gt;[Unmount]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: x-small;"&gt;&lt;span style="line-height: 18px;"&gt;sudo umount /media/Data&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: x-small;"&gt;&lt;span style="line-height: 18px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: x-small;"&gt;&lt;span style="line-height: 18px;"&gt;&lt;b&gt;Note:&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: x-small;"&gt;&lt;span style="line-height: 18px;"&gt;'/dev/sda6/ is Device ID, please check in System -&amp;gt; Administration -&amp;gt; &amp;nbsp;Disk Utility.&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/2104108011617545171-3896598415158636312?l=bradchow.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nV-pNxCLw9UBgnh20WwGYqbuOmA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nV-pNxCLw9UBgnh20WwGYqbuOmA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nV-pNxCLw9UBgnh20WwGYqbuOmA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nV-pNxCLw9UBgnh20WwGYqbuOmA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/rbmgN/~4/wI9qHaw59KI" height="1" width="1"/&gt;</content><link rel="related" href="http://louis3c.blogspot.com/2011/11/win7exfatubuntu-sudo-apt-add-repository.html" title="How to support exFAT on ubuntu" /><link rel="replies" type="application/atom+xml" href="http://bradchow.blogspot.com/feeds/3896598415158636312/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://bradchow.blogspot.com/2012/02/how-to-support-exfat-on-ubuntu.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/3896598415158636312?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/3896598415158636312?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/rbmgN/~3/wI9qHaw59KI/how-to-support-exfat-on-ubuntu.html" title="How to support exFAT on ubuntu" /><author><name>Brad</name><uri>http://www.blogger.com/profile/14474472269520424510</uri><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><feedburner:origLink>http://bradchow.blogspot.com/2012/02/how-to-support-exfat-on-ubuntu.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUAMQHk6eSp7ImA9WhdXGUs.&quot;"><id>tag:blogger.com,1999:blog-2104108011617545171.post-3504463772339431419</id><published>2011-09-02T20:49:00.002+08:00</published><updated>2011-09-02T20:49:41.711+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-02T20:49:41.711+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sign" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>How to sign apk</title><content type="html">&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;"&gt;&lt;span class="Apple-style-span" style="background-color: black; color: white;"&gt;java -jar out/host/linux-x86/framework/signapk.jar build/target/product/security/platform.x509.pem build/target/product/security/platform.pk8 Test.apk.unsigned Test.apk&lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2104108011617545171-3504463772339431419?l=bradchow.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ji-Ow9ug8jvPV10CI_BoD_OSyHA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ji-Ow9ug8jvPV10CI_BoD_OSyHA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ji-Ow9ug8jvPV10CI_BoD_OSyHA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ji-Ow9ug8jvPV10CI_BoD_OSyHA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/rbmgN/~4/wcenWlPqgm8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bradchow.blogspot.com/feeds/3504463772339431419/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://bradchow.blogspot.com/2011/09/how-to-sign-apk.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/3504463772339431419?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/3504463772339431419?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/rbmgN/~3/wcenWlPqgm8/how-to-sign-apk.html" title="How to sign apk" /><author><name>Brad</name><uri>http://www.blogger.com/profile/14474472269520424510</uri><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><feedburner:origLink>http://bradchow.blogspot.com/2011/09/how-to-sign-apk.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUMDQ3k-fSp7ImA9WhdQF0g.&quot;"><id>tag:blogger.com,1999:blog-2104108011617545171.post-1472881957213924451</id><published>2011-08-19T19:31:00.002+08:00</published><updated>2011-08-19T19:31:12.755+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-19T19:31:12.755+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="shell" /><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu" /><title>How to beep</title><content type="html">&lt;br /&gt;
sudo modprobe pcspkr&lt;br /&gt;
beep&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/2104108011617545171-1472881957213924451?l=bradchow.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/VABaqN8dHMGbPVMvlBGZAP7oYG4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VABaqN8dHMGbPVMvlBGZAP7oYG4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/VABaqN8dHMGbPVMvlBGZAP7oYG4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VABaqN8dHMGbPVMvlBGZAP7oYG4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/rbmgN/~4/fhfzSD594jo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bradchow.blogspot.com/feeds/1472881957213924451/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://bradchow.blogspot.com/2011/08/how-to-beep.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/1472881957213924451?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/1472881957213924451?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/rbmgN/~3/fhfzSD594jo/how-to-beep.html" title="How to beep" /><author><name>Brad</name><uri>http://www.blogger.com/profile/14474472269520424510</uri><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><feedburner:origLink>http://bradchow.blogspot.com/2011/08/how-to-beep.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkYDRH84fip7ImA9WhZTE08.&quot;"><id>tag:blogger.com,1999:blog-2104108011617545171.post-7884712365568116117</id><published>2011-03-17T09:09:00.000+08:00</published><updated>2011-03-17T09:09:35.136+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-17T09:09:35.136+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="M$" /><category scheme="http://www.blogger.com/atom/ns#" term="Build" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Get Android source code in M$ Windows</title><content type="html">&lt;span style="color: red;"&gt;(Updated in 20110317)&lt;/span&gt;&lt;br /&gt;
Link to &lt;a href="http://code.google.com/p/msysgit/"&gt;http://code.google.com/p/msysgit/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Download the Git application as below red rectangle.&lt;br /&gt;
&lt;img alt="git" class="alignnone size-full wp-image-104" height="103" src="http://bradchow.files.wordpress.com/2009/01/git.jpg" title="git" width="436" /&gt;&lt;br /&gt;
&lt;br /&gt;
Keep pressing next to install Git. (Very easy!!)&lt;br /&gt;
Execute Git by Git bash&lt;br /&gt;
Create a directory to get the Android source code and copy "autogit.sh" to android_source folder&lt;br /&gt;
cd /c&lt;br /&gt;
mkdir android_source&lt;br /&gt;
cd android_source&lt;br /&gt;
sh &lt;a href="https://docs.google.com/leaf?id=0B1KLYLroMk--NjNiYzdjZDYtYzhmZS00OWMwLTkyOGQtMDE1YTRiMTQyNDhi&amp;amp;hl=en&amp;amp;authkey=CO2zxY8J"&gt;autogit.sh&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
(Need about 13.7 GB)&lt;br /&gt;
&lt;br /&gt;
autogit.sh is created by me and reference by &lt;a href="http://android.git.kernel.org/?a=project_index"&gt;http://android.git.kernel.org/?a=project_index&lt;/a&gt;&lt;br /&gt;
There are 163 projects in Android open source project.&lt;br /&gt;
If the structure of this project is modified, please tell me to modify autogit.sh.&lt;br /&gt;
&lt;br /&gt;
Reference:&lt;br /&gt;
&lt;a href="http://ysl-paradise.blogspot.com/2008/10/windows-android.html"&gt;如何在 Windows 平台上下載 Android 的原始碼？&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2104108011617545171-7884712365568116117?l=bradchow.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Is3S9qKpF-FsYtUjxIG6qalLA4w/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Is3S9qKpF-FsYtUjxIG6qalLA4w/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Is3S9qKpF-FsYtUjxIG6qalLA4w/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Is3S9qKpF-FsYtUjxIG6qalLA4w/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/rbmgN/~4/XEq6GAZjOBs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bradchow.blogspot.com/feeds/7884712365568116117/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://bradchow.blogspot.com/2009/01/get-android-source-code-in-m-windows.html#comment-form" title="57 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/7884712365568116117?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/7884712365568116117?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/rbmgN/~3/XEq6GAZjOBs/get-android-source-code-in-m-windows.html" title="Get Android source code in M$ Windows" /><author><name>Brad</name><uri>http://www.blogger.com/profile/14474472269520424510</uri><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>57</thr:total><feedburner:origLink>http://bradchow.blogspot.com/2009/01/get-android-source-code-in-m-windows.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4HR3s5fyp7ImA9Wx9bFEk.&quot;"><id>tag:blogger.com,1999:blog-2104108011617545171.post-202991543686739785</id><published>2011-02-23T15:08:00.000+08:00</published><updated>2011-02-23T15:08:56.527+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-23T15:08:56.527+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="shell" /><title>shell script - test</title><content type="html">&lt;b&gt;Check if the string is null&lt;/b&gt;&lt;br /&gt;
test -z $var &amp;amp;&amp;amp; echo "The string is null" || echo "The string is not null"&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Check if the var1 is greater than var2&lt;/b&gt;&lt;br /&gt;
test $var1 -gt $var2&amp;nbsp;&amp;amp;&amp;amp; echo "var1 &amp;gt; var2" || echo "var1 &amp;lt; var2"&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Check if value is 0&lt;/b&gt;&lt;br /&gt;
test $var -eq 0&amp;nbsp;&amp;amp;&amp;amp; echo "var1 is 0" || echo "var1 is not 0"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2104108011617545171-202991543686739785?l=bradchow.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/CVQiQljZVJOYCE8tukeAgwvdc1A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CVQiQljZVJOYCE8tukeAgwvdc1A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/CVQiQljZVJOYCE8tukeAgwvdc1A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CVQiQljZVJOYCE8tukeAgwvdc1A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/rbmgN/~4/3DNhafE04TA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bradchow.blogspot.com/feeds/202991543686739785/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://bradchow.blogspot.com/2011/02/shell-script-test.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/202991543686739785?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/202991543686739785?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/rbmgN/~3/3DNhafE04TA/shell-script-test.html" title="shell script - test" /><author><name>Brad</name><uri>http://www.blogger.com/profile/14474472269520424510</uri><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><feedburner:origLink>http://bradchow.blogspot.com/2011/02/shell-script-test.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0MFRnk4cSp7ImA9Wx9bE0k.&quot;"><id>tag:blogger.com,1999:blog-2104108011617545171.post-5399886622344797041</id><published>2011-02-22T11:30:00.000+08:00</published><updated>2011-02-22T11:30:17.739+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-22T11:30:17.739+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="shell" /><title>shell script function</title><content type="html">&lt;b&gt;No parameter&lt;/b&gt;&lt;br /&gt;
function_name() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;statement&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;call function&lt;/b&gt;&lt;br /&gt;
function_name&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
&lt;b&gt;Parameter&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;function_name() {&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;var=$1&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;var2=$2&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;}&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;call function&lt;/b&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;function_name arg1 arg2&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;hr /&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Return value (1)&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;function_name() {&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;statement&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return 2&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;}&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;call function&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;echo "Return is: $?"&lt;/div&gt;&lt;div style="font-weight: normal;"&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;hr /&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Return value (2)&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;function_name() {&lt;/div&gt;&lt;/div&gt;&lt;div style="font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;statement&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return $RET&lt;/div&gt;&lt;/div&gt;&lt;div style="font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;}&lt;/div&gt;&lt;/div&gt;&lt;div style="font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div style="font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;call function&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;echo "Return is: &lt;/div&gt;&lt;div style="display: inline !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="display: inline !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="display: inline !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;$RET"&lt;/div&gt;&lt;/div&gt;&lt;div style="font-weight: normal;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="font-weight: normal;"&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/2104108011617545171-5399886622344797041?l=bradchow.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/bqp8qO0heGu7_p_CwtAZ91dtxK0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bqp8qO0heGu7_p_CwtAZ91dtxK0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/bqp8qO0heGu7_p_CwtAZ91dtxK0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bqp8qO0heGu7_p_CwtAZ91dtxK0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/rbmgN/~4/P0cX7o8jscw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bradchow.blogspot.com/feeds/5399886622344797041/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://bradchow.blogspot.com/2011/02/shell-script-function.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/5399886622344797041?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/5399886622344797041?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/rbmgN/~3/P0cX7o8jscw/shell-script-function.html" title="shell script function" /><author><name>Brad</name><uri>http://www.blogger.com/profile/14474472269520424510</uri><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><feedburner:origLink>http://bradchow.blogspot.com/2011/02/shell-script-function.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YAR3s-fyp7ImA9Wx9bEkQ.&quot;"><id>tag:blogger.com,1999:blog-2104108011617545171.post-5901030044418506383</id><published>2011-02-21T20:25:00.000+08:00</published><updated>2011-02-21T20:25:46.557+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-21T20:25:46.557+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="adb" /><title>send intent and key event by adb</title><content type="html">&lt;b&gt;Send intent&lt;/b&gt;&lt;br /&gt;
adb shell am start -a [intent] -n [class]&lt;br /&gt;
&lt;br /&gt;
for example:&lt;br /&gt;
open Message application&lt;br /&gt;
adb shell am start -a android.intent.action.MAIN -n com.android.mms/.ui.ConversationList&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Send key event&lt;/b&gt;&lt;br /&gt;
adb shell input keyevent 7 # for key '0'&lt;br /&gt;
&lt;br /&gt;
also can send string as a text,&lt;br /&gt;
adb shell input text "ANDROID"&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #333333; font-family: verdana; font-size: 14px; line-height: 24px;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style="font-size: 1em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;0 --&amp;gt;  "KEYCODE_UNKNOWN"
1 --&amp;gt;  "KEYCODE_MENU"
2 --&amp;gt;  "KEYCODE_SOFT_RIGHT"
3 --&amp;gt;  "KEYCODE_HOME"
4 --&amp;gt;  "KEYCODE_BACK"
5 --&amp;gt;  "KEYCODE_CALL"
6 --&amp;gt;  "KEYCODE_ENDCALL"
7 --&amp;gt;  "KEYCODE_0"
8 --&amp;gt;  "KEYCODE_1"
9 --&amp;gt;  "KEYCODE_2"
10 --&amp;gt;  "KEYCODE_3"
11 --&amp;gt;  "KEYCODE_4"
12 --&amp;gt;  "KEYCODE_5"
13 --&amp;gt;  "KEYCODE_6"
14 --&amp;gt;  "KEYCODE_7"
15 --&amp;gt;  "KEYCODE_8"
16 --&amp;gt;  "KEYCODE_9"
17 --&amp;gt;  "KEYCODE_STAR"
18 --&amp;gt;  "KEYCODE_POUND"
19 --&amp;gt;  "KEYCODE_DPAD_UP"
20 --&amp;gt;  "KEYCODE_DPAD_DOWN"
21 --&amp;gt;  "KEYCODE_DPAD_LEFT"
22 --&amp;gt;  "KEYCODE_DPAD_RIGHT"
23 --&amp;gt;  "KEYCODE_DPAD_CENTER"
24 --&amp;gt;  "KEYCODE_VOLUME_UP"
25 --&amp;gt;  "KEYCODE_VOLUME_DOWN"
26 --&amp;gt;  "KEYCODE_POWER"
27 --&amp;gt;  "KEYCODE_CAMERA"
28 --&amp;gt;  "KEYCODE_CLEAR"
29 --&amp;gt;  "KEYCODE_A"
30 --&amp;gt;  "KEYCODE_B"
31 --&amp;gt;  "KEYCODE_C"
32 --&amp;gt;  "KEYCODE_D"
33 --&amp;gt;  "KEYCODE_E"
34 --&amp;gt;  "KEYCODE_F"
35 --&amp;gt;  "KEYCODE_G"
36 --&amp;gt;  "KEYCODE_H"
37 --&amp;gt;  "KEYCODE_I"
38 --&amp;gt;  "KEYCODE_J"
39 --&amp;gt;  "KEYCODE_K"
40 --&amp;gt;  "KEYCODE_L"
41 --&amp;gt;  "KEYCODE_M"
42 --&amp;gt;  "KEYCODE_N"
43 --&amp;gt;  "KEYCODE_O"
44 --&amp;gt;  "KEYCODE_P"
45 --&amp;gt;  "KEYCODE_Q"
46 --&amp;gt;  "KEYCODE_R"
47 --&amp;gt;  "KEYCODE_S"
48 --&amp;gt;  "KEYCODE_T"
49 --&amp;gt;  "KEYCODE_U"
50 --&amp;gt;  "KEYCODE_V"
51 --&amp;gt;  "KEYCODE_W"
52 --&amp;gt;  "KEYCODE_X"
53 --&amp;gt;  "KEYCODE_Y"
54 --&amp;gt;  "KEYCODE_Z"
55 --&amp;gt;  "KEYCODE_COMMA"
56 --&amp;gt;  "KEYCODE_PERIOD"
57 --&amp;gt;  "KEYCODE_ALT_LEFT"
58 --&amp;gt;  "KEYCODE_ALT_RIGHT"
59 --&amp;gt;  "KEYCODE_SHIFT_LEFT"
60 --&amp;gt;  "KEYCODE_SHIFT_RIGHT"
61 --&amp;gt;  "KEYCODE_TAB"
62 --&amp;gt;  "KEYCODE_SPACE"
63 --&amp;gt;  "KEYCODE_SYM"
64 --&amp;gt;  "KEYCODE_EXPLORER"
65 --&amp;gt;  "KEYCODE_ENVELOPE"
66 --&amp;gt;  "KEYCODE_ENTER"
67 --&amp;gt;  "KEYCODE_DEL"
68 --&amp;gt;  "KEYCODE_GRAVE"
69 --&amp;gt;  "KEYCODE_MINUS"
70 --&amp;gt;  "KEYCODE_EQUALS"
71 --&amp;gt;  "KEYCODE_LEFT_BRACKET"
72 --&amp;gt;  "KEYCODE_RIGHT_BRACKET"
73 --&amp;gt;  "KEYCODE_BACKSLASH"
74 --&amp;gt;  "KEYCODE_SEMICOLON"
75 --&amp;gt;  "KEYCODE_APOSTROPHE"
76 --&amp;gt;  "KEYCODE_SLASH"
77 --&amp;gt;  "KEYCODE_AT"
78 --&amp;gt;  "KEYCODE_NUM"
79 --&amp;gt;  "KEYCODE_HEADSETHOOK"
80 --&amp;gt;  "KEYCODE_FOCUS"
81 --&amp;gt;  "KEYCODE_PLUS"
82 --&amp;gt;  "KEYCODE_MENU"
83 --&amp;gt;  "KEYCODE_NOTIFICATION"
84 --&amp;gt;  "KEYCODE_SEARCH"
85 --&amp;gt;  "TAG_LAST_KEYCODE"&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2104108011617545171-5901030044418506383?l=bradchow.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WCcbXeSqB7tQbUiFFg1FZQAeFgY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WCcbXeSqB7tQbUiFFg1FZQAeFgY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WCcbXeSqB7tQbUiFFg1FZQAeFgY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WCcbXeSqB7tQbUiFFg1FZQAeFgY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/rbmgN/~4/pPkwHx__qBI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bradchow.blogspot.com/feeds/5901030044418506383/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://bradchow.blogspot.com/2011/02/send-intent-and-key-event-by-adb.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/5901030044418506383?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/5901030044418506383?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/rbmgN/~3/pPkwHx__qBI/send-intent-and-key-event-by-adb.html" title="send intent and key event by adb" /><author><name>Brad</name><uri>http://www.blogger.com/profile/14474472269520424510</uri><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><feedburner:origLink>http://bradchow.blogspot.com/2011/02/send-intent-and-key-event-by-adb.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE8HQnY-eSp7ImA9Wx9UGU0.&quot;"><id>tag:blogger.com,1999:blog-2104108011617545171.post-7224238008597639093</id><published>2011-02-18T01:08:00.000+08:00</published><updated>2011-02-17T09:40:33.851+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-17T09:40:33.851+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="android" /><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu" /><title>grep</title><content type="html">&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;-i, --ignore-case&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Ignore case distinctions in both the PATTERN and the input files.  (-i is specified by POSIX.)&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;-R, -r, --recursive&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Read all files under each directory, recursively; this is equivalent to the -d recurse option.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;-v, --invert-match&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Invert the sense of matching, to select non-matching lines.  (-v is specified by POSIX.)&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;-w, --word-regexp&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Select only those lines containing matches that form whole words.  The test is that  the  matching  substring  must  either  be  at  the beginning of the line, or preceded by a non-word constituent character.  Similarly, it must be either at the end of the line or followed by a non-word constituent character.  Word-constituent characters are letters, digits, and the underscore.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: inherit; line-height: 24px;"&gt;-A&amp;nbsp;NUM，--after-context=NUM&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="line-height: 24px;"&gt;Print NUM lines of trailing context after matching lines.&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 24px;"&gt;Places a line containing a group separator (--) between&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 24px;"&gt;&amp;nbsp;contiguous groups of matches. With the -o or&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 24px;"&gt;&amp;nbsp;--only-matching option, this has no effect and a warning is&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 24px;"&gt;given.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: inherit; line-height: 24px;"&gt;-C&amp;nbsp;[NUM],&amp;nbsp;-NUM,&amp;nbsp;--context[=NUM]&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="line-height: 24px;"&gt;Print NUM lines of output context. Places a line&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 24px;"&gt;&amp;nbsp;containing a group separator (--) between contiguous groups&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 24px;"&gt;of matches. With the -o or --only-matching option, this&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 24px;"&gt;&amp;nbsp;has no effect and a warning is given.&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/2104108011617545171-7224238008597639093?l=bradchow.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/KTzw-yJFzdgBsmTnfxjGuQ4iAJ4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KTzw-yJFzdgBsmTnfxjGuQ4iAJ4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/KTzw-yJFzdgBsmTnfxjGuQ4iAJ4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KTzw-yJFzdgBsmTnfxjGuQ4iAJ4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/rbmgN/~4/PS_hNfLfiTQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bradchow.blogspot.com/feeds/7224238008597639093/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://bradchow.blogspot.com/2010/04/grep.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/7224238008597639093?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/7224238008597639093?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/rbmgN/~3/PS_hNfLfiTQ/grep.html" title="grep" /><author><name>Brad</name><uri>http://www.blogger.com/profile/14474472269520424510</uri><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><feedburner:origLink>http://bradchow.blogspot.com/2010/04/grep.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4FRnk8fSp7ImA9Wx9WGE4.&quot;"><id>tag:blogger.com,1999:blog-2104108011617545171.post-3289707797369693871</id><published>2011-01-12T19:45:00.000+08:00</published><updated>2011-01-24T10:08:37.775+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-24T10:08:37.775+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="git" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu" /><title>git</title><content type="html">git diff&lt;br/&gt;find the different between local and server.&lt;br/&gt;&lt;br/&gt;git diff .&lt;br/&gt;find the different between . and server.&lt;br/&gt;&lt;br/&gt;git reset --hard&lt;br/&gt;all the changes are lost.&lt;br/&gt;&lt;br/&gt;git reset --hard HEAD~2&lt;br/&gt;reset to previous 2 commit&lt;br/&gt;&lt;br/&gt;git reset --hard &lt;br/&gt;reset to commit-id&lt;br/&gt;&lt;br/&gt;git pull&lt;br/&gt;sync code&lt;br/&gt;&lt;br/&gt;git branch -f  &lt;br/&gt;change branch&lt;br/&gt;&lt;br/&gt;git checkout &lt;br/&gt;check out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2104108011617545171-3289707797369693871?l=bradchow.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MVYI41udWWlpWHlWyveHSvOMR7Q/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MVYI41udWWlpWHlWyveHSvOMR7Q/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/MVYI41udWWlpWHlWyveHSvOMR7Q/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MVYI41udWWlpWHlWyveHSvOMR7Q/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/rbmgN/~4/rdxgtQv0ZPw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bradchow.blogspot.com/feeds/3289707797369693871/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://bradchow.blogspot.com/2011/01/git.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/3289707797369693871?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/3289707797369693871?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/rbmgN/~3/rdxgtQv0ZPw/git.html" title="git" /><author><name>Brad</name><uri>http://www.blogger.com/profile/14474472269520424510</uri><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><feedburner:origLink>http://bradchow.blogspot.com/2011/01/git.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4FRnk8cCp7ImA9Wx9WGE4.&quot;"><id>tag:blogger.com,1999:blog-2104108011617545171.post-8166887022906674966</id><published>2011-01-12T19:39:00.000+08:00</published><updated>2011-01-24T10:08:37.778+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-24T10:08:37.778+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tips" /><category scheme="http://www.blogger.com/atom/ns#" term="shell" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu" /><title>count from file output</title><content type="html">cat file | cut -f 1 | awk '{tot=tot+$1} END {print tot}'&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2104108011617545171-8166887022906674966?l=bradchow.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/G7VlDfZC7fbjWtgttYjS-fg0P7c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/G7VlDfZC7fbjWtgttYjS-fg0P7c/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/G7VlDfZC7fbjWtgttYjS-fg0P7c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/G7VlDfZC7fbjWtgttYjS-fg0P7c/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/rbmgN/~4/b6Qy1hCTkKY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bradchow.blogspot.com/feeds/8166887022906674966/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://bradchow.blogspot.com/2011/01/count-from-file-output.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/8166887022906674966?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/8166887022906674966?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/rbmgN/~3/b6Qy1hCTkKY/count-from-file-output.html" title="count from file output" /><author><name>Brad</name><uri>http://www.blogger.com/profile/14474472269520424510</uri><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><feedburner:origLink>http://bradchow.blogspot.com/2011/01/count-from-file-output.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4FRnkzeip7ImA9Wx9WGE4.&quot;"><id>tag:blogger.com,1999:blog-2104108011617545171.post-4742844715334749118</id><published>2010-08-09T14:43:00.000+08:00</published><updated>2011-01-24T10:08:37.782+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-24T10:08:37.782+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SDCard" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Check if SD card storage is available</title><content type="html">&lt;code&gt;public static boolean hasStorage(boolean requireWriteAccess) {  &lt;br/&gt;    String state = Environment.getExternalStorageState();  &lt;br/&gt;  &lt;br/&gt;    if (Environment.MEDIA_MOUNTED.equals(state)) {  &lt;br/&gt;        return true;  &lt;br/&gt;    } else if (!requireWriteAccess  &lt;br/&gt;            &amp;amp;&amp;amp; Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {  &lt;br/&gt;        return true;  &lt;br/&gt;    }  &lt;br/&gt;    return false;  &lt;br/&gt;}  &lt;/code&gt;&lt;br/&gt;&lt;br/&gt;Reference:&lt;br/&gt;&lt;a href="http://blog.elsdoerfer.name/2010/04/15/android-check-if-sd-card-storage-is-available/"&gt;Android: Check if SD card storage is available&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2104108011617545171-4742844715334749118?l=bradchow.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/cDkg-SS3ODQ-EM1b6RK9rGQq2f4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cDkg-SS3ODQ-EM1b6RK9rGQq2f4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/cDkg-SS3ODQ-EM1b6RK9rGQq2f4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cDkg-SS3ODQ-EM1b6RK9rGQq2f4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/rbmgN/~4/zNNpJlWVkHA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bradchow.blogspot.com/feeds/4742844715334749118/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://bradchow.blogspot.com/2010/08/check-if-sd-card-storage-is-available.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/4742844715334749118?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/4742844715334749118?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/rbmgN/~3/zNNpJlWVkHA/check-if-sd-card-storage-is-available.html" title="Check if SD card storage is available" /><author><name>Brad</name><uri>http://www.blogger.com/profile/14474472269520424510</uri><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><feedburner:origLink>http://bradchow.blogspot.com/2010/08/check-if-sd-card-storage-is-available.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4FRnkzfyp7ImA9Wx9WGE4.&quot;"><id>tag:blogger.com,1999:blog-2104108011617545171.post-5405872164069405661</id><published>2010-07-27T19:07:00.000+08:00</published><updated>2011-01-24T10:08:37.787+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-24T10:08:37.787+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="connectivity" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>check if any network connected</title><content type="html">private boolean checkIfNetworkConnected() {&lt;br/&gt;　　boolean result = false;&lt;br/&gt;　　ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);&lt;br/&gt;　　NetworkInfo info=connManager.getActiveNetworkInfo();&lt;br/&gt;　　if (info == null || !info.isConnected()) {&lt;br/&gt;　　　　result = false;&lt;br/&gt;　　} else {&lt;br/&gt;　　　　if (!info.isAvailable()) {&lt;br/&gt;　　　　　　result =false;&lt;br/&gt;　　　　} else {&lt;br/&gt;　　　　　　result = true;&lt;br/&gt;　　　　}&lt;br/&gt;　　}&lt;br/&gt;&lt;br/&gt;　　return result;&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;Reference:&lt;br/&gt;&lt;a href="http://jjnnykimo.pixnet.net/blog/post/30349753"&gt;Android 偵測網路是否連線&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2104108011617545171-5405872164069405661?l=bradchow.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/SetAQPa7v5MQps5bge6R75x27AY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SetAQPa7v5MQps5bge6R75x27AY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/SetAQPa7v5MQps5bge6R75x27AY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SetAQPa7v5MQps5bge6R75x27AY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/rbmgN/~4/F62_8GxMXbU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bradchow.blogspot.com/feeds/5405872164069405661/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://bradchow.blogspot.com/2010/07/check-if-any-network-connected.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/5405872164069405661?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/5405872164069405661?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/rbmgN/~3/F62_8GxMXbU/check-if-any-network-connected.html" title="check if any network connected" /><author><name>Brad</name><uri>http://www.blogger.com/profile/14474472269520424510</uri><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><feedburner:origLink>http://bradchow.blogspot.com/2010/07/check-if-any-network-connected.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4FRnkyeip7ImA9Wx9WGE4.&quot;"><id>tag:blogger.com,1999:blog-2104108011617545171.post-4088494380797893681</id><published>2010-06-28T10:42:00.000+08:00</published><updated>2011-01-24T10:08:37.792+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-24T10:08:37.792+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu" /><title>7z in Ubuntu</title><content type="html">sudo apt-get install p7zip-full&lt;br/&gt;&lt;br/&gt;//x: Extract with full paths&lt;br/&gt;7z x 7zfile&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2104108011617545171-4088494380797893681?l=bradchow.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0e7NcUo45sqrsfMiIDark93I60Q/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0e7NcUo45sqrsfMiIDark93I60Q/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0e7NcUo45sqrsfMiIDark93I60Q/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0e7NcUo45sqrsfMiIDark93I60Q/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/rbmgN/~4/iaWm6kc9_3M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bradchow.blogspot.com/feeds/4088494380797893681/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://bradchow.blogspot.com/2010/06/7z-in-ubuntu.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/4088494380797893681?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/4088494380797893681?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/rbmgN/~3/iaWm6kc9_3M/7z-in-ubuntu.html" title="7z in Ubuntu" /><author><name>Brad</name><uri>http://www.blogger.com/profile/14474472269520424510</uri><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><feedburner:origLink>http://bradchow.blogspot.com/2010/06/7z-in-ubuntu.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4FRnkycSp7ImA9Wx9WGE4.&quot;"><id>tag:blogger.com,1999:blog-2104108011617545171.post-2043248443395199155</id><published>2009-09-30T18:34:00.000+08:00</published><updated>2011-01-24T10:08:37.799+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-24T10:08:37.799+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sdk" /><category scheme="http://www.blogger.com/atom/ns#" term="droiddoc" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>make sdk fail about DroidDoc</title><content type="html">&lt;code&gt;&lt;br/&gt;$ sudo apt-get install sun-java5-jdk&lt;br/&gt;$ cd /etc/alternatives&lt;br/&gt;$ sudo rm javadoc.1.gz&lt;br/&gt;$ sudo ln -s /usr/lib/jvm/java-1.5.0-sun/man/man1/javadoc.1.gz javadoc.1.gz&lt;br/&gt;$ sudo rm javadoc&lt;br/&gt;$ sudo ln -s /usr/lib/jvm/java-1.5.0-sun/bin/javadoc javadoc&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;Reference:&lt;br/&gt;&lt;a href="http://www.iim.nctu.edu.tw/~richardlin/blog/?p=6"&gt;編譯Android cupcake SDK&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2104108011617545171-2043248443395199155?l=bradchow.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ODgeUrMrwCImXoWVpvfe9mLLhLM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ODgeUrMrwCImXoWVpvfe9mLLhLM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ODgeUrMrwCImXoWVpvfe9mLLhLM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ODgeUrMrwCImXoWVpvfe9mLLhLM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/rbmgN/~4/BOfZ1Bdkjok" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bradchow.blogspot.com/feeds/2043248443395199155/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://bradchow.blogspot.com/2009/09/make-sdk-fail-about-droiddoc.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/2043248443395199155?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/2043248443395199155?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/rbmgN/~3/BOfZ1Bdkjok/make-sdk-fail-about-droiddoc.html" title="make sdk fail about DroidDoc" /><author><name>Brad</name><uri>http://www.blogger.com/profile/14474472269520424510</uri><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><feedburner:origLink>http://bradchow.blogspot.com/2009/09/make-sdk-fail-about-droiddoc.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4FRnY7eip7ImA9Wx9WGE4.&quot;"><id>tag:blogger.com,1999:blog-2104108011617545171.post-2288494589145598049</id><published>2009-09-22T09:24:00.000+08:00</published><updated>2011-01-24T10:08:37.802+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-24T10:08:37.802+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="vi" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>how to remove ^M in vi</title><content type="html">:1,$s/&lt;span style="color:#ff0000;"&gt;&lt;strong&gt;^M&lt;/strong&gt;&lt;/span&gt;//g&lt;br/&gt;&lt;br/&gt;&lt;span style="color:#ff0000;"&gt;&lt;strong&gt;^M&lt;/strong&gt;&lt;/span&gt;: Ctrl+V, and press Enter&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2104108011617545171-2288494589145598049?l=bradchow.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OjKhnxXvUpf6a_buLyahX28gZIs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OjKhnxXvUpf6a_buLyahX28gZIs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/OjKhnxXvUpf6a_buLyahX28gZIs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OjKhnxXvUpf6a_buLyahX28gZIs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/rbmgN/~4/13rvyUXTf3w" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bradchow.blogspot.com/feeds/2288494589145598049/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://bradchow.blogspot.com/2009/09/how-to-remove-m-in-vi.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/2288494589145598049?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/2288494589145598049?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/rbmgN/~3/13rvyUXTf3w/how-to-remove-m-in-vi.html" title="how to remove ^M in vi" /><author><name>Brad</name><uri>http://www.blogger.com/profile/14474472269520424510</uri><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><feedburner:origLink>http://bradchow.blogspot.com/2009/09/how-to-remove-m-in-vi.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UMR3w4cSp7ImA9Wx9WGE4.&quot;"><id>tag:blogger.com,1999:blog-2104108011617545171.post-4578069956148476351</id><published>2009-09-20T11:26:00.000+08:00</published><updated>2011-01-24T10:14:46.239+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-24T10:14:46.239+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Get and build source code in Cygwin</title><content type="html">You should install Java 5 on your computer first!!&lt;br/&gt;Add the path of javac.exe to $PATH.&lt;br/&gt;&lt;br/&gt;Download cygwin from http://cygwin.com/setup.exe&lt;br/&gt;&lt;br/&gt;Choose A Download Site: You can choose many Taiwan sites. &lt;br/&gt;&lt;br/&gt;Select Packages:( Select Binary )&lt;br/&gt;&lt;br/&gt;Press 'View' to Not Installed&lt;br/&gt;&lt;br/&gt;Bison: A parser generator that is compatible with YACC&lt;br/&gt;Curl: Command line tool for tranferring files with HTTP, HTTPS, FTP, etc.&lt;br/&gt;Flex: A fast lexical analyzer generator&lt;br/&gt;Gcc: C compiler upgrade helper&lt;br/&gt;Git: Fast version control system - core files&lt;br/&gt;Gperf: Perfect hash function generator&lt;br/&gt;Libncurses-devel: Libraries for terminal handling (development)&lt;br/&gt;Make: The GNU version of the 'make' utility&lt;br/&gt;Python: An interactive object-oriented scripting language&lt;br/&gt;Vim: Vi IMproved - enhanced vi editor&lt;br/&gt;Wget: Utility to retrieve files from the WWW via HTTP and FTP&lt;br/&gt;Zip: The zlib compression and decompression library&lt;br/&gt;&lt;br/&gt;Installing as below picture&lt;br/&gt;&lt;br/&gt;[caption id="attachment_73" align="alignnone" width="450" caption="Installing Cygwin"]&lt;a href="http://bradchow.files.wordpress.com/2008/11/1.jpg"&gt;&lt;img class="size-full wp-image-73" title="1" src="http://bradchow.files.wordpress.com/2008/11/1.jpg" alt="Installing Cygwin" width="450" height="346" /&gt;&lt;/a&gt;[/caption]&lt;br/&gt;&lt;br/&gt;/*&lt;br/&gt;create a directory to store some source code&lt;br/&gt;mkdir src&lt;br/&gt;cd src&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Install libsdl (http://www.libsdl.org/) not libsdl-dev as Android open project mentioned&lt;/strong&gt;&lt;br/&gt;wget http://www.libsdl.org/release/SDL-1.2.13.tar.gz&lt;br/&gt;tar -zxvf SDL-1.2.13.tar.gz&lt;br/&gt;cd SDL-1.2.13&lt;br/&gt;./configure&lt;br/&gt;make&lt;br/&gt;make install&lt;br/&gt;if success, you can find SDL.dll in /usr/local/bin&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Install libwxgtk2.6-dev&lt;/strong&gt;&lt;br/&gt;Download "libwxgtk2.6-devel-2.6.4-14mdv2008.1.i586.rpm" from http://rpmfind.net/linux/rpm2html/search.php?query=libwxgtk-devel&lt;br/&gt;Copy it to ~/src&lt;br/&gt;*/&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Install cyg-apt&lt;/strong&gt;&lt;br/&gt;cd /bin&lt;br/&gt;wget http://www.lilypond.org/~janneke/software/cyg-apt&lt;br/&gt;chmod a+rx cyg-apt&lt;br/&gt;vi cyg-apt&lt;br/&gt;1. root = '/cygwin' =&amp;gt; root = '/'&lt;br/&gt;2. downloads = root + '/var/cache..... =&amp;gt; downloads = root + 'var/cache....&lt;br/&gt;3. config = root + '/etc/setup' =&amp;gt; config = root + 'etc/setup'&lt;br/&gt;4. mirror = 'http://mirror.mcs.anl.gov/cygwin'&lt;br/&gt;cyg-apt setup&lt;br/&gt;cyg-apt update&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Install some essential application&lt;/strong&gt;&lt;br/&gt;libsdl-dev&lt;br/&gt;libesd0-dev&lt;br/&gt;libwxgtk2.6-dev&lt;br/&gt;valgrind&lt;br/&gt;zlib1g-dev&lt;br/&gt;libncurses5-dev&lt;br/&gt;git-core gnupg&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Reference:&lt;/strong&gt;&lt;br/&gt;1. &lt;a title="Frequently Asked Questions about Java and Cygwin" href="http://www.inonit.com/cygwin/faq/" target="_blank"&gt;Frequently Asked Questions about Java and Cygwin&lt;/a&gt;&lt;br/&gt;2. &lt;a title="apt for cygwin" href="http://donc.wordpress.com/2006/08/04/apt-for-cygwin/" target="_blank"&gt;apt for cygwin&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2104108011617545171-4578069956148476351?l=bradchow.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7dVxO6DpPsrr4bHY-XoQc9GT3Lo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7dVxO6DpPsrr4bHY-XoQc9GT3Lo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7dVxO6DpPsrr4bHY-XoQc9GT3Lo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7dVxO6DpPsrr4bHY-XoQc9GT3Lo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/rbmgN/~4/ycoKbDdPMF8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bradchow.blogspot.com/feeds/4578069956148476351/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://bradchow.blogspot.com/2009/09/get-and-build-source-code-in-cygwin.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/4578069956148476351?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/4578069956148476351?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/rbmgN/~3/ycoKbDdPMF8/get-and-build-source-code-in-cygwin.html" title="Get and build source code in Cygwin" /><author><name>Brad</name><uri>http://www.blogger.com/profile/14474472269520424510</uri><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><feedburner:origLink>http://bradchow.blogspot.com/2009/09/get-and-build-source-code-in-cygwin.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4FRnY7fyp7ImA9Wx9WGE4.&quot;"><id>tag:blogger.com,1999:blog-2104108011617545171.post-3058022709262774076</id><published>2009-07-07T10:30:00.000+08:00</published><updated>2011-01-24T10:08:37.807+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-24T10:08:37.807+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Basic Concept of Android Application Components</title><content type="html">&lt;strong&gt;Activity&lt;/strong&gt;&lt;br/&gt;An application may or may not have a User Interface. If it has a user interface, it will have one or more Activity.&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Service&lt;/strong&gt;&lt;br/&gt;If an application is to have a long life cycle it should be put into a Service. For example a background data synchronization utility running continuously should be implemented as a Service.&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;BroadcastReceiver&lt;/strong&gt;&lt;br/&gt;Like Services, BroadcastReceivers do not have a User Interface. Of even more importance, the code running in the onReceive method of a BroadcastReceiver should make no assumptions about persistence or long-running operations. If the BroadcastReceiver requires more than a trivial amount of code execution, it is recommended that the code initiate a request to a Service to complete the requested functionality.&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Content Provider&lt;/strong&gt;&lt;br/&gt;If an application manages data and needs to expose that data to other applications running in the Android environment, a ContentProvider should be implemented.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Reference:&lt;br/&gt;&lt;a href="http://code.google.com/p/unlocking-android/"&gt;Unlocking Android - A Developer's Guide&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2104108011617545171-3058022709262774076?l=bradchow.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ycqbHvuasDdRO5TnEYRLqsALplw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ycqbHvuasDdRO5TnEYRLqsALplw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ycqbHvuasDdRO5TnEYRLqsALplw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ycqbHvuasDdRO5TnEYRLqsALplw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/rbmgN/~4/mJU7qbXLQnw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bradchow.blogspot.com/feeds/3058022709262774076/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://bradchow.blogspot.com/2009/07/basic-concept-of-android-application.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/3058022709262774076?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/3058022709262774076?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/rbmgN/~3/mJU7qbXLQnw/basic-concept-of-android-application.html" title="Basic Concept of Android Application Components" /><author><name>Brad</name><uri>http://www.blogger.com/profile/14474472269520424510</uri><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><feedburner:origLink>http://bradchow.blogspot.com/2009/07/basic-concept-of-android-application.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4FRnY7cSp7ImA9Wx9WGE4.&quot;"><id>tag:blogger.com,1999:blog-2104108011617545171.post-312305357281531038</id><published>2009-07-05T20:47:00.000+08:00</published><updated>2011-01-24T10:08:37.809+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-24T10:08:37.809+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Google API" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Not useful Google API for Android application</title><content type="html">&lt;a href="http://code.google.com/apis/gears/"&gt;Google Gears&lt;/a&gt;&lt;br/&gt;Gears is an open source project that enables &lt;strong&gt;&lt;span style="color:#ff0000;"&gt;more powerful web applications&lt;/span&gt;&lt;/strong&gt;, by adding new features to web browsers.&lt;br/&gt;&lt;br/&gt;&lt;a href="http://code.google.com/apis/coupons/"&gt;Google Coupon Feeds&lt;/a&gt;&lt;br/&gt;Google coupon feeds &lt;strong&gt;&lt;span style="color:#ff0000;"&gt;enable businesses to provide coupon listings&lt;/span&gt;&lt;/strong&gt; that will be included in Google search results.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2104108011617545171-312305357281531038?l=bradchow.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gRFp9gPo_piTFJ_pDs5M0iiSnXk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gRFp9gPo_piTFJ_pDs5M0iiSnXk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gRFp9gPo_piTFJ_pDs5M0iiSnXk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gRFp9gPo_piTFJ_pDs5M0iiSnXk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/rbmgN/~4/ncI_i7NlY7Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bradchow.blogspot.com/feeds/312305357281531038/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://bradchow.blogspot.com/2009/07/not-useful-google-api-for-android.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/312305357281531038?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/312305357281531038?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/rbmgN/~3/ncI_i7NlY7Q/not-useful-google-api-for-android.html" title="Not useful Google API for Android application" /><author><name>Brad</name><uri>http://www.blogger.com/profile/14474472269520424510</uri><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><feedburner:origLink>http://bradchow.blogspot.com/2009/07/not-useful-google-api-for-android.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4FRnY6eSp7ImA9Wx9WGE4.&quot;"><id>tag:blogger.com,1999:blog-2104108011617545171.post-4671723078010014678</id><published>2009-06-23T22:20:00.000+08:00</published><updated>2011-01-24T10:08:37.811+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-24T10:08:37.811+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="activity" /><category scheme="http://www.blogger.com/atom/ns#" term="Manifest" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Create a activity with no background</title><content type="html">Insert &lt;strong&gt;android:theme="@android:style/Theme.Translucent.NoTitleBar"&lt;/strong&gt; in application tag.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2104108011617545171-4671723078010014678?l=bradchow.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QOaPnWXEZOKnVHTBkEfCdsashxU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QOaPnWXEZOKnVHTBkEfCdsashxU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/QOaPnWXEZOKnVHTBkEfCdsashxU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QOaPnWXEZOKnVHTBkEfCdsashxU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/rbmgN/~4/doBCd8lsGyI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bradchow.blogspot.com/feeds/4671723078010014678/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://bradchow.blogspot.com/2009/06/create-activity-with-no-background.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/4671723078010014678?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/4671723078010014678?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/rbmgN/~3/doBCd8lsGyI/create-activity-with-no-background.html" title="Create a activity with no background" /><author><name>Brad</name><uri>http://www.blogger.com/profile/14474472269520424510</uri><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><feedburner:origLink>http://bradchow.blogspot.com/2009/06/create-activity-with-no-background.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4FRnY6eyp7ImA9Wx9WGE4.&quot;"><id>tag:blogger.com,1999:blog-2104108011617545171.post-8082563258258724707</id><published>2009-03-26T09:04:00.000+08:00</published><updated>2011-01-24T10:08:37.813+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-24T10:08:37.813+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tips" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu" /><title>Delete large number of file by 'find and rm'</title><content type="html">find ./ -iname 'test-file-*' | xargs rm -rf&lt;br/&gt;&lt;br/&gt;rm 有最大刪除檔案的限制，大概是 2 萬個，若超過會出現錯誤訊息。&lt;br/&gt;The maximum file limitation of deletion one time about 20 thousand.&lt;br/&gt;&lt;br/&gt;引用：&lt;a href="http://ms.ntcb.edu.tw/~steven/tips/story-find-xargs.htm"&gt;使用 find 搭配 rm 刪除大量檔案&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2104108011617545171-8082563258258724707?l=bradchow.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/yvNemYSSPYkUCfXc0CrSLkD3kkY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yvNemYSSPYkUCfXc0CrSLkD3kkY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/yvNemYSSPYkUCfXc0CrSLkD3kkY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yvNemYSSPYkUCfXc0CrSLkD3kkY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/rbmgN/~4/IR9HgRgReac" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bradchow.blogspot.com/feeds/8082563258258724707/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://bradchow.blogspot.com/2009/03/delete-large-number-of-file-by-and-rm.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/8082563258258724707?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/8082563258258724707?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/rbmgN/~3/IR9HgRgReac/delete-large-number-of-file-by-and-rm.html" title="Delete large number of file by &amp;#39;find and rm&amp;#39;" /><author><name>Brad</name><uri>http://www.blogger.com/profile/14474472269520424510</uri><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><feedburner:origLink>http://bradchow.blogspot.com/2009/03/delete-large-number-of-file-by-and-rm.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4FRnY6fyp7ImA9Wx9WGE4.&quot;"><id>tag:blogger.com,1999:blog-2104108011617545171.post-70082158835278634</id><published>2009-03-11T10:15:00.000+08:00</published><updated>2011-01-24T10:08:37.817+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-24T10:08:37.817+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="vsftp" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu" /><title>VSFTPD</title><content type="html">sudo apt-get install vsftpd&lt;br/&gt;&lt;br/&gt;sudo vi /etc/vsftpd.conf&lt;br/&gt;&lt;br/&gt;1. anonymous_enable=NO&lt;br/&gt;&lt;br/&gt;2. local_enable=YES&lt;br/&gt;&lt;br/&gt;3. write_enable=YES&lt;br/&gt;&lt;br/&gt;sudo /etc/init.d/vsftpd restart&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2104108011617545171-70082158835278634?l=bradchow.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/kPcEDzZXDbmGON4IgBb71NiaqH8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kPcEDzZXDbmGON4IgBb71NiaqH8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/kPcEDzZXDbmGON4IgBb71NiaqH8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kPcEDzZXDbmGON4IgBb71NiaqH8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/rbmgN/~4/YKsexaO5s2Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bradchow.blogspot.com/feeds/70082158835278634/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://bradchow.blogspot.com/2009/03/vsftpd.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/70082158835278634?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/70082158835278634?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/rbmgN/~3/YKsexaO5s2Q/vsftpd.html" title="VSFTPD" /><author><name>Brad</name><uri>http://www.blogger.com/profile/14474472269520424510</uri><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><feedburner:origLink>http://bradchow.blogspot.com/2009/03/vsftpd.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4FRnY6cSp7ImA9Wx9WGE4.&quot;"><id>tag:blogger.com,1999:blog-2104108011617545171.post-7177767703904927474</id><published>2009-02-26T17:34:00.000+08:00</published><updated>2011-01-24T10:08:37.819+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-24T10:08:37.819+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sqlite" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><category scheme="http://www.blogger.com/atom/ns#" term="adb" /><title>sqlite command in adb</title><content type="html">&lt;strong&gt;Connect to a database:&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;adb shell&lt;br/&gt;&lt;br/&gt;# sqlite3 data/data/com.google.android.providers.contacts/databases/contacts.db&lt;br/&gt;&lt;br/&gt;sqlite3 data/data/com.google.android.providers.contacts/databases/contacts.db&lt;br/&gt;&lt;br/&gt;SQLite version 3.5.0&lt;br/&gt;&lt;br/&gt;Enter ".help" for instructions&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;List tables:&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;.table&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Print some of the information from the tables:&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;.header on&lt;br/&gt;&lt;br/&gt;.mode column&lt;br/&gt;&lt;br/&gt;sqlite&amp;gt; .header on&lt;br/&gt;&lt;br/&gt;.header on&lt;br/&gt;&lt;br/&gt;sqlite&amp;gt; .mode column&lt;br/&gt;&lt;br/&gt;.mode column&lt;br/&gt;&lt;br/&gt;sqlite&amp;gt; select * from phones;&lt;br/&gt;&lt;br/&gt;select * from phones;&lt;br/&gt;&lt;br/&gt;_id         person      type        number        number_key    label&lt;br/&gt;&lt;br/&gt;----------  ----------  ----------  ------------  ------------  ----------&lt;br/&gt;&lt;br/&gt;1           1           1           +15085551212  21215558051+&lt;br/&gt;&lt;br/&gt;2           1           0           +17815551212  21215551871+&lt;br/&gt;&lt;br/&gt;3           1           2           +16175551212  21215557161+&lt;br/&gt;&lt;br/&gt;.help can tell you more useful command.&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;LIKE Operator Example&lt;/strong&gt;&lt;br/&gt;SELECT * FROM Persons WHERE City LIKE 's%';&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2104108011617545171-7177767703904927474?l=bradchow.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/g7c1Q9Py4KrqZRlofECydjIROAc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/g7c1Q9Py4KrqZRlofECydjIROAc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/g7c1Q9Py4KrqZRlofECydjIROAc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/g7c1Q9Py4KrqZRlofECydjIROAc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/rbmgN/~4/q59KaBr8Di4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bradchow.blogspot.com/feeds/7177767703904927474/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://bradchow.blogspot.com/2009/02/sqlite-command-in-adb.html#comment-form" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/7177767703904927474?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/7177767703904927474?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/rbmgN/~3/q59KaBr8Di4/sqlite-command-in-adb.html" title="sqlite command in adb" /><author><name>Brad</name><uri>http://www.blogger.com/profile/14474472269520424510</uri><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><feedburner:origLink>http://bradchow.blogspot.com/2009/02/sqlite-command-in-adb.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4FRnY5eSp7ImA9Wx9WGE4.&quot;"><id>tag:blogger.com,1999:blog-2104108011617545171.post-6064435906583067511</id><published>2009-02-26T16:33:00.000+08:00</published><updated>2011-01-24T10:08:37.821+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-24T10:08:37.821+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="apn" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>APNs file in android</title><content type="html">在 source code 中會有個檔案 apns-conf_sdk.xml ，這是記錄 apn 設定值的檔案，image burned 之後，就會被放到 /system/etc ，在 runtime 的時候，會依照這裡的值，建立出 telephony.db。&lt;br/&gt;&lt;br/&gt;若要更新 apns-conf.xml 時，需先把 telephony.db 刪除且重新開機，資料才會重新建立起來。&lt;br/&gt;&lt;br/&gt;telephony.db -&amp;gt; /data/data/com.android.providers.telephony.databses/telephony.db&lt;br/&gt;apns-conf.xml -&amp;gt; development/data/etc&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2104108011617545171-6064435906583067511?l=bradchow.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/TUHgOxosR5GF7hv2H5uBgsTNzj4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TUHgOxosR5GF7hv2H5uBgsTNzj4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/TUHgOxosR5GF7hv2H5uBgsTNzj4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TUHgOxosR5GF7hv2H5uBgsTNzj4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/rbmgN/~4/MzVinDzP4sE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bradchow.blogspot.com/feeds/6064435906583067511/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://bradchow.blogspot.com/2009/02/apns-file-in-android.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/6064435906583067511?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/6064435906583067511?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/rbmgN/~3/MzVinDzP4sE/apns-file-in-android.html" title="APNs file in android" /><author><name>Brad</name><uri>http://www.blogger.com/profile/14474472269520424510</uri><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><feedburner:origLink>http://bradchow.blogspot.com/2009/02/apns-file-in-android.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4FRnY5fCp7ImA9Wx9WGE4.&quot;"><id>tag:blogger.com,1999:blog-2104108011617545171.post-3333591262884841743</id><published>2009-02-19T09:38:00.000+08:00</published><updated>2011-01-24T10:08:37.824+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-24T10:08:37.824+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Environment" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Where is the Firmware version setting ?</title><content type="html">In Target:&lt;br/&gt;Settings -&amp;gt; About phone -&amp;gt; Firmware version&lt;br/&gt;&lt;br/&gt;In source code:&lt;br/&gt;android\build\core\version_defaults.mk&lt;br/&gt;PLATFORM_VERSION&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2104108011617545171-3333591262884841743?l=bradchow.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/LWrARFt392NIlhtgVwdn0saiVds/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LWrARFt392NIlhtgVwdn0saiVds/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/LWrARFt392NIlhtgVwdn0saiVds/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LWrARFt392NIlhtgVwdn0saiVds/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/rbmgN/~4/co7oJzuY0wc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bradchow.blogspot.com/feeds/3333591262884841743/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://bradchow.blogspot.com/2009/02/where-is-firmware-version-setting.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/3333591262884841743?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/3333591262884841743?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/rbmgN/~3/co7oJzuY0wc/where-is-firmware-version-setting.html" title="Where is the Firmware version setting ?" /><author><name>Brad</name><uri>http://www.blogger.com/profile/14474472269520424510</uri><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><feedburner:origLink>http://bradchow.blogspot.com/2009/02/where-is-firmware-version-setting.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4FRnY5fSp7ImA9Wx9WGE4.&quot;"><id>tag:blogger.com,1999:blog-2104108011617545171.post-774283778247112010</id><published>2009-02-16T14:59:00.000+08:00</published><updated>2011-01-24T10:08:37.825+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-24T10:08:37.825+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="android" /><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu" /><category scheme="http://www.blogger.com/atom/ns#" term="adb" /><title>ADB on windows and Ubuntu Linux</title><content type="html">&lt;strong&gt;On windows:&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;If you're developing on Windwos (32-bit only), you need to install the USB driver for adb:&lt;br/&gt;&lt;br/&gt;1.  Download the driver ZIP file and unzip it.&lt;br/&gt;&lt;br/&gt;2. Connect your Android device via USB. When the Found New Hardware Wizard appears, you'll be asked if you'd like Windows Update to search for software, select No, not this time and click Next.&lt;br/&gt;&lt;br/&gt;3. Select Install from a list or specified location and clieck Next.&lt;br/&gt;&lt;br/&gt;4. Select Search for the best driver in these locations. Browse and select the unzipped file.&lt;br/&gt;&lt;br/&gt;5. Click Finish. You're all set.&lt;br/&gt;&lt;br/&gt;On Ubuntu Linux&lt;br/&gt;&lt;br/&gt;1.&lt;br/&gt;Plug-in your device then exec command 'lsusb' then you will see the list of current usb devices&lt;br/&gt;&lt;br/&gt;Bus 003 Device 023: ID &lt;span style="color:#ff0000;"&gt;&lt;strong&gt;18d1&lt;/strong&gt;&lt;/span&gt;:d00d&lt;br/&gt;&lt;br/&gt;We will see a device is appeared when it plug-in and disappeared when it plug-out. That device is we wanted and take my environment as an example it is located at line 1, "Bus 003 Device 023: ID 18d1:d00d", without device provider.&lt;br/&gt;&lt;br/&gt;2. Login as root and create this file: /etc/udev/rules.d/50-android.rules&lt;br/&gt;&lt;br/&gt;For Gusty/Hardy, edit the file to read:&lt;br/&gt;&lt;br/&gt;SUBSYSTEM=="usb", SYSFS(idVendor)=="&lt;span style="color:#ff0000;"&gt;&lt;strong&gt;18d1&lt;/strong&gt;&lt;/span&gt;", MODE="0666"&lt;br/&gt;&lt;br/&gt;For Dapper, edit the file to read:&lt;br/&gt;&lt;br/&gt;SUBSYSTEM=="usb_device", SYSFS(idVendor)=="&lt;span style="color:#ff0000;"&gt;&lt;strong&gt;18d1&lt;/strong&gt;&lt;/span&gt;", MODE="0666"&lt;br/&gt;&lt;br/&gt;P.S. the "&lt;span style="color:#ff0000;"&gt;&lt;strong&gt;18d1&lt;/strong&gt;&lt;/span&gt;" is hard coded in android/kernel/drivers/usb/gadget/android_adb.c &lt;br/&gt;#define DRIVER_VENDOR_ID&lt;br/&gt;&lt;br/&gt;2. Nwx execute:&lt;br/&gt;&lt;br/&gt;chmod a+rx /etc/udev/rules.d/50-android.rules&lt;br/&gt;&lt;br/&gt;3. Restart udev to make the rule active.&lt;br/&gt;&lt;br/&gt; sudo /etc/init.d/udev restart&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2104108011617545171-774283778247112010?l=bradchow.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lemlv1SiFPSQhwZyQP2VEF8B5fw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lemlv1SiFPSQhwZyQP2VEF8B5fw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lemlv1SiFPSQhwZyQP2VEF8B5fw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lemlv1SiFPSQhwZyQP2VEF8B5fw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/rbmgN/~4/6lDX-Dysvsg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bradchow.blogspot.com/feeds/774283778247112010/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://bradchow.blogspot.com/2009/02/adb-on-windows-and-ubuntu-linux.html#comment-form" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/774283778247112010?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2104108011617545171/posts/default/774283778247112010?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/rbmgN/~3/6lDX-Dysvsg/adb-on-windows-and-ubuntu-linux.html" title="ADB on windows and Ubuntu Linux" /><author><name>Brad</name><uri>http://www.blogger.com/profile/14474472269520424510</uri><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><feedburner:origLink>http://bradchow.blogspot.com/2009/02/adb-on-windows-and-ubuntu-linux.html</feedburner:origLink></entry></feed>

