<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7844944286070596641</id><updated>2012-01-28T09:39:03.857+02:00</updated><category term='Business'/><category term='Unix'/><category term='gdb'/><category term='news'/><category term='Linux'/><category term='Outlook'/><category term='C/C++'/><category term='Pictures'/><category term='Qt'/><category term='VIM'/><category term='ubuntu'/><category term='Android'/><category term='Java'/><category term='Symbian'/><category term='Blog'/><category term='Programming'/><category term='svn'/><category term='Finance'/><category term='Maemo'/><title type='text'>Symnux</title><subtitle type='html'>Symbian Linux and me</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Kümüsh Oq</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>43</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-7774490787146324629</id><published>2009-09-04T15:57:00.000+03:00</published><updated>2009-09-04T15:58:27.802+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>See What Version of a Package Is Installed on Ubuntu</title><content type='html'>The apt-get utilities are simply a front-end to the debian dpkg utility, which actually does the real work. You can use this utility to figure out what version is installed.&lt;br /&gt;&lt;br /&gt;    dpkg -s &lt;packagename&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-7774490787146324629?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/7774490787146324629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2009/09/see-what-version-of-package-is.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/7774490787146324629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/7774490787146324629'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2009/09/see-what-version-of-package-is.html' title='See What Version of a Package Is Installed on Ubuntu'/><author><name>Kümüsh Oq</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-1108758629317096330</id><published>2009-08-27T10:29:00.001+03:00</published><updated>2009-08-27T10:31:17.042+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>apt-get: Installing specific version of a package</title><content type='html'>copied from:&lt;br /&gt;http://sivachandran.blogspot.com/2008/03/apt-get-installing-specific-version-of.html&lt;br /&gt;hope you do not mind, because I find it useful.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Today I was struggling to install libxml2-dev. The problem is libxml2-dev depends libxml2 version 2.6.30.dfsg-2ubuntu1. But in my machine I already have libxml2 with version 2.6.30.dfsg-2ubuntu1.1. I really don't know how I got this version of of libxml2(I use multiple local repositories). Synaptic doesn't accept this version of libxml2 so I can't neither install libxml2-dev nor remove my version of libxml2 since lot of other packages depends on this.&lt;br /&gt;&lt;br /&gt;Finally I found a solution that I can replace installed version of a particular package with another version.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    apt-get install libxml2=2.6.30.dfsg-2ubuntu1&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Note the equal(=) sign, thats where the magic is. It replaced the existing version of libxml2 with the version I specified. After that I installed libxml2-dev successfully.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-1108758629317096330?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/1108758629317096330/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2009/08/apt-get-installing-specific-version-of.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/1108758629317096330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/1108758629317096330'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2009/08/apt-get-installing-specific-version-of.html' title='apt-get: Installing specific version of a package'/><author><name>Kümüsh Oq</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-859671258238239405</id><published>2009-05-03T21:26:00.002+03:00</published><updated>2009-05-03T21:30:46.131+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C/C++'/><title type='text'>Better do not use switch statement in Symbian c++</title><content type='html'>Today I write an application and wasted whole afternoot to debug a switch statement, I did not find anything wrong with it after all I found this thread and realized it is arm compiler mistakenly "optimized" my switch statement.&lt;br /&gt;http://developer.symbian.com/forum/message.jspa?messageID=72513#72513&lt;br /&gt;So better do not use if your switch statement is long (about more than 20 case maybe) and get executed frequently. Use if else instead...:(&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-859671258238239405?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/859671258238239405/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2009/05/better-do-not-use-switch-statement-in.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/859671258238239405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/859671258238239405'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2009/05/better-do-not-use-switch-statement-in.html' title='Better do not use switch statement in Symbian c++'/><author><name>Kümüsh Oq</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-4233353123321969428</id><published>2009-04-27T10:44:00.002+03:00</published><updated>2009-04-27T10:45:50.419+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>get free memory information on Linux programmaticaly</title><content type='html'>get free memory information on Linux programmaticaly&lt;br /&gt;&lt;br /&gt;Using "cat /proc/meminfo | grep MemFree" this command you can get free&lt;br /&gt;memory information like this:&lt;br /&gt;MemFree:        204764 kB&lt;br /&gt;&lt;br /&gt;and parse that number using any language you like.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-4233353123321969428?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/4233353123321969428/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2009/04/get-free-memory-information-on-linux.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/4233353123321969428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/4233353123321969428'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2009/04/get-free-memory-information-on-linux.html' title='get free memory information on Linux programmaticaly'/><author><name>Kümüsh Oq</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-4466272216584655056</id><published>2009-04-17T09:57:00.001+03:00</published><updated>2009-04-17T09:59:40.718+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><title type='text'>Standard Input and Output Redirection</title><content type='html'>&lt;table width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Standard Input and Output Redirection &lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt; The shell and many UNIX commands take their input from &lt;i&gt;standard input&lt;/i&gt;&lt;br /&gt;(&lt;code&gt;stdin&lt;/code&gt;), write output to &lt;i&gt;standard output&lt;/i&gt; (&lt;code&gt;stdout&lt;/code&gt;), and&lt;br /&gt;write error output to &lt;i&gt;standard error&lt;/i&gt; (&lt;code&gt;stderr&lt;/code&gt;).  By default, standard&lt;br /&gt;input is connected to the terminal keyboard and standard output and error to the terminal screen.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt; The way of indicating an end-of-file on the default standard input, a terminal, is&lt;br /&gt;usually &lt;strong&gt;&amp;lt;Ctrl-d&amp;gt;&lt;/strong&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt; Redirection of I/O, for example to a file, is accomplished by specifying the destination&lt;br /&gt;on the command line using a &lt;i&gt;redirection metacharacter&lt;/i&gt; followed by the desired&lt;br /&gt;destination. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt; C Shell Family&lt;/h4&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;  Some of the forms of redirection for the C shell family are:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr valign="top"&gt;&lt;th&gt;&lt;p&gt; Character&lt;/p&gt;&lt;br /&gt;&lt;/th&gt;&lt;th&gt;&lt;p&gt; Action&lt;/p&gt;&lt;br /&gt;&lt;/th&gt;&lt;/tr&gt;&lt;tr valign="top"&gt;&lt;td&gt;&lt;p&gt; &lt;code&gt;&amp;gt;&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt; &lt;a name="MARKER-2-347"&gt;&lt;/a&gt;Redirect standard output&lt;/p&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="top"&gt;&lt;td&gt;&lt;p&gt; &lt;code&gt;&amp;gt;&amp;amp;&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt; Redirect standard output and standard error&lt;/p&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="top"&gt;&lt;td&gt;&lt;p&gt; &lt;code&gt;&amp;lt;&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt; Redirect standard input&lt;/p&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="top"&gt;&lt;td&gt;&lt;p&gt; &lt;code&gt;&amp;gt;!&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt; Redirect standard output; overwrite file if it exists&lt;/p&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="top"&gt;&lt;td&gt;&lt;p&gt; &lt;code&gt;&amp;gt;&amp;amp;!&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt; Redirect standard output and standard error; overwrite file if it exists&lt;/p&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="top"&gt;&lt;td&gt;&lt;p&gt; &lt;code&gt;|&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt; Redirect standard output to another command (pipe)&lt;/p&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="top"&gt;&lt;td&gt;&lt;p&gt; &lt;code&gt;&amp;gt;&amp;gt;&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt; Append standard output&lt;/p&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="top"&gt;&lt;td&gt;&lt;p&gt; &lt;code&gt;&amp;gt;&amp;gt;&amp;amp;&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt; Append standard output and standard error&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt; The form of a command with standard input and output redirection is:&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;% &lt;var&gt;command&lt;/var&gt; -[&lt;var&gt;options&lt;/var&gt;] [&lt;var&gt;arguments&lt;/var&gt;] &amp;lt; &lt;var&gt;input file  &lt;/var&gt;&amp;gt; &lt;var&gt;output file &lt;/var&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;If you are using &lt;b&gt;csh&lt;/b&gt; and do not have the &lt;i&gt;noclobber&lt;/i&gt; variable set,&lt;br /&gt;using &lt;code&gt;&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;gt;&amp;amp;&lt;/code&gt; to redirect output will&lt;br /&gt;overwrite any existing file of that name.  Setting &lt;i&gt;noclobber&lt;/i&gt; prevents this.&lt;br /&gt;Using&lt;code&gt; &amp;gt;! &lt;/code&gt;and&lt;code&gt; &amp;gt;&amp;amp;! &lt;/code&gt;always forces the file&lt;br /&gt;to be overwritten.  Use &lt;code&gt;&amp;gt;&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;gt;&amp;gt;&amp;amp;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;to append output to existing files.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Redirection may fail under some circumstances: 1) if you have the variable&lt;br /&gt;&lt;i&gt;noclobber&lt;/i&gt; set and you attempt to redirect output to an existing file without&lt;br /&gt;forcing an overwrite, 2) if you redirect output to a file you don't have write access to, and&lt;br /&gt;3) if you redirect output to a directory. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt; Examples: &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;dl&gt;&lt;br /&gt;&lt;dt&gt;&lt;code&gt;% who &amp;gt; names &lt;/code&gt;&lt;/dt&gt;&lt;dd&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;   Redirect standard output to a file named&lt;code&gt; names&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;/dd&gt;&lt;dt&gt;&lt;code&gt;% (pwd; ls -l) &amp;gt; out&lt;/code&gt; &lt;/dt&gt;&lt;dd&gt;&lt;br /&gt;&lt;p&gt;   Redirect output of both commands to a file named&lt;code&gt; out&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;/dd&gt;&lt;dt&gt;&lt;code&gt;% pwd; ls -l &amp;gt; out &lt;/code&gt;&lt;/dt&gt;&lt;dd&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;   Redirect output of&lt;code&gt; ls &lt;/code&gt;command only to a file named&lt;code&gt; out&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt; Input redirection can be useful, for example, if you have written a FORTRAN program&lt;br /&gt;which expects input from the terminal but you want it to read from a file.  In the following&lt;br /&gt;example, &lt;code&gt;myprog&lt;/code&gt;, which was written to read standard input and write&lt;br /&gt;standard output, is redirected to read &lt;code&gt;myin&lt;/code&gt; and write &lt;code&gt;myout&lt;/code&gt;: &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;% myprog &amp;lt; myin &amp;gt; myout&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;You can suppress redirected output and/or errors by sending it to the &lt;i&gt;null device&lt;/i&gt;,&lt;br /&gt;&lt;code&gt;/dev/null&lt;/code&gt;.  The example shows redirection of both output and errors: &lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;% who &amp;gt;&amp;amp; /dev/null&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;To redirect standard error and output to different files, you can use grouping: &lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;% (cat myfile &amp;gt; myout) &amp;gt;&amp;amp; myerror&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt; Bourne Shell Family&lt;/h4&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt; The Bourne shell uses a different format for redirection which includes numbers.&lt;br /&gt;The numbers refer to the file descriptor numbers (0 standard input, 1 standard output,&lt;br /&gt;2 standard error).  For example,&lt;code&gt; 2&amp;gt; &lt;/code&gt;redirects file descriptor 2, or standard error.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;amp;&lt;var&gt;n&lt;/var&gt;&lt;/code&gt; is the syntax for redirecting to a specific open file.&lt;br /&gt;For example&lt;code&gt; 2&amp;gt;&amp;amp;1 &lt;/code&gt;redirects 2 (standard error) to 1 (standard output);&lt;br /&gt;if 1 has been redirected to a file, 2 goes there too.  Other file descriptor numbers are assigned&lt;br /&gt;sequentially to other open files, or can be explicitly referenced in the shell scripts.  Some of&lt;br /&gt;the forms of redirection for the Bourne shell family are: &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr valign="top"&gt;&lt;th&gt;&lt;p&gt; Character&lt;/p&gt;&lt;br /&gt;&lt;/th&gt;&lt;th&gt;&lt;p&gt; Action&lt;/p&gt;&lt;br /&gt;&lt;/th&gt;&lt;/tr&gt;&lt;tr valign="top"&gt;&lt;td&gt;&lt;p&gt; &lt;code&gt;&amp;gt;&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt; &lt;a name="MARKER-2-341"&gt;&lt;/a&gt;Redirect standard output&lt;/p&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="top"&gt;&lt;td&gt;&lt;p&gt; &lt;code&gt;2&amp;gt;&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt; Redirect standard error&lt;/p&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="top"&gt;&lt;td&gt;&lt;p&gt; &lt;code&gt;2&amp;gt;&amp;amp;1&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt; Redirect standard error to standard output&lt;/p&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="top"&gt;&lt;td&gt;&lt;p&gt; &lt;code&gt;&amp;lt;&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt; Redirect standard input&lt;/p&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="top"&gt;&lt;td&gt;&lt;p&gt; &lt;code&gt;|&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt; Pipe standard output to another command&lt;/p&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="top"&gt;&lt;td&gt;&lt;p&gt; &lt;code&gt;&amp;gt;&amp;gt;&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt; Append to standard output&lt;/p&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="top"&gt;&lt;td&gt;&lt;p&gt; &lt;code&gt;2&amp;gt;&amp;amp;1|&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt; Pipe standard output and standard error to another command&lt;/p&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;p&gt; Note that&lt;code&gt; &amp;lt; &lt;/code&gt;and&lt;code&gt; &amp;gt; &lt;/code&gt;assume standard input&lt;br /&gt;and output, respectively, as the default, so the numbers 0 and 1 can be left off.  The form&lt;br /&gt;of a command with standard input and output redirection is:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ &lt;var&gt;command&lt;/var&gt; -[&lt;var&gt;options&lt;/var&gt;] [&lt;var&gt;arguments&lt;/var&gt;] &amp;lt; &lt;var&gt;input file &lt;/var&gt;&amp;gt; &lt;var&gt;output file &lt;/var&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Redirection may fail under some circumstances: 1) if you have the variable &lt;i&gt;noclobber&lt;/i&gt;&lt;br /&gt;set and you attempt to redirect output to an existing file without forcing an overwrite, 2) if you&lt;br /&gt;redirect output to a file you don't have write access to, and 3) if you redirect output to a directory. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt; Examples: &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;dl&gt;&lt;br /&gt;&lt;dt&gt;&lt;code&gt;$ who &amp;gt; names&lt;/code&gt; &lt;/dt&gt;&lt;dd&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;   Direct standard output to a file named&lt;code&gt; names&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;/dd&gt;&lt;dt&gt;&lt;code&gt;$ (pwd; ls -l) &amp;gt; out&lt;/code&gt; &lt;/dt&gt;&lt;dd&gt;&lt;br /&gt;&lt;p&gt;   Direct output of both commands to a file named&lt;code&gt; out&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;/dd&gt;&lt;dt&gt;&lt;code&gt;$ pwd; ls -l &amp;gt; out&lt;/code&gt; &lt;/dt&gt;&lt;dd&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;   Direct output of&lt;code&gt; ls &lt;/code&gt;command only to a file named&lt;code&gt; out&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt; Input redirection can be useful if you have written a program which expects&lt;br /&gt;input from the terminal and you want to provide it from a file.  In the following example,&lt;br /&gt;&lt;code&gt;myprog&lt;/code&gt;, which was written to read standard input and write standard&lt;br /&gt;output, is redirected to read&lt;code&gt; myin &lt;/code&gt;and write &lt;code&gt;myout&lt;/code&gt;. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ myprog &amp;lt; myin &amp;gt; myout&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt; You can suppress redirected output and/or error by sending it to the &lt;i&gt;null device&lt;/i&gt;,&lt;br /&gt;&lt;code&gt;/dev/null&lt;/code&gt;.  The example shows redirection of standard error only: &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ who 2&amp;gt; /dev/null&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt; To redirect standard error and output to different files (note that grouping is not&lt;br /&gt;necessary in Bourne shell): &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ cat myfile &amp;gt; myout 2&amp;gt; myerror&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-4466272216584655056?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/4466272216584655056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2009/04/standard-input-and-output-redirection.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/4466272216584655056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/4466272216584655056'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2009/04/standard-input-and-output-redirection.html' title='Standard Input and Output Redirection'/><author><name>Kümüsh Oq</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-2906615860934510712</id><published>2009-04-08T15:47:00.003+03:00</published><updated>2009-04-08T16:01:37.274+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gdb'/><title type='text'>get backtrace output from core file using gdb</title><content type='html'>We can output backtrace to a file using gdb. to do this you have to make sure:&lt;br /&gt;&lt;br /&gt;1. program must be compiled with debug and no-strip option.&lt;br /&gt;gcc options are -00 -ggdd or -00 -g3&lt;br /&gt;&lt;br /&gt;2. get backtrace as following example. you can use &lt;blockquote&gt;bt full&lt;/blockquote&gt;instead of bt to get more detailed information. you can specify core file with --core option.&lt;br /&gt;&lt;pre&gt;$ &lt;span class="code-input"&gt;gdb /usr/bin/xine&lt;/span&gt;&lt;br /&gt;GNU gdb 6.5&lt;br /&gt;[...]&lt;br /&gt;&lt;br /&gt;(gdb) &lt;span class="code-input"&gt;run&lt;/span&gt;&lt;br /&gt;[...]&lt;br /&gt;&lt;br /&gt;(gdb) &lt;span class="code-input"&gt;set logging file backtrace.log&lt;/span&gt;&lt;br /&gt;(gdb) &lt;span class="code-input"&gt;set logging on&lt;/span&gt;&lt;br /&gt;Copying output to backtrace.log.&lt;br /&gt;(gdb) &lt;span class="code-input"&gt;bt&lt;/span&gt;&lt;br /&gt;#0  0x0000003000eb7472 in __select_nocancel () from /lib/libc.so.6&lt;br /&gt;...&lt;br /&gt;(gdb) &lt;span class="code-input"&gt;set logging off&lt;/span&gt;&lt;br /&gt;Done logging to backtrace.log.&lt;br /&gt;(gdb) &lt;span class="code-input"&gt;quit&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;3. if you get this error&lt;br /&gt;&lt;blockquote&gt;not in executable format: File format not recognized gdb&lt;/blockquote&gt;use editor to check your executable file if it is a shell script, in script you can file where the actual executable binary is.&lt;br /&gt;&lt;br /&gt;more detailed document:&lt;br /&gt;http://www.gentoo.org/proj/en/qa/backtraces.xml&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-2906615860934510712?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/2906615860934510712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2009/04/get-backtrace-output-from-core-file.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/2906615860934510712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/2906615860934510712'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2009/04/get-backtrace-output-from-core-file.html' title='get backtrace output from core file using gdb'/><author><name>Kümüsh Oq</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-8848846457575956350</id><published>2009-03-13T14:18:00.005+02:00</published><updated>2009-05-04T10:54:23.060+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>svn tips</title><content type='html'>svn checkout&lt;br /&gt;svn co [path]&lt;br /&gt;&lt;br /&gt;svn commit&lt;br /&gt;svn ci -m "your comment"&lt;br /&gt;&lt;br /&gt;checkout a previous revision:&lt;br /&gt;svn co path -r [revision number]&lt;br /&gt;&lt;br /&gt;create an patch:&lt;br /&gt;svn di &gt;[file name like a.diff]&lt;br /&gt;cvs diff -u8p &gt; [output file name]&lt;br /&gt;&lt;br /&gt;for mercury:&lt;br /&gt;hg diff -p -U 8 &gt; [output file name]&lt;br /&gt;&lt;br /&gt;https://developer.mozilla.org/en/Creating_a_patch&lt;br /&gt;&lt;br /&gt;apply a patch:&lt;br /&gt;patch p0&lt;[pathfile]&lt;br /&gt;&lt;br /&gt;update debian changelog&lt;br /&gt;&lt;br /&gt;dhc -i&lt;br /&gt;select an editor input your comment and save it.&lt;br /&gt;&lt;br /&gt;roll back commits to an earlier revision&lt;br /&gt;&lt;br /&gt;1. check out latest version.&lt;br /&gt;2. svn merge -c [earlier revision number] [path]&lt;br /&gt;3. check weather they are correct:&lt;br /&gt;svn status&lt;br /&gt;svn di&lt;br /&gt;4. commit it&lt;br /&gt;svn ci -m "roll back to revision xxx"&lt;br /&gt;&lt;br /&gt;more useful stuff here:&lt;br /&gt;http://subversion.tigris.org/faq.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-8848846457575956350?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/8848846457575956350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2009/03/svn-tips.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/8848846457575956350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/8848846457575956350'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2009/03/svn-tips.html' title='svn tips'/><author><name>Kümüsh Oq</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-7327009494132188608</id><published>2009-03-11T17:01:00.002+02:00</published><updated>2009-03-11T17:17:01.824+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C/C++'/><title type='text'>Private destructor in C++</title><content type='html'>&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;We&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;know&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;we&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;make&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;default&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;constructor&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;private&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;sometimes&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;while&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;we&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;do&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;not&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;want&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;to&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;let&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;others&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;create&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;instance&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;with&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;default&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;constructor&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;We&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;also&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;make&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;destructor&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;private&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;in&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;three&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;cases&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;1. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;Class&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;has&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;friend&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;function&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;or&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;class&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;can&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_36"&gt;take&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_37"&gt;care&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_38"&gt;of&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_39"&gt;clean&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_40"&gt;up&lt;/span&gt;.&lt;br /&gt;2. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_41"&gt;Class&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_42"&gt;has&lt;/span&gt; a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_43"&gt;reference&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_44"&gt;counter&lt;/span&gt;.&lt;br /&gt;3. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_45"&gt;Class&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_46"&gt;is&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_47"&gt;singleton&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_48"&gt;class&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_49"&gt;and&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_50"&gt;use&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_51"&gt;static&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_52"&gt;function&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_53"&gt;to&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_54"&gt;create&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_55"&gt;and&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_56"&gt;destroy&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_57"&gt;object&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_58"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_59"&gt;private&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_60"&gt;destructor&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_61"&gt;behavior&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_62"&gt;depends&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_63"&gt;upon&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_64"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_65"&gt;compiler&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_66"&gt;in&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_67"&gt;use&lt;/span&gt;. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_68"&gt;The&lt;/span&gt; GNU &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_69"&gt;compiler&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_70"&gt;collection&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_71"&gt;does&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_72"&gt;not&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_73"&gt;allow&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_74"&gt;inheritance&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_75"&gt;from&lt;/span&gt; a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_76"&gt;class&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_77"&gt;whose&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_78"&gt;destructor&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_79"&gt;is&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_80"&gt;private&lt;/span&gt;. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_81"&gt;If&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_82"&gt;inheritence&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_83"&gt;is&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_84"&gt;required&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_85"&gt;then&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_86"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_87"&gt;destructor&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_88"&gt;should&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_89"&gt;be&lt;/span&gt; made &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_90"&gt;protected&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-7327009494132188608?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/7327009494132188608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2009/03/private-destructor-in-c.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/7327009494132188608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/7327009494132188608'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2009/03/private-destructor-in-c.html' title='Private destructor in C++'/><author><name>Kümüsh Oq</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-865997174484744141</id><published>2009-02-04T13:34:00.009+02:00</published><updated>2009-12-15T22:52:30.680+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VIM'/><title type='text'>VIM tips</title><content type='html'>Q: set line numbers on/off in vim&lt;br /&gt;&lt;br /&gt;A:&lt;br /&gt;add 'set number/nonumber' into ~/.vimrc file.&lt;br /&gt;&lt;br /&gt;Q: How to turn on/off ~ prifixed backup file in VIM?&lt;br /&gt;&lt;br /&gt;A:&lt;br /&gt;add 'set backup/nobackup' into ~/.vimrc file.&lt;br /&gt;&lt;br /&gt;Q: how to enter hex mode?&lt;br /&gt;A:&lt;br /&gt;“&lt;em&gt;:%!xxd&lt;/em&gt;“ to revert back use “&lt;em&gt;:%!xxd -r&lt;/em&gt;“.&lt;br /&gt;&lt;br /&gt;:%s/foo/bar/g   Replace every occurrence of the word foo with bar in the whole file.&lt;br /&gt;:s/foo/bar/g   Replace every occurrence of the word foo with bar on current line.&lt;br /&gt;:452s/foo/bar/   Replace the first occurrence of the word foo with bar on line number 452.&lt;br /&gt;:%s/foo/bar/gc   Confirm every substitution.&lt;br /&gt;&lt;br /&gt;insert 'foo/' to start of lines from 32 to 44:&lt;br /&gt;:32,44s/^/foo\//g&lt;br /&gt;&lt;br /&gt;insert ' \' to end of lines from 32 to 44:&lt;br /&gt;:32,44s/$/ \\/g&lt;br /&gt;&lt;br /&gt;remove random content enclosed by () inside whole document:&lt;br /&gt;:%s/(.*)//g&lt;br /&gt;. stands for any character&lt;br /&gt;* means zero or any amount of previous character&lt;br /&gt;&lt;br /&gt;To replace the DOS newline character with a unix/linux newline:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;:%s/^M/\r/g&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Remember, the ^M is [ctrl-v + ctrl-m] and not [shift-6]&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://www.ph.unimelb.edu.au/%7Essk/vim/" height="1000" width="100%"&gt;&amp;amp;amp;amp;lt;br&amp;amp;amp;amp;gt;  &amp;amp;amp;amp;lt;p&amp;amp;amp;amp;gt;Your browser does not support iframes.&amp;amp;amp;amp;lt;/p&amp;amp;amp;amp;gt;&amp;amp;amp;amp;lt;br&amp;amp;amp;amp;gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;more tips about how to use vim:&lt;br /&gt;&lt;a href="http://www.tuxfiles.org/linuxhelp/vimcheat.html"&gt;http://www.tuxfiles.org/linuxhelp/vimcheat.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.ph.unimelb.edu.au/%7Essk/vim/"&gt;http://www.ph.unimelb.edu.au/~ssk/vim/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-865997174484744141?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/865997174484744141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2009/02/vim-faq.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/865997174484744141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/865997174484744141'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2009/02/vim-faq.html' title='VIM tips'/><author><name>Kümüsh Oq</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-7537538831326808280</id><published>2009-02-04T11:55:00.003+02:00</published><updated>2009-02-04T12:05:14.842+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>a GOOD shell script</title><content type='html'>Well, Shell script is a powerful tool to automate your daily work almost same and time wasteful.&lt;br /&gt;&lt;br /&gt;lets assume you have a folder full of SVN repository directory and some other files, you need to update those and build and create packages and install to your system to start your work in every morning, following is a good script to save your time. All you have to do is save it and execute it and go for coffee. :)&lt;br /&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;for i in `ls ./`&lt;br /&gt;do&lt;br /&gt;cd $i&lt;br /&gt;if [ $? -eq 0 ]&lt;br /&gt;then&lt;br /&gt;svn up&lt;br /&gt;[your build command goes here, like dpkg-buildpackage -rfakeroot]&lt;br /&gt;cd ..&lt;br /&gt;fi&lt;br /&gt;done&lt;br /&gt;[your installation command like: sudo dpkg -i *.deb]&lt;br /&gt;exit 0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-7537538831326808280?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/7537538831326808280/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2009/02/good-shell-script.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/7537538831326808280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/7537538831326808280'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2009/02/good-shell-script.html' title='a GOOD shell script'/><author><name>Kümüsh Oq</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-7759468231601566418</id><published>2009-01-21T10:49:00.001+02:00</published><updated>2009-01-21T10:49:45.178+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Introduction to Android Building System</title><content type='html'>Every build component folder contains a file named Android.mk, this file is the only configure file that every component need to write by itself. For example:&lt;br /&gt;If you want to build a single C/C++ component in Android, maybe this component is created by yourself or an existing component, you could simple list your source files' name, needed libraries and included path in Android.mk, then if you want to build Shared Lib you should include $(BUILD_SHARED_LIBRARY), static lib include $(BUILD_STATIC_LIBRARY), app include $(BUILD_EXECUTABLE). you could refer an existing Android.mk for details.&lt;br /&gt; then type "make yourmodulename" in android home folder to start building your component. yourmodulename  is the name of LOCAL_MODULE in Android.mk&lt;br /&gt;A similar Android.mk is also needed for build Java component, except you should include $(BUILD_PACKAGE).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-7759468231601566418?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/7759468231601566418/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2009/01/introduction-to-android-building-system.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/7759468231601566418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/7759468231601566418'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2009/01/introduction-to-android-building-system.html' title='Introduction to Android Building System'/><author><name>Kümüsh Oq</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-9138425926156660986</id><published>2009-01-21T10:47:00.000+02:00</published><updated>2009-01-21T10:48:03.969+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>How to port native (C/C++) library into android</title><content type='html'>Android official documents don’t have supports for writing native (C/C++) applications or libraries on android. But after all, android is a new platform, a lots of useful software are unavailable on android, if developing them from scratch using android Java framework, it will cost us much more time, further more, native functions should have better performance than pure Java applications. so, we will often think about porting existing native shared library to Android.&lt;br /&gt;&lt;br /&gt;First, you have to pass build on android for your native library, write you own Android.mk including $(BUILD_SHARED_LIBRARY).&lt;br /&gt;Second, using Java Api in Android Framework to write the UI for your application, call the native functions in your native library through JNI&lt;br /&gt;&lt;br /&gt;At last you may encounter a problem about how to publish your software?.&lt;br /&gt;&lt;br /&gt;All the native libraries come together with android are prelinked into the system.img, they will go to Android phone when the system.img is flashed into phone. This method is suitable for phone manufactures, but if you want to make a single .apk package to let users around the world to download and install, you have to think about put the native shared library into the .apk package. but how to use it in runtime? Here is a workaround method, pack your shared library into the apk as assets and copy the lib out of the package at the first launch time of your application. How to copy? Using AssetManager in Android Framework, see following sample code:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;InputStream instream = getAssets().open( “native lib path in the apk package” );&lt;br /&gt; if(new File(“new lib path in phone”).exists() == false)&lt;br /&gt;               copyFile(“new lib path in phone”,instream);      &lt;br /&gt;  &lt;br /&gt;If your native lib size is greater than UNCOMPRESS_DATA_MAX( = 1M currently), you will get exception when using instream to read file,  this time you couldn’t use AssetManager any more, instead you could use zip utilities in Java.util.zip, see following sample code:&lt;br /&gt;           ZipFile zip = new ZipFile(APK_PATH);&lt;br /&gt;           ZipEntry zipen = getFileZipEntry(zip,NATIVE_LIBRARY);&lt;br /&gt;           copyFile(libPath, zip.getInputStream(zipen));&lt;br /&gt;Another point, every Java application in android could only write on it’s own private folder, that is /data/data/packagename/, so the only place you could put your native library is here.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-9138425926156660986?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/9138425926156660986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2009/01/how-to-port-native-cc-library-into.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/9138425926156660986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/9138425926156660986'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2009/01/how-to-port-native-cc-library-into.html' title='How to port native (C/C++) library into android'/><author><name>Kümüsh Oq</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-796811620823674638</id><published>2009-01-16T14:16:00.000+02:00</published><updated>2009-01-16T14:17:11.780+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Android troubleshoot collections</title><content type='html'>How to add permission to Android application?&lt;br /&gt;e.g. in order to open a socket in your Android application, except write code about open socket, you should add android.permission.INTERNET permission to your application, otherwise, it will termitates "unexpectedly".here is complete list of Android permissions:&lt;br /&gt;&lt;a href="http://code.google.com/intl/fi-FI/android/reference/android/Manifest.permission.html"&gt;http://code.google.com/intl/fi-FI/android/reference/android/Manifest.permission.html&lt;/a&gt; To add a permission to the AndroidManifest.xml file, click on the Permission tab, select the Uses Permission item, and click add.You will now be able to select the various permissions you need from a drop-down list.Once a permission is selected, press Ctrl-S to save the AndroidManifest.xml file.If you examine the XML file now, you will notice the two new elements added: &lt;uses-permission&gt;&lt;br /&gt;ActivityManager: [1]   Killed&lt;br /&gt;sometimes simple applications gives you ActivityManager: [1]   Killed error. that must be because something wrong in AndroidManifest.xml file.have you change AndroidManifest.xml file manully? change it back.&lt;br /&gt;Your main activity appears to be private (not exported).  Do you have an android:exported="false" line on it?&lt;br /&gt;Error reading jdwp list: null&lt;br /&gt;one of the most weard errors I have met and finally I found it is because my last instanse of adb process still running. open task manager and kill that thread would be fine.&lt;br /&gt;How to Install .Apk Apps on Google Android G1 Phone1. Install and open the Apps Installer application from the Android Market.&lt;br /&gt;2. This opens a view showing *.apk application names in the sdcard root directory.(note, if no AppNames are listed you have no .apk files in the root directory of the SDCard)&lt;br /&gt;3. Touch the app name to initiate installation of the app.&lt;br /&gt;4. The app is now installed&lt;br /&gt;How to Non-Market .Apk Application on Google Android G1 Phone1. Download and install Google Android SDK.&lt;br /&gt;2. Now type adb in a command shell will display all the options, adb.exe is SDK tool used to install applications and interface with the device.&lt;br /&gt;3. Now Connect Your G1 Phone to your computer using USB cable. You need to install Drivers for this. Download Android USB drivers from here. This driver is required for adb to interface with an android G1 phone using USB cable.&lt;br /&gt;4. Go to Android Settings/SD card &amp;amp; phone storage and disable Use for USB storage. You can enable it again later after you installed your third-party application.&lt;br /&gt;5. Go to Settings/Application settings and enable Unknown sources.&lt;br /&gt;6. Download the Application installer .apk file to a local folder on your computer, Now type below command at command shell to install app.&lt;br /&gt;adb install &lt;full&gt;&lt;apk&gt;&lt;br /&gt;The above guide is only application for windows XP users and Windows Vista users wont be able to use it, since android sdk for windows vista is not available.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-796811620823674638?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/796811620823674638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2009/01/android-troubleshoot-collections.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/796811620823674638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/796811620823674638'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2009/01/android-troubleshoot-collections.html' title='Android troubleshoot collections'/><author><name>Kümüsh Oq</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-1032996542437812771</id><published>2009-01-14T15:35:00.001+02:00</published><updated>2009-01-14T15:49:46.369+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Headaches from Java</title><content type='html'>Recently I am involved a project about porting a c++ application to Android. Since Android only support Java then I have to srart study Java AGAIN.I downloaded Thinking in Java 3rd eddition, started to browsing and find it is interesting.&lt;br /&gt;Paragraph from TIJ:Java has no “sizeof” In C and C++, the sizeof( ) operator satisfies a specific need: it tells you the number of bytes allocated for data items. The most compelling need for sizeof( ) in C and C++ is portability. Different data types might be different sizes on different machines, so the programmer must find out how big those types are when performing operations that are sensitive to size. For example, one computer might store integers in 32 bits, whereas another might store integers as 16 bits. Programs could store larger values in integers on the first machine. As you might imagine, portability is a huge headache for C and C++ programmers.&lt;br /&gt;Java does not need a sizeof( ) operator for this purpose, because all the data types are the same size on all machines. You do not need to think about portability on this level—it is designed into the language.&lt;br /&gt;Question: What about if I really want to know how big my class actually is? Is it equal to sum of all fields sizes? Because I want to communicate with my server using my own protocol.&lt;br /&gt;Paragraph from TIJ:Shifts can be combined with the equal sign (&lt;&lt;= or &gt;&gt;= or &gt;&gt;&gt;=). The lvalue is replaced by the lvalue shifted by the rvalue. There is a problem, however, with the unsigned right shift combined with assignment. If you use it with byte or short, you don’t get the correct results. Instead, these are promoted to int and right shifted, but then truncated as they are assigned back into their variables, so you get -1 in those cases.&lt;br /&gt;Question: What!? Why you support this even if you know we can not get currect value with short and byte?&lt;br /&gt;Paragraph from TIJ:In C and C++, casting can cause some headaches. In Java, casting is safe, with the exception that when you perform a so-called narrowing conversion (that is, when you go from a data type that can hold more information to one that doesn’t hold as much), you run the risk of losing information. Here the compiler forces you to do a cast, in effect saying “this can be a dangerous thing to do—if you want me to do it anyway you must make the cast explicit.” With a widening conversion an explicit cast is not needed, because the new type will more than hold the information from the old type so that no information is ever lost. Feedback&lt;br /&gt;Java allows you to cast any primitive type to any other primitive type, except for boolean, which doesn’t allow any casting at all. Class types do not allow casting. To convert one to the other, there must be special methods.&lt;br /&gt;Question: That was a little bit funny, seems like we have no risk at all even we do narrowing conversion in Java...but I think we stil have...&lt;br /&gt;I found there is no linguistic support for enumerated types before Java 5.0, which is funny to me - missed so imported feature, what a life for Java4.0 programmer could be? read this:&lt;br /&gt;&lt;a href="http://java.sun.com/j2se/1.5.0/docs/guide/language/enums.html"&gt;http://java.sun.com/j2se/1.5.0/docs/guide/language/enums.html&lt;/a&gt;&lt;br /&gt;Still does not know how to get value of those pointers...sxxt! read this:&lt;br /&gt;&lt;a href="http://csis.pace.edu/~bergin/papers/JavaPointerTraps.html"&gt;http://csis.pace.edu/~bergin/papers/JavaPointerTraps.html&lt;/a&gt;&lt;br /&gt;Java does not support unsigned! So I have to do many workaround...read this:&lt;a href="http://darksleep.com/player/JavaAndUnsignedTypes.html"&gt;http://darksleep.com/player/JavaAndUnsignedTypes.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-1032996542437812771?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/1032996542437812771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2009/01/headaches-from-java.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/1032996542437812771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/1032996542437812771'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2009/01/headaches-from-java.html' title='Headaches from Java'/><author><name>Kümüsh Oq</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-1737843946723679064</id><published>2009-01-12T10:24:00.002+02:00</published><updated>2009-01-12T10:37:03.766+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Outlook'/><title type='text'>Outlook account settings in registry</title><content type='html'>I belive this is useful for somebody who want to write applications like outlook settings backup.&lt;br /&gt;&lt;br /&gt;this is where Outlook and Outlook Express save its account settings in registry.&lt;br /&gt;&lt;br /&gt;Outlook 2002:&lt;br /&gt;HKEY_CURRENT_USER\Software\Microsoft\Office\[versionNumber]\Outlook\OMI Account Manager\Accounts&lt;br /&gt;&lt;br /&gt;Outlook 2000 and Outlook Express:&lt;br /&gt;HKEY_CURRENT_USER\Software\Microsoft\Internet Account Manager\Accounts\&lt;br /&gt;&lt;br /&gt;and from Outlook 2003 and later version does not have special keys but there is one folder save Outlook account settings of every version of Outlook.&lt;br /&gt;&lt;br /&gt;HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\Current Version\Windows Messaging Subsystem\Profile\Outlook\[the second group start from the end]\00000001...etc&lt;br /&gt;&lt;br /&gt;Or&lt;br /&gt;&lt;br /&gt;HKEY_USER\[long key name started from S and did not end up with class]\Software\Microsoft\WindowsNT\Current Version\Windows Messaging Subsystem\Profile\Outlook\[the second group start from the end]\00000001...etc&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-1737843946723679064?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/1737843946723679064/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2009/01/outlook-account-settings-in-registry.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/1737843946723679064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/1737843946723679064'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2009/01/outlook-account-settings-in-registry.html' title='Outlook account settings in registry'/><author><name>Kümüsh Oq</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-4602105864315962202</id><published>2009-01-05T12:36:00.006+02:00</published><updated>2009-04-13T14:02:30.415+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Qt'/><title type='text'>Setting up Qt developing environment on Windows - Latest</title><content type='html'>Thanks for Nokia's hard work, now setting up Qt developing environment on Windows system become so easy. Only take several step and absolutely no pain.&lt;br /&gt;&lt;br /&gt;1. Download and install Qt win Mingw so you can cut one step install compiler by yourself.&lt;br /&gt;URL of download Qt with Mingw&lt;br /&gt;http://trolltech.com/downloads/opensource/appdev/windows-cpp&lt;br /&gt;&lt;br /&gt;2. Download and install Eclipse for C++&lt;br /&gt;URL of download Eclipse for C++&lt;br /&gt;http://www.eclipse.org/downloads/&lt;br /&gt;&lt;br /&gt;3. Download and install Qt Eclipse integration tools, during this step you need to provide path to eclipse and Qt installed.&lt;br /&gt;&lt;br /&gt;http://trolltech.com/developer/eclipse-integration&lt;br /&gt;&lt;br /&gt;4. Set up few preference.&lt;br /&gt;start-&gt;program-&gt;Qt Eclipse integration-&gt;start eclipse with Mingw then provide workspace path. In Eclipse window-&gt;preferences-&gt;qt tab add qt's bin and include path and name it like 4.4.3 and everything should be fine. No extra setup at all. Have fun!&lt;br /&gt;&lt;br /&gt;-------------------------------------------&lt;br /&gt;&lt;br /&gt;After you done all of your job and trying to release your application, you might encounter mingwm10.dll and deployment under windows environment problem. Here is the good solution for it.&lt;br /&gt;http://blog.lugru.com/?p=92&lt;br /&gt;http://lists.trolltech.com/qt-interest/2005-10/thread00381-0.html&lt;br /&gt;&lt;br /&gt;-- I finally give up build 4.4.5 staticly, now I am trying to build 4.5 qt staticly according to this, fingers crossed...&lt;br /&gt;http://doc.trolltech.com/4.5/deployment-windows.html&lt;br /&gt;http://www.qtforum.org/article/26946/how-to-deploy-a-static-app-in-qt-4-5.html&lt;br /&gt;&lt;br /&gt;Yes, it did successfully static build after I removed object files from qmake folder.&lt;br /&gt;&lt;br /&gt;I have used &lt;a href="http://www.dependencywalker.com/"&gt;dependans tool&lt;/a&gt; mentioned in that page to check my application's dependencies.&lt;br /&gt;&lt;br /&gt;after finally build release version of my application I still did not able to get rid of &lt;span style="font-family:Arial;"&gt;mingwm10.dll. I just released that dll with my executable in the same folder.&lt;br /&gt;&lt;br /&gt;according to my research there is another way to merge that dll to executable file which is using &lt;a href="http://www.vmware.com/products/thinapp/"&gt;vmware thinapp&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;the 1000 lines application's excetable size is more than 11Mb.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;strip app.exe&lt;/blockquote&gt;did not work for me since I build qt with a -release flag, there is no additional symbols already I guess.&lt;br /&gt;&lt;br /&gt;using &lt;a href="http://upx.sourceforge.net/"&gt;upx &lt;/a&gt;make its size about 3.75Mb, that is really cool. "upx -9 app.exe"&lt;br /&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/7844944286070596641-4602105864315962202?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/4602105864315962202/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2009/01/setting-up-qt-developing-environment-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/4602105864315962202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/4602105864315962202'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2009/01/setting-up-qt-developing-environment-on.html' title='Setting up Qt developing environment on Windows - Latest'/><author><name>Kümüsh Oq</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-4919906848026244916</id><published>2008-12-28T02:41:00.003+02:00</published><updated>2009-01-02T15:41:49.688+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><title type='text'>Hard Work and Practice in Programming</title><content type='html'>Tim O'Reilly's  article named "Hard work and practice in programming" became a popular topic online recently which mostly  discussed by programming people. I agree with it's Hard part and I am just opposite of some people commented this topic. I did not practice a lot when I was in college, but I did a lot of hard work after I started working. I do not like write code even I do not understand. I think it is up to how much you love programming and how lazy you are. It is a little bit hard to just "practice" it by yourself without any proper guideline and in some project stuation.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Read the full article from &lt;a href="http://radar.oreilly.com/2008/12/hard-work-and-practice-in-programming.html"&gt;O' Reilly radar&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-4919906848026244916?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/4919906848026244916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2008/12/hard-work-and-practice-in-programming.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/4919906848026244916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/4919906848026244916'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2008/12/hard-work-and-practice-in-programming.html' title='Hard Work and Practice in Programming'/><author><name>Ekrem</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_5UTkd47Ju0g/SSCAFs2F8mI/AAAAAAAAACU/VlAl462VHpc/S220/myhead.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-8733133896882958428</id><published>2008-12-28T02:40:00.001+02:00</published><updated>2009-01-02T12:13:03.481+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><title type='text'>Test Driven Development in c programming language</title><content type='html'>What is Test Driven Development (TDD)?&lt;br /&gt;Testing methodology associated with Agile Programming in which every chunk of code is covered by unit tests, which must all pass all the time, in an effort to eliminate unit-level and regression bugs during development. Practitioners of TDD write a lot of tests, i.e. an equal number of lines of test code to the size of the production code.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.pvv.org/%7Eoma/TDDinC_Smidig2007.pdf"&gt;download slides&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-8733133896882958428?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/8733133896882958428/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2008/12/test-driven-development-best-practice.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/8733133896882958428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/8733133896882958428'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2008/12/test-driven-development-best-practice.html' title='Test Driven Development in c programming language'/><author><name>Ekrem</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_5UTkd47Ju0g/SSCAFs2F8mI/AAAAAAAAACU/VlAl462VHpc/S220/myhead.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-5333157985189816200</id><published>2008-12-28T02:28:00.002+02:00</published><updated>2009-01-02T11:59:30.426+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Qt'/><title type='text'>Qt Ported to Nokia's Symbian S60 Platform</title><content type='html'>Trolltech(Nokia) announced the porting of Qt to S60 on Symbian OS, the open smartphone platform. With the inclusion of the S60 platform, developers have an additional 80 million target devices that they can support with their Qt-based applications. An early technical preview of Qt for S60 is available for download from  &lt;a href="http://www.trolltech.com/"&gt;Qt Software&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-5333157985189816200?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/5333157985189816200/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2008/12/qt-ported-to-nokias-symbian-s60.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/5333157985189816200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/5333157985189816200'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2008/12/qt-ported-to-nokias-symbian-s60.html' title='Qt Ported to Nokia&apos;s Symbian S60 Platform'/><author><name>(ekrem)ئەكرەم</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_5UTkd47Ju0g/SSCAFs2F8mI/AAAAAAAAACU/VlAl462VHpc/S220/myhead.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-2496943870910102519</id><published>2008-12-28T02:26:00.001+02:00</published><updated>2009-01-02T11:19:51.776+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Symbian'/><title type='text'>SYMBIAN Development Environment</title><content type='html'>SYMBIAN Development Environment&lt;br /&gt;&lt;br /&gt;Platform: Windows XP Pro(SP3)&lt;br /&gt;&lt;br /&gt;1. Software Packages&lt;br /&gt;&lt;br /&gt;For downloading the packages, you need to register an account in the forum of Nokia,&lt;br /&gt;&lt;a href="http://www.forum.nokia.com/main/registration/registration.html"&gt;http://www.forum.nokia.com/main/registration/registration.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;prerequisite:&lt;br /&gt;&lt;br /&gt;install &lt;a href="http://www.oldapps.com/download.php?oldappsid=ActivePerl-5.6.1.638-MSWin32-x86.msi"&gt;ActivePerl-5.6.1&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;install &lt;a href="http://www.java.com/en/download/manual.jsp"&gt;JRE&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;1-1. Carbide.C++ 2.0&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.forum.nokia.com/main/resources/tools_and_sdks/carbide/"&gt;http://www.forum.nokia.com/info/sw.nokia.com/id/dbb8841d-832c-43a6-be13-f78119a2b4cb.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;1-2. S60 Platform SDKs for Symbian OS, for C++&lt;br /&gt;&lt;a href="http://www.forum.nokia.com/info/sw.nokia.com/id/4a7149a5-95a5-4726-913a-3c6f21eb65a5/S60-SDK-0616-3.0-mr.html"&gt;http://www.forum.nokia.com/info/sw.nokia.com/id/4a7149a5-95a5-4726-913a-3c6f21eb65a5/S60-SDK-0616-3.0-mr.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;S60 Platform SDKs for Symbian OS, for C++, 3rd Edition, Feature Package 2(FP2)&lt;br /&gt;S60-3.2-SDK-f.inc3.2130.zip 438MB&lt;br /&gt;&lt;br /&gt;1-3. Open C/C++ Plug-ins for S60 3rd Edition&lt;br /&gt;&lt;a href="http://www.forum.nokia.com/info/sw.nokia.com/id/91d89929-fb8c-4d66-bea0-227e42df9053/Open_C_SDK_Plug-In.html"&gt;http://www.forum.nokia.com/info/sw.nokia.com/id/91d89929-fb8c-4d66-bea0-227e42df9053/Open_C_SDK_Plug-In.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Plugin_For_S60_3rd_Ed.zip 41.3MB&lt;br /&gt;&lt;br /&gt;2. Installation&lt;br /&gt;&lt;br /&gt;Please install above 3 packages as default path.&lt;br /&gt;&lt;br /&gt;Installation order: Carbide.C++, S60 SDK, Plugin.&lt;br /&gt;&lt;br /&gt;After Carbide.C++, you may need to install ActivePerl-5.6.1.635-MSWin32-x86.msi:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://downloads.activestate.com/ActivePerl/Windows/5.6/ActivePerl-5.6.1.635-MSWin32-x86.msi"&gt;http://downloads.activestate.com/ActivePerl/Windows/5.6/ActivePerl-5.6.1.635-MSWin32-x86.msi &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3. Emulator&lt;br /&gt;Start-&gt;S60 Developer Tools-&gt;Emulator&lt;br /&gt;&lt;br /&gt;4. Try first example application for S60&lt;br /&gt;&lt;br /&gt;Run Carbide.C++ 1.3&lt;br /&gt;Start-&gt;Carbide.c++ v1.3-&gt;Carbide.c++ v1.3&lt;br /&gt;&lt;br /&gt;In the welcome page, you could click "Tutorials"-&gt;"Create an application emulator debug example", and follow this tutorial to build your first example application for S60.&lt;br /&gt;&lt;br /&gt;(Info: If the welcome page takes all space of the workspace in Carbide.c++, it makes you can't find the project tree and other things, PLEASE CLICK "Restore" OPTION IN THE TOP-RIGHT CORNER OF THE WELCOME PAGE!)&lt;br /&gt;&lt;br /&gt;Follow above steps to create your project, but if you can't see any template in "New Symbian OS C++ Project" dialog when you enable "Filter templates based on enabled SDKs", it means Carbide.c++ doesn't find the SDK which you had installed. Then please cancel the dialog.&lt;br /&gt;&lt;br /&gt;In the main menu of Carbide.c++, Window-&gt;Preferences-&gt;Carbide.c++-&gt;SDK Preferences, you will find out there is nothing in the "Available Symbian OS SDKs". Please click "Add New SDK", in the "Add New SDK" dialog, SDK ID: should be "S60_3rd_FP2_SDK", EPOCROOT: should be "C:\S60\devices\S60_3rd_FP2_SDK", Vendor: should be "com.nokia.s60", Is Default: should be "yes". Then click "OK" on it. Click "Rescan All SDKs" and "OK".&lt;br /&gt;&lt;br /&gt;Now you can return to your project.&lt;br /&gt;&lt;br /&gt;Follow the tutorial, you could run the application in the emulator, in my case the emulator path should be: C:\S60\devices\S60_3rd_FP2_SDK\epoc32\release\winscw\udeb\epoc.exe&lt;br /&gt;&lt;br /&gt;Why not try it on your phone?&lt;br /&gt;&lt;br /&gt;Copy C:\Symbian\Carbide\workspace\Oroborous\sis\Oroborous_S60_3_X_v_1_0_0.sisx to your phone via usd disk mode. Install it and run it.&lt;br /&gt;&lt;br /&gt;If you got some errors like that "Certificate error. Contact the application supplier.", you need to set your phone like this:&lt;br /&gt;Installations-&gt;App. mgr.-&gt;Options-&gt;Settings, choose "All" for "Software installation".&lt;br /&gt;&lt;br /&gt;Then all should be ok.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-2496943870910102519?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/2496943870910102519/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2008/12/symbian-development-environment.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/2496943870910102519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/2496943870910102519'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2008/12/symbian-development-environment.html' title='SYMBIAN Development Environment'/><author><name>(ekrem)ئەكرەم</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_5UTkd47Ju0g/SSCAFs2F8mI/AAAAAAAAACU/VlAl462VHpc/S220/myhead.bmp'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-5974151899817613487</id><published>2008-12-28T02:23:00.003+02:00</published><updated>2009-01-02T11:59:51.716+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Qt'/><title type='text'>Build Qt applications for Symbian/S60</title><content type='html'>About Symbian development environment, please have a look at:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://symnux.blogspot.com/2008/12/symbian-development-environment.html"&gt;SYMBIAN Development Environment on windows xp&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.martin.st/symbian/"&gt;If you are developing Symbian on Linux or OS x read this.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Build Qt for Symbian&lt;br /&gt;&lt;br /&gt;Platform: Windows XP with SP3(now we only support Qt/S60 on it.)&lt;br /&gt;&lt;br /&gt;0. Patches&lt;br /&gt;&lt;br /&gt;&lt;a href="http://pepper.troll.no/s60prereleases/patches/"&gt;Patches for S60 development environment&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;1. Build Qt for symbian&lt;br /&gt;&lt;br /&gt;&lt;a href="http://s60prereleases:oslofjord@pepper.troll.no/s60prereleases/packages/qt-embedded-s60-opensource-src-4.4.2-pyramid.zip"&gt;qt-embedded-s60-opensource-src-4.4.2-pyramid.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You need to make sure to use Symbian X86 compiler (version 3.2.5 build 473).&lt;br /&gt;&lt;br /&gt;Follow this steps in C:\Qt\4.4.2-pyramid\doc\install-s60.html&lt;br /&gt;&lt;br /&gt;Uncompress the package and put it in C:\Qt\4.4.2-pyramid.&lt;br /&gt;&lt;br /&gt;Set your PATH including C:\Qt\4.4.2-pyramid\bin.&lt;br /&gt;&lt;br /&gt;Configure:&lt;br /&gt;&lt;br /&gt;C:&lt;br /&gt;cd \Qt\4.4.2-pyramid&lt;br /&gt;configure -platform win32-mwc -xplatform symbian-abld -qconfig symbian&lt;br /&gt;&lt;br /&gt;Build:&lt;br /&gt;&lt;br /&gt;bldmake bldfiles&lt;br /&gt;abld build winscw udeb&lt;br /&gt;&lt;br /&gt;Notice: Please store the Qt/S60 repository and Symbian SDK in the same hard disk drive, maybe you can store them in different drives, and then use tools like WinMount to mount them to same drive.&lt;br /&gt;&lt;br /&gt;Before configure and build, you need set EPOCROOT to your SDK, I use "/S60/devices/S60_3rd_FP2_SDK/", just because my sdk is in C:\S60\devices\S60_3rd_FP2_SDK.&lt;br /&gt;&lt;br /&gt;2. Build Examples&lt;br /&gt;&lt;br /&gt;2-1. How to build Qt/S60 application&lt;br /&gt;&lt;br /&gt;C:\Qt\4.4.2-pyramid\doc\s60-with-qt-introduction.html&lt;br /&gt;&lt;br /&gt;Please make sure to use the qmake in your Qt/S60 build.&lt;br /&gt;&lt;br /&gt;qmake&lt;br /&gt;bldmake bldfiles&lt;br /&gt;abld build winscw udeb&lt;br /&gt;&lt;br /&gt;Run Carbide.c++ v1.3, In the tab of "Symbian Project Navigator", right click mouse in white space, choose "Import", in the "Import" dialog, choose "Symbian OS Bld.inf file" under "Symbian OS", then "Next", then "Browse..." to choose the bld.inf in above directory. Then you could build it, run it and debug it in Carbide.c++.&lt;br /&gt;&lt;br /&gt;2-2. XML HTML info Example&lt;br /&gt;&lt;br /&gt;C:\Qt\4.4.2-pyramid\doc\xml-htmlinfo.html&lt;br /&gt;&lt;br /&gt;Note: Standard out is redirected on some platforms. On Symbian using Open C stdout is by default directed to the console window, but this window may not always be visible. To redirect to a file instead, locate the c:\\system\\data\\config.ini file (on either the emulator or the device) and change STDOUT to point to MEDIA4. This will redirect the console to c:\\system\\data\\out.txt.&lt;br /&gt;&lt;br /&gt;For me, the config.ini is C:\S60\devices\S60_3rd_FP2_SDK\epoc32\winscw\c\system\data\config.ini, the out.txt is C:\S60\devices\S60_3rd_FP2_SDK\epoc32\winscw\c\system\data\out.txt.&lt;br /&gt;&lt;br /&gt;Run the Emulator, Start-&gt;S60 Developer Tools-&gt;3rd Edition FP2 SDK-&gt;Emulator.&lt;br /&gt;&lt;br /&gt;In the Emulator, go to Menu-&gt;Installations-&gt;eshell, and type htmlinfo in prompt mode.&lt;br /&gt;&lt;br /&gt;2-3. analogclock Example&lt;br /&gt;&lt;br /&gt;Now it works fine for me.&lt;br /&gt;&lt;br /&gt;Qt/S60 team are still working on the project to make all things work.&lt;br /&gt;&lt;br /&gt;3. Build Qt applications for your mobile phone&lt;br /&gt;&lt;br /&gt;Please have a look at C:\Qt\4.4.2-pyramid\README and C:\Qt\4.4.2-pyramid\INSTALL.&lt;br /&gt;&lt;br /&gt;Just go to your Qt application directory,&lt;br /&gt;&lt;br /&gt;qmake&lt;br /&gt;bldmake bldfiles&lt;br /&gt;abld build gcce udeb&lt;br /&gt;&lt;br /&gt;Create a package for your mobile phone:&lt;br /&gt;&lt;br /&gt;createpackage yourqtapplication_gcce_udeb.pkg&lt;br /&gt;&lt;br /&gt;Note: Now the package will include Qt library in the .pkg file, if you already have a Qt application package installed, maybe you can't install the next one. Then please remove these lines from the .pkg file of your second application.&lt;br /&gt;&lt;br /&gt;"\epoc32\release\gcce\udeb\QtGui.dll"    - "c:\sys\bin\QtGui.dll"&lt;br /&gt;"\epoc32\release\gcce\udeb\QtNetwork.dll"    - "c:\sys\bin\QtNetwork.dll"&lt;br /&gt;"\epoc32\release\gcce\udeb\QtCore.dll"    - "c:\sys\bin\QtCore.dll"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-5974151899817613487?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/5974151899817613487/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2008/12/build-qt-for-symbian.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/5974151899817613487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/5974151899817613487'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2008/12/build-qt-for-symbian.html' title='Build Qt applications for Symbian/S60'/><author><name>(ekrem)ئەكرەم</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_5UTkd47Ju0g/SSCAFs2F8mI/AAAAAAAAACU/VlAl462VHpc/S220/myhead.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-7899169931808098582</id><published>2008-12-28T02:20:00.001+02:00</published><updated>2009-01-02T10:43:14.792+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><title type='text'>Nokia adds Qt to Maemo</title><content type='html'>&lt;span style=";font-family:Arial,Helvetica;font-size:100%;"  &gt;Nokia will support Qt application development on its Linux-based Internet tablets, it has announced. Noting that GTK and Qt co-exist in the desktop world, Nokia says it hopes to distribute Qt libraries for Maemo during Q4, enabling N8xx tablet ports of Qt-based desktop and device applications.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.linuxdevices.com/news/NS5207224816.html"&gt;Full Story&lt;/a&gt; Via Linuxdevices.com&lt;span style=";font-family:Arial,Helvetica;font-size:100%;"  &gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-7899169931808098582?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/7899169931808098582/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2008/12/nokia-adds-qt-to-maemo.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/7899169931808098582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/7899169931808098582'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2008/12/nokia-adds-qt-to-maemo.html' title='Nokia adds Qt to Maemo'/><author><name>(ekrem)ئەكرەم</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_5UTkd47Ju0g/SSCAFs2F8mI/AAAAAAAAACU/VlAl462VHpc/S220/myhead.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-3908038785972393230</id><published>2008-12-28T02:12:00.002+02:00</published><updated>2009-01-02T16:11:34.185+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Qt'/><title type='text'>Qt for Embedded Linux</title><content type='html'>It Seems like now &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Nokia&lt;/span&gt; renamed &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Qtopia&lt;/span&gt; classes as Qt for device creation and old Qt is something like Qt for application development which is interesting, "was not applications on embedded device not called applications?"&lt;br /&gt;&lt;br /&gt;After examine this page http://trolltech.com/downloads/opensource then I found either device creation or application development for qt for embedded &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;Linux&lt;/span&gt; c++ actually lead to same package downloading page with two different URLs.&lt;br /&gt;http://trolltech.com/downloads/opensource/appdev/embedded-linux-cpp&lt;br /&gt;&lt;br /&gt;So still Qt for embedded &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;Linux&lt;/span&gt; then. Anyway, you can download this package on your &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_4"&gt;Linux&lt;/span&gt; system and I hope you have a newer version of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;gcc&lt;/span&gt; compiling tools because it is required.&lt;br /&gt;&lt;br /&gt;after extracting package you can create one folder on /opt/Qtopia path and do the configuration and built here by default settings, then you will easily can start develop new program using Qt embedded tools.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-3908038785972393230?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/3908038785972393230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2008/12/qtopia.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/3908038785972393230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/3908038785972393230'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2008/12/qtopia.html' title='Qt for Embedded Linux'/><author><name>(ekrem)ئەكرەم</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_5UTkd47Ju0g/SSCAFs2F8mI/AAAAAAAAACU/VlAl462VHpc/S220/myhead.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-528210267098132762</id><published>2008-12-28T02:04:00.001+02:00</published><updated>2009-01-02T11:36:52.943+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Symbian'/><title type='text'>from c++ to Symbian c++</title><content type='html'>already know c++ programming language and want to learn Symbian c++ develop for Symbian os?&lt;br /&gt;&lt;br /&gt;that might help, document from Nokia forum:&lt;br /&gt;&lt;br /&gt;&lt;h1 id="mainHeading"&gt;S60 Platform: Comparison of ANSI C++ and Symbian C++ v2.0 (&lt;a href="http://www.forum.nokia.com/info/sw.nokia.com/id/36f953bf-59eb-4f41-9e60-f51f494c5d14/S60_Platform_Comparison_of_ANSI_Cpp_and_Symbian_Cpp_v2_0_en.pdf.html"&gt;download&lt;/a&gt;)&lt;br /&gt;&lt;/h1&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-528210267098132762?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/528210267098132762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2008/12/csymbian-c.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/528210267098132762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/528210267098132762'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2008/12/csymbian-c.html' title='from c++ to Symbian c++'/><author><name>(ekrem)ئەكرەم</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_5UTkd47Ju0g/SSCAFs2F8mI/AAAAAAAAACU/VlAl462VHpc/S220/myhead.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-3422907818111743331</id><published>2008-12-01T17:00:00.000+02:00</published><updated>2008-12-01T17:01:31.110+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Pictures'/><title type='text'>World AIDS Day 2008</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_5UTkd47Ju0g/STP6hGScZlI/AAAAAAAAAF4/frHFmicjYQk/s1600-h/french-aids-posters(530).jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5274835035111581266" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 313px; CURSOR: hand; HEIGHT: 400px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_5UTkd47Ju0g/STP6hGScZlI/AAAAAAAAAF4/frHFmicjYQk/s400/french-aids-posters(530).jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div align="center"&gt;sorry about scary pictures, today is World AIDS Day 2008, just remind you that ...&lt;/div&gt;&lt;div align="center"&gt;&lt;/div&gt;&lt;div align="center"&gt;More information about AIDS, click &lt;a href="http://www.aids.org/factSheets/101-what-is-aids.html"&gt;here&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-3422907818111743331?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.aids.org/factSheets/101-what-is-aids.html' title='World AIDS Day 2008'/><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/3422907818111743331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2008/12/world-aids-day-2008.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/3422907818111743331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/3422907818111743331'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2008/12/world-aids-day-2008.html' title='World AIDS Day 2008'/><author><name>Akram</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_5UTkd47Ju0g/SSCAFs2F8mI/AAAAAAAAACU/VlAl462VHpc/S220/myhead.bmp'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_5UTkd47Ju0g/STP6hGScZlI/AAAAAAAAAF4/frHFmicjYQk/s72-c/french-aids-posters(530).jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-3702160022622915157</id><published>2008-11-26T16:11:00.004+02:00</published><updated>2009-01-30T16:44:31.867+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Maemo'/><title type='text'>Scratchbox + Ubuntu troubleshoot collection</title><content type='html'>1. mmap permission error in scratch box.&lt;br /&gt;&lt;br /&gt;Open /etc/sysctl.conf&lt;br /&gt;and add lines:&lt;br /&gt;vm.vdso_enabled = 0&lt;br /&gt;vm.mmap_min_addr = 4096&lt;br /&gt;net.ipv4.ip_local_port_range = 1024 65535&lt;br /&gt;then run "sudo sysctl -p"&lt;br /&gt;&lt;br /&gt;put "sudo sysctl -p" in /etc/rc.local file can execute it on system startup.&lt;br /&gt;&lt;br /&gt;2. DNS resolve fail sometimes even scratchbox can access the internet like wget.&lt;br /&gt;&lt;br /&gt;change the nameserver in /etc/resolve.conf as /scratchbox/etc/resolve.conf in scratchbox.&lt;br /&gt;&lt;br /&gt;3. qemu: uncaught target signal 11 (Segmentation fault)&lt;br /&gt;&lt;br /&gt;Scratchbox ARMEL target is mainly intended for building binaries and packages, not for testing the produced binaries (it may work, but qemu user-space emulation by necessity cannot be complete[1]). You need to test your code on the device.&lt;br /&gt;&lt;br /&gt;4. when i run /scratchbox/login it says can’t run as root… when i run it as normal user it says permission denied...&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;run this:&lt;br /&gt;sbrshd --sshfs-bin /bin/sh:/bin/bash -b -obind&lt;br /&gt;&lt;br /&gt;this is acording to this:&lt;br /&gt;http://lists.scratchbox.org/pipermail/scratchbox-users/2004-January/000004.html&lt;br /&gt;&lt;br /&gt;seems like it caused by shadow password...&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-3702160022622915157?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/3702160022622915157/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2008/11/scratchbox-ubuntu-troubleshoot.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/3702160022622915157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/3702160022622915157'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2008/11/scratchbox-ubuntu-troubleshoot.html' title='Scratchbox + Ubuntu troubleshoot collection'/><author><name>Akram</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_5UTkd47Ju0g/SSCAFs2F8mI/AAAAAAAAACU/VlAl462VHpc/S220/myhead.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-3512684795398596830</id><published>2008-11-20T09:22:00.000+02:00</published><updated>2008-11-20T09:30:37.859+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Symbian'/><title type='text'>Tips for port from S603rd to 2nd</title><content type='html'>Having strange trouble when you port Symbian S60 3rd application to 2nd edition of SDK? Here are two tips:&lt;br /&gt;&lt;br /&gt;1. Did you use any SVG format picture as your application icon? In 2nd edition SDK, SVG is not supported yet.&lt;br /&gt;&lt;br /&gt;2. Do you have any *.txt resource file in your application folder? In 2nd edition SDK, *.txt files in application folder will regarded as simple Java applet, then try to interpreted.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-3512684795398596830?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/3512684795398596830/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2008/11/tips-for-port-from-s603rd-to-2nd.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/3512684795398596830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/3512684795398596830'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2008/11/tips-for-port-from-s603rd-to-2nd.html' title='Tips for port from S603rd to 2nd'/><author><name>Akram</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_5UTkd47Ju0g/SSCAFs2F8mI/AAAAAAAAACU/VlAl462VHpc/S220/myhead.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-5210170407135690139</id><published>2008-11-16T23:02:00.005+02:00</published><updated>2009-01-02T11:13:57.550+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Symbian'/><title type='text'>Book list</title><content type='html'>&lt;div&gt;&lt;a href="http://www.esnips.com/doc/ea23951f-fe4a-467e-b4d8-fa1ce463906b/autotools"&gt;Autotools tutorial.&lt;/a&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://docs.programmers.ch/index.php/HOWTO_gobject"&gt;GObject tutorial.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.esnips.com/doc/8c9d5216-27e3-46b3-81c8-e12f991d5af5/Wiley.The.Symbian.OS.Architecture.Sourcebook.Jul.2007"&gt;Wiley.The.Symbian.OS.Architecture.Sourcebook.Jul.2007.pdf&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.esnips.com/doc/c53fae78-9765-4c72-b4a7-809393b1dfd6/Descriptors"&gt;Discriptors&lt;/a&gt;&lt;/div&gt;&lt;br /&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/7844944286070596641-5210170407135690139?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/5210170407135690139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2008/11/book-list.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/5210170407135690139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/5210170407135690139'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2008/11/book-list.html' title='Book list'/><author><name>Akram</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_5UTkd47Ju0g/SSCAFs2F8mI/AAAAAAAAACU/VlAl462VHpc/S220/myhead.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-6145761825740231082</id><published>2008-11-16T22:42:00.001+02:00</published><updated>2008-11-16T22:48:27.679+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C/C++'/><title type='text'>Check: A unit testing framework for C</title><content type='html'>It is great findings for me that I found Check framework which could help me write well organized, efficient and looks professional unit test cases today. Unit test is a unclear area for me before that, but I understand clearly after have a simple look Check &lt;a href="http://check.sourceforge.net/doc/check.html/Tutorial.html#Tutorial"&gt;tutorials&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-6145761825740231082?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://check.sourceforge.net/' title='Check: A unit testing framework for C'/><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/6145761825740231082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2008/11/check-unit-testing-framework-for-c.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/6145761825740231082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/6145761825740231082'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2008/11/check-unit-testing-framework-for-c.html' title='Check: A unit testing framework for C'/><author><name>Akram</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_5UTkd47Ju0g/SSCAFs2F8mI/AAAAAAAAACU/VlAl462VHpc/S220/myhead.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-2116675350779286535</id><published>2008-11-16T21:16:00.004+02:00</published><updated>2009-01-02T11:08:20.564+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blog'/><title type='text'>What Brings You to Success</title><content type='html'>&lt;div&gt;I just came up with a great idea and can not wait to write it down, memorize it in my whole life and tell it every friend of mine.&lt;br /&gt;&lt;br /&gt;It is about what brings you to success, until now what I found out is - it is honesty and a pure heart.&lt;br /&gt;&lt;br /&gt;Imagine if we suspicious of everything; Imagine the world without honest people; how dark and rude it could be!!! We will do not know who we can actually trust, so we do not want to follow anybody since we think it might be wasting of our time. That could be biggest cries than ever!!! On this situation you do not know how to let somebody trust you. People not afraid of no sin anymore, people will not obey anybody, people will not have passion...it would be really really hard to do something with this kind of people because you never can earn their trust!&lt;br /&gt;&lt;br /&gt;If you want to be successful, be honest and trust others!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-2116675350779286535?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/2116675350779286535/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2008/11/what-brings-you-to-success.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/2116675350779286535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/2116675350779286535'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2008/11/what-brings-you-to-success.html' title='What Brings You to Success'/><author><name>Akram</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5UTkd47Ju0g/SQaimSm4KqI/AAAAAAAAAB4/jThqiq5GNYc/S220/_DSC5735b.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-8702211344505556245</id><published>2008-11-03T06:55:00.004+02:00</published><updated>2009-01-02T11:07:53.043+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Business'/><title type='text'>Feasibility study process</title><content type='html'>WHAT IS A FEASIBILITY STUDY&lt;br /&gt;A Business Feasibility Study can be defined as a controlled process for identifying problems and opportunities, determining  objectives, describing situations, defining successful outcomes and assessing the range of costs and benefits associated with several alternatives for solving a problem. The Business Feasibility Study is used to support the decision-making process based on a cost benefit analysis of the actual business or project viability. The feasibility study is conducted during the deliberation phase of the business development cycle prior to commencement of a formal Business Plan. It is an analytical tool that includes recommendations and limitations, which are utilised to assist the decision-makers when determining if the Business Concept is viable (Drucker 1985; Hoagland &amp;amp; Williamson 2000; Thompson 2003c; Thompson 2003a).&lt;br /&gt;&lt;br /&gt;read more detailed story at &lt;a href="http://www.capital.dhs.vic.gov.au/capdev/PlanningEvaluation/FeasibilityStudy/FeasibilityStudyProcess/"&gt;Capital Development Guidlines&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Business feasibility study outline (&lt;a href="http://bestentrepreneur.murdoch.edu.au/Business_Feasibility_Study_Outline.pdf"&gt;download&lt;/a&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-8702211344505556245?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/8702211344505556245/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2008/11/feasibility-study-process.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/8702211344505556245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/8702211344505556245'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2008/11/feasibility-study-process.html' title='Feasibility study process'/><author><name>Akram</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5UTkd47Ju0g/SQaimSm4KqI/AAAAAAAAAB4/jThqiq5GNYc/S220/_DSC5735b.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-392614081030309527</id><published>2008-10-22T09:14:00.000+03:00</published><updated>2008-10-22T10:12:08.550+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C/C++'/><title type='text'>Pointer validation in C/C++</title><content type='html'>When a function accepts a pointer as a parameter, we have to validate it. Because access to invalid pointers including read, write and dereference cause uncertain results, it is usually crash.&lt;br /&gt;&lt;br /&gt;There is no such language feature to validate a pointer in C/C++, but we can try some ways.&lt;br /&gt;&lt;br /&gt;1. Checking if it is null. Set the pointer at every time when you dereference it, and check whether it is NULL.&lt;br /&gt;&lt;blockquote&gt;bool isValid(void *a)&lt;br /&gt;{&lt;br /&gt;return (a!=NULL);&lt;br /&gt;}&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;2. Use dynamic_cast.&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;bool isValid(A *a)&lt;br /&gt;{&lt;br /&gt;    if (NULL == dynamic_cast&lt;a*&gt;(a)) &lt;/p&gt;&lt;p&gt;        return false; &lt;/p&gt;&lt;p&gt;    else&lt;/p&gt;&lt;p&gt;    return true;&lt;br /&gt;}&lt;/p&gt;&lt;/blockquote&gt;3. Use exception handling.&lt;br /&gt;&lt;blockquote&gt;bool isValid(A *a)&lt;br /&gt;{&lt;br /&gt;    try {&lt;br /&gt;         A temp = *a;&lt;br /&gt;    } catch&lt;br /&gt;    {&lt;br /&gt;        return false;&lt;br /&gt;    }&lt;br /&gt;    return true;&lt;br /&gt;}&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;4. Use _etext address defined by the loader as the first address following the program text on many platforms, including AIX, Linux, QNX, IRIX, and Solaris. It is not POSIX-compliant, nor is it available on Windows.&lt;br /&gt;&lt;br /&gt;int valid(void *p) { extern char _etext; return (p != NULL) &amp;amp;&amp;amp; ((char*) p &gt; &amp;amp;_etext);}&lt;br /&gt;5. Use some tools provided by system.&lt;br /&gt;Win32 APIs:&lt;br /&gt;&lt;blockquote&gt;IsBadReadPtr&lt;br /&gt;IsBadWritePtr&lt;br /&gt;IsBadCodePtr&lt;br /&gt;IsBadStringPtr&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-392614081030309527?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/392614081030309527/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2008/10/pointer-validation-in-cc.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/392614081030309527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/392614081030309527'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2008/10/pointer-validation-in-cc.html' title='Pointer validation in C/C++'/><author><name>Akram</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5UTkd47Ju0g/SPf34EUsvII/AAAAAAAAABQ/jY-at3NMapI/S220/17102008023.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-21950471441968413</id><published>2008-10-21T13:03:00.000+03:00</published><updated>2008-10-21T14:34:24.300+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C/C++'/><title type='text'>Comma operator in C</title><content type='html'>Comma operator in C&lt;br /&gt;&lt;br /&gt;C has comma(,) operator used to connect two expression. It evaluates the first expression and discard its value then evaluate the second and return its value as a result of expression. f.g:&lt;br /&gt;&lt;br /&gt;int i = 3, j = 1, k = 9;&lt;br /&gt;int expr = (i+j*k, j+i*k);&lt;br /&gt;&lt;br /&gt;the value of expr will be 28.&lt;br /&gt;&lt;br /&gt;Comma operator has lowest priority. &lt;br /&gt;&lt;br /&gt;int expr = i+j*k, j+i*k;&lt;br /&gt;&lt;br /&gt;the value of expr will be equal to 12 at that time.&lt;br /&gt;&lt;br /&gt;Not all the commas appeared in code is operator. f.g:&lt;br /&gt;&lt;br /&gt;printf("%d, %d, %d", a, b, c);&lt;br /&gt;&lt;br /&gt;Those commas between a, b, c are not operators. If we write like this:&lt;br /&gt;&lt;br /&gt;printf("%d, %d, %d", (a, b, c), b, c);&lt;br /&gt;&lt;br /&gt;Those commas between (a, b, c) are operators.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-21950471441968413?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/21950471441968413/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2008/10/comma-operator-in-c.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/21950471441968413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/21950471441968413'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2008/10/comma-operator-in-c.html' title='Comma operator in C'/><author><name>Akram</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5UTkd47Ju0g/SPf34EUsvII/AAAAAAAAABQ/jY-at3NMapI/S220/17102008023.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-4934965655124051827</id><published>2008-10-21T10:06:00.000+03:00</published><updated>2008-10-21T10:19:02.600+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C/C++'/><title type='text'>My feeling about Computer Languages</title><content type='html'>&lt;p&gt;If somebody ask me to sort those programming languages which I know at least a little about it, if we count Symbian c++ and Qt a kind of programming language as well, from low level to higher level, that would be my answer.&lt;br /&gt;&lt;br /&gt;High level languages&lt;br /&gt;^ &lt;/p&gt;&lt;blockquote&gt;Java, C#&lt;br /&gt;Qt&lt;br /&gt;C++&lt;br /&gt;Symbian C++&lt;br /&gt;C&lt;br /&gt;Assembly&lt;br /&gt;&lt;/blockquote&gt;&lt;p&gt;v&lt;br /&gt;low level languages&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-4934965655124051827?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/4934965655124051827/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2008/10/my-feeling-about-computer-languages.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/4934965655124051827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/4934965655124051827'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2008/10/my-feeling-about-computer-languages.html' title='My feeling about Computer Languages'/><author><name>Akram</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5UTkd47Ju0g/SPf34EUsvII/AAAAAAAAABQ/jY-at3NMapI/S220/17102008023.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-1431232326843303357</id><published>2008-10-19T16:12:00.004+03:00</published><updated>2009-01-02T10:50:20.822+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Finance'/><title type='text'>Day one foreign exchange</title><content type='html'>&lt;div&gt;It is a truth if somebody says me full of curiosity. I agree with that, but I am not sure if somebody will say me unstable because I always start new stuff without ending the previous one. I feel I started something for several time in my life while I give up many things. I think maybe that is because of I am growing up. However, I met a good roommate today who is doing financing (he is having bad times in nowadays, and he lost his job as a foreign exchange tutor btw). He teach me something about foreign exchange and stock which is something I am interesting in for a long time but did not have enough knowledge and capital yet.&lt;br /&gt;First several website addresses he gave me, I think that is important because they are chosen by him.&lt;br /&gt;About stock: &lt;a href="http://www.10jqka.com.cn/"&gt;http://www.10jqka.com/&lt;/a&gt;&lt;br /&gt;Good stock market client software with quick network response can be downloaded from there.&lt;br /&gt;registered one username here&lt;br /&gt;About foreign exchange:&lt;br /&gt;&lt;a href="http://www.fx168.com/"&gt;http://www.fx168.com/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.678678.com/"&gt;http://www.678678.com/&lt;/a&gt;&lt;br /&gt;Two good website with some dependable, on time news will help foreign exchangers.&lt;br /&gt;He recommended &lt;a href="http://fx.cmbchina.com/"&gt;http://fx.cmbchina.com/&lt;/a&gt; as a good foreign exchange quotations software download website. I have downloaded and it seems very good. So now I have many more recourses to continue research on my interest. Maybe I will a businessman in some day, LOL….&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Foreign exchange simulate account: &lt;a href="http://www.ifxmarkets.com/"&gt;&lt;span style="text-decoration: underline;"&gt;http://www.ifxmarkets.com&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;good luck! BTW Finance market have high risk to loose money!&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-1431232326843303357?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/1431232326843303357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2008/10/day-one-financing.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/1431232326843303357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/1431232326843303357'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2008/10/day-one-financing.html' title='Day one foreign exchange'/><author><name>Akram</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5UTkd47Ju0g/SPf34EUsvII/AAAAAAAAABQ/jY-at3NMapI/S220/17102008023.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-4652571763258299818</id><published>2008-10-17T04:06:00.002+03:00</published><updated>2009-01-02T16:12:43.518+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Qt'/><title type='text'>One great Uyghur game - nine line</title><content type='html'>&lt;div&gt;&lt;/div&gt;I remember when I was a child I played this game with my friends. Now I found it is a very proper game for handheld devices like Chess. So I am gonna program it. The project is ongoing process. If you interested you can contect with me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-4652571763258299818?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/4652571763258299818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2008/10/one-great-uyghur-game-nine-line.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/4652571763258299818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/4652571763258299818'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2008/10/one-great-uyghur-game-nine-line.html' title='One great Uyghur game - nine line'/><author><name>Akram</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-8828884113849157276</id><published>2008-10-17T04:02:00.001+03:00</published><updated>2009-01-02T16:12:23.213+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Qt'/><title type='text'>Qtopia fancy programming</title><content type='html'>&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/7844944286070596641-8828884113849157276?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/8828884113849157276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2008/10/qtopia-fancy-programming.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/8828884113849157276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/8828884113849157276'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2008/10/qtopia-fancy-programming.html' title='Qtopia fancy programming'/><author><name>Akram</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-4269081784689040491</id><published>2008-10-17T04:01:00.001+03:00</published><updated>2008-12-28T01:57:50.261+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Symbian'/><title type='text'>Symbian application architecture</title><content type='html'>&lt;div&gt;&lt;/div&gt;&lt;!--BEGIN: HEADER--&gt;&lt;!--END: HEADER--&gt;&lt;!--BEGIN: BODY SECTION--&gt;&lt;div class="body"&gt;&lt;!--begin: content--&gt;&lt;div class="contentLeft prTxt"&gt;&lt;h1 class="pageHeading" id="GUID-B5DE1C86-2B16-4B22-887F-7079E54A8ED6"&gt;&lt;a d="http://www.pnp-software.com/XSLTdoc" name="GUID-B5DE1C86-2B16-4B22-887F-7079E54A8ED6"&gt;&lt;!----&gt;&lt;/a&gt;Traditional Symbian OS UI application architecture&lt;/h1&gt; &lt;p&gt;The following image illustrates the components of the traditional architecture approach.&lt;/p&gt; &lt;div class="figure" id="GUID-F38DBC9C-31C0-4E4F-934C-38BA4A4B649F"&gt;&lt;a d="http://www.pnp-software.com/XSLTdoc" name="GUID-F38DBC9C-31C0-4E4F-934C-38BA4A4B649F"&gt;&lt;!----&gt;&lt;/a&gt;&lt;img src="http://www.forum.nokia.com/document/Cpp_Developers_Library/GUID-E477BB63-FE72-4460-AB42-D82FFFCE4CF0_d0e16828_href.png" alt="" /&gt;&lt;p class="figure-title"&gt;&lt;strong&gt;Figure 46: &lt;/strong&gt;Traditional Symbian OS UI application architecture classes&lt;/p&gt;&lt;/div&gt; &lt;p&gt;S60 platform applications that follow the traditional Symbian OS UI application architecture require:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;p&gt;a &lt;a href="http://www.forum.nokia.com/document/Cpp_Developers_Library/GUID-FD2CDEB8-0784-4BE5-A775-170F57D71BBC.html#GUID-FD2CDEB8-0784-4BE5-A775-170F57D71BBC"&gt;UI controller&lt;/a&gt; derived from &lt;a href="http://www.forum.nokia.com/document/Cpp_Developers_Library/GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6/html/classCAknAppUi.html"&gt;&lt;code&gt;CAknAppUi&lt;/code&gt;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt;&lt;li&gt;&lt;p&gt;a &lt;a href="http://www.forum.nokia.com/document/Cpp_Developers_Library/GUID-DAC32BB9-C0EB-42FF-A596-C2F1A90A4BD7.html#GUID-DAC32BB9-C0EB-42FF-A596-C2F1A90A4BD7"&gt;view&lt;/a&gt; or views derived from &lt;a href="http://www.symbian.com/developer/techlib/v9.2docs/doc_source/reference/reference-cpp/CONE/CCoeControlClass.html#%3a%3aCCoeControl" target="_blank"&gt;&lt;code&gt;CCoeControl&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;The traditional Symbian OS UI application architecture provides the most flexible approach to application UI construction. Traditional architecture is easier to port across different platforms than &lt;a href="http://www.forum.nokia.com/document/Cpp_Developers_Library/GUID-68B999C2-0993-4804-9624-42C3D88BE5C7.html#GUID-68B999C2-0993-4804-9624-42C3D88BE5C7"&gt;S60 view architecture&lt;/a&gt;. Traditional architecture is also the best choice for single-view applications, if launching the view from external applications is not required.&lt;/p&gt; &lt;p&gt;Typical responsibilities in this architecture are:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.forum.nokia.com/document/Cpp_Developers_Library/GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6/html/classCAknAppUi.html"&gt;&lt;code&gt;CAknAppUi&lt;/code&gt;&lt;/a&gt;-derived class acts as a UI controller:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;p&gt;It &lt;a href="http://www.forum.nokia.com/document/Cpp_Developers_Library/GUID-A29FB4CA-2161-4407-BA69-48FBF5D7543F.html#GUID-A29FB4CA-2161-4407-BA69-48FBF5D7543F"&gt;creates&lt;/a&gt; one or more &lt;a href="http://www.symbian.com/developer/techlib/v9.2docs/doc_source/reference/reference-cpp/CONE/CCoeControlClass.html#%3a%3aCCoeControl" target="_blank"&gt;&lt;code&gt;CCoeControl&lt;/code&gt;&lt;/a&gt;-derived views.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;It handles &lt;a href="http://www.forum.nokia.com/document/Cpp_Developers_Library/GUID-EF7FF39E-929F-4767-B475-5D582D37BB32.html#GUID-EF7FF39E-929F-4767-B475-5D582D37BB32"&gt;events&lt;/a&gt;, including enabling views to handle &lt;a href="http://www.forum.nokia.com/document/Cpp_Developers_Library/GUID-E402616A-7ED8-45AC-B836-99C3A3760B33.html#GUID-E402616A-7ED8-45AC-B836-99C3A3760B33"&gt;key events&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;To &lt;a href="http://www.forum.nokia.com/document/Cpp_Developers_Library/GUID-FC63E2D1-697C-4890-9B70-0DC0AAE7597C.html#GUID-FC63E2D1-697C-4890-9B70-0DC0AAE7597C"&gt;switch between views&lt;/a&gt;, it creates and destroys or shows and hides views.&lt;/p&gt; &lt;/li&gt;&lt;li&gt;&lt;p&gt;It handles menu &lt;a href="http://www.forum.nokia.com/document/Cpp_Developers_Library/GUID-4941C035-C359-4968-9BD5-31F44EE5F810.html#GUID-4941C035-C359-4968-9BD5-31F44EE5F810"&gt;commands&lt;/a&gt;.&lt;/p&gt; &lt;/li&gt;&lt;li&gt;&lt;p&gt;It receives events such as &lt;a href="http://www.forum.nokia.com/document/Cpp_Developers_Library/GUID-DD15F24B-0786-4531-A6C5-A5E70EBE2732.html#GUID-DD15F24B-0786-4531-A6C5-A5E70EBE2732"&gt;layout&lt;/a&gt; and &lt;a href="http://www.forum.nokia.com/document/Cpp_Developers_Library/GUID-3B441CDC-AB7A-4D8D-A595-57C21E1D426C.html#GUID-3B441CDC-AB7A-4D8D-A595-57C21E1D426C"&gt;foreground&lt;/a&gt; notifications from the run-time environment.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt; &lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.symbian.com/developer/techlib/v9.2docs/doc_source/reference/reference-cpp/CONE/CCoeControlClass.html#%3a%3aCCoeControl" target="_blank"&gt;&lt;code&gt;CCoeControl&lt;/code&gt;&lt;/a&gt;-derived view:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;p&gt;Shows application data and state on the screen.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Receives user input.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Notifies the &lt;a href="http://www.forum.nokia.com/document/Cpp_Developers_Library/GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6/html/classCAknAppUi.html"&gt;&lt;code&gt;CAknAppUi&lt;/code&gt;&lt;/a&gt;-derived class of relevant events.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Often observes model changes (directly or via the UI controller) and updates the screen accordingly.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;For more information on the &lt;a href="http://www.forum.nokia.com/document/Cpp_Developers_Library/GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6/html/classCAknApplication.html"&gt;&lt;code&gt;CAknApplication&lt;/code&gt;&lt;/a&gt; and &lt;a href="http://www.forum.nokia.com/document/Cpp_Developers_Library/GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6/html/classCAknDocument.html"&gt;&lt;code&gt;CAknDocument&lt;/code&gt;&lt;/a&gt;-derived classes, see &lt;a href="http://www.forum.nokia.com/document/Cpp_Developers_Library/GUID-BDDDF68F-F7C3-43AF-8B6C-C77C701FD2A9.html#GUID-BDDDF68F-F7C3-43AF-8B6C-C77C701FD2A9"&gt;"Framework requirements for GUI applications"&lt;/a&gt;.&lt;/p&gt; &lt;/div&gt;&lt;!--end: content--&gt;&lt;!--start: sidebar--&gt;&lt;!--end: sidebar--&gt;&lt;/div&gt;&lt;!--END: BODY SECTION--&gt;&lt;!--BEGIN: FOOTER--&gt;&lt;div class="footer"&gt;&lt;br /&gt;&lt;/div&gt;&lt;!--END: FOOTER--&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-4269081784689040491?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/4269081784689040491/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2008/10/symbian-application-architecture.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/4269081784689040491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/4269081784689040491'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2008/10/symbian-application-architecture.html' title='Symbian application architecture'/><author><name>Akram</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-6124802565316381268</id><published>2008-10-16T08:31:00.001+03:00</published><updated>2009-01-02T16:12:03.972+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Qt'/><title type='text'>Image formats in Qt/Qtopia</title><content type='html'>Image formats different from image file formats like png, jpeg ... since they are divided based on how many bits of Dada they use to represent each pixels. There are monochrome (1-bit), 8-bit and 32-bit images are available in all the versions of Qt and there is 2-bit, 4-bit, 16-bit images supported in Qtopia.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://doc.trolltech.com/4.4/qimage.html"&gt;QImage&lt;/a&gt; class encapsulated almost all the image manipulation in Qt. If you are coding for Qtopia, QImage::Format_RGB16 would be the default image format. e.g if you capture the screen use QPixmap::grabWindow and save it to one QImage object, it will be RGB16 format. It is a special kind of &lt;a href="http://en.wikipedia.org/wiki/Highcolor"&gt;highcolor&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Alpha channel - There are some image formats has alpha channel and there are some hasn't. If the image format has alpha channel you can do transparent with it, If it hasn't you can convert it to some known image formats like Format_ARGB32 then can. 0 represents a fully transparent color, while 255 represents a fully opaque color.&lt;br /&gt;&lt;br /&gt;If you do not know about RGB color model follow this link - &lt;a href="http://en.wikipedia.org/wiki/RGB_color_model"&gt;RGB color model&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-6124802565316381268?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/6124802565316381268/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2008/10/image-formats-in-qtqtopia.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/6124802565316381268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/6124802565316381268'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2008/10/image-formats-in-qtqtopia.html' title='Image formats in Qt/Qtopia'/><author><name>Akram</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-641150795318109293</id><published>2008-10-14T11:07:00.001+03:00</published><updated>2008-11-16T22:05:39.781+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><title type='text'>to be a good developer...</title><content type='html'>To be a good developer, I want to maintain this document in my lifetime as a developer. You should always collect some experience, otherwise how can you call yourself "experienced"?&lt;br /&gt;&lt;br /&gt;1. Always remember what is going on in memory, stack, heap. When you create an object think about where it is and when should let it die.&lt;br /&gt;&lt;br /&gt;2. If you feel some part of your code might be wrong or there is possibility to improve your software, just do it! Before tester complain about how bad is your software.&lt;br /&gt;&lt;br /&gt;3. Do not be so optimistic, think about what if things go wrong? If something can go wrong, it will.&lt;br /&gt;&lt;br /&gt;4. Think from others perspective, what is the client expect from you code? they do not need to know your implementation detail, then can they use your toolkit every time correctly?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-641150795318109293?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/641150795318109293/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2008/10/to-be-good-developer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/641150795318109293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/641150795318109293'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2008/10/to-be-good-developer.html' title='to be a good developer...'/><author><name>Akram</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-3611618460151309965</id><published>2008-10-14T08:53:00.000+03:00</published><updated>2008-10-14T09:32:49.937+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Symbian'/><title type='text'>A very simple guide to Symbian Signed</title><content type='html'>Wanna write an application for Symbian and distribute it? Here is a simple guidance about Symbian signed which I summarised, just what you need to know.&lt;br /&gt;&lt;br /&gt;You have to sign your application targeted at v9.x (earlier versions do not require)Symbian OS so others can trust your application and use it on their device.There are three signing options are now available:&lt;br /&gt;&lt;br /&gt;Open Signed: If you are a developer and you only want to use your application on your own device you need this sort of signing.&lt;br /&gt;&lt;br /&gt;Express Signed: If your application is very straightforward and does not do any sensitive operations like access users private data or use a lot of CPU, express signing can save your cost.&lt;br /&gt;&lt;br /&gt;Certified Signed: If you can not use above two kind of signing then you need certified signed. You need a publisher ID and you need cost more money. You have to do Symbian signed test.&lt;br /&gt;&lt;br /&gt;More information you can refer to &lt;a href="https://www.symbiansigned.com/app/page"&gt;Symbian signed &lt;/a&gt;website.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-3611618460151309965?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/3611618460151309965/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2008/10/very-simple-guide-to-symbian-signed.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/3611618460151309965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/3611618460151309965'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2008/10/very-simple-guide-to-symbian-signed.html' title='A very simple guide to Symbian Signed'/><author><name>Akram</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-3303421410877993238</id><published>2008-10-12T07:33:00.000+03:00</published><updated>2008-10-12T07:40:52.200+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Symbian'/><title type='text'>Discripters</title><content type='html'>Descriptors - is a reference to an area of memory.&lt;br /&gt;&lt;a name="u.7w"&gt;&lt;/a&gt; &lt;br /&gt;&lt;a name="oyvh"&gt;&lt;/a&gt; Descriptors layout:&lt;br /&gt;&lt;a name="msb2"&gt;&lt;/a&gt; Type code: 4 bits value describing which of the 5 sorts of descriptor layout we are looking at&lt;br /&gt;&lt;a name="vj1q"&gt;&lt;/a&gt; Length: 28 bits determines the length of the data&lt;br /&gt;&lt;a name="vwnd"&gt;&lt;/a&gt; Max Length: some descriptors also store 4 bytes length of memory available for the data&lt;br /&gt;&lt;a name="wwva"&gt;&lt;/a&gt; Array or pointer to array&lt;br /&gt;&lt;a name="qyzg"&gt;&lt;/a&gt; &lt;br /&gt;&lt;a name="ogpa"&gt;&lt;/a&gt; Five types of Descriptors:&lt;br /&gt; (0) Array type without maximum length&lt;br /&gt; (1) Pointer type without maximum length&lt;br /&gt;&lt;a name="oc-u"&gt;&lt;/a&gt; (2) Pointer type with maximum length&lt;br /&gt;&lt;a name="oyb4"&gt;&lt;/a&gt; (3) Array type with maximum length&lt;br /&gt; (4) Pointer type with maximum length point to an entire descriptor&lt;br /&gt;&lt;br /&gt;TPtrC:&lt;br /&gt;&lt;a name="gisz"&gt;&lt;/a&gt;TPtrC does not own the data it points to.&lt;br /&gt;&lt;a name="h6d0"&gt;&lt;/a&gt;TPtrC is pointer type without maximum length. (1)&lt;br /&gt;&lt;a name="jima"&gt;&lt;/a&gt;TPtrC is proper to used to pass some data originally not in the form of a descriptor to a function expecting a descriptor.&lt;br /&gt;&lt;a name="dmfq"&gt;&lt;/a&gt;&lt;a name="g5py"&gt;&lt;/a&gt;TPtrC is especially good as a return value. If you are returning a descriptor, but you do not want to pass ownership of the data to the caller.&lt;br /&gt;It is often best to use a TPtrC return value.&lt;br /&gt; &lt;br /&gt;&lt;a name="nrxd"&gt;&lt;/a&gt; TBuf:&lt;br /&gt;&lt;a name="wywj"&gt;&lt;/a&gt;TBuf is array type with maximum length. (3)&lt;br /&gt;&lt;a name="blkg"&gt;&lt;/a&gt;TBuf is proper to used in very common situation like create, use, and destroyed in one function.&lt;br /&gt;&lt;a name="dxwj"&gt;&lt;/a&gt; &lt;br /&gt;&lt;a name="pd4t"&gt;&lt;/a&gt; TPtr:&lt;br /&gt;&lt;a name="c0v%3A"&gt;&lt;/a&gt;If you want to use some raw memory as the content of a modifiable descriptor use TPtr.&lt;br /&gt;&lt;a name="urvo"&gt;&lt;/a&gt;It has a type code of 2 unless they are created with HBufC::Des or TBufC::Des.&lt;br /&gt;&lt;a name="bcn7"&gt;&lt;/a&gt;Not used very often.&lt;br /&gt;&lt;a name="f0vv"&gt;&lt;/a&gt; &lt;br /&gt;&lt;a name="khp%3A"&gt;&lt;/a&gt; TLitC:&lt;br /&gt;&lt;a name="i9jw"&gt;&lt;/a&gt;For static text use TLitC.&lt;br /&gt;&lt;a name="p9%3Aw"&gt;&lt;/a&gt;TLitC is constructed using _LIT macro.&lt;br /&gt;&lt;a name="hal7"&gt;&lt;/a&gt;TLitC has type code of 0 without maximum length.&lt;br /&gt;&lt;a name="pxn4"&gt;&lt;/a&gt;TLitC is not derived from TDesC, to use TDesC functions you must cast.&lt;br /&gt;&lt;a name="ursh"&gt;&lt;/a&gt;    static_cast&lt;const&gt;(MyTLitCString) &lt;br /&gt;&lt;a name="du_s"&gt;&lt;/a&gt; &lt;br /&gt;&lt;a name="g1br"&gt;&lt;/a&gt; HBufC:&lt;br /&gt;&lt;a name="iahg"&gt;&lt;/a&gt;HBufC has exactly same structure as TLitC.&lt;br /&gt;&lt;a name="ica2"&gt;&lt;/a&gt;HBufC can only be allocated on the heap.&lt;br /&gt;&lt;a name="qbap"&gt;&lt;/a&gt;HBufC's data can be modified only through the Des() function or the assignment operator. Des() will return TPtr of type 4.&lt;br /&gt;&lt;a name="eb2t"&gt;&lt;/a&gt;In this way it can change the length of the HBufC as well as its data.&lt;br /&gt;&lt;a name="ju.g"&gt;&lt;/a&gt;HBufC is derived from TDesC.&lt;br /&gt;&lt;br /&gt;TPtr (type4)&lt;br /&gt;&lt;a name="gepc3"&gt;&lt;/a&gt;Can be get by using Des() on HBufC, then it can be used to functions expects TDes&amp;amp;&lt;br /&gt;&lt;a name="gepc4"&gt;&lt;/a&gt;TPtr's copy constructor very different from assignment operator.  Copy constructor copy the members of the descriptors, but assignment&lt;a name="pa0g"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a name="gepc5"&gt;&lt;/a&gt;operator is defined to copy the content of the TDesC into where TPtr points.&lt;br /&gt;&lt;a name="bo3t"&gt;&lt;/a&gt;&lt;a name="gepc6"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a name="gepc7"&gt;&lt;/a&gt;TBufC&lt;br /&gt;TBufC only usually embedded in other objects&lt;a name="nw6i"&gt;&lt;/a&gt;it is 4 bytes of RAM cheaper than TBuf, use Des() when it need to be modified.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-3303421410877993238?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/3303421410877993238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2008/10/discripters.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/3303421410877993238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/3303421410877993238'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2008/10/discripters.html' title='Discripters'/><author><name>Akram</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7844944286070596641.post-6409840843934411967</id><published>2008-10-11T09:12:00.002+03:00</published><updated>2009-01-02T11:08:39.804+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blog'/><title type='text'>My first "footprint"</title><content type='html'>First, I want to tell you: "you do not have to read this, reading this do not do any good to you." Except you know me or you have special interest to me or you are kind of special agent who is investigating on me.&lt;br /&gt;Maybe I should create one private folder and put all my monologs into it. I have thought about that before I start to write. I write words in above in case you get this from somewhere.&lt;br /&gt;Ok, let me start talking about some facts that nobody will be interested in. I had started many blogs, but did not continue when I was boring. I think not all of my thoughts can share with people in the entire world. So I prefer write my words into my diary, but diaries will be lost always. Therefore, I come back to blog. I should make one private folder.&lt;br /&gt;It is one main reason of I started this blog in English, which I want to practice my English writing skills. After so many years of effort, I have good oral English, reading but my HR find I always do some grammar mistake when I was writing in English. Do not be surprised if you can find few mistake or spelling errors when you read this because I am correcting them by using Microsoft office word Three or five times for one sentence on average.&lt;br /&gt;The reason I choose Google blogger is I like this company and I believe it is the future of computer world. Yes, I have Perfectionism, whatever I am doing, I want the best or I do not want to.&lt;br /&gt;I spend almost one hour to choose this blog title. “Footprints of Mine”, I think I can use this title forever. There is no need to change it if I write any content to my blog; they will be footprints of mine after all. I had thought about “the Call of the soul”, but I found it is too heavy lately.&lt;br /&gt;I choose my original own name as a URL since I feel that would be real myself with my own name.&lt;br /&gt;I will write my monologs into my private folder, I will write my creative thoughts, my technical articles into public folders, sometimes a little bit pictures of my friends and me or one or two interesting videos from YouTube, etc.&lt;br /&gt;Hope I will enjoy this!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844944286070596641-6409840843934411967?l=symnux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://symnux.blogspot.com/feeds/6409840843934411967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://symnux.blogspot.com/2008/10/my-first-footprint.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/6409840843934411967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7844944286070596641/posts/default/6409840843934411967'/><link rel='alternate' type='text/html' href='http://symnux.blogspot.com/2008/10/my-first-footprint.html' title='My first &quot;footprint&quot;'/><author><name>Aiken</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
