<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;A04GSXs9cSp7ImA9WhRbEU0.&quot;"><id>tag:blogger.com,1999:blog-13610792</id><updated>2012-02-01T07:25:28.569-08:00</updated><category term="Trend" /><category term="Relax" /><category term="Gift to you" /><category term="idea" /><category term="team building" /><category term="Research" /><category term="AugmentedReality" /><category term="Javascript" /><category term="software solution" /><category term="NHiberante" /><category term="Object-oriented programming" /><category term="RDBMS" /><category term="Mobile platform" /><category term="Blogging tools" /><category term="Windows7" /><category term="Experience" /><category term="Interview" /><category term="Programming" /><category term="Site review" /><category term="Product review" /><category term="Flash" /><category term="TinyERP" /><category term="iPhone" /><category term="Object relation mapping" /><category term="discover" /><category term="Thinking" /><category term="iPhoneSDK" /><category term="cms" /><category term="Web 2.0 tools" /><category term="TechNews" /><category term="Content management system" /><category term="Architecture pattern" /><category term="Book review" /><category term="thoughts" /><category term="soft skill" /><category term="Ubuntu" /><category term="iPad" /><category term="Web development" /><category term="Training" /><category term="Demo" /><title>KBird's  blog</title><subtitle type="html">The place to share my ideas/ thoughts/ experiences and some interesting things that I've discovered on Internet</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://trandangkhoa.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://trandangkhoa.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Tran Dang Khoa</name><uri>http://www.blogger.com/profile/04439791527236235576</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>76</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/kbirdblog" /><feedburner:info uri="kbirdblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;Ck4GQH8zcSp7ImA9WhdXEkw.&quot;"><id>tag:blogger.com,1999:blog-13610792.post-942807026379582178</id><published>2011-08-24T11:34:00.000-07:00</published><updated>2011-08-24T11:35:21.189-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-24T11:35:21.189-07:00</app:edited><title>Learning art and graphic design</title><content type="html">For a long time, I've worked on technical solutions/consulting for many projects in my life. This job is great and interesting. However, one day&amp;nbsp; I found that: I became too "logic" strictly. In my mindset, there are only 2 guys for 2 different views: tech and business.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To be more flexible and creative, I think I need characters of an "artist". Actually, I don't know what would be happened in a kind of combination "Technology, Business and Art". However, I think it's very interesting and may make some evolutions in my future way.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, what is exactly the kind of "artist" that I want to be? Actually, I stick my "art" need into software domain, not too general as&amp;nbsp; other artist guys, eg:&amp;nbsp; "photographer or painter". &amp;nbsp; I try to define criteria of this guy as below:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. He needs to know evaluating how beauty a (web) design/artwork is.&lt;br /&gt;
2. He needs to know how to create beautiful-AND-creative designs/artworks.&lt;br /&gt;
3. He needs to have deep knowledge about User Experience (UX) and how to make a design in best UX.&lt;br /&gt;
4.&amp;nbsp; He needs to know how to research common habit/characters of the "crowd" to give the the best creative artwork (certainly in software domain :)).&lt;br /&gt;
&lt;br /&gt;
I think these criteria are best match for the web designer job.&lt;br /&gt;
&lt;br /&gt;
I don't know where to start from the beginning. I did asking my friends working as web designer and surfing on Internet to find my answers.&amp;nbsp; Everyone has his own way to learn Kungfu, right?&lt;br /&gt;
&lt;br /&gt;
Below is the list of thing that I think I need to learn:&lt;br /&gt;
&lt;br /&gt;
1. Color theory/ color harmony&lt;br /&gt;
2. Theory of graphic elements (shapes/lines/...)&lt;br /&gt;
3. Typography&lt;br /&gt;
4. Some basic concepts of photography. &lt;br /&gt;
4. UX common theory/best practices.&lt;br /&gt;
5. Learning graphic tools.&lt;br /&gt;
6. Enjoy/evaluating and stimulate some artwork that already done by others in the community. &lt;br /&gt;
7. Create my own "artwork".&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;I start the "course" 3 days ago. Everything seems good till now. Below is the first "artwork" I did myself: the "KBird" logo. :))&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-H8AHdDvg8AM/TlVDkzKPzbI/AAAAAAAAGlI/-2EO361dZOE/s1600/kbird.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" src="http://2.bp.blogspot.com/-H8AHdDvg8AM/TlVDkzKPzbI/AAAAAAAAGlI/-2EO361dZOE/s320/kbird.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
It's still rubbish, but it could be a little bit progress. I think I will write down what/how I learn after finishing this course in other articles.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;Hope it helps for anyone has the same need like me. :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13610792-942807026379582178?l=trandangkhoa.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/9AmTGgOJkJ2ZOBxuWWLOZb-jeu8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9AmTGgOJkJ2ZOBxuWWLOZb-jeu8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/9AmTGgOJkJ2ZOBxuWWLOZb-jeu8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9AmTGgOJkJ2ZOBxuWWLOZb-jeu8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/kbirdblog/~4/ckCalQJ4hio" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://trandangkhoa.blogspot.com/feeds/942807026379582178/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13610792&amp;postID=942807026379582178&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/942807026379582178?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/942807026379582178?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/kbirdblog/~3/ckCalQJ4hio/learning-art-and-graphic-design.html" title="Learning art and graphic design" /><author><name>Tran Dang Khoa</name><uri>http://www.blogger.com/profile/04439791527236235576</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-H8AHdDvg8AM/TlVDkzKPzbI/AAAAAAAAGlI/-2EO361dZOE/s72-c/kbird.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://trandangkhoa.blogspot.com/2011/08/learning-art-and-graphic-design.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEEDSHY9cCp7ImA9WhZXFkw.&quot;"><id>tag:blogger.com,1999:blog-13610792.post-6357053793290584601</id><published>2011-05-04T11:53:00.000-07:00</published><updated>2011-05-05T10:31:19.868-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-05T10:31:19.868-07:00</app:edited><title>Ubuntu for my mom</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://icmagazine.files.wordpress.com/2011/02/ubuntu1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://icmagazine.files.wordpress.com/2011/02/ubuntu1.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
My mom does not know anything about computer. She often asks me to copy traditional songs that she liked to her very old-fashion phone. Everyday, she loves to hear news on TV and keep track any things related to health. These tools (phone and TV) are &amp;nbsp;"most hi-tech" things that she can use currently.&amp;nbsp;&lt;span class="fullpost"&gt;  &lt;/span&gt;&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;I am beside her just 2-3 hours per day (not count the sleeping time). So, I know that she feels very lonely and sad when I am not there. I decide to help her know more about computer. It's a good tool for her to discover favorite things to relax at home. Anyway, helping an old person without knowledge about computer is not an easy task.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;All of my computers at home installed with Ubuntu. It's good for any tech guys liked me, but not too easy for my mom if she wants to learn. &amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-eMScsmowN6U/TcLeybT2CII/AAAAAAAAGi0/JCAB4tnumxc/s1600/mecon.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/-eMScsmowN6U/TcLeybT2CII/AAAAAAAAGi0/JCAB4tnumxc/s320/mecon.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;My mom and I&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;During my life, I develop software projects for many clients, many bosses - but never for my mom (the most important person of my life). This is the time I need to do that. So, I decide to setup the first IT project for my family. I call it "Ubuntu for my mom". The target is: helping my mom can use my Ubuntu computers in some days.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;I will update these steps on the same post when I finish on each day. So, please comment if you have any good ideas to help me simplify/improve the "project".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;b&gt;Day 1: Setup a simple screen and help my mom to use the mouse for reading news&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;u&gt;Step 1: Setting up&lt;/u&gt;&lt;/div&gt;&lt;div&gt;&lt;u&gt;&lt;br /&gt;
&lt;/u&gt;&lt;/div&gt;&lt;div&gt;+ Create an account for my mom on Ubuntu. Setup for automatically login for that account. She does not get acquainted with the keyboard/mouse at the beginning. I did that to prevent confusion to her.&lt;/div&gt;&lt;div&gt;+ Install the Vietnamese locale for my Ubuntu. My mom does not know English. So, localization is suitable for her.&lt;/div&gt;&lt;div&gt;+ Changing the theme of my Ubuntu. Using big icons, theme with big contrast color. My mother's eyes are not good. This way helps her to know where to click on the screen.&lt;/div&gt;&lt;div&gt;+ Clean up all unnecessary icons on the screen.&lt;/div&gt;&lt;div&gt;+ Install Prism. Prism helps to create shortcut/application based on web URLs. I created some shortcuts for my mom for reading big magazines in VietNam (TuoiTre, ThanhNien, PhuNu, ...) on the desktop.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
My screen after setting up:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-zDYc6UPtIHM/TcLcSHttxuI/AAAAAAAAGiw/SOE_C5JDxfQ/s1600/day1_ubuntu4mom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="251" src="http://2.bp.blogspot.com/-zDYc6UPtIHM/TcLcSHttxuI/AAAAAAAAGiw/SOE_C5JDxfQ/s400/day1_ubuntu4mom.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;u&gt;Step 2: Help my mom know how to turn on/off the computer:&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
This step is easy for me, but not&amp;nbsp;memorizable&amp;nbsp;for my mom. So, I decide to put a big note on the "button to turn on the computer". Now, she knows how to turn on.&lt;br /&gt;
&lt;br /&gt;
So, how to shutdown the computer? I added a single RED shortcut on the top menu. She just need to remember the "RED" color button to click. Now, it's totally easy for my mom.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;Step 2: Help my mom to use the mouse&lt;/u&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;+ I guide my mom to use the mouse with very basic concepts: left button click, left button double click and scroll. She does not remember too much about when to use which actions. So, I take a big note and stick on my desk. After 1 hour, now she knows how to use the mouse for reading news with shortcuts I created for her.&lt;/div&gt;&lt;div&gt;+ I also guide her how to "minimize, maximize and close" windows on the screen.&lt;br /&gt;
+ Another important point: I guide my mom for navigate and click into link of the online magazine to see detail content for each articles, categories.&lt;br /&gt;
&lt;br /&gt;
Result: day 1 is in very good progress. My mom can read news online and turn off the computer when I am not at home.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13610792-6357053793290584601?l=trandangkhoa.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ToPLguHC_jfOShn5DeIrtWmKkjs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ToPLguHC_jfOShn5DeIrtWmKkjs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ToPLguHC_jfOShn5DeIrtWmKkjs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ToPLguHC_jfOShn5DeIrtWmKkjs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/kbirdblog/~4/bhaMP-I3-Y0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://trandangkhoa.blogspot.com/feeds/6357053793290584601/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13610792&amp;postID=6357053793290584601&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/6357053793290584601?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/6357053793290584601?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/kbirdblog/~3/bhaMP-I3-Y0/ubuntu-for-my-mom.html" title="Ubuntu for my mom" /><author><name>Tran Dang Khoa</name><uri>http://www.blogger.com/profile/04439791527236235576</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-eMScsmowN6U/TcLeybT2CII/AAAAAAAAGi0/JCAB4tnumxc/s72-c/mecon.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://trandangkhoa.blogspot.com/2011/05/ubuntu-for-my-mom.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08CRXo9fCp7ImA9Wx5REUk.&quot;"><id>tag:blogger.com,1999:blog-13610792.post-5446262927241108564</id><published>2010-08-18T08:37:00.000-07:00</published><updated>2010-08-18T08:37:44.464-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-18T08:37:44.464-07:00</app:edited><title>Knowledgeroot - installation and backup/restore</title><content type="html">&lt;span class="fullpost"&gt;Knowledgeroot is an open source knowledgebase system. It helps you to create a central place for organizing information/knowledge for your team.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="fullpost"&gt;Below is a screenshot from our current knowledgeroot system:&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_3g86ZbTqTxs/TGv2Ol5hoyI/AAAAAAAAGhg/nQqIkYrQ7Qo/s1600/Screenshot-knowledgeroot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="162" src="http://3.bp.blogspot.com/_3g86ZbTqTxs/TGv2Ol5hoyI/AAAAAAAAGhg/nQqIkYrQ7Qo/s400/Screenshot-knowledgeroot.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="fullpost"&gt; &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="fullpost"&gt;Anyway, the installation guide for this open source is not clear enough for you to install easily. I've just found a great guideline on below link:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="fullpost"&gt;http://www.debian-administration.org/users/ericrox/weblog/1&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;I already tried to install it on my Ubuntu desktop for the team to use currently. After some days, I need to move this system to another server because if I shutdown my computer, noone can use it anymore :)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="fullpost"&gt;Fortunately, backup &amp;amp; restore knowledge root is easy. You just need to backup/restore the database only. All attached files are stored inside the MySQL DB.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;MySQL v.5.0 supports some nice commands for you to backup data:&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;http://dev.mysql.com/doc/refman/5.0/en/mysqlhotcopy.html&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;In this case, I prefer to copy the whole folder of my knowledgeroot database (because it contains also binary data files). So, I did below steps:&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Step 1: using mysqlhotcopy to create backup database in raw&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Below is the command I use to backup my knowledgeroot database to current directory:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="color: blue;"&gt;sudo mysqlhotcopy -u my_db_account -p password_of_my_db_account&amp;nbsp; knowledgeroot .&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Step 2: copy this folder into USB, and copy it to the data directory of mysql (default mysql data directory is located at: /var/lib/mysql&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;However, I need to do a quick trick to copy this folder because /var/lib/mysql folder is not owned by my account by default&lt;/span&gt;&lt;br /&gt;
&lt;div style="color: blue;"&gt;&lt;span class="fullpost"&gt;(a) sudo chown -R myaccount /var/lib/mysql&lt;/span&gt;&lt;/div&gt;&lt;span class="fullpost"&gt;(b) copy the backup data folder into &lt;/span&gt;&lt;span class="fullpost"&gt;/var/lib/mysql&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;(c) return the owner for mysql account by this command:&amp;nbsp;&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="fullpost" style="color: blue;"&gt;sudo chown -R mysql:mysql /var/lib/mysql&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13610792-5446262927241108564?l=trandangkhoa.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_V1zh-teKwkgQRfv7MFR_Lhrv_E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_V1zh-teKwkgQRfv7MFR_Lhrv_E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_V1zh-teKwkgQRfv7MFR_Lhrv_E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_V1zh-teKwkgQRfv7MFR_Lhrv_E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/kbirdblog/~4/TZHodLsu0-o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://trandangkhoa.blogspot.com/feeds/5446262927241108564/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13610792&amp;postID=5446262927241108564&amp;isPopup=true" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/5446262927241108564?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/5446262927241108564?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/kbirdblog/~3/TZHodLsu0-o/knowledgeroot-installation-and.html" title="Knowledgeroot - installation and backup/restore" /><author><name>Tran Dang Khoa</name><uri>http://www.blogger.com/profile/04439791527236235576</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_3g86ZbTqTxs/TGv2Ol5hoyI/AAAAAAAAGhg/nQqIkYrQ7Qo/s72-c/Screenshot-knowledgeroot.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://trandangkhoa.blogspot.com/2010/08/knowledgeroot-installation-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0ABSX06cCp7ImA9WxFWGEk.&quot;"><id>tag:blogger.com,1999:blog-13610792.post-7128393749644180676</id><published>2010-06-05T11:52:00.000-07:00</published><updated>2010-06-06T09:29:18.318-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-06T09:29:18.318-07:00</app:edited><title>Smartphone market</title><content type="html">&lt;h2&gt;Some useful information for all mobile developers&lt;/h2&gt;&lt;h3&gt;Mobile market share (2009)&lt;/h3&gt;(The graph below presents for general mobile market share)&lt;br /&gt;
Source: Gartner&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://upload.wikimedia.org/wikipedia/en/3/3e/Smartphone_share_2009_full.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://upload.wikimedia.org/wikipedia/en/3/3e/Smartphone_share_2009_full.png" width="275" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;h3&gt;Smartphone market share&lt;/h3&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://cdn.slashgear.com/wp-content/uploads/2010/06/nielsen_smartphone_market_share_1-507x500.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="315" src="http://cdn.slashgear.com/wp-content/uploads/2010/06/nielsen_smartphone_market_share_1-507x500.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Source: Nielsen&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Worldwide Mobile Terminal Sales to End Users in 1Q10&lt;/h3&gt;(Thousands of Units)&lt;br /&gt;
&lt;table border="1" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;
&lt;tr&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="left"&gt;&lt;span lang="EN-GB"&gt;&lt;b&gt;Company&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td valign="bottom"&gt;&lt;div align="right"&gt;&lt;b&gt;&lt;span lang="EN-GB"&gt;1Q10&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div align="right"&gt;&lt;b&gt;&lt;span lang="EN-GB"&gt;&amp;nbsp;Units&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt; &lt;td valign="bottom"&gt;&lt;div align="right"&gt;&lt;b&gt;&lt;span lang="EN-GB"&gt;1Q10 Market Share (%)&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt; &lt;td valign="bottom"&gt;&lt;div align="right"&gt;&lt;b&gt;&lt;span lang="EN-GB"&gt;1Q09&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div align="right"&gt;&lt;b&gt;&lt;span lang="EN-GB"&gt;&amp;nbsp;Units&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt; &lt;td valign="bottom"&gt;&lt;div align="right"&gt;&lt;b&gt;&lt;span lang="EN-GB"&gt;1Q09 Market Share (%)&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="left"&gt;&lt;span lang="EN-GB"&gt;Nokia&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;110,105.6&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;35.0&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;97,398.2&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;36.2&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="left"&gt;&lt;span lang="EN-GB"&gt;Samsung&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;64,897.1&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;20.6&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;51,385.4&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;19.1&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="left"&gt;&lt;span lang="EN-GB"&gt;LG&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;27,190.1&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;8.6&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;26,546.9&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;9.9&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="left"&gt;&lt;span lang="EN-GB"&gt;RIM&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;10,552.5&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;3.4&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;7,233.5&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;2.7&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="left"&gt;&lt;span lang="EN-GB"&gt;Sony Ericsson&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;9,865.6&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;3.1&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;14,470.3&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;5.4&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="left"&gt;&lt;span lang="EN-GB"&gt;Motorola&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;9,574.5&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;3.0&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;16,587.3&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;6.2&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="left"&gt;&lt;span lang="EN-GB"&gt;Apple&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;8,359.7&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;2.7&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;3,938.8&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;1.5&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="left"&gt;&lt;span lang="EN-GB"&gt;ZTE&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;5,375.4&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;1.7&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;3,369.6&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;1.3&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="left"&gt;&lt;span lang="EN-GB"&gt;G-Five&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;4,345.0&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;1.4&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="left"&gt;&lt;span lang="EN-GB"&gt;Huawei&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;3,970.0&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;1.3&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;3,217.9&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;1.2&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="left"&gt;&lt;span lang="EN-GB"&gt;Others&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;60,418.1&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;19.2&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;44,972.2&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;16.5&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="left"&gt;&lt;b&gt;&lt;span lang="EN-GB"&gt;Total&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;b&gt;&lt;span lang="EN-GB"&gt;314,653.50&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;b&gt;&lt;span lang="EN-GB"&gt;100.0&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;b&gt;&lt;span lang="EN-GB"&gt;269,120.10&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;b&gt;&lt;span lang="EN-GB"&gt;100.0&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;/tbody&gt; &lt;/table&gt;Source: Gartner (May 2010)&lt;br /&gt;
&lt;h3&gt;Worldwide Smartphone Sales to End Users  by Operating System in 1Q10 &lt;/h3&gt;(Thousands of Units)&lt;br /&gt;
&lt;table border="1" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;
&lt;tr&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="left"&gt;&lt;b&gt;&lt;span lang="EN-GB"&gt;Company&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt; &lt;td valign="bottom"&gt;&lt;div align="right"&gt;&lt;b&gt;&lt;span lang="EN-GB"&gt;1Q10&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div align="right"&gt;&lt;b&gt;&lt;span lang="EN-GB"&gt;&amp;nbsp;Units&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt; &lt;td valign="bottom"&gt;&lt;div align="right"&gt;&lt;b&gt;&lt;span lang="EN-GB"&gt;1Q10 Market Share (%)&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt; &lt;td valign="bottom"&gt;&lt;div align="right"&gt;&lt;b&gt;&lt;span lang="EN-GB"&gt;1Q09&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div align="right"&gt;&lt;b&gt;&lt;span lang="EN-GB"&gt;&amp;nbsp;Units&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt; &lt;td valign="bottom"&gt;&lt;div align="right"&gt;&lt;b&gt;&lt;span lang="EN-GB"&gt;1Q09 Market Share (%)&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="left"&gt;&lt;span lang="EN-GB"&gt;Symbian&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;24,069.8&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;44.3&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;17,825.3&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;48.8&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="left"&gt;&lt;span lang="EN-GB"&gt;Research In Motion&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;10,552.6&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;19.4&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;7,533.6&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;20.6&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="left"&gt;&lt;span lang="EN-GB"&gt;iPhone OS&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;8,359.7&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;15.4&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;3,848.1&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;10.5&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="left"&gt;&lt;span lang="EN-GB"&gt;Android&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;5,214.7&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;9.6&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;575.3&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;1.6&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="left"&gt;&lt;span lang="EN-GB"&gt;Microsoft Windows Mobile&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;3,706.0&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;6.8&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;3,738.7&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;10.2&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="left"&gt;&lt;span lang="EN-GB"&gt;Linux&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;1,993.9&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;3.7&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;2,540.5&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;7.0&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="left"&gt;&lt;span lang="EN-GB"&gt;Other OSs&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;404.8&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;0.7&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;445.9&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;span lang="EN-GB"&gt;1.2&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="left"&gt;&lt;b&gt;&lt;span lang="EN-GB"&gt;Total&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;b&gt;&lt;span lang="EN-GB"&gt;54,301.4&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;b&gt;&lt;span lang="EN-GB"&gt;100.0&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;b&gt;&lt;span lang="EN-GB"&gt;36,507.4&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt; &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;&lt;b&gt;&lt;span lang="EN-GB"&gt;100.0&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;/tbody&gt; &lt;/table&gt;&lt;span lang="EN-GB"&gt;Source: Gartner (May 2010)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Refs:&lt;br /&gt;
http://blog.nielsen.com/nielsenwire/online_mobile/iphone-vs-android/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13610792-7128393749644180676?l=trandangkhoa.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/j4AO2EnQtpm6XNOluu_QzOwFddM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/j4AO2EnQtpm6XNOluu_QzOwFddM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/j4AO2EnQtpm6XNOluu_QzOwFddM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/j4AO2EnQtpm6XNOluu_QzOwFddM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/kbirdblog/~4/XC_9M33bV-g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://trandangkhoa.blogspot.com/feeds/7128393749644180676/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13610792&amp;postID=7128393749644180676&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/7128393749644180676?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/7128393749644180676?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/kbirdblog/~3/XC_9M33bV-g/smartphone-market.html" title="Smartphone market" /><author><name>Tran Dang Khoa</name><uri>http://www.blogger.com/profile/04439791527236235576</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://trandangkhoa.blogspot.com/2010/06/smartphone-market.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUDSH8_cSp7ImA9WxFWF0s.&quot;"><id>tag:blogger.com,1999:blog-13610792.post-3861582584658162161</id><published>2010-06-05T11:41:00.000-07:00</published><updated>2010-06-05T11:41:19.149-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-05T11:41:19.149-07:00</app:edited><title>Comparision of smartphones</title><content type="html">A useful link from wikipedia for comparison os smartphones&lt;br /&gt;
&lt;a href="http://en.wikipedia.org/wiki/Comparison_of_smartphones"&gt;http://en.wikipedia.org/wiki/Comparison_of_smartphones&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13610792-3861582584658162161?l=trandangkhoa.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5VSNopGPQn9iLBbQyvIpBbdE0yo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5VSNopGPQn9iLBbQyvIpBbdE0yo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5VSNopGPQn9iLBbQyvIpBbdE0yo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5VSNopGPQn9iLBbQyvIpBbdE0yo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/kbirdblog/~4/4_f8wbqFAqM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://trandangkhoa.blogspot.com/feeds/3861582584658162161/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13610792&amp;postID=3861582584658162161&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/3861582584658162161?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/3861582584658162161?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/kbirdblog/~3/4_f8wbqFAqM/comparision-of-smartphones.html" title="Comparision of smartphones" /><author><name>Tran Dang Khoa</name><uri>http://www.blogger.com/profile/04439791527236235576</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://trandangkhoa.blogspot.com/2010/06/comparision-of-smartphones.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C04BR3w5fyp7ImA9WxFSEko.&quot;"><id>tag:blogger.com,1999:blog-13610792.post-91464910289512397</id><published>2010-04-14T11:50:00.000-07:00</published><updated>2010-04-14T12:05:56.227-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-14T12:05:56.227-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="iPhone" /><category scheme="http://www.blogger.com/atom/ns#" term="iPad" /><category scheme="http://www.blogger.com/atom/ns#" term="iPhoneSDK" /><title>Gesture recoginization in iPhone SDK</title><content type="html">For many magazine applications running on iPad, you easily see that the application detect your gestures for interactions on the content: rotate, swipe right to left (or left to right), tap. If we have to handle these gestures manually by code, it is not efficient.&lt;br /&gt;
&lt;br /&gt;
So, Apple tries to make our developer life easier to breath by providing us a built-in mechanism to detect these common gestures on the latest iPhone SDK version.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can find these APIs from UIGestureRecognizer class.&lt;br /&gt;
"A gesture-recognizer object (or, simply, a gesture recognizer)  decouples the logic for recognizing a gesture and acting on that  recognition. When one of these objects recognizes a common gesture or,  in some cases, a change in the gesture, it sends an action message to  each designated target object" - from Apple API documentation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This class derives to:&lt;br /&gt;
1. UITapGestureRecognizer: presents the gesture that &lt;i&gt;p&lt;/i&gt; fingers tapped the screen &lt;i&gt;q&lt;/i&gt;  times consecutively.  &lt;br /&gt;
&lt;ul&gt;&lt;li&gt; &lt;i&gt;Input properties&lt;/i&gt;: numberOfTaps (&lt;i&gt;q&lt;/i&gt;),  numberOfFingers (&lt;i&gt;p&lt;/i&gt;) &lt;/li&gt;
&lt;li&gt; &lt;i&gt;Output properties&lt;/i&gt;: location, touches &lt;/li&gt;
&lt;/ul&gt;2. UISwipeGestureRecognizer: represents the gesture that p fingers tapped the screen q times consecutively. &lt;br /&gt;
&lt;br /&gt;
3. UIRotationGestureRecognizer: looks for rotation gestures involving two touches. When the user moves the fingers opposite each other in a circular motion, the underlying view should rotate in a corresponding direction and speed.&lt;br /&gt;
&lt;br /&gt;
4. UIPinchGestureRecognizer: represents the gesture that 2 fingers moving towards or away from a center point. This gesture is usually used for scaling a view.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt; &lt;i&gt;Input properties&lt;/i&gt;: scaleThreshold &lt;/li&gt;
&lt;li&gt; &lt;i&gt;Output properties&lt;/i&gt;: scale, velocity, anchorPoint,  transform &lt;/li&gt;
&lt;/ul&gt;scaleThreshold is the critical scale the fingers must first move  apart/together before this recognizer could fire. &lt;br /&gt;
&lt;br /&gt;
5. UILongPressGestureRecognizer: represents the gesture that &lt;i&gt;p&lt;/i&gt; fingers moved/stayed on the  screen continuously for &lt;i&gt;T&lt;/i&gt; seconds.   &lt;br /&gt;
&lt;ul&gt;&lt;li&gt; &lt;i&gt;Input properties&lt;/i&gt;: numberOfFingers (&lt;i&gt;p&lt;/i&gt;), delay (&lt;i&gt;T&lt;/i&gt;),  allowableMovement &lt;/li&gt;
&lt;li&gt; &lt;i&gt;Output properties&lt;/i&gt;: touches, centroid, startPoint &lt;/li&gt;
&lt;/ul&gt;6. UIDragRecognizer: represents the gesture that 1 or more fingers moving on the screen  for a distance of &lt;i&gt;d&lt;/i&gt;. Optionally it may also be constrained to  moving only within an angle of &lt;i&gt;θ&lt;/i&gt; ± Δ&lt;i&gt;θ&lt;/i&gt;.  &lt;br /&gt;
&lt;ul&gt;&lt;li&gt; &lt;i&gt;Input properties&lt;/i&gt;: minimumDistance (&lt;i&gt;d&lt;/i&gt;), angle (&lt;i&gt;θ&lt;/i&gt;),  maximumDeviation (Δ&lt;i&gt;θ&lt;/i&gt;), restrictsToAngle &lt;/li&gt;
&lt;li&gt; &lt;i&gt;Output properties&lt;/i&gt;: touch, startPosition, startAngle &lt;/li&gt;
&lt;/ul&gt;Note that the angles are in radians. &lt;br /&gt;
7. UIPanGestureRecognizer: represents the gesture that 1 or more fingers moving on the screen  for a relatively large distance. This gesture is usually used for  scrolling, and is used by &lt;a class="new" href="http://iphonedevwiki.net/index.php?title=UIScroller&amp;amp;action=edit&amp;amp;redlink=1" title="UIScroller (page does not exist)"&gt;UIScroller&lt;/a&gt; and  &lt;a class="new" href="http://iphonedevwiki.net/index.php?title=UIScrollView&amp;amp;action=edit&amp;amp;redlink=1" title="UIScrollView (page does not exist)"&gt;UIScrollView&lt;/a&gt;.  &lt;br /&gt;
&lt;ul&gt;&lt;li&gt; &lt;i&gt;Input properties&lt;/i&gt;: directionalLockEnabled &lt;/li&gt;
&lt;li&gt; &lt;i&gt;Output properties&lt;/i&gt;: offset, velocity, transform &lt;/li&gt;
&lt;/ul&gt;8. UITapAndAHalfRecognizer: represents the gesture that 1 finger tapped the screen &lt;i&gt;q&lt;/i&gt; times  consecutively, and then moved/stayed on the screen.  &lt;br /&gt;
&lt;ul&gt;&lt;li&gt; &lt;i&gt;Input properties&lt;/i&gt;: numberOfFullTaps (&lt;i&gt;q&lt;/i&gt;),  allowableMovement &lt;/li&gt;
&lt;li&gt; &lt;i&gt;Output properties&lt;/i&gt;: touch &lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
An example for how to use these API:&lt;br /&gt;
&lt;code&gt;&lt;span style="color: purple;"&gt;UISwipeGestureRecognizer&lt;/span&gt;  *swipeRecognizer = [[[&lt;span style="color: purple;"&gt;UISwipeGestureRecognizer&lt;/span&gt;  alloc] initWithTarget:&lt;span style="color: magenta;"&gt;self&lt;/span&gt;  action:&lt;span style="color: magenta;"&gt;@selector&lt;/span&gt;(&lt;span style="color: teal;"&gt;DidSwipe&lt;/span&gt;:)] &lt;span style="color: purple;"&gt;autorelease&lt;/span&gt;];&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
By default this line of code detect the swipes from left to right.&lt;br /&gt;
&lt;br /&gt;
If you  want to detect a swipe from right to left add the below line after the  above line:&lt;br /&gt;
&lt;code&gt;swipeRecognizer&lt;/code&gt;&lt;code&gt;.&lt;span style="color: purple;"&gt;direction&lt;/span&gt;  = &lt;span style="color: purple;"&gt;UISwipeGestureRecognizerDirectionLeft&lt;/span&gt;;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
On 1 view, you can add many gesture recognizers to handle different interactions by using below function&lt;br /&gt;
&lt;code&gt;[&lt;span style="color: magenta;"&gt;self&lt;/span&gt;.view &lt;span style="color: purple;"&gt;addGestureRecognizer&lt;/span&gt;:&lt;/code&gt;&lt;code&gt;swipeRecognizer&lt;/code&gt;&lt;code&gt;];&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
After that, just implement the [&lt;code&gt;&lt;span style="color: teal;"&gt;DidSwipe&lt;/span&gt;&lt;/code&gt;]  method we already registered above:&lt;br /&gt;
&lt;code&gt;- (&lt;span style="color: magenta;"&gt;void&lt;/span&gt;) &lt;/code&gt;&lt;code&gt;&lt;span style="color: teal;"&gt;DidSwipe&lt;/span&gt;&lt;/code&gt;&lt;code&gt;:(&lt;span style="color: purple;"&gt;UISwipeGestureRecognizer&lt;/span&gt;*)sender{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;span style="color: purple;"&gt;Do something...&lt;/span&gt;&lt;span style="color: red;"&gt;&lt;/span&gt;&lt;br /&gt;
}&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Refs:&lt;br /&gt;
+ http://iphonedevwiki.net/index.php/UIGestureRecognizer&lt;br /&gt;
+ iPhone SDK 3.2 API document&lt;br /&gt;
&lt;br /&gt;
Happy coding!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13610792-91464910289512397?l=trandangkhoa.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-vYGLj0GL-_FWIoMxIKk-S4TZvI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-vYGLj0GL-_FWIoMxIKk-S4TZvI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-vYGLj0GL-_FWIoMxIKk-S4TZvI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-vYGLj0GL-_FWIoMxIKk-S4TZvI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/kbirdblog/~4/23Q7GojQ9Co" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://trandangkhoa.blogspot.com/feeds/91464910289512397/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13610792&amp;postID=91464910289512397&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/91464910289512397?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/91464910289512397?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/kbirdblog/~3/23Q7GojQ9Co/gesture-recoginization-in-iphone-sdk.html" title="Gesture recoginization in iPhone SDK" /><author><name>Tran Dang Khoa</name><uri>http://www.blogger.com/profile/04439791527236235576</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://trandangkhoa.blogspot.com/2010/04/gesture-recoginization-in-iphone-sdk.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MBSXg-cSp7ImA9WxBaGUw.&quot;"><id>tag:blogger.com,1999:blog-13610792.post-3384407343490602269</id><published>2010-03-29T20:24:00.000-07:00</published><updated>2010-03-29T20:24:18.659-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-29T20:24:18.659-07:00</app:edited><title>Top reasons you should NOT join to the mobile team at Pyramid Consulting</title><content type="html">1. There are many exciting things in our activities. You may DIE if you cannot control your emotions.&lt;br /&gt;
2. There’re many interesting things to learn. You will be overloaded with knowledge and new things – but useful for your work &amp;amp; your life.&lt;br /&gt;
3. Your friends may envy you because you can do many wonderful &amp;amp; crazy things.&lt;br /&gt;
4. We’re NOT colleague only. We’re brothers in a family. If you’re afraid of having more brothers, don’t join us.&lt;br /&gt;
5. We share all things together, all troubles &amp;amp; happiness, both in work &amp;amp; life. If you’re afraid of sharing, this team is not a good choice for you.&lt;br /&gt;
6. All members are courage men. Dare to talk, dare to do, dare to share. &lt;br /&gt;
7. You cannot stand some our bad habits for relaxing at the weekend: drink &amp;amp; eat dog meat, play some games – may be good (or bad) for your health.&lt;br /&gt;
8. If you can think of more reasons NOT to join into mobile team, please share to us.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13610792-3384407343490602269?l=trandangkhoa.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OFoMhomnjzDh93UKNSsI-ARUt7M/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OFoMhomnjzDh93UKNSsI-ARUt7M/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/OFoMhomnjzDh93UKNSsI-ARUt7M/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OFoMhomnjzDh93UKNSsI-ARUt7M/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/kbirdblog/~4/XD7-mrkds8o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://trandangkhoa.blogspot.com/feeds/3384407343490602269/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13610792&amp;postID=3384407343490602269&amp;isPopup=true" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/3384407343490602269?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/3384407343490602269?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/kbirdblog/~3/XD7-mrkds8o/top-reasons-you-should-not-join-to.html" title="Top reasons you should NOT join to the mobile team at Pyramid Consulting" /><author><name>Tran Dang Khoa</name><uri>http://www.blogger.com/profile/04439791527236235576</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://trandangkhoa.blogspot.com/2010/03/top-reasons-you-should-not-join-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkEMSXg4eSp7ImA9WxBbFks.&quot;"><id>tag:blogger.com,1999:blog-13610792.post-8550798491944165069</id><published>2010-03-15T08:49:00.000-07:00</published><updated>2010-03-15T08:58:08.631-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-15T08:58:08.631-07:00</app:edited><title>Multiple phone application framework</title><content type="html">Multiple phone application frameworks are: frameworks/solutions that allow developers to build applications to run on multi phone devices.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.teleplanglobe.com/uploads/images/mobile_applications.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="222" src="http://www.teleplanglobe.com/uploads/images/mobile_applications.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Recently, there' re some companies trying to build these solutions. This may make a new trend in developing application on mobile: build once, run every where (at least on most popular mobile platform) :)&lt;br /&gt;
&lt;br /&gt;
Actually, this idea is good. However, it meets some troubles:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Mobile Platform + their SDKs are changes frequently. The multiple phones application frameworks cannot catch up with the speed of change of the platform + SDKs. Mobile developers prefer to have chance to use the latest APIs to make use of the strength of the newest platform.&lt;/li&gt;
&lt;li&gt;On some popular mobile platforms (Apple, Android, BlackBerry), there' re always some private APIs - means some APIs are not official public. Developers must work on the real platform &amp;amp; SDK to use these APIs.  The multiple phones application frameworks cannot wrap these APIs into their library because it needs to be more generic to be used in a common way.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
Anyway, we should wait.&lt;br /&gt;
&lt;br /&gt;
You can checkout a list of some open source multiple phone application frameworks &lt;a href="http://en.wikipedia.org/wiki/Multiple_phone_web_based_application_framework"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13610792-8550798491944165069?l=trandangkhoa.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/tNzqWeEB7MFe1JRyeruOnsoEu0Y/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tNzqWeEB7MFe1JRyeruOnsoEu0Y/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/tNzqWeEB7MFe1JRyeruOnsoEu0Y/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tNzqWeEB7MFe1JRyeruOnsoEu0Y/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/kbirdblog/~4/rf517Bb5bxA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://trandangkhoa.blogspot.com/feeds/8550798491944165069/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13610792&amp;postID=8550798491944165069&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/8550798491944165069?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/8550798491944165069?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/kbirdblog/~3/rf517Bb5bxA/multiple-phone-application-framework.html" title="Multiple phone application framework" /><author><name>Tran Dang Khoa</name><uri>http://www.blogger.com/profile/04439791527236235576</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://trandangkhoa.blogspot.com/2010/03/multiple-phone-application-framework.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQBSX4yfCp7ImA9WxNaGE4.&quot;"><id>tag:blogger.com,1999:blog-13610792.post-4161558918685014737</id><published>2009-12-03T03:05:00.000-08:00</published><updated>2009-12-03T03:05:58.094-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-03T03:05:58.094-08:00</app:edited><title>The Presentation Secrets of Steve Jobs</title><content type="html">This is a book bought on Amazon.  Below is a slide summary for content inside. It makes me very interesting.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="width:425px;text-align:left" id="__ss_2453826"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/marcosgarciadelavega/the-presentation-secrets-of-steve-jobs-2453826" title="The Presentation Secrets of Steve Jobs"&gt;The Presentation Secrets of Steve Jobs&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=the-presentation-secrets-of-steve-jobs4665&amp;stripped_title=the-presentation-secrets-of-steve-jobs-2453826" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=the-presentation-secrets-of-steve-jobs4665&amp;stripped_title=the-presentation-secrets-of-steve-jobs-2453826" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/marcosgarciadelavega"&gt;Marcos  Garcia de la Vega&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13610792-4161558918685014737?l=trandangkhoa.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/9QEa2iUQtoURRTdzkwpaRm0KIAE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9QEa2iUQtoURRTdzkwpaRm0KIAE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/9QEa2iUQtoURRTdzkwpaRm0KIAE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9QEa2iUQtoURRTdzkwpaRm0KIAE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/kbirdblog/~4/QlY1jrx9_oM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://trandangkhoa.blogspot.com/feeds/4161558918685014737/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13610792&amp;postID=4161558918685014737&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/4161558918685014737?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/4161558918685014737?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/kbirdblog/~3/QlY1jrx9_oM/presentation-secrets-of-steve-jobs.html" title="The Presentation Secrets of Steve Jobs" /><author><name>Tran Dang Khoa</name><uri>http://www.blogger.com/profile/04439791527236235576</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://trandangkhoa.blogspot.com/2009/12/presentation-secrets-of-steve-jobs.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkAHQXgzeyp7ImA9WxNaF0o.&quot;"><id>tag:blogger.com,1999:blog-13610792.post-8044262435930554888</id><published>2009-12-02T10:28:00.000-08:00</published><updated>2009-12-02T10:32:10.683-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-02T10:32:10.683-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="iPhone" /><category scheme="http://www.blogger.com/atom/ns#" term="AugmentedReality" /><title>iPhoneARKit and Point Of Interest apps on iPhone</title><content type="html">&lt;blockquote&gt;A point of interest, or POI, is a specific point location that someone may find useful or interesting. An example is a point on the Earth representing the location of the Space Needle, or a point on Mars representing the location of the mountain, Olympus Mons.&lt;br /&gt;
&lt;br /&gt;
The term is widely used in cartography, especially in electronic variants including GIS, and GPS navigation software. In this context the synonym waypoint is common.&lt;br /&gt;
&lt;/blockquote&gt;(from &lt;a href="http://en.wikipedia.org/wiki/Point_of_interest"&gt;wikipedia&lt;/a&gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.iphonear.org/"&gt;iPhoneARKit &lt;/a&gt;is a great tool for developing POI (Point Of Interest) apps on iPhone. We've just done the first demo based on this library. It's a simple application to detect POI locations in camera view and show related information (in the context of this demo - is shops with coupons)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;object width="400" height="300"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=7913476&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=7913476&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href="http://vimeo.com/7913476"&gt;Bee Buzz Finder&lt;/a&gt; from &lt;a href="http://vimeo.com/user2723204"&gt;Vinh Nguyen&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;
Many business ideas comes from this, right?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13610792-8044262435930554888?l=trandangkhoa.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/h0LFIb6tvUcJn_CoP-CdeNS4CAI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/h0LFIb6tvUcJn_CoP-CdeNS4CAI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/h0LFIb6tvUcJn_CoP-CdeNS4CAI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/h0LFIb6tvUcJn_CoP-CdeNS4CAI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/kbirdblog/~4/k9CgfiXkpFw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://trandangkhoa.blogspot.com/feeds/8044262435930554888/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13610792&amp;postID=8044262435930554888&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/8044262435930554888?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/8044262435930554888?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/kbirdblog/~3/k9CgfiXkpFw/iphonearkit-and-point-of-interest-apps.html" title="iPhoneARKit and Point Of Interest apps on iPhone" /><author><name>Tran Dang Khoa</name><uri>http://www.blogger.com/profile/04439791527236235576</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://trandangkhoa.blogspot.com/2009/12/iphonearkit-and-point-of-interest-apps.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMMQnw7cCp7ImA9WxNaFE4.&quot;"><id>tag:blogger.com,1999:blog-13610792.post-2421877936397063108</id><published>2009-11-28T10:21:00.000-08:00</published><updated>2009-11-28T10:21:23.208-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-28T10:21:23.208-08:00</app:edited><title>Convert MTS/M2TS(AVCHD) to AVI</title><content type="html">Yesterday, I used a Sony camera to record&amp;nbsp; some our video demos.&amp;nbsp; Unfortunately, output videos are in AHCHD format. So, I have to find a way to export them to avi or other format before putting to our R&amp;amp;D press.&lt;br /&gt;
Actually, there are many commercial softwares to do this. However, I don't like them. He he, I love things&amp;nbsp; free and open source. FFMPEG is the best one in the open source world for conversion video/audio format. Anyway, I found some bad things with FFMPEG:&lt;br /&gt;
+ Difficult for compilation in Windows. It was developed for best use in Linux world. To compile it in Windows, we need Cygwin or MSYS.&lt;br /&gt;
&lt;br /&gt;
+ Loss documentation in practice. It takes me more than 1 hour to find the best command to convert MTS file to avi.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finally, I compile FFMPEG successfully in Windows and  my Ubuntu. I also run it successfully for my conversion need. However, let me show you some shortest ways to work with FFMPEG for conversion from MTS to AVI.&lt;br /&gt;
&lt;h2&gt;Install FFMPEG&lt;/h2&gt;In Ubuntu, it's very easy. Just open Synaptic package manager to find and install ffmpeg.&lt;br /&gt;
In windows, you need to compile ffmpeg before using. However, there a site contains some distribution binary package. You can download the final package to use in http://ffmpeg.arrozcru.org/builds/&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Command to convert your MTS file to avi&lt;/h2&gt;&lt;br /&gt;
&lt;br /&gt;
ffmpeg -i your-mts-file.MTS -vcodec libxvid -b 18000k -acodec libmp3lame -ac 2 -ab 320k -ar 44100 -deinterlace -s 1440x1080 your-output.avi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you run this in Ubuntu and found the error: Unknown encoder 'libxvid', please install libavcodec-unstripped (you can find this in synaptic package manager).&lt;br /&gt;
&lt;br /&gt;
To understand more about above command, you should read the ffmpeg documentation &lt;a href="http://ffmpeg.org/ffmpeg-doc.html"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13610792-2421877936397063108?l=trandangkhoa.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jtj3DvQg6RymJwC0WfN0dNs6AME/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jtj3DvQg6RymJwC0WfN0dNs6AME/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/jtj3DvQg6RymJwC0WfN0dNs6AME/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jtj3DvQg6RymJwC0WfN0dNs6AME/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/kbirdblog/~4/vrX84wyq8JE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://trandangkhoa.blogspot.com/feeds/2421877936397063108/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13610792&amp;postID=2421877936397063108&amp;isPopup=true" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/2421877936397063108?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/2421877936397063108?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/kbirdblog/~3/vrX84wyq8JE/convert-mtsm2tsavchd-to-avi.html" title="Convert MTS/M2TS(AVCHD) to AVI" /><author><name>Tran Dang Khoa</name><uri>http://www.blogger.com/profile/04439791527236235576</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>6</thr:total><feedburner:origLink>http://trandangkhoa.blogspot.com/2009/11/convert-mtsm2tsavchd-to-avi.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUMSHozeCp7ImA9WxNaEUo.&quot;"><id>tag:blogger.com,1999:blog-13610792.post-631830343190287740</id><published>2009-11-25T09:28:00.000-08:00</published><updated>2009-11-25T09:31:29.480-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-25T09:31:29.480-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="AugmentedReality" /><title>Playing augmented reality with my business card</title><content type="html">Augmented Reality is one of topics that I am doing research. I choose a simple demo to make this topic more interesting: playing with business card.&lt;br /&gt;
The target of the demo is: playing a video after detecting the marker on the business card. &lt;br /&gt;
&lt;br /&gt;
FlarManager is the library that I choose to work because it's very flexible and easy to use. It wraps FlarToolkit and make it works with many Flash 3D engines: Sandy, Papervision3D, Away3D,...&lt;br /&gt;
This is the result:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&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/_3g86ZbTqTxs/Sw1oz2qva5I/AAAAAAAAGRY/sUd8705d3Ig/s1600/ar-demo-biz-card0.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="238" src="http://1.bp.blogspot.com/_3g86ZbTqTxs/Sw1oz2qva5I/AAAAAAAAGRY/sUd8705d3Ig/s320/ar-demo-biz-card0.png" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_3g86ZbTqTxs/Sw1o6Wj20JI/AAAAAAAAGRc/zdevj-ChO3A/s1600/ar-demo-biz-card1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="239" src="http://4.bp.blogspot.com/_3g86ZbTqTxs/Sw1o6Wj20JI/AAAAAAAAGRc/zdevj-ChO3A/s320/ar-demo-biz-card1.png" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Below is list of step that I did to make this demo run:&lt;br /&gt;
Step 1: Download FlarManager. You can get its source code from SVN &lt;a href="http://transmote.com/codeshare/FLARManager"&gt;here&lt;/a&gt;.&lt;br /&gt;
Step 2: Configure FlexBuilder and setup the project to build the whole source code of FlarManager (just follow steps in &lt;a href="http://words.transmote.com/wp/flarmanager/inside-flarmanager/getting-started/"&gt;this tutorial&lt;/a&gt;)&lt;br /&gt;
Step 3: Capture my business card and print out the logo of my company.&lt;br /&gt;
Step 4: Use &lt;a href="http://flash.tarotaro.org/ar/MGO2.swf"&gt;this online tool&lt;/a&gt; to create marker from the printed logo. After finishing this step, we get the output is a pattern file using in recognizing the marker under camera. You should save the output file with .pat extension (example: mylogo.pat). You must remember the resolution of your pattern for using in configuration of next steps.&lt;br /&gt;
&lt;br /&gt;
Step 5: Open the FlarManager project by FlexBuilder, the FLARManagerTutorial_Collada.as is the default running demo. So, I choose this file to customize the code. I am very lazy and don't want to do any complex thing. He he&lt;br /&gt;
Step 6: Configure the marker.&lt;br /&gt;
+ Copy our .pat file into resource folder (or any places in your project).&lt;br /&gt;
+ Go to \resources\flarConfig.xml, add your pattern file location in the patterns section.&lt;br /&gt;
&lt;br /&gt;
Step 7: Go to the FLARManagerTutorial_Collada.as file and write code to load video and play it on a plane. This is a very simple task for any Flash developer.&lt;br /&gt;
&lt;br /&gt;
Step 8: Play the video when the marker is detected. To do this, you just need to add the Plane as child of this.activeMarker. FlarManager did everything and return to us the activeMarker in correct position. So, we just add our game above the active marker and play.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do you want to have a special an AR business card with your own logo? He he, try this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13610792-631830343190287740?l=trandangkhoa.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/HhaIDy_Ltn9zYtMTXGpLjmJIJHM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HhaIDy_Ltn9zYtMTXGpLjmJIJHM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/HhaIDy_Ltn9zYtMTXGpLjmJIJHM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HhaIDy_Ltn9zYtMTXGpLjmJIJHM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/kbirdblog/~4/Ncrf1evtpCo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://trandangkhoa.blogspot.com/feeds/631830343190287740/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13610792&amp;postID=631830343190287740&amp;isPopup=true" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/631830343190287740?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/631830343190287740?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/kbirdblog/~3/Ncrf1evtpCo/playing-augmented-reality-with-my.html" title="Playing augmented reality with my business card" /><author><name>Tran Dang Khoa</name><uri>http://www.blogger.com/profile/04439791527236235576</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_3g86ZbTqTxs/Sw1oz2qva5I/AAAAAAAAGRY/sUd8705d3Ig/s72-c/ar-demo-biz-card0.png" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://trandangkhoa.blogspot.com/2009/11/playing-augmented-reality-with-my.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMBSXg4eSp7ImA9WxNaEE0.&quot;"><id>tag:blogger.com,1999:blog-13610792.post-5113436340516430537</id><published>2009-11-23T10:20:00.000-08:00</published><updated>2009-11-23T10:20:58.631-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-23T10:20:58.631-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Gift to you" /><title>My tech stream Yahoo pipe</title><content type="html">I love tech. So, reading tech news is 1 of my habits. I would like to share with you my Yahoo pipe to combine and collect latest technologies (it is not enough to cover all news every day, he he - but these are sources that I often read). &lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://pipes.yahoo.com/trandangkhoa/technews"&gt;http://pipes.yahoo.com/trandangkhoa/technews&lt;/a&gt;&lt;br /&gt;
To get run and get data from this pipe as RSS, you can use this link:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://pipes.yahoo.com/pipes/pipe.run?_id=140fad2e657ef7c3c1b8ce547772be87&amp;amp;_render=rss"&gt;http://pipes.yahoo.com/pipes/pipe.run?_id=140fad2e657ef7c3c1b8ce547772be87&amp;amp;_render=rss&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13610792-5113436340516430537?l=trandangkhoa.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/s3SaCaSILSe9EMqozPir5OzlbO4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/s3SaCaSILSe9EMqozPir5OzlbO4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/s3SaCaSILSe9EMqozPir5OzlbO4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/s3SaCaSILSe9EMqozPir5OzlbO4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/kbirdblog/~4/dxLwGMmNjQc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://trandangkhoa.blogspot.com/feeds/5113436340516430537/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13610792&amp;postID=5113436340516430537&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/5113436340516430537?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/5113436340516430537?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/kbirdblog/~3/dxLwGMmNjQc/my-tech-stream-yahoo-pipe.html" title="My tech stream Yahoo pipe" /><author><name>Tran Dang Khoa</name><uri>http://www.blogger.com/profile/04439791527236235576</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://trandangkhoa.blogspot.com/2009/11/my-tech-stream-yahoo-pipe.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQFRX8zeCp7ImA9WxNaEUo.&quot;"><id>tag:blogger.com,1999:blog-13610792.post-7343152282577696234</id><published>2009-11-21T01:08:00.000-08:00</published><updated>2009-11-25T09:31:54.180-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-25T09:31:54.180-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="iPhone" /><category scheme="http://www.blogger.com/atom/ns#" term="Flash" /><title>Build iPhone application by Flash CS5</title><content type="html">This week, we need to decide whether we should choose putting Flash Professional CS5 into research/training targets of next month. Actually, we already had an iPhone team - with senior developers - has much experience on many projects. However, some Flash developers in our company&amp;nbsp; want to join to iPhone development. So, we need to consider learning roads to help them to join this interesting domain in shortest time.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.flexden.net/images/flash_iphone.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="154" src="http://www.flexden.net/images/flash_iphone.jpg" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;h2&gt;How Flash CS5 supports developers to create iPhone application&lt;/h2&gt;Adobe creates a very clever solution to enable your Flash content to run on the iPhone. They don't create a Flash Player and run your Flash content inside. The Flash Professional CS5 support a iPhone packaging tool converts your Flash content into a real iPhone application. If you have experience on Unity 3D iPhone, you can imagine this as the same packaging tool.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Advantages of Flash CS5&lt;/h2&gt;+ Flash Professional CS5 is the only Windows development environment for iPhone Applications. We don't need to prepare expensive Mac computers for iPhone development.&lt;br /&gt;
+ There are more than 2 million Flash designers/developers compared to the 65,000 iPhone developers. The Flash community is so big, so it's easier to find solutions for technical issues in development.&lt;br /&gt;
+ There are millions of Flash games begging to be converted to run on the iPhone. =&amp;gt; this forces Adobe must find a way to support this. It's not temporary, it's a real trend =&amp;gt; Adobe solution must be persistent in a long time.&lt;br /&gt;
+ Familiar environment/languages with Flash developers =&amp;gt; easy to learn.&lt;br /&gt;
&lt;h2&gt;Disadvantages&lt;/h2&gt;+ Adobe can not catch up with new advanced features in latest iPhone SDK. Flash developers can not use latest technologies from Apple immediately.&lt;br /&gt;
+ Currently, some video formats are not supported in the Adobe conversion solution (H264 is an example).&lt;br /&gt;
+ You cannot use the cool Flash PixelBender technology released last year in your iPhone Apps at this time.&lt;br /&gt;
+ The iPhone itself uses a fraction of the power compared to a PC. Be careful what you program. It may look good on your laptop but barely run on your iPhone.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Final conclusion &lt;/h2&gt;Flash CS5 for iPhone development is a great news. However, we can not choose something not stable for production. We need to try more before making decision. This will be a research target in R&amp;amp;D team later. Any new technology always needs time for growing and being proved its strength in the real life.&lt;br /&gt;
&lt;br /&gt;
We're very happy to receive your feedback or any good news from this tech.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13610792-7343152282577696234?l=trandangkhoa.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/yNbn-yfPv_v0e1lanpEF1QM-TGA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yNbn-yfPv_v0e1lanpEF1QM-TGA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/yNbn-yfPv_v0e1lanpEF1QM-TGA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yNbn-yfPv_v0e1lanpEF1QM-TGA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/kbirdblog/~4/nGy2Tlw2jNI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://trandangkhoa.blogspot.com/feeds/7343152282577696234/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13610792&amp;postID=7343152282577696234&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/7343152282577696234?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/7343152282577696234?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/kbirdblog/~3/nGy2Tlw2jNI/build-iphone-application-by-flash-cs5.html" title="Build iPhone application by Flash CS5" /><author><name>Tran Dang Khoa</name><uri>http://www.blogger.com/profile/04439791527236235576</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://trandangkhoa.blogspot.com/2009/11/build-iphone-application-by-flash-cs5.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQBSXY5eSp7ImA9WxNbEEQ.&quot;"><id>tag:blogger.com,1999:blog-13610792.post-1952444839962297756</id><published>2009-11-12T21:02:00.000-08:00</published><updated>2009-11-12T22:39:18.821-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-12T22:39:18.821-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="iPhone" /><title>How the iPhone locates you?</title><content type="html">This article is for my beloved developers - who always want to know what the truth behind the stage is.&lt;br /&gt;
&lt;br /&gt;
All content in this article is based on&amp;nbsp; iPhone cookbook - a great book for iPhone developers. &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://trialx.com/img/tx_comic_3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="188" src="http://trialx.com/img/tx_comic_3.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h1&gt;Methods for positioning used in iPhone&lt;br /&gt;
&lt;/h1&gt;The iPhone uses three (or possibly four) methods to locate you.These technologies  including: &lt;br /&gt;
+ GPS Positioning &lt;br /&gt;
+ WiFi Positioning &lt;br /&gt;
+ Cell Tower Positioning &lt;br /&gt;
+ Internet Provider Positioning  &lt;br /&gt;
&lt;h2&gt;GPS Positioning&lt;/h2&gt;GPS system tracks your movement courtesy of a series of medium Earth orbit satellites provided by the U.S. Department of Defense. These satellites emit microwave signals, which your iPhone picks up and uses to triangulate your position to a high level of accuracy. Like any GPS system, this requires a clear path between you and the satellites, so it works best outdoors and away from trees.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;WiFi Positioning&lt;/h2&gt;Core Location’s preferred pseudo-GPS geopositioning method calls on Wifi-positioning service provided by SkyHook Wireless. &lt;br /&gt;
&lt;br /&gt;
SkyHook offers extremely accurate WiFi placement. When an iPhone knows the WiFi and WiMax routers you are near, it uses their MAC addresses to search SkyHook’s databases, positioning you from that data.&lt;br /&gt;
&lt;br /&gt;
This way provides pretty accurate positioning and can usually locate you within a few hundred feet of your actual location&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Cell Tower Positioning&lt;/h2&gt;Currently, iPhone use cell tower positioning service through:&lt;br /&gt;
+ Google Maps cell tower positioning.&lt;br /&gt;
+ SkyHook cell tower positioning (not sure 100%).&lt;br /&gt;
&lt;br /&gt;
By this way, the iPhone uses its antenna to find the nearest four or five cell towers (of the service providers) and then triangulates your position based on the cell tower signal strength. You’ve probably seen cell tower location in action; it’s the kind that shows you about a half mile away from where you are standing—assuming you’re not standing right next to an actual cell tower.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Internet Provider Positioning&lt;/h2&gt;This  approach uses an Internet provider location to find the nearest mapped Internet provider’s central office. The returned data is typically up to several miles off your actual location—unless you happen to be visiting your Internet provider.&lt;br /&gt;
SkyHook actually offers a third positioning approach, but it is never seen the iPhone use.&lt;br /&gt;
&lt;h1&gt;Hybridizing the Approaches&lt;/h1&gt;So, what iPhone acutally works with 4 above methods?&lt;br /&gt;
&lt;br /&gt;
The iPhone approaches location in stages. Based on the accuracy level you request, it uses a fallback method. If it cannot accurately locate you with GPS or SkyHook WiFi mapping, it falls back to the cell tower location of Google Maps. If that doesn’t work, it presumably falls back further to SkyHook Internet provider location. And if that doesn’t work, it finally fails. The latest releases of the SDK actually provide multiple (asynchronous!) success callbacks for each of these fallback methods. You may receive three or four results at any time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13610792-1952444839962297756?l=trandangkhoa.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/AxK2PaivaFmOH_RD5u3mkx8sndQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/AxK2PaivaFmOH_RD5u3mkx8sndQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/AxK2PaivaFmOH_RD5u3mkx8sndQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/AxK2PaivaFmOH_RD5u3mkx8sndQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/kbirdblog/~4/fnKJnQ7i_9w" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://trandangkhoa.blogspot.com/feeds/1952444839962297756/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13610792&amp;postID=1952444839962297756&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/1952444839962297756?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/1952444839962297756?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/kbirdblog/~3/fnKJnQ7i_9w/how-iphone-locates-you.html" title="How the iPhone locates you?" /><author><name>Tran Dang Khoa</name><uri>http://www.blogger.com/profile/04439791527236235576</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://trandangkhoa.blogspot.com/2009/11/how-iphone-locates-you.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkIBQHs_eyp7ImA9WxNUE0g.&quot;"><id>tag:blogger.com,1999:blog-13610792.post-1308788307517105945</id><published>2009-11-04T09:02:00.000-08:00</published><updated>2009-11-04T09:09:11.543-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-04T09:09:11.543-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Trend" /><title>Programming language community index 2009</title><content type="html">This is the&lt;a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html"&gt; index from Tiobe website&lt;/a&gt; of top programming languages until 2009&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;table align="left" border="1" bordercolordark="#003366" bordercolorlight="#c0c0c0" class="TpciTable" height="592" id="Table2" style="width: 100%;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;th align="center" nowrap="nowrap"&gt;&lt;div style="text-align: left;"&gt;Position&lt;br /&gt;
&lt;/div&gt;Oct 2009&lt;br /&gt;
&lt;/th&gt;&lt;th align="center" nowrap="nowrap"&gt;Position&lt;br /&gt;
Oct 2008&lt;br /&gt;
&lt;/th&gt;&lt;th align="center" nowrap="nowrap"&gt;Delta in Position&lt;br /&gt;
&lt;/th&gt;&lt;th align="center" nowrap="nowrap"&gt;Programming Language&lt;br /&gt;
&lt;/th&gt;&lt;th align="center" nowrap="nowrap"&gt;Ratings&lt;br /&gt;
Oct 2009&lt;br /&gt;
&lt;/th&gt;&lt;/tr&gt;
&lt;tr height="25"&gt;  &lt;td align="center"&gt;1&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;1&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Same.gif" /&gt;&lt;br /&gt;
&lt;/td&gt;  &lt;td&gt;&lt;a href="http://www.tiobe.com/content/paperinfo/tpci/Java.html"&gt;Java&lt;/a&gt;&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;18.718%&lt;br /&gt;
&lt;/td&gt;     &lt;/tr&gt;
&lt;tr height="25"&gt;  &lt;td align="center"&gt;2&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;2&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Same.gif" /&gt;&lt;br /&gt;
&lt;/td&gt;  &lt;td&gt;&lt;a href="http://www.tiobe.com/content/paperinfo/tpci/C.html"&gt;C&lt;/a&gt;&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;16.891%&lt;br /&gt;
&lt;/td&gt;     &lt;/tr&gt;
&lt;tr height="25"&gt;  &lt;td align="center"&gt;3&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;5&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Up.gif" /&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Up.gif" /&gt; &lt;br /&gt;
&lt;/td&gt;  &lt;td&gt;&lt;a href="http://www.tiobe.com/content/paperinfo/tpci/PHP.html"&gt;PHP&lt;/a&gt;&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;10.390%&lt;br /&gt;
&lt;/td&gt;     &lt;/tr&gt;
&lt;tr height="25"&gt;  &lt;td align="center"&gt;4&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;3&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Down.gif" /&gt; &lt;br /&gt;
&lt;/td&gt;  &lt;td&gt;&lt;a href="http://www.tiobe.com/content/paperinfo/tpci/C__.html"&gt;C++&lt;/a&gt;&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;9.911%&lt;br /&gt;
&lt;/td&gt;     &lt;/tr&gt;
&lt;tr height="25"&gt;  &lt;td align="center"&gt;5&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;4&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Down.gif" /&gt; &lt;br /&gt;
&lt;/td&gt;  &lt;td&gt;&lt;a href="http://www.tiobe.com/content/paperinfo/tpci/%28Visual%29_Basic.html"&gt;(Visual) Basic&lt;/a&gt;&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;8.729%&lt;br /&gt;
&lt;/td&gt;     &lt;/tr&gt;
&lt;tr height="25"&gt;  &lt;td align="center"&gt;6&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;8&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Up.gif" /&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Up.gif" /&gt; &lt;br /&gt;
&lt;/td&gt;  &lt;td&gt;&lt;a href="http://www.tiobe.com/content/paperinfo/tpci/C_.html"&gt;C#&lt;/a&gt;&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;4.433%&lt;br /&gt;
&lt;/td&gt;     &lt;/tr&gt;
&lt;tr height="25"&gt;  &lt;td align="center"&gt;7&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;6&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Down.gif" /&gt; &lt;br /&gt;
&lt;/td&gt;  &lt;td&gt;&lt;a href="http://www.tiobe.com/content/paperinfo/tpci/Python.html"&gt;Python&lt;/a&gt;&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;3.914%&lt;br /&gt;
&lt;/td&gt;     &lt;/tr&gt;
&lt;tr height="25"&gt;  &lt;td align="center"&gt;8&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;7&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Down.gif" /&gt; &lt;br /&gt;
&lt;/td&gt;  &lt;td&gt;&lt;a href="http://www.tiobe.com/content/paperinfo/tpci/Perl.html"&gt;Perl&lt;/a&gt;&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;3.776%&lt;br /&gt;
&lt;/td&gt;     &lt;/tr&gt;
&lt;tr height="25"&gt;  &lt;td align="center"&gt;9&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;11&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Up.gif" /&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Up.gif" /&gt; &lt;br /&gt;
&lt;/td&gt;  &lt;td&gt;&lt;a href="http://www.tiobe.com/content/paperinfo/tpci/JavaScript.html"&gt;JavaScript&lt;/a&gt;&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;3.033%&lt;br /&gt;
&lt;/td&gt;     &lt;/tr&gt;
&lt;tr height="25"&gt;  &lt;td align="center"&gt;10&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;10&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Same.gif" /&gt;&lt;br /&gt;
&lt;/td&gt;  &lt;td&gt;&lt;a href="http://www.tiobe.com/content/paperinfo/tpci/Ruby.html"&gt;Ruby&lt;/a&gt;&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;2.458%&lt;br /&gt;
&lt;/td&gt;     &lt;/tr&gt;
&lt;tr height="25"&gt;  &lt;td align="center"&gt;11&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;9&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Down.gif" /&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Down.gif" /&gt; &lt;br /&gt;
&lt;/td&gt;  &lt;td&gt;&lt;a href="http://www.tiobe.com/content/paperinfo/tpci/Delphi.html"&gt;Delphi&lt;/a&gt;&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;2.140%&lt;br /&gt;
&lt;/td&gt;     &lt;/tr&gt;
&lt;tr height="25"&gt;  &lt;td align="center"&gt;12&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;13&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Up.gif" /&gt; &lt;br /&gt;
&lt;/td&gt;  &lt;td&gt;&lt;a href="http://www.tiobe.com/content/paperinfo/tpci/PL_SQL.html"&gt;PL/SQL&lt;/a&gt;&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;1.020%&lt;br /&gt;
&lt;/td&gt;     &lt;/tr&gt;
&lt;tr height="25"&gt;  &lt;td align="center"&gt;13&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;49&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Up.gif" /&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Up.gif" /&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Up.gif" /&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Up.gif" /&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Up.gif" /&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Up.gif" /&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Up.gif" /&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Up.gif" /&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Up.gif" /&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Up.gif" /&gt; &lt;br /&gt;
&lt;/td&gt;  &lt;td&gt;&lt;a href="http://www.tiobe.com/content/paperinfo/tpci/Objective-C.html"&gt;Objective-C&lt;/a&gt;&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;0.902%&lt;br /&gt;
&lt;/td&gt;     &lt;/tr&gt;
&lt;tr height="25"&gt;  &lt;td align="center"&gt;14&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;14&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Same.gif" /&gt;&lt;br /&gt;
&lt;/td&gt;  &lt;td&gt;&lt;a href="http://www.tiobe.com/content/paperinfo/tpci/SAS.html"&gt;SAS&lt;/a&gt;&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;0.805%&lt;br /&gt;
&lt;/td&gt;     &lt;/tr&gt;
&lt;tr height="25"&gt;  &lt;td align="center"&gt;15&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;16&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Up.gif" /&gt; &lt;br /&gt;
&lt;/td&gt;  &lt;td&gt;&lt;a href="http://www.tiobe.com/content/paperinfo/tpci/Pascal.html"&gt;Pascal&lt;/a&gt;&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;0.669%&lt;br /&gt;
&lt;/td&gt;     &lt;/tr&gt;
&lt;tr height="25"&gt;  &lt;td align="center"&gt;16&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;20&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Up.gif" /&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Up.gif" /&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Up.gif" /&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Up.gif" /&gt; &lt;br /&gt;
&lt;/td&gt;  &lt;td&gt;&lt;a href="http://www.tiobe.com/content/paperinfo/tpci/ABAP.html"&gt;ABAP&lt;/a&gt;&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;0.661%&lt;br /&gt;
&lt;/td&gt;     &lt;/tr&gt;
&lt;tr height="25"&gt;  &lt;td align="center"&gt;17&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;19&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Up.gif" /&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Up.gif" /&gt; &lt;br /&gt;
&lt;/td&gt;  &lt;td&gt;&lt;a href="http://www.tiobe.com/content/paperinfo/tpci/Lisp_Scheme.html"&gt;Lisp/Scheme&lt;/a&gt;&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;0.605%&lt;br /&gt;
&lt;/td&gt;     &lt;/tr&gt;
&lt;tr height="25"&gt;  &lt;td align="center"&gt;18&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;22&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Up.gif" /&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Up.gif" /&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Up.gif" /&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Up.gif" /&gt; &lt;br /&gt;
&lt;/td&gt;  &lt;td&gt;&lt;a href="http://www.tiobe.com/content/paperinfo/tpci/MATLAB.html"&gt;MATLAB&lt;/a&gt;&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;0.577%&lt;br /&gt;
&lt;/td&gt;     &lt;/tr&gt;
&lt;tr height="25"&gt;  &lt;td align="center"&gt;19&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;12&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Down.gif" /&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Down.gif" /&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Down.gif" /&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Down.gif" /&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Down.gif" /&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Down.gif" /&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Down.gif" /&gt; &lt;br /&gt;
&lt;/td&gt;  &lt;td&gt;&lt;a href="http://www.tiobe.com/content/paperinfo/tpci/D.html"&gt;D&lt;/a&gt;&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;0.570%&lt;br /&gt;
&lt;/td&gt;     &lt;/tr&gt;
&lt;tr height="25"&gt;  &lt;td align="center"&gt;20&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;15&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Down.gif" /&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Down.gif" /&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Down.gif" /&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Down.gif" /&gt;&lt;img border="0" src="http://www.tiobe.com/tiobe_index/images/Down.gif" /&gt; &lt;br /&gt;
&lt;/td&gt;  &lt;td&gt;&lt;a href="http://www.tiobe.com/content/paperinfo/tpci/Lua.html"&gt;Lua&lt;/a&gt;&lt;br /&gt;
&lt;/td&gt;  &lt;td align="center"&gt;0.527%&lt;br /&gt;
&lt;/td&gt;    &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div style="text-align: left;"&gt;The long term trends for the top 10 programming languages can be found in the  line diagram below.&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;h1 align="center"&gt;&lt;span style="margin-left: -51px; margin-top: -57px; opacity: 0.0199883;"&gt;&lt;a class="smarterwiki-popup-bubble-link" href="http://search.twitter.com/search?q=The%20long%20term%20trends%20for%20the%20top%2010%20programming%20languages%20can%20be%20found%20in%20the%20line%20diagram%20below.%0D%0A%0D%0A" target="_blank" title="Search Twitter"&gt;&lt;img alt="" class="smarterwiki-popup-bubble-link-favicon" src="http://twitter.com/favicon.ico" /&gt;&lt;/a&gt;&lt;a class="smarterwiki-popup-bubble-link" href="http://www.google.com/search?q=The%20long%20term%20trends%20for%20the%20top%2010%20programming%20languages%20can%20be%20found%20in%20the%20line%20diagram%20below.%0D%0A%0D%0A" target="_blank" title="Search Google"&gt;&lt;img alt="" class="smarterwiki-popup-bubble-link-favicon" src="http://www.google.com/favicon.ico" /&gt;&lt;/a&gt;&lt;a class="smarterwiki-popup-bubble-link" href="http://smarterfox.com/wikisearch/search?q=The%20long%20term%20trends%20for%20the%20top%2010%20programming%20languages%20can%20be%20found%20in%20the%20line%20diagram%20below.%0D%0A%0D%0A&amp;amp;locale=en-US" target="_blank" title="Search Wikipedia"&gt;&lt;img alt="" class="smarterwiki-popup-bubble-link-favicon" src="http://static.smarterfox.com/media/wiki-favicon-sharpened.png" /&gt;&lt;/a&gt;&lt;a class="smarterwiki-popup-bubble-link" href="http://www.oneriot.com/search?p=smarterfox&amp;amp;ssrc=smarterfox_popup_bubble&amp;amp;spid=8493c8f1-0b5b-4116-99fd-f0bcb0a3b602&amp;amp;q=The%20long%20term%20trends%20for%20the%20top%2010%20programming%20languages%20can%20be%20found%20in%20the%20line%20diagram%20below.%0D%0A%0D%0A" target="_blank" title="Search OneRiot"&gt;&lt;img alt="" class="smarterwiki-popup-bubble-link-favicon" src="http://static.smarterfox.com/media/popup_bubble/oneriot-favicon.ico" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;img height="300" src="http://www.tiobe.com/content/paperinfo/tpci/images/tpci_trends.png" width="400" /&gt;&lt;/h1&gt;Predicting trends from this information&lt;br /&gt;
+ Some traditional languages as Java, C is down (not too much). These languages will not die (at least in 10 years later) because of the need to develop/maintain enterprise application/ embedded systems.&lt;br /&gt;
+ Scripting languages like Ruby, Python are trends at this time.&lt;br /&gt;
+ PHP still keeps its position. There are many open source from PHP community with great features. It can offer the cheapest solutions to develop application for small/medium organizations.&lt;br /&gt;
+ Objective C is still new but a hot trend because of the need to develop applications on Mac and iPhone.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13610792-1308788307517105945?l=trandangkhoa.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/O0fYUgbJsgGXpReSpgORgAtD8w8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/O0fYUgbJsgGXpReSpgORgAtD8w8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/O0fYUgbJsgGXpReSpgORgAtD8w8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/O0fYUgbJsgGXpReSpgORgAtD8w8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/kbirdblog/~4/SmpLdhZwP-I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://trandangkhoa.blogspot.com/feeds/1308788307517105945/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13610792&amp;postID=1308788307517105945&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/1308788307517105945?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/1308788307517105945?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/kbirdblog/~3/SmpLdhZwP-I/programming-language-community-index.html" title="Programming language community index 2009" /><author><name>Tran Dang Khoa</name><uri>http://www.blogger.com/profile/04439791527236235576</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://trandangkhoa.blogspot.com/2009/11/programming-language-community-index.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUINRXo4eyp7ImA9WxNVF0w.&quot;"><id>tag:blogger.com,1999:blog-13610792.post-376591964232050906</id><published>2009-10-28T00:06:00.000-07:00</published><updated>2009-10-28T00:06:34.433-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-28T00:06:34.433-07:00</app:edited><title>Ruby On Rails</title><content type="html">I've read this story in "Ruby On Rails for dummies" ebook. It's interesting! I was impressed. He he!&lt;br /&gt;
-----------------------------------------------------------------------&lt;br /&gt;
Once upon a time, there were three little programmers. The programmers wrote code for the World Wide Web — code to give users access to a company’s database.&lt;br /&gt;
&lt;br /&gt;
The first programmer was in a hurry to write her code. She wrote simple code as  quickly as she could. The second programmer wasn’t quite in such a hurry. She used the traditional Waterfall methodology — a multistep process involving analysis, design, coding, testing, and deployment. The third programmer was careful and industrious. She used a heavyweight persistence framework such as Enterprise JavaBeans. She built her software to cover every possible contingency and to accommodate any future need.&lt;br /&gt;
&lt;br /&gt;
As you might expect, this story has a big bad wolf. The wolf might have been a manager, a client paying for the software’s creation, or a customer attempting to access the company’s Web site. The wolf went in reverse order, visiting the careful and industrious programmer’s Web site first.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.blackfive.net/main/images/2007/09/28/angry_wolf.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="289" src="http://www.blackfive.net/main/images/2007/09/28/angry_wolf.jpg" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Unfortunately, the wolf couldn’t log onto the industrious programmer’s site. Instead, he got the message: “This site is under construction.” The careful, industrious programmer had completed only half of her work. The heavyweight persistence framework was difficult to learn and burdensome to use.&lt;br /&gt;
Needless, to say, the wolf huffed and he puffed, and he blew the Web site down.&lt;br /&gt;
&lt;br /&gt;
code in place, the second programmer couldn’t easily make major changes. All she could do was fix bugs and make the code run a bit faster. She promised that she’d update the requirements for version 2.0 of the system. But the wolf was impatient. He huffed and he puffed, and he blew the Web site down.&lt;br /&gt;
&lt;br /&gt;
In desperation, the wolf visited the first programmer’s Web site. She had built the site quickly and easily, using Ruby on Rails. In fact, her first prototype had been up and running in two days. Her co-workers had tested the prototype, critiqued the prototype’s features, and told her what they expected in the next prototype.&lt;br /&gt;
&lt;br /&gt;
The next prototype was ready sooner than anyone expected. Once again, co-workers tested the prototype, suggested improvements, and helped the programmer to refine her evolving requirements.&lt;br /&gt;
&lt;br /&gt;
After several brief rounds of coding and testing, the Web site was ready for public use. The wolf enjoyed visiting the site because the site’s look and feel reflected the way it had been designed. The site was nimble, intelligent, and easy to use. The site did the kinds of things the wolf wanted it to do because the programmer had gotten feedback on each prototype. Everyone was happy . . . for a while anyway.&lt;br /&gt;
&lt;br /&gt;
To repay the Ruby on Rails programmer, the wolf offered to repair her house’s leaking roof. Unfortunately, the wolf had a nasty accident. While he was working on the roof, he fell into the chimney and landed directly into a pot of boiling water. Goodbye, wolf!&lt;br /&gt;
&lt;br /&gt;
But the Ruby on Rails programmer was happy. She had created a great Web site. And with all the time she’d saved using Ruby on Rails, she was able to climb up to the roof and repair the leak herself.&lt;br /&gt;
The end.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13610792-376591964232050906?l=trandangkhoa.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/VgzIM3brvBmP5uMkt355aZEEZPc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VgzIM3brvBmP5uMkt355aZEEZPc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/VgzIM3brvBmP5uMkt355aZEEZPc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VgzIM3brvBmP5uMkt355aZEEZPc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/kbirdblog/~4/RWt4VLKDP6E" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://trandangkhoa.blogspot.com/feeds/376591964232050906/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13610792&amp;postID=376591964232050906&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/376591964232050906?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/376591964232050906?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/kbirdblog/~3/RWt4VLKDP6E/ruby-on-rails.html" title="Ruby On Rails" /><author><name>Tran Dang Khoa</name><uri>http://www.blogger.com/profile/04439791527236235576</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://trandangkhoa.blogspot.com/2009/10/ruby-on-rails.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMESH4yfSp7ImA9WxNaEUo.&quot;"><id>tag:blogger.com,1999:blog-13610792.post-635524710331618694</id><published>2009-10-08T00:36:00.000-07:00</published><updated>2009-11-25T09:33:29.095-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-25T09:33:29.095-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="iPhone" /><category scheme="http://www.blogger.com/atom/ns#" term="AugmentedReality" /><category scheme="http://www.blogger.com/atom/ns#" term="Research" /><title>Research topic for this month: iPhone AR</title><content type="html">AR is not a new technology nowadays. However, its applications are very interesting and useful. To adapt the market trend, I decide to have a quick look into AR technology on iPhone.&lt;br /&gt;
&lt;br /&gt;
Below is a very interesting demo that I've found on Internet.&lt;br /&gt;
&lt;br /&gt;
&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/_0bitKDKdg0&amp;amp;hl=en&amp;amp;fs=1&amp;amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/_0bitKDKdg0&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Some quick notes for iPhone AR technology&lt;br /&gt;
&lt;h3&gt;Third party providers provide us solution to build iPhone AR app&lt;/h3&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1. iPhone ARKit: open source iphone AR&lt;/b&gt;&lt;br /&gt;
Ref links:&lt;br /&gt;
&lt;a href="http://github.com/zac/iphonearkit/"&gt;http://github.com/zac/iphonearkit/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.iphonear.org/"&gt;http://www.iphonear.org/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://code.google.com/p/iphonearkit/"&gt;http://code.google.com/p/iphonearkit/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;2. SREngine&lt;/b&gt;&lt;br /&gt;
SREngine stands for Scene Recognition Engine, which is a software engine to recognize static scenes of architectures, streets, posters, rooms, and so on. Due to the ability to specify what user is.&lt;br /&gt;
&lt;br /&gt;
&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/fAl_tiIVwhM&amp;hl=en&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/fAl_tiIVwhM&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;3. ARToolKit v4.4 iPhone&lt;/b&gt;&lt;br /&gt;
The ARToolKit v4.4 is the first fully-featured AR framework that supports native operation on Apple iPhone, which lets you create applications with sample real world imagery captured with your iPhone camera, and merges them with software-generated 3D objects. The ARToolKit is also well integrated with the accelerometer of the iPhone, which allows it to automatically detect movements from the iPhone, and impose those movements on 3D images instantaneously.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;4. D'Fusion Mobile - a solution provided by T-Immersion company&lt;/b&gt;&lt;br /&gt;
&lt;a href="http://draft.blogger.com/%28http://demos.t-immersion.com/%29"&gt;(http://demos.t-immersion.com/)&lt;/a&gt;&lt;br /&gt;
D’Fusion mobile will operate seamlessly on Symbian and Windows devices, with iPhone and Android support following thereafter. Providing a simple and user friendly experience on mobile phone Total Immersion offers turn key solutions adapted to your needs. Put your smartphone in front of a marker and get a unique 3D Augmented Reality experience!&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.t-immersion.com/lc-content/uploads/2009/09/mobility_voiture-174x121.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://www.t-immersion.com/lc-content/uploads/2009/09/mobility_voiture-174x121.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="clear:both"&gt;&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;5.Metaio Mobile &lt;/b&gt;&lt;br /&gt;
Link: &lt;a href="http://www.metaio.com/products/mobile/"&gt;http://www.metaio.com/products/mobile/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Unifeye Mobile is a glimpse of the (virtual/real) future - through the viewfinder of your cell phone's camera! With Unifeye Mobile, metaio is developing the first fully-integrated Augmented Reality software for mobile devices.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Latest news from Apple with AR technology:&lt;/h3&gt;Link: &lt;a href="http://arstechnica.com/apple/news/2009/07/augmented-reality-coming-to-iphone-with-iphone-os-31.ars"&gt;http://arstechnica.com/apple/news/2009/07/augmented-reality-coming-to-iphone-with-iphone-os-31.ars&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Developers should be able to use official APIs in iPhone OS 3.1 to create so-called "augmented reality" apps for the iPhone 3GS, according to comments from one developer. Already, developers are trying to find uses for such apps&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13610792-635524710331618694?l=trandangkhoa.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/w_y9UiHbKXef2mqRT00YylUdZOk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/w_y9UiHbKXef2mqRT00YylUdZOk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/w_y9UiHbKXef2mqRT00YylUdZOk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/w_y9UiHbKXef2mqRT00YylUdZOk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/kbirdblog/~4/_BJKv7asSuQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://trandangkhoa.blogspot.com/feeds/635524710331618694/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13610792&amp;postID=635524710331618694&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/635524710331618694?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/635524710331618694?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/kbirdblog/~3/_BJKv7asSuQ/research-topic-for-this-month-iphone-ar.html" title="Research topic for this month: iPhone AR" /><author><name>Tran Dang Khoa</name><uri>http://www.blogger.com/profile/04439791527236235576</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://trandangkhoa.blogspot.com/2009/10/research-topic-for-this-month-iphone-ar.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cBR3c5eCp7ImA9WxNXEko.&quot;"><id>tag:blogger.com,1999:blog-13610792.post-8492859113413884780</id><published>2009-09-29T18:41:00.000-07:00</published><updated>2009-09-29T18:44:16.920-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-29T18:44:16.920-07:00</app:edited><title>Social network vs Community site</title><content type="html">Yesterday, when I have to research a technical solution for a new prospect, I asked some questions to Mr. Hong - an excellent Technical manager in our company - about approaches to build current system for a big community. He tells me many good points and consult me a lot. However, I found another lack thing in my knowledge: what are differences between Online Community site and Social network? For a long time, I use the terms "online community" and "social network" interchangeably.&lt;br /&gt;
&lt;br /&gt;
After trying searching and digging into these concepts, I found some points help me to understand them more clearly.&lt;br /&gt;
&lt;blockquote&gt;A &lt;b&gt;social network&lt;/b&gt; is a &lt;a href="http://en.wikipedia.org/wiki/Social_structure" title="Social structure"&gt;social structure&lt;/a&gt; made of individuals (or organizations) called "nodes," which are tied (connected) by one or more specific types of interdependency, such as friendship, &lt;a href="http://en.wikipedia.org/wiki/Kinship" title="Kinship"&gt;kinship&lt;/a&gt;, financial exchange, dislike, &lt;a href="http://en.wikipedia.org/wiki/Sexual_network" title="Sexual network"&gt;sexual relationships&lt;/a&gt;, or relationships of beliefs, knowledge or prestige.&lt;br /&gt;
Social network analysis views &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Social_relationship" title="Social relationship"&gt;social relationships&lt;/a&gt; in terms of &lt;a href="http://en.wikipedia.org/wiki/Network_theory" title="Network theory"&gt;network theory&lt;/a&gt; about &lt;i&gt;nodes&lt;/i&gt; and &lt;i&gt;ties&lt;/i&gt;. &lt;a href="http://en.wikipedia.org/wiki/Node_%28computer_science%29" title="Node (computer science)"&gt;Nodes&lt;/a&gt; are the individual actors within the networks, and ties are the relationships between the actors. The resulting &lt;a href="http://en.wikipedia.org/wiki/Graph_%28mathematics%29" title="Graph (mathematics)"&gt;graph&lt;/a&gt;-based structures are often very &lt;a href="http://en.wikipedia.org/wiki/Complex_network" title="Complex network"&gt;complex&lt;/a&gt;. There can be many kinds of ties between the nodes. Research in a number of academic fields has shown that social networks operate on many levels, from families up to the level of nations, and play a critical role in determining the way problems are solved, organizations are run, and the degree to which individuals succeed in achieving their goals.&lt;br /&gt;
&lt;br /&gt;
&lt;/blockquote&gt;(From http://en.wikipedia.org/wiki/Social_network)&lt;br /&gt;
&lt;br /&gt;
A &lt;b&gt;virtual community&lt;/b&gt;, &lt;b&gt;e-community&lt;/b&gt; or &lt;b&gt;online community&lt;/b&gt; is a &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Group_%28sociology%29" title="Group (sociology)"&gt;group&lt;/a&gt; of people that primarily interact via communication media such as &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Newsletters" title="Newsletters"&gt;newsletters&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Telephone" title="Telephone"&gt;telephone&lt;/a&gt;, &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Email" title="Email"&gt;email&lt;/a&gt;, internet &lt;a href="http://en.wikipedia.org/wiki/Social_network_service" title="Social network service"&gt;social network service&lt;/a&gt; or &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Instant_messages" title="Instant messages"&gt;instant messages&lt;/a&gt; rather than face to face, for social, professional, educational or other purposes.&lt;br /&gt;
&lt;br /&gt;
(http://en.wikipedia.org/wiki/Online_community) &lt;br /&gt;
&lt;br /&gt;
These definitions may make us more confuse. However, in my opinion, these are some things that we should consider:&lt;br /&gt;
1. Target of a social network is "building the social structure". Target of an online community site is: "building communication tools of a community". Anyways, in many cases the boundary is not always clear.&lt;br /&gt;
2. All activities of a user in a social network must be attached with "social nodes". That means "a user joined to a social network must find and expand his/her relationships". Without doing this, he/she can not see any activities are happening. This is the strongest point of social network ("encouraging and forcing making relationships"). In online community site, this is not required. You can join a community site (like Community Server forum) and can see all happening activities without making friends with anyone. (I found this point in &lt;a href="http://blog.vovici.com/blog/bid/18066/Social-Networks-vs-Online-Communities-vs-Panels"&gt;this article&lt;/a&gt;).&lt;br /&gt;
&lt;br /&gt;
I am waiting for your comments and sharings about these concepts!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13610792-8492859113413884780?l=trandangkhoa.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/YiCdm2eQ6tLCaApxDHj08PYqfzs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YiCdm2eQ6tLCaApxDHj08PYqfzs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/YiCdm2eQ6tLCaApxDHj08PYqfzs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YiCdm2eQ6tLCaApxDHj08PYqfzs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/kbirdblog/~4/WldLQLmlQcc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://trandangkhoa.blogspot.com/feeds/8492859113413884780/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13610792&amp;postID=8492859113413884780&amp;isPopup=true" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/8492859113413884780?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/8492859113413884780?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/kbirdblog/~3/WldLQLmlQcc/social-network-vs-community-site.html" title="Social network vs Community site" /><author><name>Tran Dang Khoa</name><uri>http://www.blogger.com/profile/04439791527236235576</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total><feedburner:origLink>http://trandangkhoa.blogspot.com/2009/09/social-network-vs-community-site.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEIAQnoyeip7ImA9WxNQF00.&quot;"><id>tag:blogger.com,1999:blog-13610792.post-243727465892261655</id><published>2009-09-23T03:40:00.000-07:00</published><updated>2009-09-23T03:42:23.492-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-23T03:42:23.492-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="iPhone" /><title>Meditation Garden iPhone app and SiO2</title><content type="html">&lt;span class="fullpost"&gt;&lt;br /&gt;
I love this app. It inspires me to develop app with SiO2 game engine! &lt;br /&gt;
&lt;br /&gt;
&lt;object width="400" height="210"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=6012880&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=6012880&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="210"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href="http://vimeo.com/6012880"&gt;MeditationGarden&lt;/a&gt; from &lt;a href="http://vimeo.com/user1643799"&gt;SIO2 Interactive&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13610792-243727465892261655?l=trandangkhoa.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/KXMZN2M5KnyhbuEh-35dGWElJKY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KXMZN2M5KnyhbuEh-35dGWElJKY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/KXMZN2M5KnyhbuEh-35dGWElJKY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KXMZN2M5KnyhbuEh-35dGWElJKY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/kbirdblog/~4/IMQG7azvKrM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://trandangkhoa.blogspot.com/feeds/243727465892261655/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13610792&amp;postID=243727465892261655&amp;isPopup=true" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/243727465892261655?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/243727465892261655?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/kbirdblog/~3/IMQG7azvKrM/meditation-garden-iphone-app.html" title="Meditation Garden iPhone app and SiO2" /><author><name>Tran Dang Khoa</name><uri>http://www.blogger.com/profile/04439791527236235576</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total><feedburner:origLink>http://trandangkhoa.blogspot.com/2009/09/meditation-garden-iphone-app.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04CQnszcCp7ImA9WxNRF0o.&quot;"><id>tag:blogger.com,1999:blog-13610792.post-8313504333862846237</id><published>2009-09-12T09:27:00.000-07:00</published><updated>2009-09-12T11:26:03.588-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-12T11:26:03.588-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="NHiberante" /><category scheme="http://www.blogger.com/atom/ns#" term="TinyERP" /><title>NHibernate auto create database bug when using attribute for mapping</title><content type="html">I am on vacation. However, I've just received a feedback  email from a developer in Brazil on &lt;a href="http://tinyerp.codeplex.com/"&gt; TinyERP&lt;/a&gt; (an open source project that I posted several months ago). He found that TinyERP framework can not create database automatically although he set the "create" value for hibernate.hbm2ddl.auto NHibernate properties in spring.xml config.&lt;br /&gt;
Actually, I haven't released any version of TinyERP in Codeplex. In the past, I created a sample database (not generate DB automatically from schema). Anyway, I need to check this issue.&lt;br /&gt;
After several minutes checking, I found the issue:&lt;br /&gt;
&lt;br /&gt;
In TinyERP, I use NHibernate attribute on Business Entity for mapping. To use this, we have to override a LocalSessionFactoryObject to add assembly contains Business Entity classes into HbmSerializer.  HbmSerializer only helps us to create Hibernate mapping config in stream. A very stupid thing is: the code to check and generate DB schema does not exist in parent classes of LocalSessionFactoryObject =&gt; Nothing happens when you set hibernate.hbm2ddl.auto="create".&lt;br /&gt;
&lt;br /&gt;
The old code&lt;br /&gt;
&lt;pre name="code" class="csharp"&gt;public class LocalSessionFactoryObjectImp : LocalSessionFactoryObject
    {
        protected override void PostProcessConfiguration(NHibernate.Cfg.Configuration config)
        {
            base.PostProcessConfiguration(config);
            HbmSerializer.Default.Validate = true;
            IList&lt;Module&gt; modules = ApplicationConfiguration.GetInstance().Modules;
            foreach (Module module in modules)
            {
                Assembly assemblyInAppDomain = FindAssembly(module.Assembly);
                if (assemblyInAppDomain != null)
                {
                    config.AddInputStream(HbmSerializer.Default.Serialize(assemblyInAppDomain));
                }
            }
           
        }
&lt;/pre&gt;&lt;br /&gt;
The above code is a common code template to override LocalSessionFactoryObject - that we mostly see in many forums. The problem is: default SessionFactoryObject in NHibernate keeps the code to export DB schema. However, LocalSessionFactoryObject and its parent class do not implement any line of code for this. So, we have to add this feature manually if we want to override it.&lt;br /&gt;
&lt;br /&gt;
This is the new code to fix this issue:&lt;br /&gt;
&lt;pre name="code" class="csharp"&gt;public class LocalSessionFactoryObjectImp : LocalSessionFactoryObject
    {
        protected override void PostProcessConfiguration(NHibernate.Cfg.Configuration config)
        {
            base.PostProcessConfiguration(config);
            HbmSerializer.Default.Validate = true;
            IList&lt;Module&gt; modules = ApplicationConfiguration.GetInstance().Modules;
            foreach (Module module in modules)
            {
                Assembly assemblyInAppDomain = FindAssembly(module.Assembly);
                if (assemblyInAppDomain != null)
                {
                    config.AddInputStream(HbmSerializer.Default.Serialize(assemblyInAppDomain));
                }
            }
            SchemaExport schemaExport = new SchemaExport(config);
            string autoCreateDBMode = config.GetProperty("hibernate.hbm2ddl.auto");
            if (!string.IsNullOrEmpty(autoCreateDBMode) &amp;&amp; autoCreateDBMode == "create")
            {
                schemaExport.Create(true, true);
            }
        }
}
&lt;/pre&gt;&lt;br /&gt;
Hope it's useful in case you have same problem with using NHiberate attribute for mapping and auto creating DB schema.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13610792-8313504333862846237?l=trandangkhoa.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2QsNa7nJlCp9TFbHMG_Lu9_HsMw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2QsNa7nJlCp9TFbHMG_Lu9_HsMw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2QsNa7nJlCp9TFbHMG_Lu9_HsMw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2QsNa7nJlCp9TFbHMG_Lu9_HsMw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/kbirdblog/~4/4goC9a0MyDA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://trandangkhoa.blogspot.com/feeds/8313504333862846237/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13610792&amp;postID=8313504333862846237&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/8313504333862846237?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/8313504333862846237?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/kbirdblog/~3/4goC9a0MyDA/nhibernate-auto-create-database-bug.html" title="NHibernate auto create database bug when using attribute for mapping" /><author><name>Tran Dang Khoa</name><uri>http://www.blogger.com/profile/04439791527236235576</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://trandangkhoa.blogspot.com/2009/09/nhibernate-auto-create-database-bug.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0IAQHY7cCp7ImA9WxNRFks.&quot;"><id>tag:blogger.com,1999:blog-13610792.post-331040863518158683</id><published>2009-09-11T03:16:00.000-07:00</published><updated>2009-09-11T03:39:01.808-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-11T03:39:01.808-07:00</app:edited><title>I am inventor of Facebook</title><content type="html">Now, I become a famous man - Inventor of Facebook. Don't you believe?&lt;br /&gt;
See below video:&lt;br /&gt;
&lt;br /&gt;
&lt;object width="480" height="295"&gt;&lt;param name="movie" value="http://www.youtube.com/v/vrEkjF-9yNM&amp;hl=en&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/vrEkjF-9yNM&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="295"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13610792-331040863518158683?l=trandangkhoa.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/X2eucfoEsVI31UKyfrW3MbTygKI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/X2eucfoEsVI31UKyfrW3MbTygKI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/X2eucfoEsVI31UKyfrW3MbTygKI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/X2eucfoEsVI31UKyfrW3MbTygKI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/kbirdblog/~4/zGDEIgFOZ8E" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://trandangkhoa.blogspot.com/feeds/331040863518158683/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13610792&amp;postID=331040863518158683&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/331040863518158683?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/331040863518158683?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/kbirdblog/~3/zGDEIgFOZ8E/i-am-inventor-of-facebook.html" title="I am inventor of Facebook" /><author><name>Tran Dang Khoa</name><uri>http://www.blogger.com/profile/04439791527236235576</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://trandangkhoa.blogspot.com/2009/09/i-am-inventor-of-facebook.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMMR3o5eyp7ImA9WxJUGUw.&quot;"><id>tag:blogger.com,1999:blog-13610792.post-1251773466135696540</id><published>2009-07-18T02:21:00.000-07:00</published><updated>2009-07-18T02:48:06.423-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-18T02:48:06.423-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Programming" /><category scheme="http://www.blogger.com/atom/ns#" term="iPhone" /><title>iPhone OS - drawing image and stupid thing from Apple</title><content type="html">Just because of a piece of code, a team in Singapore gave up an iPhone project. Actually, they do not know how to play tricks with Apple. ... and I also faced to a similar situation when I play as a technical consultant to fix this stupid bug.&lt;br /&gt;
&lt;br /&gt;
The need of client is: drawing some effects on an image and save it as a photo in Photo library. So, if anyone has experience with graphic programming may think this is a very simple task. However, that's not true. &lt;br /&gt;
&lt;br /&gt;
Many forums and online articles just shows us a real problem on iPhone graphics programming: the root position (0,0) of the image to draw is on the bottom left and the root position of the graphic context is on the top-left corner. So, we must do some transformation to keep the image in the correct position.&lt;br /&gt;
&lt;br /&gt;
And the simple code to fix this issue is as below:&lt;br /&gt;
&lt;pre name="code" class="csharp"&gt;int width = image.size.width;
int height = image.size.height;
CGSize size = CGSizeMake(width, height);
//create the rect zone that we draw from the image
CGRect imageRect = CGRectMake(0, 0, width, height);
UIGraphicsBeginImageContext(size);
CGContextRef context = UIGraphicsGetCurrentContext();
//Save current status of graphics context
CGContextSaveGState(context);
//Do stupid stuff to draw the image correctly
CGContextTranslateCTM(context, 0, height);
CGContextScaleCTM(context, 1.0, -1.0);
CGContextDrawImage(context, imageRect, image.CGImage);
//After drawing the image, roll back all transformation by restoring the 
//old context
CGContextRestoreGState(context);
DO OTHER EFFECTS HERE
//get the image from the graphic context
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
//commit all drawing effects
UIGraphicsEndImageContext();
&lt;/pre&gt;Above piece of code is thing that you see in all online technical articles related to iPhone graphic programming. Anyway, that's not enough. If you deploy that piece of code into iPhone OS 3.0 on real device, it does not run correctly: saved images are always scaled in horizontal and inverse. However, there is a very strange thing: this code is run perfectly on simulator for iPhone OS 3.0.&lt;br /&gt;
&lt;br /&gt;
After 1 day to detect the problem, I found that: when an image is shown on iPhone, it has a direction. Direction is included: UP, DOWN, LEFT, RIGHT. So, we must to fix the code to satisfy when they're in those cases. The above code is run correctly in case image direction is UP.&lt;br /&gt;
&lt;br /&gt;
Here is the fixed version:&lt;br /&gt;
&lt;pre name="code" class="csharp"&gt;int width = image.size.width;
int height = image.size.height;
CGSize size = CGSizeMake(width, height);
//create the rect zone that we draw from the image
CGRect imageRect;

if(image.imageOrientation==UIImageOrientationUp 
|| image.imageOrientation==UIImageOrientationDown) 
{
    imageRect = CGRectMake(0, 0, width, height); 
}
else 
{
    imageRect = CGRectMake(0, 0, height, width); 
}

UIGraphicsBeginImageContext(size);
CGContextRef context = UIGraphicsGetCurrentContext();
//Save current status of graphics context
CGContextSaveGState(context);

//Do stupid stuff to draw the image correctly
CGContextTranslateCTM(context, 0, height);
CGContextScaleCTM(context, 1.0, -1.0);

if(image.imageOrientation==UIImageOrientationLeft) 
{
    CGContextRotateCTM(context, M_PI / 2);
    CGContextTranslateCTM(context, 0, -width);
}
else if(image.imageOrientation==UIImageOrientationRight) 
{
    CGContextRotateCTM(context, - M_PI / 2);
    CGContextTranslateCTM(context, -height, 0);
} 
else if(image.imageOrientation==UIImageOrientationUp) 
{

//DO NOTHING

}
else if(image.imageOrientation==UIImageOrientationDown) 
{
    CGContextTranslateCTM(context, width, height);
    CGContextRotateCTM(context, M_PI);
}

CGContextDrawImage(context, imageRect, image.CGImage);
//After drawing the image, roll back all transformation by restoring the 
//old context
CGContextRestoreGState(context);
DO OTHER EFFECTS HERE
//get the image from the graphic context
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
//commit all drawing effects
UIGraphicsEndImageContext();
&lt;/pre&gt;After fixing this bug, I can say only one thing: why Apple always do something stupid and make developer do the stupid thing?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13610792-1251773466135696540?l=trandangkhoa.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/A9mzpAfPoJz89Yzw0BCgZWqBOuM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/A9mzpAfPoJz89Yzw0BCgZWqBOuM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/A9mzpAfPoJz89Yzw0BCgZWqBOuM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/A9mzpAfPoJz89Yzw0BCgZWqBOuM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/kbirdblog/~4/ip0TeRkcQWk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://trandangkhoa.blogspot.com/feeds/1251773466135696540/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13610792&amp;postID=1251773466135696540&amp;isPopup=true" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/1251773466135696540?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/1251773466135696540?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/kbirdblog/~3/ip0TeRkcQWk/iphone-os-drawing-image-and-stupid.html" title="iPhone OS - drawing image and stupid thing from Apple" /><author><name>Tran Dang Khoa</name><uri>http://www.blogger.com/profile/04439791527236235576</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>5</thr:total><feedburner:origLink>http://trandangkhoa.blogspot.com/2009/07/iphone-os-drawing-image-and-stupid.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QMRns_fip7ImA9WxJUEUs.&quot;"><id>tag:blogger.com,1999:blog-13610792.post-6631158041773181631</id><published>2009-07-09T11:37:00.000-07:00</published><updated>2009-07-09T11:49:47.546-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-09T11:49:47.546-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="iPhone" /><title>Build and deploy iPhone application with offical and unofficial ways</title><content type="html">I always call myself a 2 faces man because I accept both 2 things at the same time for everything: black and white, the good and the bad, angel and evil. In my point of view: nothing is only quite 100% good or bad and we must accept that truth in the real life.&lt;br /&gt;
As the title of this article, I will share you 1 trick and 1 official way to build your iPhone application. Trick is the bad, and the official way is good (if you accept to pay 99$/month for iPhone developer account).&lt;br /&gt;
&lt;h2&gt;Section 1: the good - how to build your iPhone application on XCode as official way of Apple&lt;/h2&gt;Below is the process to build and distribute your application on the real iPhone&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_3g86ZbTqTxs/SlYvwr6MG1I/AAAAAAAAGRI/IQZHhGkja9Y/s1600-h/DistributionBannerStandard2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_3g86ZbTqTxs/SlYvwr6MG1I/AAAAAAAAGRI/IQZHhGkja9Y/s400/DistributionBannerStandard2.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;If you have the iPhone developer account, please go to the iPhone developer program portal and access to below link:&lt;br /&gt;
&lt;a href="http://developer.apple.com/iphone/manage/distribution/index.action"&gt;http://developer.apple.com/iphone/manage/distribution/index.action&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
It has very detail guideline to help you in step by step. Just follow them.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Section 2 (the bad) build your iPhone application on XCode without IDP membership&lt;/h2&gt;This trick is only used in case you don't want to pay money (99$/month) for the developer account. However, I must warn you about some limitations as below:&lt;br /&gt;
1. You can not upload your iPhone application into AppStore. (sure. because it is an unofficial way)&lt;br /&gt;
2. You can only deploy and run your build app in iPhone OS &amp;lt;= 2.2. Currently, I can not run it in iPhone OS 3.0.&lt;br /&gt;
3. The iPhone SDK you can use for this trick is only from: 2.0 - 2.2&lt;br /&gt;
&lt;br /&gt;
And ... now, below is the link that guide you about the trick:&lt;br /&gt;
&lt;a href="http://www.vinodlive.com/2009/01/16/how-to-deploy-an-iphone-application-without-an-idp-membership/"&gt;http://www.vinodlive.com/2009/01/16/how-to-deploy-an-iphone-application-without-an-idp-membership/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Actually, the above trick does below things:&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
1. Create a Signing Identify on your Mac by following this &lt;a href="http://developer.apple.com/documentation/Security/Conceptual/CodeSigningGuide/Procedures/Procedures.html#//apple_ref/doc/uid/TP40005929-CH4-SW1"&gt;simple guide&lt;/a&gt; from Apple.&lt;br /&gt;
In this step, we create a certificate (actually, it is not approved by Apple) in our computer and use it to sign for our code. &lt;br /&gt;
2. TextEdit the /Developer/Platforms/iPhoneOS.platform/Info.plist file with some special keys and values to skip checking mapping between the certificate and the provisioning profile.&lt;br /&gt;
&lt;br /&gt;
3. Change the Project Settings . In the Properties List, find the Code-Signing-Identity and Select the Certificate Name(iPhone Developer) you created earlier. This step helps you sign your code with the created certificate.&lt;br /&gt;
4.&amp;nbsp; Add the a snippet on to your projects info.plist using TextEdit to cheat the compiler&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you succeed with above article, you're a lucky man. If you're failed, just do a small step in addition:&lt;br /&gt;
Go to Project/Edit project settings - check true for Generate profiling code.&lt;br /&gt;
&lt;br /&gt;
I succeed with both ways.&amp;nbsp; So I write this article to share with you my experience. If you have any other "bad" or "good" ways, please share me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13610792-6631158041773181631?l=trandangkhoa.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/VFPuL5-h__7vlULNjdqvPUnrEJE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VFPuL5-h__7vlULNjdqvPUnrEJE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/VFPuL5-h__7vlULNjdqvPUnrEJE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VFPuL5-h__7vlULNjdqvPUnrEJE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/kbirdblog/~4/m8fVdT9y2UE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://trandangkhoa.blogspot.com/feeds/6631158041773181631/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13610792&amp;postID=6631158041773181631&amp;isPopup=true" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/6631158041773181631?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/6631158041773181631?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/kbirdblog/~3/m8fVdT9y2UE/build-and-deploy-iphone-application.html" title="Build and deploy iPhone application with offical and unofficial ways" /><author><name>Tran Dang Khoa</name><uri>http://www.blogger.com/profile/04439791527236235576</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_3g86ZbTqTxs/SlYvwr6MG1I/AAAAAAAAGRI/IQZHhGkja9Y/s72-c/DistributionBannerStandard2.jpg" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://trandangkhoa.blogspot.com/2009/07/build-and-deploy-iphone-application.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIFRXYzeSp7ImA9WxJbE0g.&quot;"><id>tag:blogger.com,1999:blog-13610792.post-8758830306486376782</id><published>2009-07-06T12:01:00.000-07:00</published><updated>2009-07-23T07:15:14.881-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-23T07:15:14.881-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="iPhone" /><title>Deploy app on iPhone - no wifi - no appstore with full explanation</title><content type="html">I received an iPhone (OS 3.0) 2 days ago. My new task is: learning how to deploy our iPhone applications on this device. There is no wifi at my home. Our application is also not uploaded into Apple App Store. So, I need a way that:&lt;br /&gt;1. Only need to copy our application into iPhone and run.&lt;br /&gt;2. No need wifi to copy and setup&lt;br /&gt;&lt;br /&gt;Is that difficult? &lt;br /&gt;&lt;br /&gt;I read tons of articles and search on many forums but when I follow their steps (no understanding) I got different failed results.&lt;br /&gt;&lt;br /&gt;Finally, I find a way after analyzing from many sources. Below is the list of step that I will guide you with my explanation. Anyway, I write this article just for iPhone developers (not for end user). However, in case you are an end user, you can also find some helpful information to solve your problem here.&lt;br /&gt;&lt;br /&gt;The solution is:&lt;br /&gt;&lt;blockquote&gt;Connect to your iPhone by using SSH with root account. With the console on SSH, you have the full access right to run any commands (supported by the kernel system behind) to copy/set access right/install/remove your software. However, if you have no wifi - you need a software to bind your an available port on your computer with port 22 (of SSH) on iPhone. The soft to do that is called iTunnel. &lt;br /&gt;iTunnel is worked based on iTune. You should choose to install latest version of iTune to make sure this works ok.&lt;br /&gt;&lt;/blockquote&gt;Below is the list of step you need to follow:&lt;br /&gt;&lt;h3&gt;Step 0: install latest version of iTune in your computer&lt;/h3&gt;&lt;br /&gt;This is very important. Without iTune, iTunnel can be run on command line ok. However, when you use SSH to connect to the available port - it will throw error.&lt;br /&gt;In the past, I think this trick does not need installing iTune anymore but I found a problem when I help my team member to do this. At last, we found that the difference between our computer is the iTune version. You must download the latest version of iTune and install it on your computer to make sure this trick works.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Step 1:  Install OpenSSH on your iPhone&lt;/h3&gt;You need wifi only in this step. To do this, you just need to connect to wifi - go to Cydia - search OpenSSH and install this package. The final result of this step is: OpenSSH will be run as a service in background and open the port 22 to connect. Anyway, you need to check whether the service is turned on or off. To do this, you need to install another software to check. I recommend you should search BossPref (also using Cydia to install).&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Step 2: Download and run iTunnel&lt;/h3&gt;You can search on Internet to download this software into your PC. I recommend a link that you can download as below:&lt;br /&gt;http://www.makkiaweb.net/blog/2008/09/iphone-tunnel-suite-27&lt;br /&gt;&lt;br /&gt;After downloading this, you only need to unzip into a folder. Open the console and go to this directory. Type into the console:&lt;br /&gt;&lt;br /&gt;iTunnel.exe 22 [any available port on your computer]&lt;br /&gt;The final result of this step is: iTunnel binds port 22 on your iPhone with a port on your computer.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Step 3: Use any SSH client to connect to the port (on step 2) with root account. &lt;/h3&gt;&lt;br /&gt;I recommend that you should use WinSCP. The password of root account is: alpine&lt;br /&gt;&lt;br /&gt;Example: if I use the port on my computer to bind is: 9000. I will login to SSH on my computer with below information:&lt;br /&gt;HOST: 127.0.0.1 (localhost)&lt;br /&gt;Account: root&lt;br /&gt;Pass: alpine&lt;br /&gt;Port: 9000&lt;br /&gt;&lt;br /&gt;After this step, you can see a window (if you use WinSCP) with 2 panels. Left is for your computer, right is folder structure on iPhone. You can copy your app and set execute rights on this. You can also go to menu, open terminal to run any commands you like with root account on iPhone.&lt;br /&gt;&lt;br /&gt;Good luck! If you have any problem, leave comments here and I will help.&lt;br /&gt;&lt;br /&gt;Update for common questions:&lt;br /&gt;Question 1: I meet "bind error" on the command line when I run iTunnel.&lt;br /&gt;Answer: The port you want to bind was used by another program. So, please try with another port. See step 2 with the command line&lt;br /&gt;&lt;br /&gt;iTunnel.exe 22 [any available port on your computer]&lt;br /&gt;After you run the iTunnel successfully, use above port to connect with WinSCP.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13610792-8758830306486376782?l=trandangkhoa.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/CJoIPvjaxubiZv7mLKVSGPWnV88/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CJoIPvjaxubiZv7mLKVSGPWnV88/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/CJoIPvjaxubiZv7mLKVSGPWnV88/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CJoIPvjaxubiZv7mLKVSGPWnV88/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/kbirdblog/~4/LhvpHEOUEZE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://trandangkhoa.blogspot.com/feeds/8758830306486376782/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13610792&amp;postID=8758830306486376782&amp;isPopup=true" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/8758830306486376782?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13610792/posts/default/8758830306486376782?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/kbirdblog/~3/LhvpHEOUEZE/deploy-app-on-iphone-no-wifi-no.html" title="Deploy app on iPhone - no wifi - no appstore with full explanation" /><author><name>Tran Dang Khoa</name><uri>http://www.blogger.com/profile/04439791527236235576</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>3</thr:total><feedburner:origLink>http://trandangkhoa.blogspot.com/2009/07/deploy-app-on-iphone-no-wifi-no.html</feedburner:origLink></entry></feed>

