<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3948874219001561834</id><updated>2012-02-17T10:15:40.774+07:00</updated><category term='data type'/><category term='calendar'/><category term='solution'/><category term='mistake'/><category term='javascript'/><category term='bug'/><category term='quote'/><category term='offline'/><category term='input language'/><category term='upgrade'/><category term='dijkstra'/><category term='logo'/><category term='berylxgl'/><category term='software development'/><category term='gnome'/><category term='firefox'/><category term='picasa'/><category term='gutsy'/><category term='smile'/><category term='printer'/><category term='computer'/><category term='tuning'/><category term='hotkey'/><category term='windows'/><category term='openembedded'/><category term='freebsd'/><category term='predesktop area'/><category term='dual boot'/><category term='shortcut key'/><category term='BIOS'/><category term='gumstix'/><category term='deskbar'/><category term='visualvm'/><category term='tab'/><category term='driver'/><category term='linux'/><category term='facebook'/><category term='harddisk'/><category term='connex'/><category term='english'/><category term='brother'/><category term='regular expression'/><category term='epigram'/><category term='aixlg'/><category term='oracle'/><category term='time'/><category term='puppy'/><category term='jquery'/><category term='userscript'/><category term='thinkpad'/><category term='gears'/><category term='limitation'/><category term='booting'/><category term='sql'/><category term='ie6'/><category term='unix'/><category term='session'/><category term='search'/><category term='unit testing'/><category term='qemu'/><category term='network'/><category term='experimental'/><category term='project'/><category term='ubuntu'/><category term='gmail'/><category term='google'/><category term='x200'/><category term='problem'/><title type='text'>On the binary playground_</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://playground.teerapap.net/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default'/><link rel='alternate' type='text/html' href='http://playground.teerapap.net/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default?start-index=26&amp;max-results=25'/><author><name>Teerapap Changwichukarn</name><uri>https://profiles.google.com/110043061160512697854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-OY0Lst4uqZY/AAAAAAAAAAI/AAAAAAAAEw8/daCiIaPyvPk/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>30</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3948874219001561834.post-1652253886072652496</id><published>2011-09-24T23:13:00.000+07:00</published><updated>2011-09-24T23:27:15.646+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unit testing'/><category scheme='http://www.blogger.com/atom/ns#' term='software development'/><title type='text'>My experience with unit testing in software development</title><content type='html'>I am not a fan of software engineering which is taught in school. Waterfall model, spiral model, &amp;nbsp;many blah blah phases ,diagrams and documents. I usually thought of those as useless works or not worth to do. &amp;nbsp;I thought that software development should be simple.&amp;nbsp;Get requirement -&amp;gt; Draft design -&amp;gt; Go coding! -&amp;gt; &amp;nbsp;Debug -&amp;gt; Someone test it manually -&amp;gt; Debug -&amp;gt; Test again (until it's acceptable) -&amp;gt; OK, Finished&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Documentation should exist only if it is essential and the source code is one of the documentation.&amp;nbsp;This methodology works fine because I usually develop alone or in a small team and the software does not have many modules.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Unit testing is one of those which I thought it's not worth to do. I agree that's it's useful for regression test of the code but I thought I know what I've done with my code and know what are affected.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Around two years ago, I and my colleagues started a new project. One of them wanted to try a kind of Agile development model (I don't know the name. I've said I'm not a fan of these models) and we tried.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;He encouraged me to write the unit test for each class and a few acceptance tests for overall project behaviors. I did it because I wanted to give it a try too.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then I know I was wrong about testing. I usually see some bugs because the tests fail. In addition, I feels great when all the tests go green. The tests guarantee that the software still work as it should.&amp;nbsp;However, I see some disadvantages or difficulties in writing test.&lt;/div&gt;&lt;div&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;First, White box testing in the unit test for each class are painful to maintain. When I change the code or the behaviors,&amp;nbsp;It always breaks. Most of the causes are silly for example, syntax errors, missing mock and over verification. I also have to write the new white box tests for the new code which I definitely know that it will pass.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Furthermore, it usually be the acceptance tests which show the bugs. Unit tests don't.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The problem is the unit test granularity. As a result of these, I recently try to write unit test in black box way, testing only method effects to others (including return result) and I think about how small unit test I will write. If I write tests for every classes, as one-to-one, it will be the same as white box testing above. Then I decide to write only a unit test for a module or a group of classes. The group is grouped by top-most functional. The dependencies of the group which directly involves the file system or network are cut off to their own tests and replaced by mocks. They will be like smaller acceptance tests.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Lastly, I don't feel constructive while I'm writing the tests. I love programming because I want to create something or have computer to do something but, for writing test, I don't get that feeling. I feel like a QA engineer who plans the tests and tests the software but instead of manually test, I write the code to test it. I have to mock various possible inputs, tests various output conditions and prepare many possible scenarios by writing lifeless code to do them.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Yes, you got it. I want someone else do this task for me. LOL&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;BTW, I'm learning and I am thinking of how to destroy these difficulties and will update what I found in this blog in the future.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3948874219001561834-1652253886072652496?l=playground.teerapap.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://playground.teerapap.net/feeds/1652253886072652496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://playground.teerapap.net/2011/09/my-experience-with-unit-testing-in.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/1652253886072652496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/1652253886072652496'/><link rel='alternate' type='text/html' href='http://playground.teerapap.net/2011/09/my-experience-with-unit-testing-in.html' title='My experience with unit testing in software development'/><author><name>Teerapap Changwichukarn</name><uri>https://profiles.google.com/110043061160512697854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-OY0Lst4uqZY/AAAAAAAAAAI/AAAAAAAAEw8/daCiIaPyvPk/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3948874219001561834.post-8527717709974851740</id><published>2011-08-14T23:53:00.000+07:00</published><updated>2011-09-09T01:05:50.195+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='problem'/><category scheme='http://www.blogger.com/atom/ns#' term='visualvm'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>VisualVM on ubuntu(lucid) failed to initialize the Profiler engine</title><content type='html'>I installed VisualVM on my lucid(amd64), luanch it and it shows an error.&lt;br /&gt;&lt;blockquote&gt;Failed to initialize the Profiler engine: Problem with a required JFluid installation directory or file /usr/lib/jvm/java-6-openjdk/lib/visualvm/profiler3/lib/deployed/jdk16/linux-amd64/libprofilerinterface.so Original message: File does not exist.&lt;/blockquote&gt;In sprite of this error, the visualvm still can run but profiler/sampler doesn't show up.&lt;br /&gt;Someone have filed this bug &lt;a href="https://bugs.launchpad.net/ubuntu/+source/visualvm/+bug/577958"&gt;here&lt;/a&gt;. To fix this problem, recompile the missing lib manually and move to the right place.&lt;br /&gt;Here are the steps&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Download visualvm source &lt;a href="http://packages.ubuntu.com/lucid/visualvm"&gt;here&lt;/a&gt; (visualvm_1.2.2.orig.tar.gz at the right pane)&lt;/li&gt;&lt;li&gt;Extract it and cd to the build directory&lt;br /&gt;&lt;i&gt;tar -xzvf visualvm_1.2.2.orig.tar.gz&lt;br /&gt;tar -xzvf netbeans-profiler-visualvm_release68.tar.gz&lt;br /&gt;cd lib.profiler/native/build&lt;/i&gt;&lt;/li&gt;&lt;li&gt;You will see build script ( buildnative-linux64.sh ) then edit it.&amp;nbsp;&lt;/li&gt;&lt;ol&gt;&lt;li&gt;Replace gcc32 with gcc&lt;/li&gt;&lt;li&gt;Change 2 BuildJDK lines to below. /usr/bin/jvm/default-java/ is my jdk path; yours may differ.&lt;br /&gt;&lt;i&gt;BuildForJDK "/usr/lib/jvm/default-java" "jdk16"&lt;/i&gt;&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;Make directory for release&lt;br /&gt;&lt;i&gt;mkdir -p ../../release/lib/deployed/jdk16/linux-amd64/&lt;/i&gt;&lt;/li&gt;&lt;li&gt;Run this build script. It will compile the source against jni headers in our jdk and output as libprofilerinterface.so&lt;br /&gt;&lt;i&gt;./buildnative-linux64.sh&lt;/i&gt;&lt;/li&gt;&lt;li&gt;Move libprofilerinterface.so to the right place in your jdk path&lt;br /&gt;&lt;i&gt;sudo cp ../../release/lib/deployed/jdk16/linux-amd64/libprofilerinterface.so /usr/lib/jvm/default-java/lib/visualvm/profiler3/lib/deployed/jdk16/linux-amd64/&lt;/i&gt;&lt;/li&gt;&lt;li&gt;Launch VisualVM again.&amp;nbsp;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3948874219001561834-8527717709974851740?l=playground.teerapap.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://playground.teerapap.net/feeds/8527717709974851740/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://playground.teerapap.net/2011/08/visualvm-on-ubuntulucid-failed-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/8527717709974851740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/8527717709974851740'/><link rel='alternate' type='text/html' href='http://playground.teerapap.net/2011/08/visualvm-on-ubuntulucid-failed-to.html' title='VisualVM on ubuntu(lucid) failed to initialize the Profiler engine'/><author><name>Teerapap Changwichukarn</name><uri>https://profiles.google.com/110043061160512697854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-OY0Lst4uqZY/AAAAAAAAAAI/AAAAAAAAEw8/daCiIaPyvPk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3948874219001561834.post-3092685831853626323</id><published>2010-09-05T14:07:00.000+07:00</published><updated>2011-09-09T00:58:08.523+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>How to reset the main menu in Ubuntu</title><content type='html'>I rearranged and deleted some menu items in the main menu. Finally they are in a mess. Some menu is missing and I can&amp;#039;t remember the original position or command. I want to reset them to default like fresh install. I don&amp;#039;t see any way to reset it easily. There&amp;#039;s a revert button but It doesn&amp;#039;t work right. So I searched and dug in some configurations. &lt;br /&gt; Then I learn that there&amp;#039;re default menu configuration somewhere. One of them is at /etc/xdg/menu which there&amp;#039;re applications.menu and settings.menu for application menu and system setting menu respectively. And each user has its own customization of menu in ~/.config/menus which has applications.menu and settings.menu too. Those files contain some exclude configurations and they are merged with default configurations when it is used.&lt;p /&gt; So deleting directory ~/.config/menus should reset the main menu to default state and that&amp;#039;s all.&lt;br /&gt;&lt;blockquote class="gmail_quote" style="border-left:1px solid rgb(204,204,204);padding-left:1ex;margin:0 0 0 .8ex;"&gt; rm -rf ~/.config/menus  &lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;and logout and login again.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;but if it&amp;#039;s still not be reset like in my case, it need to delete *.desktop in your home directory too.&lt;br /&gt;&lt;blockquote class="gmail_quote" style="border-left:1px solid rgb(204,204,204);padding-left:1ex;margin:0 0 0 .8ex;"&gt; find ~/ -name &amp;quot;*.desktop&amp;quot; -delete &lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3948874219001561834-3092685831853626323?l=playground.teerapap.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://playground.teerapap.net/feeds/3092685831853626323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://playground.teerapap.net/2010/09/how-to-reset-main-menu-in-ubuntu.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/3092685831853626323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/3092685831853626323'/><link rel='alternate' type='text/html' href='http://playground.teerapap.net/2010/09/how-to-reset-main-menu-in-ubuntu.html' title='How to reset the main menu in Ubuntu'/><author><name>Teerapap Changwichukarn</name><uri>https://profiles.google.com/110043061160512697854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-OY0Lst4uqZY/AAAAAAAAAAI/AAAAAAAAEw8/daCiIaPyvPk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3948874219001561834.post-8395598143095055428</id><published>2010-07-28T12:42:00.000+07:00</published><updated>2011-09-09T00:58:08.641+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>How to forward port by ssh</title><content type='html'>There are 3 machine&lt;br /&gt;&lt;ol&gt;&lt;li&gt;My machine&lt;/li&gt;&lt;li&gt;Host A with public IP&lt;/li&gt;&lt;li&gt;Target Host B with can be reached from Host A&lt;/li&gt;&lt;/ol&gt;The goal is that I and my friends want to access target host B services in convenience. We can ssh to Host A with public IP.&lt;p /&gt; &lt;b&gt;Local Forwarding&lt;/b&gt;&lt;p /&gt;Run this command on my machine&lt;br /&gt;&lt;blockquote class="gmail_quote" style="border-left:1px solid rgb(204,204,204);padding-left:1ex;margin:0 0 0 .8ex;"&gt; ssh -L 123:targetB:80 userA@hostA&lt;br /&gt; &lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;We can access targetB:80 by myMachine:123 instead&lt;/li&gt;&lt;li&gt;The traffic will be forward from myMachine:123 through ssh tunnel to hostA and the forward to targetB finally.&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Remote Forwarding&lt;/b&gt;&lt;p /&gt; Run this command on hostA&lt;br /&gt;&lt;blockquote class="gmail_quote" style="border-left:1px solid rgb(204,204,204);padding-left:1ex;margin:0 0 0 .8ex;"&gt; ssh -R 123:targetB:80 me@myMachine&lt;br /&gt;&lt;/blockquote&gt; &lt;ul&gt;&lt;li&gt;We can access targetB:80 by myMachine:123 instead&lt;/li&gt;&lt;li&gt;It&amp;#039;s similar to local forwarding but the ssh tunnel is created by hostA which is the forwarder&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The traffic will be forward from myMachine:123 through ssh tunnel to hostA and the forward to targetB finally.&lt;/li&gt; &lt;/ul&gt; &lt;b&gt;Dynamic Forwarding&lt;/b&gt;&lt;p /&gt;  Run this command on my machine&lt;br /&gt;&lt;blockquote class="gmail_quote" style="border-left:1px solid rgb(204,204,204);padding-left:1ex;margin:0 0 0 .8ex;"&gt; ssh -D 123 userA@hostA&lt;br /&gt;&lt;/blockquote&gt; &lt;ul&gt;&lt;li&gt;It&amp;#039;s similar to local forwarding but it doesn&amp;#039;t specify the target:port because the target address and the port will be determined automatically by application protocol such as SOCKS.&lt;/li&gt;&lt;li&gt;We can access targetB:80 by SOCKS proxy in browser or OS network settings.&lt;br /&gt; &lt;/li&gt;&lt;li&gt;Currently SOCKS4 and SOCKS5 protocols are supported.&lt;/li&gt;&lt;/ul&gt; &lt;b&gt;Remarks&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;There might have firewall issues. It might have to change some port unless the packets will be blocked.&lt;/li&gt;&lt;li&gt;This method is for TCP traffic. For UDP, you may have to try other methods.&lt;/li&gt; &lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3948874219001561834-8395598143095055428?l=playground.teerapap.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://playground.teerapap.net/feeds/8395598143095055428/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://playground.teerapap.net/2010/07/how-to-forward-port-by-ssh.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/8395598143095055428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/8395598143095055428'/><link rel='alternate' type='text/html' href='http://playground.teerapap.net/2010/07/how-to-forward-port-by-ssh.html' title='How to forward port by ssh'/><author><name>Teerapap Changwichukarn</name><uri>https://profiles.google.com/110043061160512697854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-OY0Lst4uqZY/AAAAAAAAAAI/AAAAAAAAEw8/daCiIaPyvPk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3948874219001561834.post-3037100456526714955</id><published>2010-06-30T21:18:00.000+07:00</published><updated>2011-09-09T00:58:08.518+07:00</updated><title type='text'>How to setup remote profiling session with JProfiler</title><content type='html'>&lt;b&gt;&lt;span style="font-size:large;"&gt;What does JProfiler do?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.ej-technologies.com/download/jprofiler/trial"&gt;JProfiler&lt;/a&gt; is a tool to profile a JVM in runtime  locally or remotely. Its profiling features are mainly in 2 parts which  are CPU and memory. &lt;p /&gt;In CPU part, it can shows all threads situation in JVM and its  state(RUNNING,BLOCKING,WAITING,..) and also traces which part of  instruction the thread currently runs. It can show object locking graph  to identify a locking problem which is difficult to figure out by normal  debugging.&lt;p /&gt;In memory part, it collects and shows memory allocation stats, object  counts and also traces the methods or classes which do most of memory  allocation. Furthermore, it can shows what and when java garbage collector do with  current memory consumption as a time-based graph.&lt;p /&gt;&lt;b&gt;&lt;span style="font-size:large;"&gt;How to setup?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;br/&gt;&lt;li&gt; Download &lt;a href="http://www.ej-technologies.com/download/jprofiler/trial"&gt;JProfiler&lt;/a&gt; and its evaluation key &lt;/li&gt;&lt;br/&gt;&lt;li&gt;Install JProfiler in your computer.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Copy JProfiler agent library to a target which you want to do  remote profiling. JProfiler agent library is in [JProfiler path]/bin/&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Add an argument in JVM which you want to do profiling. (I use FreeBSD.)&lt;p /&gt;-agentpath:/usr/home/tmp/jprofiler6/bin/freebsd-x86/libjprofilerti.so=port=8849&lt;i&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;** 8849 is a port for JProfiler client to communicate with its  agent. You can change this&lt;/i&gt;&lt;br /&gt;if you have firewall, you may need to allow the port&lt;p /&gt;ipfw add 6000 allow tcp from any to me dst-port 8849 keep-state&lt;p /&gt;&lt;br /&gt;&lt;ol&gt;&lt;/ol&gt;&lt;br/&gt;&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Open JProfiler client. -&amp;gt; Start center -&amp;gt; New session tab  -&amp;gt; New session button -&amp;gt; select remote -&amp;gt; configure host and  port of target jvm -&amp;gt; Start&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Start target JVM. it will pause and wait JProfiler to attach it.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;In JProfiler client, click Attach and OK&lt;/li&gt;&lt;br/&gt;&lt;/ol&gt;It should be work now.&lt;br /&gt;Next time I may write about how to setup JProfiler with Eclipse to do  local profiling. If you can’t wait, find it in JProfiler help.&lt;br /&gt;** When the evaluation ends, the client still can open but it doesn’t   work&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3948874219001561834-3037100456526714955?l=playground.teerapap.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://playground.teerapap.net/feeds/3037100456526714955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://playground.teerapap.net/2010/06/how-to-setup-remote-profiling-session.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/3037100456526714955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/3037100456526714955'/><link rel='alternate' type='text/html' href='http://playground.teerapap.net/2010/06/how-to-setup-remote-profiling-session.html' title='How to setup remote profiling session with JProfiler'/><author><name>Teerapap Changwichukarn</name><uri>https://profiles.google.com/110043061160512697854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-OY0Lst4uqZY/AAAAAAAAAAI/AAAAAAAAEw8/daCiIaPyvPk/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3948874219001561834.post-4283471294581247431</id><published>2010-02-05T00:28:00.000+07:00</published><updated>2011-09-10T15:15:51.848+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='picasa'/><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><category scheme='http://www.blogger.com/atom/ns#' term='mistake'/><title type='text'>Picasa's bugs cause my images to be deleted.</title><content type='html'>I use &lt;a href="http://picasa.google.com/"&gt;Picasa client&lt;/a&gt; and &lt;a href="http://picasaweb.google.com/teerapap.c"&gt;Picasa Web Album&lt;/a&gt; for a time and it works enough for me. In addition to managing my photos in Picasa client, I also use Picasa Web Album as images hosting for my thai blog. It's really easy and safe in an album.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="p_embed p_image_embed"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Mfd4_jHJdi4/S2qS_QqyvTI/AAAAAAAAD4M/OO54dHOFLqQ/s1600/picasa-bug.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="120" src="http://2.bp.blogspot.com/-Mfd4_jHJdi4/S2qS_QqyvTI/AAAAAAAAD4M/OO54dHOFLqQ/s320/picasa-bug.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;Yesterday, an unlucky day, I wanted to sync the blog album to my Picasa client and tried setting them to keep syncing in the future therefore I can upload an image via either the client or the web album. It would be great, isn't it?&lt;br /&gt;I clicked the "download album to picasa" button in the web client. The album was downloaded to the client beautifully and it was shown as a downloaded web album. Then I clicked the "sync to web" button in the client. It asked something and uploaded all images in the album. Why did they need to be uploaded again?&lt;br /&gt;The problem is here. In the web client, there were 2 album now in the same name, the original and the recently uploaded.  At first I thought it was not a bug, you might need to have a fresh uploaded album at the first time to keep syncing in the future and these twin albums was different album and unique.&lt;br /&gt;and this idea leads to the mistaken operation.&lt;br /&gt;I right-clicked at the downloaded web album in the client and chose to delete the album with "delete the online copies" checked. Then both original and recently uploaded album were gradually deleted! and they were deleted successfully.&lt;br /&gt;So I don't have any copies of this album left. It's a bug of Picasa and I reported to its forum yesterday.&lt;br /&gt;but good luck of me that the album has only 25 images and google still cache some of them. :P&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3948874219001561834-4283471294581247431?l=playground.teerapap.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://playground.teerapap.net/feeds/4283471294581247431/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://playground.teerapap.net/2010/02/picasa-bugs-cause-my-images-to-be.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/4283471294581247431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/4283471294581247431'/><link rel='alternate' type='text/html' href='http://playground.teerapap.net/2010/02/picasa-bugs-cause-my-images-to-be.html' title='Picasa&amp;#39;s bugs cause my images to be deleted.'/><author><name>Teerapap Changwichukarn</name><uri>https://profiles.google.com/110043061160512697854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-OY0Lst4uqZY/AAAAAAAAAAI/AAAAAAAAEw8/daCiIaPyvPk/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-Mfd4_jHJdi4/S2qS_QqyvTI/AAAAAAAAD4M/OO54dHOFLqQ/s72-c/picasa-bug.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3948874219001561834.post-4519565687425143633</id><published>2010-01-24T08:32:00.000+07:00</published><updated>2011-09-10T15:29:36.097+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='tab'/><title type='text'>How to change 'open link in new tab' behavior in Firefox 3.6 back to the old style.</title><content type='html'>I downloaded Firefox 3.6 yesterday and I see that the 'open link new tab' behavior is changed. In the previous version, an opened new tab will be inserted at the rightmost in the tab pane but now the new tab will be inserted next to the current related tab. It's just a style but I like the old one.&lt;br /&gt;To change it back to an old style. Steps are below.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Enter &lt;span style="font-style: italic; font-weight: bold;"&gt;about:config&lt;/span&gt; in the location bar.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Press "I'll be careful, I promise!" button. yes, you have to be careful about this.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Type tab in filter box as in image.&lt;br /&gt;&lt;br /&gt;&lt;div class="p_embed p_image_embed"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Y-Z_rDyyzYY/S1s20ZKYvFI/AAAAAAAADpw/pvQTZMnSvUM/s1600/firefox-open-new-tab-1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-Y-Z_rDyyzYY/S1s20ZKYvFI/AAAAAAAADpw/pvQTZMnSvUM/s1600/firefox-open-new-tab-1.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;Find the preference name &lt;span style="font-style: italic; font-weight: bold;"&gt;browser.tabs.insertRelatedAfterCurrent&lt;/span&gt; and double click it. The value of this preference will be toggled to false.&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-jgS8jJgWVnE/S1s24tZi46I/AAAAAAAADp4/cMGp32pqBCg/s1600/firefox-open-new-tab-2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="30" src="http://1.bp.blogspot.com/-jgS8jJgWVnE/S1s24tZi46I/AAAAAAAADp4/cMGp32pqBCg/s400/firefox-open-new-tab-2.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;That's it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3948874219001561834-4519565687425143633?l=playground.teerapap.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://playground.teerapap.net/feeds/4519565687425143633/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://playground.teerapap.net/2010/01/how-to-change-link-in-new-tab-behavior.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/4519565687425143633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/4519565687425143633'/><link rel='alternate' type='text/html' href='http://playground.teerapap.net/2010/01/how-to-change-link-in-new-tab-behavior.html' title='How to change &amp;#39;open link in new tab&amp;#39; behavior in Firefox 3.6 back to the old style.'/><author><name>Teerapap Changwichukarn</name><uri>https://profiles.google.com/110043061160512697854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-OY0Lst4uqZY/AAAAAAAAAAI/AAAAAAAAEw8/daCiIaPyvPk/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-Y-Z_rDyyzYY/S1s20ZKYvFI/AAAAAAAADpw/pvQTZMnSvUM/s72-c/firefox-open-new-tab-1.PNG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3948874219001561834.post-8282412333459757163</id><published>2009-11-16T10:57:00.000+07:00</published><updated>2011-09-09T00:58:08.635+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='regular expression'/><title type='text'>URL Regular Expression Pattern</title><content type='html'>Tonight I search for a regex pattern to parsing ftp or http url. I found some but I choose &lt;a href="http://flanders.co.nz/2009/11/08/a-good-url-regular-expression-repost/"&gt;Ivan's pattern&lt;/a&gt; and then I modify it to suit my problem. this is the result.&lt;p /&gt;&lt;blockquote class="posterous_medium_quote"&gt;^(ht|f)tps?:(//)(w+(:w+)?@)?([-w]+.?)*[-w]+(:[d]{1,5})?(/([-w~!$+|.,=]|%[a-fd]{2})+)*(/)?(?([-w~!$+|.,*:]|%[a-fd{2}])+=?([-w~!$+|.,*:=]|%[a-fd]{2})*(&amp;amp;([-w~!$+|.,*:]|%[a-fd{2}])+=?([-w~!$+|.,*:=]|%[a-fd]{2})*)*)?(#([-w~!$+|.,*:=]|%[a-fd]{2})*)?$&lt;br/&gt;&lt;/blockquote&gt;&lt;p /&gt;Some paths derive from &lt;a href="http://flanders.co.nz/2009/11/08/a-good-url-regular-expression-repost/"&gt;Ivan's pattern&lt;/a&gt; and some I rewrite it. I note this for further use in the future. Hope it maybe useful to you too.&lt;br /&gt;And I also found &lt;a href="http://regexpal.com/"&gt;regexpal&lt;/a&gt; which is a great online regex tool.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3948874219001561834-8282412333459757163?l=playground.teerapap.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://playground.teerapap.net/feeds/8282412333459757163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://playground.teerapap.net/2009/11/url-regular-expression-pattern.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/8282412333459757163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/8282412333459757163'/><link rel='alternate' type='text/html' href='http://playground.teerapap.net/2009/11/url-regular-expression-pattern.html' title='URL Regular Expression Pattern'/><author><name>Teerapap Changwichukarn</name><uri>https://profiles.google.com/110043061160512697854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-OY0Lst4uqZY/AAAAAAAAAAI/AAAAAAAAEw8/daCiIaPyvPk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3948874219001561834.post-1405274751591989558</id><published>2009-10-28T06:03:00.000+07:00</published><updated>2011-09-09T00:58:08.482+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='search'/><category scheme='http://www.blogger.com/atom/ns#' term='shortcut key'/><category scheme='http://www.blogger.com/atom/ns#' term='experimental'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>GoogleSurfKey will be outdated soon.</title><content type='html'>Today I just see that Google is doing keyboard shortcut feature for their search result page. Although now it's in google lab and just a experimental feature but I think it will be out of the lab soon. It's a good news for keyboard-centric user like me. :D  So my &lt;a href="http://userscripts.org/scripts/show/37953"&gt;GoogleSurfKey script&lt;/a&gt; will be outdated soon. &lt;p /&gt;You can try this new Google's experimental feature out at the &lt;a href="http://www.google.com/experimental/"&gt;Google Experimental page&lt;/a&gt;. Now it can use only in main english google.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3948874219001561834-1405274751591989558?l=playground.teerapap.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://playground.teerapap.net/feeds/1405274751591989558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://playground.teerapap.net/2009/10/googlesurfkey-will-be-outdated-soon.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/1405274751591989558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/1405274751591989558'/><link rel='alternate' type='text/html' href='http://playground.teerapap.net/2009/10/googlesurfkey-will-be-outdated-soon.html' title='GoogleSurfKey will be outdated soon.'/><author><name>Teerapap Changwichukarn</name><uri>https://profiles.google.com/110043061160512697854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-OY0Lst4uqZY/AAAAAAAAAAI/AAAAAAAAEw8/daCiIaPyvPk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3948874219001561834.post-4917672205543187331</id><published>2009-08-16T03:06:00.000+07:00</published><updated>2011-09-09T00:58:08.577+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='userscript'/><category scheme='http://www.blogger.com/atom/ns#' term='hotkey'/><category scheme='http://www.blogger.com/atom/ns#' term='search'/><category scheme='http://www.blogger.com/atom/ns#' term='shortcut key'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Google Surf Key 0.3.0 is released!!</title><content type='html'>I've not updated Google Surf Key script for a long time. Now I update it and release the new version 0.3.0.  Recently google search has updated new result page layout and the DOM layout has changed (more complex) so my script hasn't worked anymore. &lt;p /&gt;&lt;a href="http://userscripts.org/scripts/show/37953"&gt;Install it here&lt;/a&gt;&lt;p /&gt;This is version 0.3.0 changelog.&lt;p /&gt;&lt;blockquote class="posterous_medium_quote"&gt;version 0.3.0 released.(15 Aug 2009)&lt;br /&gt;- Updated for new Google's search result page layout.&lt;br /&gt;- Fixed the 10 results limitation.(Only j,k traversing not number keys)&lt;br /&gt;- Add l command to toggle show the index label.&lt;br /&gt;- Change the implementation to use JQuery 1.2.6.&lt;br /&gt;- Improve the link focusing.&lt;/blockquote&gt;&lt;p /&gt;Hope you like it!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3948874219001561834-4917672205543187331?l=playground.teerapap.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://playground.teerapap.net/feeds/4917672205543187331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://playground.teerapap.net/2009/08/google-surf-key-030-is-released.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/4917672205543187331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/4917672205543187331'/><link rel='alternate' type='text/html' href='http://playground.teerapap.net/2009/08/google-surf-key-030-is-released.html' title='Google Surf Key 0.3.0 is released!!'/><author><name>Teerapap Changwichukarn</name><uri>https://profiles.google.com/110043061160512697854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-OY0Lst4uqZY/AAAAAAAAAAI/AAAAAAAAEw8/daCiIaPyvPk/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3948874219001561834.post-4156501842097105217</id><published>2009-06-24T00:39:00.000+07:00</published><updated>2011-09-09T00:58:08.543+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='data type'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Convert all column data type from VARCHAR2 to NVARCHAR2 and vice versa
in Oracle 11g</title><content type='html'>I found a problem about the encoding and some data size issues. So I need to convert all column in all table in my database from VARCHAR2 to NVARCHAR2 with the same size. Definitely I can convert the data type column by column manually but it takes time and not a smart way. So this is the way.&lt;p /&gt;I logged in as SYS and run this sql statement.&lt;br /&gt;&lt;div class="CodeRay"&gt;&lt;br/&gt;  &lt;div class="code"&gt;&lt;pre&gt;select 'ALTER TABLE '||OWNER||'.'||TABLE_NAME||' MODIFY('||COLUMN_NAME||' NVARCHAR2('||DATA_LENGTH||'));' AS GEN_SQL_STATEMENTfrom   SYS.DBA_tab_columnswhere  owner = 'ownername' and DATA_TYPE = 'VARCHAR2';&lt;/pre&gt;&lt;/div&gt;&lt;br/&gt;&lt;/div&gt;&lt;br/&gt;&lt;br /&gt;The result is the rows of ALTER statement filled with the table name, column name and new data type.&lt;br /&gt;Then I copied all rows and concatenate them with some editor. and then run them as a sql script.&lt;p /&gt;If you want to convert from NVARCHAR2 to VARCHAR2, just switch 'VARCHAR2' and NVARCHAR2' in above sql statement. You can modify above script as well to suit your propose.&lt;p /&gt;Finally, you cannot convert the column which is not empty otherwise the error will occur.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3948874219001561834-4156501842097105217?l=playground.teerapap.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://playground.teerapap.net/feeds/4156501842097105217/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://playground.teerapap.net/2009/06/convert-all-column-data-type-from.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/4156501842097105217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/4156501842097105217'/><link rel='alternate' type='text/html' href='http://playground.teerapap.net/2009/06/convert-all-column-data-type-from.html' title='Convert all column data type from VARCHAR2 to NVARCHAR2 and vice versa&#xA;in Oracle 11g'/><author><name>Teerapap Changwichukarn</name><uri>https://profiles.google.com/110043061160512697854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-OY0Lst4uqZY/AAAAAAAAAAI/AAAAAAAAEw8/daCiIaPyvPk/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3948874219001561834.post-8054922108803189343</id><published>2009-06-02T13:23:00.000+07:00</published><updated>2011-09-09T00:58:08.621+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='ie6'/><title type='text'>IE6 crashes on JQuery append() function</title><content type='html'>This is a problem only on IE6 as I know. (IE7 and Firefox3 are tested.) This is my JQuery code that causes IE6 crashed.&lt;p /&gt;&lt;div class="CodeRay"&gt;&lt;br/&gt;  &lt;div class="code"&gt;&lt;pre&gt;var table = $(&amp;quot;#contact_list&amp;quot;);table.empty();$(&amp;quot;group&amp;quot;,data).each(function(){var group_name = $(this).attr(&amp;quot;name&amp;quot;);table.append(&amp;quot;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;quot;+group_name+&amp;quot;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;quot;);$(&amp;quot;user&amp;quot;,$(this)).each(function(){var username = $(this).text();table.append(&amp;quot;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;quot;+username+&amp;quot;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;quot;);});});&lt;/pre&gt;&lt;/div&gt;&lt;br/&gt;&lt;/div&gt;&lt;br/&gt;&lt;p /&gt;When I saw IE6 crashed, I tried to figure out what was the problem and found it was an append function.  So I tried to implement the code in many ways and I saw something.&lt;p /&gt;It will crashes if the html string as an argument of the function is not a properly dom object or closed tag. For example  &lt;p /&gt;&lt;div class="CodeRay"&gt;&lt;br/&gt;  &lt;div class="code"&gt;&lt;pre&gt;var box = $(&amp;quot;#contact_list&amp;quot;);box.append('&amp;lt;table&amp;gt;');//do something.....box.append('&amp;lt;/table&amp;gt;');&lt;/pre&gt;&lt;/div&gt;&lt;br/&gt;&lt;/div&gt;&lt;br/&gt;&lt;p /&gt;So I solved this problem by define an variable for collecting all the html string which I want to append and append it by append() in the end. And the code works fine on IE6.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3948874219001561834-8054922108803189343?l=playground.teerapap.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://playground.teerapap.net/feeds/8054922108803189343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://playground.teerapap.net/2009/06/ie6-crashes-on-jquery-append-function.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/8054922108803189343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/8054922108803189343'/><link rel='alternate' type='text/html' href='http://playground.teerapap.net/2009/06/ie6-crashes-on-jquery-append-function.html' title='IE6 crashes on JQuery append() function'/><author><name>Teerapap Changwichukarn</name><uri>https://profiles.google.com/110043061160512697854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-OY0Lst4uqZY/AAAAAAAAAAI/AAAAAAAAEw8/daCiIaPyvPk/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3948874219001561834.post-2915042182759983927</id><published>2009-04-03T00:51:00.000+07:00</published><updated>2011-09-09T00:58:08.511+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='input language'/><category scheme='http://www.blogger.com/atom/ns#' term='hotkey'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Switch input language by Caps Lock #2</title><content type='html'>Due to comments in &lt;a href="http://teerapap.blogspot.com/2008/03/switch-input-language-by-caps-lock.html"&gt;this post&lt;/a&gt;, I tried to find another way to use caps lock key for switching input language. The limit of that post is it works only Windows which has grave accent(`) option for switch language but many computer hasn't that option. It usually has Left Alt+Shift option.&lt;p /&gt;So I have to remap caps lock key to left alt+shift. There is no way to do this in Windows registry. I found &lt;a href="http://www.autohotkey.com/"&gt;AutoHotkey&lt;/a&gt; can do this for me.&lt;p /&gt;Steps are&lt;br /&gt;&lt;ol&gt;&lt;br/&gt;&lt;li&gt;&lt;br/&gt;&lt;a href="http://www.autohotkey.com/download/"&gt;Download and install AutoHotkey&lt;/a&gt; in your computer.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Write .ahk script like below&lt;blockquote class="posterous_short_quote"&gt;Capslock::Send {LAlt down}{Shift}{LAlt up}&lt;/blockquote&gt;&lt;br/&gt;&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Save this file and try double click to run it.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Test it by press caps lock and see.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Create shortcut to this .ahk file and move it to Startup folder in Start menu. [Do this to run this script at startup]&lt;/li&gt;&lt;br/&gt;&lt;/ol&gt;Hope you like it!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3948874219001561834-2915042182759983927?l=playground.teerapap.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://playground.teerapap.net/feeds/2915042182759983927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://playground.teerapap.net/2009/04/switch-input-language-by-caps-lock-2.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/2915042182759983927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/2915042182759983927'/><link rel='alternate' type='text/html' href='http://playground.teerapap.net/2009/04/switch-input-language-by-caps-lock-2.html' title='Switch input language by Caps Lock #2'/><author><name>Teerapap Changwichukarn</name><uri>https://profiles.google.com/110043061160512697854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-OY0Lst4uqZY/AAAAAAAAAAI/AAAAAAAAEw8/daCiIaPyvPk/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3948874219001561834.post-595371566984558163</id><published>2009-03-10T05:57:00.000+07:00</published><updated>2011-09-09T00:58:08.597+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='offline'/><category scheme='http://www.blogger.com/atom/ns#' term='gmail'/><category scheme='http://www.blogger.com/atom/ns#' term='calendar'/><category scheme='http://www.blogger.com/atom/ns#' term='limitation'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='gears'/><title type='text'>Major Limitation of Gmail and Google Calendar in Offline Mode</title><content type='html'>&lt;p&gt;Recently Google launched an offline mode of &lt;a href="http://mail.google.com/" target="_blank"&gt;Gmail&lt;/a&gt; in labs and just few days ago &lt;a href="http://www.google.com/calendar" target="_blank"&gt;Google Calendar&lt;/a&gt; offline mode had been released in beta after the &lt;a href="http://blogs.zdnet.com/Google/?p=784" target="_blank"&gt;news&lt;/a&gt; of this feature over a year.&lt;/p&gt;  &lt;p&gt;Both of them use the capabilities of &lt;a href="http://gears.google.com/" target="_blank"&gt;Google Gears&lt;/a&gt; for running in offline. So I installed &lt;a href="http://www.google.com/chrome" target="_blank"&gt;Google Chrome&lt;/a&gt; for try out these things.&lt;/p&gt;  &lt;p&gt;It works nicely but I found a major limitation. A few days ago ,I was disconnected and I opened the Gmail. I expected that I could browse my email easily and see my drafts but it didn’t work.&lt;/p&gt;  &lt;p&gt;Google Chrome showed an error. It said “105 (net::ERR_NAME_NOT_RESOLVED)” that is about Chrome cannot resolve an IP address of website (gmail.com). So it cannot work offline. The same error was shown when I tried the Calendar.&lt;/p&gt;  &lt;p&gt;But &lt;a href="http://docs.google.com/" target="_blank"&gt;Google Document&lt;/a&gt; or &lt;a href="http://www.rememberthemilk.com/" target="_blank"&gt;Remember The Milk&lt;/a&gt; which support Gears work correctly. &lt;/p&gt;  &lt;p&gt;Gmail and Calendar work in offline mode correctly if they have already been opened before your computer is disconnected. They will switch to offline mode and continue running correctly.&lt;/p&gt;  &lt;p&gt;I wish this limitation will be removed soon.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3948874219001561834-595371566984558163?l=playground.teerapap.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://playground.teerapap.net/feeds/595371566984558163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://playground.teerapap.net/2009/03/major-limitation-of-gmail-and-google.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/595371566984558163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/595371566984558163'/><link rel='alternate' type='text/html' href='http://playground.teerapap.net/2009/03/major-limitation-of-gmail-and-google.html' title='Major Limitation of Gmail and Google Calendar in Offline Mode'/><author><name>Teerapap Changwichukarn</name><uri>https://profiles.google.com/110043061160512697854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-OY0Lst4uqZY/AAAAAAAAAAI/AAAAAAAAEw8/daCiIaPyvPk/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3948874219001561834.post-9153121924022533624</id><published>2009-03-02T23:38:00.000+07:00</published><updated>2011-09-09T01:16:35.592+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tuning'/><category scheme='http://www.blogger.com/atom/ns#' term='booting'/><category scheme='http://www.blogger.com/atom/ns#' term='freebsd'/><title type='text'>Booting Process Tuning in FreeBSD 7.1</title><content type='html'>This is the last semester in my undergraduate student life, I attended the FreeBSD class and the last project is "Special Problem: Subsystem Tuning". &lt;br /&gt;The project's objective is to tune or optimize a subsystem of FreeBSD and/or its environs (applications, utilities, etc.) to make it perform better.&lt;br /&gt;I choose to tune the booting process of FreeBSD. Due to my laziness and lack of time, so I didn’t do tuning as much as I expected. but if I have time……if I have time…..&lt;br /&gt;Here is my presentation.&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" height="451" src="https://docs.google.com/present/embed?id=ddh5gm8g_0q9pj9thm&amp;amp;size=m" width="555"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3948874219001561834-9153121924022533624?l=playground.teerapap.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://playground.teerapap.net/feeds/9153121924022533624/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://playground.teerapap.net/2009/03/booting-process-tuning-in-freebsd-71.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/9153121924022533624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/9153121924022533624'/><link rel='alternate' type='text/html' href='http://playground.teerapap.net/2009/03/booting-process-tuning-in-freebsd-71.html' title='Booting Process Tuning in FreeBSD 7.1'/><author><name>Teerapap Changwichukarn</name><uri>https://profiles.google.com/110043061160512697854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-OY0Lst4uqZY/AAAAAAAAAAI/AAAAAAAAEw8/daCiIaPyvPk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3948874219001561834.post-7020416726561635737</id><published>2009-02-22T22:07:00.000+07:00</published><updated>2011-09-10T15:26:12.738+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puppy'/><category scheme='http://www.blogger.com/atom/ns#' term='predesktop area'/><category scheme='http://www.blogger.com/atom/ns#' term='harddisk'/><category scheme='http://www.blogger.com/atom/ns#' term='x200'/><category scheme='http://www.blogger.com/atom/ns#' term='upgrade'/><category scheme='http://www.blogger.com/atom/ns#' term='thinkpad'/><title type='text'>Upgrade Thinkpad X200 Harddisk and Keep Service Partition Safe By Puppy Linux.</title><content type='html'>I bought a Thinkpad X200 with 80 GB harddisk 2 months ago. I'm very impressed with this thinkpad.  Now I'd like to upgrade my harddisk from 80 GB to 320 GB because I need more space.&lt;br /&gt;The usual procedure , replace it with a new harddisk and format,  is fine but that procedure will blow your Service partition away. In term of Thinkpad , this kind of partition is called "Predesktop Area".&lt;br /&gt;Predesktop Area or you'll see a partition named "&lt;span style="font-style: italic;"&gt;Service003&lt;/span&gt;" in Computer is needed for booting your Thinkpad in Rescue And Recovery mode by Press Blue ThinkVantage at the boot time.&lt;br /&gt;This mode can format your harddisk and recover it to the factory-installed state.&lt;br /&gt;So I'd like to keep Service partition. Many people in the forums recommend to use &lt;a href="http://www.acronis.com/"&gt;Acronis True Image&lt;/a&gt; to clone the whole disk. It's a good application. I tried it and succeeded the cloning process. It works except booting in Rescue And Recovery mode.&lt;br /&gt;So I searched for another way. and found the &lt;a href="http://www.puppylinux.org/"&gt;PuppyLinux&lt;/a&gt; is a good way.&lt;br /&gt;&lt;span style="color: red; font-weight: bold;"&gt;Disclaimer : Do it at your own risk!!!. It works for me but I can't gurantee it'll work for your X200 or other model too.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Objective : &lt;/span&gt;To migrate all the data in the old harddisk to the new bigger harddisk and all data must remains. Can boot to windows with no problem and boot to Rescue and Recovery mode by pressing the blue button at the boot time.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tools :&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;New bigger harddisk.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The USB externel harddisk enclosure.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;PuppyLinux CD&lt;/li&gt;&lt;br /&gt;&lt;li&gt;A Screwdriver&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Environment :&lt;/span&gt; In my old harddisk I have layout like this.&lt;br /&gt;&lt;div class="p_embed p_image_embed"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-BKeN6osdFGM/SaEDpOCrCXI/AAAAAAAACOU/ugb1wipoNAo/s1600/oldhd.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="57" src="http://2.bp.blogspot.com/-BKeN6osdFGM/SaEDpOCrCXI/AAAAAAAACOU/ugb1wipoNAo/s400/oldhd.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Method :&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;[optional but recommend]&lt;/span&gt; Create the Product Recovery Media (if you've created it) by &lt;span style="font-style: italic;"&gt;Start-&amp;gt;All Programs -&amp;gt; ThinkVantage -&amp;gt; Create Product Recovery Media&lt;/span&gt;&lt;br /&gt;The Product Recovery Media needs 1 blank CD for start CD and 2 blank DVD. It's for using to rescue system when you cannont boot to your harddisk or you want to recovery your whole disk to factory-installed state (I think it includes Service partition).&lt;br /&gt;&lt;span style="font-style: italic;"&gt;** Product Recovery Media can create only once. It you lose it, you may contact Lenevo Support to have a new one.(maybe free or not)&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;[optional]&lt;/span&gt; Recover the Lenevo Partition (after create Product Recovery Media) by double click on this parition in Computer and choose Recover space.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Reboot to Puppy Linux CD. (you may have to select boot order by press F12 at the boot time)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Wait for the system is ready.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Integrate the new harddisk with the external HD enclosure.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Plug the external to the Thinkpad. Puppy may see new the drive if it was formatted.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Run Pudd (&lt;span style="font-style: italic;"&gt;Menu -&amp;gt; Utility -&amp;gt; Pudd copy drive/partition&lt;/span&gt;) to clone the internal harddisk to usb external harddisk. The main point is that cloning the all partition from disk to disk in "As is" mode that means the partition size will not expand propotionally. From 80 GB to 320 GB, you'll see the unallocated area 240GB approx in the rest of the external harddisk.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;It takes about half an hour for clone the disk. The limitation of Pudd is that no progress showing. Please wait patiently and wish it's working.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;When Pudd finished his work, run &lt;a href="http://en.wikipedia.org/wiki/Gparted"&gt;GParted&lt;/a&gt; (&lt;span style="font-style: italic;"&gt;Menu -&amp;gt; System -&amp;gt; Gparted&lt;/span&gt;). You'll see the partition layout of the external harddisk as same as the old 80GB one.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Now using the GParted to resize/move/create/delete some partitions except Service partition as you like.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;This is mine. (you'll see the 1 MB unallocated area at the beginning of disk. I think this results in why Acronis didn't works. )&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-eNyrzUvpQd4/SaFP9nkaVhI/AAAAAAAACOc/Qp1mEvjte_o/s1600/gparted.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="126" src="http://3.bp.blogspot.com/-eNyrzUvpQd4/SaFP9nkaVhI/AAAAAAAACOc/Qp1mEvjte_o/s400/gparted.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;Shut down the computer.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Switch the harddisk 80GB and 320GB. You may need a good screw driver. Do it by the Thinkpad Manual. It's very easy.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Now you can continue working with the new bigger space.&lt;br /&gt;Wish it works for you too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3948874219001561834-7020416726561635737?l=playground.teerapap.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://playground.teerapap.net/feeds/7020416726561635737/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://playground.teerapap.net/2009/02/upgrade-thinkpad-x200-harddisk-and-keep.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/7020416726561635737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/7020416726561635737'/><link rel='alternate' type='text/html' href='http://playground.teerapap.net/2009/02/upgrade-thinkpad-x200-harddisk-and-keep.html' title='Upgrade Thinkpad X200 Harddisk and Keep Service Partition Safe By Puppy Linux.'/><author><name>Teerapap Changwichukarn</name><uri>https://profiles.google.com/110043061160512697854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-OY0Lst4uqZY/AAAAAAAAAAI/AAAAAAAAEw8/daCiIaPyvPk/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-BKeN6osdFGM/SaEDpOCrCXI/AAAAAAAACOU/ugb1wipoNAo/s72-c/oldhd.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3948874219001561834.post-7628839972870356454</id><published>2009-01-26T09:50:00.000+07:00</published><updated>2011-09-09T00:58:08.613+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='quote'/><category scheme='http://www.blogger.com/atom/ns#' term='epigram'/><category scheme='http://www.blogger.com/atom/ns#' term='dijkstra'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>My favourite Dijkstra's epigrams</title><content type='html'>&lt;blockquote class="posterous_short_quote"&gt;Do not try to change the world. Give the world the opportunity to change itself.&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote class="posterous_short_quote"&gt;The question of whether computers can think is like the question                                                     of whether submarines can swim.&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote class="posterous_short_quote"&gt;Computer Science is no more about computers than astronomy is about telescopes.&lt;/blockquote&gt;&lt;br /&gt;                &lt;blockquote class="posterous_short_quote"&gt;A formula is worth a thousand pictures.&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote class="posterous_short_quote"&gt;Progress is possible only if we train ourselves to think about programs without                                                         thinking of them as pieces of executable code.&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote class="posterous_short_quote"&gt;Program testing can at best show the presence of errors but never their absence.&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote class="posterous_short_quote"&gt;I pray daily that more of my fellow programmers may find the                   means of freeing themselves from the curse of compatibility.&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote class="posterous_medium_quote"&gt;If you carefully read its literature and analyze what its                     devotees actually do, you will discover                             that software engineering has accepted as its charter, “How                                                         to program if you cannot.” &lt;/blockquote&gt;&lt;blockquote class="posterous_short_quote"&gt;Waiting is a very funny activity: you can’t wait twice                                                         as fast.&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote class="posterous_short_quote"&gt;Mathematicians are like managers; they want improvement without change.&lt;/blockquote&gt;&lt;br /&gt;source : &lt;a href="http://www.utexas.edu/faculty/council/2002-2003/memorials/Dijkstra/dijkstra.html"&gt;Memorial Resolution - Edsger Wyber Dijkstra&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3948874219001561834-7628839972870356454?l=playground.teerapap.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://playground.teerapap.net/feeds/7628839972870356454/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://playground.teerapap.net/2009/01/my-favourite-dijkstra-epigrams.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/7628839972870356454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/7628839972870356454'/><link rel='alternate' type='text/html' href='http://playground.teerapap.net/2009/01/my-favourite-dijkstra-epigrams.html' title='My favourite Dijkstra&amp;#39;s epigrams'/><author><name>Teerapap Changwichukarn</name><uri>https://profiles.google.com/110043061160512697854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-OY0Lst4uqZY/AAAAAAAAAAI/AAAAAAAAEw8/daCiIaPyvPk/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3948874219001561834.post-8089380646120013865</id><published>2008-11-30T08:11:00.000+07:00</published><updated>2011-09-10T15:21:57.211+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='problem'/><category scheme='http://www.blogger.com/atom/ns#' term='facebook'/><title type='text'>Facebook lost my data!</title><content type='html'>I received an email 10 minute ago. The mail body is below&lt;br /&gt;&lt;blockquote&gt;Unfortunately, the settings that control which email notifications get sent to you were lost. We're sorry for the inconvenience.&lt;br /&gt;To reset your email notification settings, go to:&lt;br /&gt;&lt;a href="http://www.facebook.com/editaccount.php?notifications" target="_blank"&gt;http://www.facebook.com/&amp;lt;wbr&amp;gt;editaccount.php?notifications&lt;/a&gt;&lt;br /&gt;Thanks,&lt;br /&gt;The Facebook Team&lt;/blockquote&gt;&lt;br /&gt;I was surprised very much with this. I thought that it is a phishing email but I see the sender and I logged in to my account and found this message.&lt;br /&gt;&lt;div class="p_embed p_image_embed"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-7HJ7341IwLk/STF6FaGy3HI/AAAAAAAABoM/belih9TAnt4/s1600/Facebook_lost.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="85" src="http://1.bp.blogspot.com/-7HJ7341IwLk/STF6FaGy3HI/AAAAAAAABoM/belih9TAnt4/s400/Facebook_lost.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Oh! it's real! I don't know what's happen at Facebook.(wait for news) but it made the image of facebook look bad. The very big website lost their member data. How about backup system?&lt;br /&gt;There is no backup for the data?&lt;br /&gt;After I googled about this issue, many bloggers have commented about this too. Really I love facebook more than other social networking websites. I wait for the news to know what happen to the Facebook now?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3948874219001561834-8089380646120013865?l=playground.teerapap.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://playground.teerapap.net/feeds/8089380646120013865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://playground.teerapap.net/2008/11/facebook-lost-my-data.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/8089380646120013865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/8089380646120013865'/><link rel='alternate' type='text/html' href='http://playground.teerapap.net/2008/11/facebook-lost-my-data.html' title='Facebook lost my data!'/><author><name>Teerapap Changwichukarn</name><uri>https://profiles.google.com/110043061160512697854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-OY0Lst4uqZY/AAAAAAAAAAI/AAAAAAAAEw8/daCiIaPyvPk/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-7HJ7341IwLk/STF6FaGy3HI/AAAAAAAABoM/belih9TAnt4/s72-c/Facebook_lost.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3948874219001561834.post-2192326729525939465</id><published>2008-11-04T09:47:00.000+07:00</published><updated>2011-09-09T00:58:08.499+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><title type='text'>Emesene crashes during logging in</title><content type='html'>I use emesene 1.0 on Debian. It usually works great and I prefer it to pidgin.&lt;p /&gt;But there are a few bugs. Emesene crashed during logging in. It'll crash everytime after it occurs the first time. I don't know why. It hardly occurs and it crashed unexpectedly. I used to see this bug a few times in the past. My friend found it too and has already found the solution. &lt;span style="font-weight:bold;"&gt;Deleting all the files in &lt;/span&gt;&lt;span style="font-weight:bold;"&gt;~/.config/emesene1.0/&lt;span style="font-style:italic;"&gt;[your_account]&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight:bold;"&gt; &lt;/span&gt; is the solution but you have to sacrifice your config files and preferences.&lt;p /&gt;I got it crashed again. But this time I found the better solution. I digged in the file and found that deleting the &lt;span style="font-weight:bold;"&gt;PersonalMessage.conf in ~/.config/emesene1.0/&lt;span style="font-style:italic;"&gt;[your_account]&lt;/span&gt;&lt;/span&gt; is enough.&lt;p /&gt;The file contains you personal message. After I deleted it, emesene can logging in and online again. The preferences still be but only personal message not.&lt;p /&gt;I took experiment something. I set presonal message to the previous personal message that's in the PersonalMessage.conf before It's deleted. It contains Thai and English word in mix. It crashed immediatly. I run it and set it again. It crashed.   This time I set the personal message to only English message like "test". It didn't crash. Now I can set the previous message and crashing haven't occured anymore.&lt;p /&gt;Maybe this is the clue of this bug. I'll report it to the bug tracker later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3948874219001561834-2192326729525939465?l=playground.teerapap.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://playground.teerapap.net/feeds/2192326729525939465/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://playground.teerapap.net/2008/11/emesene-crashes-during-logging-in.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/2192326729525939465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/2192326729525939465'/><link rel='alternate' type='text/html' href='http://playground.teerapap.net/2008/11/emesene-crashes-during-logging-in.html' title='Emesene crashes during logging in'/><author><name>Teerapap Changwichukarn</name><uri>https://profiles.google.com/110043061160512697854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-OY0Lst4uqZY/AAAAAAAAAAI/AAAAAAAAEw8/daCiIaPyvPk/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3948874219001561834.post-1832494774857479388</id><published>2008-10-22T07:20:00.000+07:00</published><updated>2011-09-09T00:58:08.492+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dual boot'/><category scheme='http://www.blogger.com/atom/ns#' term='BIOS'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='time'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Time conflicts in Dual-boot, UTC or Local time in BIOS?</title><content type='html'>I'm surprised that I've used dual-boot many times but I've just found this problem. There is a problem about time between Windows and others such as Debian.&lt;p /&gt;The problem is&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Debian&lt;/span&gt; (or unix-like) uses time in BIOS as UTC time&lt;br /&gt;but&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Windows&lt;/span&gt; uses time in BIOS as local time.&lt;p /&gt;So the problem shows out. I'm in Thailand so my timezone is +7. If UTC time is 10:00, I boot to Debian then the time in BIOS should be 10:00 and Debian shows 17:00 as a time. Then I switch to windows , it shows the time 10:00 as my time.  The time is in the past. I adjust to the right time 17:00 and windows sets it in BIOS too. If I switched to Debian again, it will show the time is 00:00 (17:00+7 hours). That's it.&lt;p /&gt;The root of the problem is each OS treat time in BIOS in different ways.&lt;br /&gt;So the question is "Which time should be in BIOS? UTC or local time?"&lt;p /&gt;&lt;span style="font-weight:bold;"&gt;UTC&lt;/span&gt; - more standards and every systems can treat it in their way. It makes sense.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Local time&lt;/span&gt; - After I googled , &lt;a href="http://blogs.msdn.com/oldnewthing/archive/2004/09/02/224672.aspx"&gt;why windows does it like that&lt;/a&gt;, there are reasons. First is backward compatibility. The former windows system such as MS-DOS or Windows 3.1 do this way so they have to do the same way to remain compatibilites and can dual-boot between Windows' family. Last is to avoid confusing on BIOS time itself. If you're in the BIOS setting and you've to set the BIOS time. Which time will you set? your local time or UTC. It makes sense that you will set it by local time. If BIOS asks you UTC time, it's a bit strange.&lt;p /&gt;So I still don't know the answer of this question. But there are some workarounds to fix this problems&lt;br /&gt;You need to do only one of these.&lt;p /&gt;&lt;span style="font-weight:bold;"&gt;In Linux :&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;Edit &lt;span style="font-style:italic;"&gt;/etc/default/rcS&lt;/span&gt;&lt;br /&gt;by set UTC=Yes to UTC=No&lt;/blockquote&gt;&lt;br /&gt;or&lt;p /&gt;&lt;span style="font-weight:bold;"&gt;In Windows:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;Add the registry&lt;br /&gt;&lt;span style="font-style:italic;"&gt;HKEY_LOCAL_MACHINE  System  CurrentControlSet  Control  TimeZoneInformation  RealTimeIsUniversal                 &lt;/span&gt;&lt;br /&gt;and set its value to 1.&lt;br /&gt;Uncheck the "&lt;span style="font-style:italic;"&gt;Automatically synchronize with an Internet time server&lt;/span&gt;" in &lt;span style="font-style:italic;"&gt;Date and Time Properties&lt;/span&gt;.&lt;p /&gt;*I don't recommend this way because I found many people told about few following problems.&lt;/blockquote&gt;&lt;p /&gt;but I still don't know why I didn't found this problem when I was dual-booting Ubuntu and Windows. OR Didn't I notice this problem?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3948874219001561834-1832494774857479388?l=playground.teerapap.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://playground.teerapap.net/feeds/1832494774857479388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://playground.teerapap.net/2008/10/time-conflicts-in-dual-boot-utc-or.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/1832494774857479388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/1832494774857479388'/><link rel='alternate' type='text/html' href='http://playground.teerapap.net/2008/10/time-conflicts-in-dual-boot-utc-or.html' title='Time conflicts in Dual-boot, UTC or Local time in BIOS?'/><author><name>Teerapap Changwichukarn</name><uri>https://profiles.google.com/110043061160512697854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-OY0Lst4uqZY/AAAAAAAAAAI/AAAAAAAAEw8/daCiIaPyvPk/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3948874219001561834.post-3816294910320604830</id><published>2008-10-16T23:22:00.000+07:00</published><updated>2011-09-09T00:58:08.537+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='connex'/><category scheme='http://www.blogger.com/atom/ns#' term='qemu'/><category scheme='http://www.blogger.com/atom/ns#' term='gumstix'/><category scheme='http://www.blogger.com/atom/ns#' term='openembedded'/><title type='text'>Gumstix-OE Connex on QEmu</title><content type='html'>I'm newbies to &lt;a href="http://en.wikipedia.org/wiki/Gumstix"&gt;Gumstix&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Openembedded"&gt;OpenEmbedded&lt;/a&gt; platform so I try to emulate it for working easier and more safety with my experiments.&lt;p /&gt;From &lt;a href="http://gumstix.net/wiki/index.php?title=Making_qemu_images"&gt;this&lt;/a&gt; and &lt;a href="http://gumstix.net/wiki/index.php?title=Running_qemu"&gt;this&lt;/a&gt; tutorial , those're for verdex , you can change a bit for you connex easily.&lt;p /&gt;First you have to install &lt;a href="http://www.qemu.org/"&gt;qemu&lt;/a&gt; (version 0.9.1 or later) to you system. I'm using Debian so do this way.&lt;p /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;sudo apt-get update&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sudo apt-get install qemu&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;p /&gt;Second you need to find the 3 file for creating the qemu image. These consist of&lt;br /&gt;&lt;ol&gt;&lt;br/&gt;&lt;li&gt;&lt;br/&gt;&lt;span style="font-weight:bold;"&gt;U-boot &lt;/span&gt;&lt;br /&gt;This is the boot loader for you gumstix. You can build your own from source or get the pre-built file from the gumstix webstie &lt;a href="http://www.gumstix.net/feeds/u-boot/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Example is "u-boot-connex-400-r1604.bin".&lt;/span&gt;&lt;p /&gt;&lt;br/&gt;&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;br/&gt;&lt;span style="font-weight:bold;"&gt;Kernel Image&lt;/span&gt;&lt;br /&gt;It's the kernel for your system. It's usually start with 'uImage'. Of course you can build your own via this tutorial or pick the right pre-built image from gumstix website &lt;a href="http://www.gumstix.net/feeds/current/"&gt;here&lt;/a&gt;. About the difference between glibc and uclibc you can googling to find out yourself.&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Example is "uImage-2.6.21-r1-gumstix-custom-connex.bin".&lt;/span&gt;&lt;p /&gt;&lt;br/&gt;&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;br/&gt;&lt;span style="font-weight:bold;"&gt;Filesystem Image &lt;/span&gt;&lt;br /&gt;It's the files for your gumstix including many packages installed. You can built it your own from the same tutorial above or pick it &lt;a href="http://www.gumstix.net/feeds/current/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Example is "Angstrom-gumstix-basic-image-glibc-ipk-2007.9-test-20080512-gumstix-custom-connex.rootfs.jffs2".&lt;/span&gt;&lt;br/&gt;&lt;/li&gt;&lt;br/&gt;&lt;/ol&gt;Now you can create the qemu image by this way.&lt;br /&gt;&lt;div class="CodeRay"&gt;&lt;br/&gt;  &lt;div class="code"&gt;&lt;pre&gt;dd of=flash.img bs=128k count=128 if=/dev/zerodd of=flash.img bs=128k conv=notrunc if=u-boot-connex-400-r1604.bindd of=flash.img bs=128k conv=notrunc seek=2 if=gumstix-basic-image-gumstix-custom-connex.jffs2dd of=flash.img bs=128k conv=notrunc seek=120 if=uImage-2.6.21-r1-gumstix-custom-connex.bin&lt;/pre&gt;&lt;/div&gt;&lt;br/&gt;&lt;/div&gt;&lt;br/&gt;The &lt;span style="font-style:italic;"&gt;italic&lt;/span&gt; have to be  changed according to your files.   The &lt;span style="font-weight:bold;"&gt;bold&lt;/span&gt; are those difference from the reference tutorial. Because of memory, the verdex has 32 MB flash memory but the connex has only 16MB. So 256*128k changes to 128*128k. The kernel is on the end of the memory (Size -1MB) so (256-8)*128k changes to (128-8)*128k.&lt;p /&gt;Now there will be a "flash.img". This is your qemu image file.&lt;br /&gt;You can run it by&lt;p /&gt;&lt;div class="CodeRay"&gt;&lt;br/&gt;  &lt;div class="code"&gt;&lt;pre&gt;qemu-system-arm -M connex -m 289 -nographic -monitor null -pflash flash.img&lt;/pre&gt;&lt;/div&gt;&lt;br/&gt;&lt;/div&gt;&lt;br/&gt;&lt;br /&gt;And see it booted. But my problem now is I can't exit the qemu. -_-" Ctrl+A x doesn't work.&lt;p /&gt;I think buildroot platfrom can do this method too. Because it builds to the 3 files as above and then use the same method to emulate it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3948874219001561834-3816294910320604830?l=playground.teerapap.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://playground.teerapap.net/feeds/3816294910320604830/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://playground.teerapap.net/2008/10/gumstix-oe-connex-on-qemu.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/3816294910320604830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/3816294910320604830'/><link rel='alternate' type='text/html' href='http://playground.teerapap.net/2008/10/gumstix-oe-connex-on-qemu.html' title='Gumstix-OE Connex on QEmu'/><author><name>Teerapap Changwichukarn</name><uri>https://profiles.google.com/110043061160512697854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-OY0Lst4uqZY/AAAAAAAAAAI/AAAAAAAAEw8/daCiIaPyvPk/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3948874219001561834.post-4358971418553895984</id><published>2008-10-16T19:36:00.000+07:00</published><updated>2011-09-09T00:58:08.558+07:00</updated><title type='text'>How to make BCM4318 (with Acer wireless button) works in Debian!</title><content type='html'>My laptop model is Acer 5021. I have a problem with the wireless , in particular the acer wireless button that's in front of the body can't lid up to enable the wireless just like in Windows. In the past I got it work by installing ndiswrapper and acerhk. But after the Edgy came out , it haven't worked anymore.&lt;p /&gt;Now I switched from Ubuntu to Debian and found the same problem. But I see the suggestion message while it's booting. Something likes&lt;br /&gt;&lt;blockquote style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;[   59.267579] b43-phy0 ERROR: Firmware file "b43/ucode5.fw" not found or load failed.&lt;br /&gt;[   59.267588] b43-phy0 ERROR: You must go to &lt;a href="http://linuxwireless.org/en/users/Drivers/b43#devicefirmware"&gt;http://linuxwireless.org/en/users/Drivers/b43#devicefirmware&lt;/a&gt; and download the correct firmware (version 4).&lt;p /&gt;&lt;/span&gt;&lt;/blockquote&gt;So I went to the url in the message. It told me to do this&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;blockquote style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;sudo apt-get install b43-fwcutter&lt;p /&gt;&lt;/span&gt;&lt;/blockquote&gt;Now I reboot and the error message disappeared. But I still can't use the wireless because of the Acer wireless button. I googling more , go to acerhk website.  And found that acerhk is stopped and got into the main kernel development (names acer_acpi) that's the good news. and now acer_acpi is moved to acer_wmi.&lt;p /&gt;if you have the kernel&amp;gt;= 2.6.25 , it might have the acer_wmi in the kernel already and be detected to load automatically. You can check this by&lt;p /&gt;&lt;blockquote style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;lsmod | grep acer&lt;/span&gt;&lt;/blockquote&gt;&lt;p /&gt;you would found acer_wmi.&lt;p /&gt;so the rest is easy. Due to this useful (and hidden) document , you can&lt;span style="font-family:monospace;"&gt;&lt;p /&gt;&lt;/span&gt;&lt;div class="CodeRay"&gt;&lt;br/&gt;  &lt;div class="code"&gt;&lt;pre&gt;To read the status of the wireless radio (0=off, 1=on):cat /sys/devices/platform/acer-wmi/wirelessTo enable the wireless radio:echo 1 &amp;gt; /sys/devices/platform/acer-wmi/wirelessTo disable the wireless radio:echo 0 &amp;gt; /sys/devices/platform/acer-wmi/wirelessTo set the state of the wireless radio when loading acer-wmi, pass:wireless=X (where X is 0 or 1)&lt;/pre&gt;&lt;/div&gt;&lt;br/&gt;&lt;/div&gt;&lt;br/&gt;and It works!!!&lt;p /&gt;I wonder this method also works with the other Acer models which have the problem with the wireless button in front of it.&lt;p /&gt;good luck.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3948874219001561834-4358971418553895984?l=playground.teerapap.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://playground.teerapap.net/feeds/4358971418553895984/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://playground.teerapap.net/2008/10/how-to-make-bcm4318-with-acer-wireless.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/4358971418553895984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/4358971418553895984'/><link rel='alternate' type='text/html' href='http://playground.teerapap.net/2008/10/how-to-make-bcm4318-with-acer-wireless.html' title='How to make BCM4318 (with Acer wireless button) works in Debian!'/><author><name>Teerapap Changwichukarn</name><uri>https://profiles.google.com/110043061160512697854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-OY0Lst4uqZY/AAAAAAAAAAI/AAAAAAAAEw8/daCiIaPyvPk/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3948874219001561834.post-5178795250705445699</id><published>2008-08-10T04:29:00.000+07:00</published><updated>2011-09-10T15:20:48.162+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='session'/><title type='text'>How to Fix Firefox always keeps showing "Restore Previous Session".</title><content type='html'>Today, my ubuntu crashed while I was using firefox. I rebooted and everything seem fine except one thing. Firefox show "Restore Previous Session" dialog everytime I open firefox.&lt;br /&gt;Even though I've shut it down properly , the dialog keeps showing.&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;div class="p_embed p_image_embed"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-97qUHTqTA-8/SJ3I1VlPdZI/AAAAAAAABKc/2bkZOkkzTR4/s1600/Screenshot-Firefox+-+Restore+Previous+Session.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="80" src="http://2.bp.blogspot.com/-97qUHTqTA-8/SJ3I1VlPdZI/AAAAAAAABKc/2bkZOkkzTR4/s320/Screenshot-Firefox+-+Restore+Previous+Session.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;I googled around but I had no luck.   I think that the problem is firefox config files may be some corrupted because of the crashing. So I went around in ~/.mozilla and  try out some way and PONG! It's fixed! :)&lt;/div&gt;&lt;br /&gt;Here is the solution.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;1. &lt;/span&gt;&lt;span style="font-family: 'courier new'; font-weight: bold;"&gt;$ cd ~/.mozilla/firefox/fwegtctl.defaults&lt;/span&gt;&lt;span style="font-family: 'courier new'; font-style: italic;"&gt; (you may change this to your firefox profile directory)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;2. &lt;/span&gt;&lt;span style="font-family: 'courier new'; font-weight: bold;"&gt;$ mv sessionstore.js sessionstore.js.bak&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;3. &lt;/span&gt;&lt;span style="font-family: 'courier new'; font-weight: bold;"&gt;Restart the firefox.&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;Just simple. I guess that sessionstore.js saves the data about session (its filename tells that. HAHA) and firefox on opening will see whether this file exists or not.&lt;br /&gt;Good Luck!&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;UPDATE :&lt;/span&gt; I've just found that there is another problem. The problem is the location bar doesn't update anyway. It's still stay blank or some url and when you change the tab it's doesn't effect. The location bar search feature also off.  I don't know this problem and previous problem if it's an consequence. I spent a hour finding out the solution in the .mozilla/ (yes, again!)&lt;br /&gt;at last, the solution is right down.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;1. &lt;/span&gt;&lt;span style="font-family: 'courier new'; font-weight: bold;"&gt;$ cd ~/.mozilla/firefox/fwegtctl.defaults&lt;/span&gt;&lt;span style="font-family: 'courier new'; font-style: italic;"&gt; (you may change this to your firefox profile directory)&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;2. &lt;/span&gt;&lt;span style="font-family: 'courier new'; font-weight: bold;"&gt;$ mv places.sqlite places.sqlite.bak&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;3. &lt;/span&gt;&lt;span style="font-family: 'courier new'; font-weight: bold;"&gt;$ mv places.sqlite-journal places.sqlite-journal.bak&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;I hope that these soulutions will work for you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3948874219001561834-5178795250705445699?l=playground.teerapap.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://playground.teerapap.net/feeds/5178795250705445699/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://playground.teerapap.net/2008/08/how-to-fix-firefox-always-keeps-showing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/5178795250705445699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/5178795250705445699'/><link rel='alternate' type='text/html' href='http://playground.teerapap.net/2008/08/how-to-fix-firefox-always-keeps-showing.html' title='How to Fix Firefox always keeps showing &amp;quot;Restore Previous Session&amp;quot;.'/><author><name>Teerapap Changwichukarn</name><uri>https://profiles.google.com/110043061160512697854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-OY0Lst4uqZY/AAAAAAAAAAI/AAAAAAAAEw8/daCiIaPyvPk/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-97qUHTqTA-8/SJ3I1VlPdZI/AAAAAAAABKc/2bkZOkkzTR4/s72-c/Screenshot-Firefox+-+Restore+Previous+Session.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3948874219001561834.post-1493289936990657200</id><published>2008-05-31T09:35:00.000+07:00</published><updated>2011-09-09T00:58:08.488+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='english'/><category scheme='http://www.blogger.com/atom/ns#' term='project'/><title type='text'>Practice English By a Song.</title><content type='html'>It's my little project. I came up with this idea while I was on the car. In Thailand, English teacher sometimes comes in the class with the radio. Then she will give students a paper. The paper is a lyric but it's not a complete lyric. There will be many blank field on the paper. She will turn on a song and She has students to fill in the blank to complete the lyric. I think it's a good idea for practice listening by a song.&lt;p /&gt;So I will do it in a same way but on the internet.  :)&lt;p /&gt;&lt;span style="font-weight:bold;"&gt;check out this.&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.teerapap.net/EnglishByMySong/start.html"&gt;http://www.teerapap.net/EnglishByMySong/start.html&lt;/a&gt;&lt;p /&gt;&lt;span style="font-weight:bold;"&gt;Thanks for "Yael Naim - New Soul" that's a sample song because I like this song very much. Actually I use this song on the website arbitrarily.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3948874219001561834-1493289936990657200?l=playground.teerapap.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://playground.teerapap.net/feeds/1493289936990657200/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://playground.teerapap.net/2008/05/practice-english-by-song.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/1493289936990657200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/1493289936990657200'/><link rel='alternate' type='text/html' href='http://playground.teerapap.net/2008/05/practice-english-by-song.html' title='Practice English By a Song.'/><author><name>Teerapap Changwichukarn</name><uri>https://profiles.google.com/110043061160512697854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-OY0Lst4uqZY/AAAAAAAAAAI/AAAAAAAAEw8/daCiIaPyvPk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3948874219001561834.post-3349725929673168276</id><published>2008-05-04T05:24:00.000+07:00</published><updated>2011-09-09T00:58:08.530+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Firefox 3 beta 5 lags on ubuntu 8.04</title><content type='html'>I upgraded from Gutsy to Hardy last week. It comes with the new Firefox 3 beta 5. After I had used for a few days, I found that firefox lags very much. When I switch the tab or scroll the page or just leave it , it start to lag the system and then system sometime freeze after that. In the system monitor, firefox process was interruptible. I noticed the harddisk light always show or blink fast but I'm not sure it's the same case.&lt;p /&gt;At first I though that it resulted from upgrade process that it's not a fresh install. Maybe some configs file are not upgraded correctly. After few days passed, I felt very annoy. I started to find out what it is.&lt;p /&gt;I found &lt;a href="https://bugs.launchpad.net/ubuntu/+source/xorg/+bug/215728"&gt;this bug&lt;/a&gt;. It's the same. In the bug page they give a method to solve this bug temporarily&lt;br /&gt;There is an easy workaround.&lt;p /&gt;&lt;blockquote class="posterous_medium_quote"&gt;This workaround is successful:&lt;br /&gt;1. Open Firefox 3&lt;br /&gt;2. Disable phishing/attack detection in the security section of the Preferences&lt;br /&gt;3. Close Firefox&lt;br /&gt;4. Make hidden files visible (Locations - Personal folder - View - show hidden files)&lt;br /&gt;5. Delete /home/user/.mozilla/firefox/blahblahblah.default/urlclassifier*.sqlite&lt;br /&gt;6. Open Firefox.&lt;br /&gt;7. There is no next step. You're done. :-)&lt;p /&gt;Greetz, Pjotr.&lt;/blockquote&gt;&lt;br /&gt;I follow this instruction. It works!!&lt;p /&gt;I like the bug report system too much. haha&lt;p /&gt;I hope that the patch will be published very soon. I wait for it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3948874219001561834-3349725929673168276?l=playground.teerapap.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://playground.teerapap.net/feeds/3349725929673168276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://playground.teerapap.net/2008/05/firefox-3-beta-5-lags-on-ubuntu-804.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/3349725929673168276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3948874219001561834/posts/default/3349725929673168276'/><link rel='alternate' type='text/html' href='http://playground.teerapap.net/2008/05/firefox-3-beta-5-lags-on-ubuntu-804.html' title='Firefox 3 beta 5 lags on ubuntu 8.04'/><author><name>Teerapap Changwichukarn</name><uri>https://profiles.google.com/110043061160512697854</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-OY0Lst4uqZY/AAAAAAAAAAI/AAAAAAAAEw8/daCiIaPyvPk/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry></feed>
