<?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-19796644</id><updated>2011-04-21T16:25:03.997-07:00</updated><title type='text'>Computer and personal stuff</title><subtitle type='html'>News and information on computer stuff, especially tips and triks on linux</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://adhianto.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19796644/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://adhianto.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Laksono Adhianto</name><uri>http://www.blogger.com/profile/15297127601614301975</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-19796644.post-5603234314925643615</id><published>2009-05-20T10:38:00.000-07:00</published><updated>2009-05-20T13:46:37.173-07:00</updated><title type='text'>Rules for making good APIs</title><content type='html'>There's an interesting article written by Michi Henning in CACM 05/2009  vol 52 no 05  &lt;a href="http://cacm.acm.org/magazines/2009/5/24646-api-design-matters"&gt;API design matters&lt;/a&gt;. In this article the author shows some examples of "bad" API as well as its "remedy".&lt;br /&gt;&lt;br /&gt;Here  his recipes to write good APIs:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;An API must provide sufficient functionality for the caller to achieve its task. Here, the author emphasizes to make sure that nothing is missing.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;An API should be minimal, without imposing undue inconvenience on the caller. (well, that's not easy unfortunately :-(&lt;/li&gt;&lt;li&gt;APIs cannot be designed without an understanding of their context. In the other word, the API designer needs to imagine some use cases: if there's something unexpected, do we need to throw an exception ? or just return null ?&lt;/li&gt;&lt;li&gt;General purpose APIs should be policy free, "special purpose" APIs should "policy rich". The author suggests that if the context is unknown (case of general purpose),  we can use the strategy pattern.&lt;/li&gt;&lt;li&gt;APIs should be designed from the perspective of the caller. This is clear, but not easy though.&lt;/li&gt;&lt;li&gt;Good APIs don't pass the buck. Don't add extra parameters if we are not sure !&lt;/li&gt;&lt;li&gt;APIs should be documented before they are implemented. We have to be more disciplined.&lt;/li&gt;&lt;/ol&gt;I personally agree with the author. As a programmer, it is much easier to write bad APIs than the good ones.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19796644-5603234314925643615?l=adhianto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adhianto.blogspot.com/feeds/5603234314925643615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19796644&amp;postID=5603234314925643615' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19796644/posts/default/5603234314925643615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19796644/posts/default/5603234314925643615'/><link rel='alternate' type='text/html' href='http://adhianto.blogspot.com/2009/05/rules-for-making-good-apis.html' title='Rules for making good APIs'/><author><name>Laksono Adhianto</name><uri>http://www.blogger.com/profile/15297127601614301975</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19796644.post-8370890077740793630</id><published>2008-01-07T11:37:00.000-08:00</published><updated>2008-01-07T11:40:37.124-08:00</updated><title type='text'>Xterm Title Bar Manipulations</title><content type='html'>An interesting code from Bash Prompt HOWTO: http://tldp.org/HOWTO/Bash-Prompt-HOWTO/xterm-title-bar-manipulations.html&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;function proml&lt;br /&gt;{&lt;br /&gt;case $TERM in&lt;br /&gt;    xterm*)&lt;br /&gt;        local TITLEBAR='\[\033]0;\u@\h:\w\007\]'&lt;br /&gt;        ;;&lt;br /&gt;    *)&lt;br /&gt;        local TITLEBAR=''&lt;br /&gt;        ;;&lt;br /&gt;esac&lt;br /&gt;&lt;br /&gt;PS1="${TITLEBAR}\&lt;br /&gt;[\$(date +%H%M)]\&lt;br /&gt;[\u@\h:\w]\&lt;br /&gt;\$ "&lt;br /&gt;PS2='&gt; '&lt;br /&gt;PS4='+ '&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;This code works so far on major *NIX console. There are some other shell script manipulation, but this one works nicely for me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19796644-8370890077740793630?l=adhianto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adhianto.blogspot.com/feeds/8370890077740793630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19796644&amp;postID=8370890077740793630' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19796644/posts/default/8370890077740793630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19796644/posts/default/8370890077740793630'/><link rel='alternate' type='text/html' href='http://adhianto.blogspot.com/2008/01/xterm-title-bar-manipulations.html' title='Xterm Title Bar Manipulations'/><author><name>Laksono Adhianto</name><uri>http://www.blogger.com/profile/15297127601614301975</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19796644.post-8329121545359522948</id><published>2007-03-13T09:25:00.000-07:00</published><updated>2007-03-13T09:35:27.708-07:00</updated><title type='text'>CSS template</title><content type='html'>In order to create a website, it is always a good idea to take an example from free templates then adapt them (if  legal). There are tons of free template, but currently I found some elegants:&lt;br /&gt;&lt;br /&gt;* http://icant.co.uk/csstablegallery/ that has list of template for table&lt;br /&gt;* http://www.solucija.com/home/css-templates/ contains only some free templates, but most of them are very elegant.&lt;br /&gt;&lt;br /&gt;Taking a template as a starting point is a lazy way to do, but it helps me a lot if you are not familiar with web design.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19796644-8329121545359522948?l=adhianto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adhianto.blogspot.com/feeds/8329121545359522948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19796644&amp;postID=8329121545359522948' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19796644/posts/default/8329121545359522948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19796644/posts/default/8329121545359522948'/><link rel='alternate' type='text/html' href='http://adhianto.blogspot.com/2007/03/css-template.html' title='CSS template'/><author><name>Laksono Adhianto</name><uri>http://www.blogger.com/profile/15297127601614301975</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19796644.post-114409392030068455</id><published>2006-04-03T12:48:00.000-07:00</published><updated>2006-04-03T12:52:00.656-07:00</updated><title type='text'>HTML and CSS Validator</title><content type='html'>I found interesting and useful links concerning validator for HTML and CSS. These links are taken from the signature of Stan Brown (no idea who he is).&lt;br /&gt;&lt;br /&gt;HTML 4.01 spec: &lt;a href="http://www.w3.org/TR/html401/"&gt;http://www.w3.org/TR/html401/&lt;/a&gt;&lt;br /&gt;validator:      &lt;a href="http://validator.w3.org/"&gt;http://validator.w3.org/&lt;/a&gt;&lt;br /&gt;CSS 2.1 spec:   &lt;a href="http://www.w3.org/TR/CSS21/"&gt;http://www.w3.org/TR/CSS21/&lt;/a&gt;&lt;br /&gt;validator:      &lt;a href="http://jigsaw.w3.org/css-validator/"&gt;http://jigsaw.w3.org/css-validator/&lt;/a&gt;&lt;br /&gt;Why We Won't Help You: &lt;a href="http://diveintomark.org/archives/2003/05/05/why_we_wont_help_you"&gt;http://diveintomark.org/archives/2003/05/05/why_we_wont_help_you&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19796644-114409392030068455?l=adhianto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adhianto.blogspot.com/feeds/114409392030068455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19796644&amp;postID=114409392030068455' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19796644/posts/default/114409392030068455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19796644/posts/default/114409392030068455'/><link rel='alternate' type='text/html' href='http://adhianto.blogspot.com/2006/04/html-and-css-validator.html' title='HTML and CSS Validator'/><author><name>Laksono Adhianto</name><uri>http://www.blogger.com/profile/15297127601614301975</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19796644.post-114408995791752890</id><published>2006-04-03T11:22:00.000-07:00</published><updated>2006-04-03T11:46:01.876-07:00</updated><title type='text'>Cheap Webhosting</title><content type='html'>Looking for Unix/Linux based cheap but full of feature functionalities ? I have searched for reliable-cheap-and full feature webhostings, and until now, I can recommend two companies: &lt;a href="http://routhost.com"&gt;routhost&lt;/a&gt; and &lt;A HREF="http://www.integrahost.com?a_aid=dcd502c5&amp;a_bid=56022fe8"&gt;&lt;IMG SRC="http://www.integrahost.com/affiliate/scripts/sb.php?a_aid=dcd502c5&amp;a_bid=56022fe8" BORDER="0"&gt;integrahost&lt;/A&gt;. The former is highly recommended if the budget constrant is a high priority. Routhost can host your website with only less than US$ 3, with unlimited database, subdomain and email. However, if you have any problem or need a technical support, they only have ticketing system. This means there is no interactivity with the technical support.&lt;br /&gt;&lt;br /&gt;&lt;A HREF="http://www.integrahost.com?a_aid=dcd502c5&amp;a_bid=1e8dbdc5"&gt;&lt;IMG SRC="http://www.integrahost.com/affiliate/scripts/sb.php?a_aid=dcd502c5&amp;a_bid=1e8dbdc5" BORDER="0"&gt;Integrahost&lt;/A&gt; is a bit more expensive but very reasonable: less than US$ 8/month. They provide less generous functionalities but with more domains to be hosted. What I like from Integrahost is their technical support with live chat. Direct tech support like this for me is A MUST. For this reason, Integrahost is more preferable than Routhost if you have $5/month in your budget. &lt;br /&gt;Integrahost also supports an &lt;a href="http://www.integrahost.com/affiliate/affsignup.php?pid=dcd502c5"&gt;affiliates program&lt;/a&gt;. This enables you to earn money if someone sign-up based on your affiliation.&lt;br /&gt;&lt;br /&gt;&lt;A HREF="http://adhianto.blogspot.com?a_aid=dcd502c5&amp;a_bid=&amp;desturl=http%3A%2F%2Fadhianto.blogspot.com"&gt;&lt;IMG SRC='http://www.integrahost.com/affiliate/scripts/sb.php?a_aid=dcd502c5&amp;a_bid=' WIDTH=1 HEIGHT=1 BORDER=0&gt;&lt;center&gt;&lt;b&gt;Cheap website&lt;/b&gt;&lt;br&gt;List of highly recommended cheap website with nice feature and support&lt;/center&gt;&lt;/A&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19796644-114408995791752890?l=adhianto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adhianto.blogspot.com/feeds/114408995791752890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19796644&amp;postID=114408995791752890' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19796644/posts/default/114408995791752890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19796644/posts/default/114408995791752890'/><link rel='alternate' type='text/html' href='http://adhianto.blogspot.com/2006/04/cheap-webhosting.html' title='Cheap Webhosting'/><author><name>Laksono Adhianto</name><uri>http://www.blogger.com/profile/15297127601614301975</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19796644.post-114408822169970191</id><published>2006-04-03T11:04:00.000-07:00</published><updated>2006-04-03T11:17:01.713-07:00</updated><title type='text'>New Messenger with Voice</title><content type='html'>I just discovered last night that Yahoo and MSN messenger are now equipped with PC-to-PC calls (see the &lt;a href="http://messenger.yahoo.com/feat_voice.php;_ylt=AofC4kUzsf2YQongkd9NbwJnMMIF"&gt;YM voice page&lt;/a&gt;). This feature is not only free but surprisingly has high quality of voice.  Much more surprising for me, the Yahoo messenger now is available both for Windows and Unix/Linux version ! Apparently Yahoo understands that Unix/Linux community is not small and  needs to be considered seriously.&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Don't ask if MSN will support Unix/Linux environment...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So why all this free stuff for chatting and PC-to-PC calls ? Apparently Yahoo considers seriously the number one threat in search engine: Google. Since Google aggressively attempts to attract more people to join their community via Google's groups and Google mail (gmail), Yahoo has changed a lot.&lt;br /&gt;Right now, Yahoo and MSN messenger are a step ahead compared to Google Talk.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19796644-114408822169970191?l=adhianto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adhianto.blogspot.com/feeds/114408822169970191/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19796644&amp;postID=114408822169970191' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19796644/posts/default/114408822169970191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19796644/posts/default/114408822169970191'/><link rel='alternate' type='text/html' href='http://adhianto.blogspot.com/2006/04/new-messenger-with-voice.html' title='New Messenger with Voice'/><author><name>Laksono Adhianto</name><uri>http://www.blogger.com/profile/15297127601614301975</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19796644.post-113728929076059292</id><published>2006-01-14T17:32:00.000-08:00</published><updated>2006-01-17T15:04:56.813-08:00</updated><title type='text'>Installing Acrobat reader on Debian</title><content type='html'>Due to license restriction, Debian does not provide Acrobat Reader package in its distribution. Fortunately, there is a work around to install the software "properly" (taken from http://www.bxlug.be/en/articles/128 and http://ubuntuforums.org/archive/index.php/t-1832.html):&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Modify &lt;tt&gt;/etc/apt/sources.list&lt;/tt&gt; file by adding:&lt;br /&gt;&lt;/li&gt;&lt;pre&gt;deb http://archive.ubuntu.com/ubuntu/ warty multiverse&lt;/pre&gt;&lt;li&gt;Then try to execute the following commands:&lt;/li&gt;&lt;pre&gt;sudo apt-get update&lt;/pre&gt;&lt;li&gt;This may contain some errors. We can ignore it. Last by not least, download and install the software:&lt;/li&gt;&lt;pre&gt;sudo apt-get install acroread mozilla-acroread&lt;/pre&gt;&lt;/ol&gt;Done ! Try execute the command acroread. If everything is fine, it will show the Acrobat Reader.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19796644-113728929076059292?l=adhianto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adhianto.blogspot.com/feeds/113728929076059292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19796644&amp;postID=113728929076059292' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19796644/posts/default/113728929076059292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19796644/posts/default/113728929076059292'/><link rel='alternate' type='text/html' href='http://adhianto.blogspot.com/2006/01/installing-acrobat-reader-on-debian.html' title='Installing Acrobat reader on Debian'/><author><name>Laksono Adhianto</name><uri>http://www.blogger.com/profile/15297127601614301975</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19796644.post-113683793890031532</id><published>2006-01-09T12:04:00.000-08:00</published><updated>2006-01-09T12:18:58.930-08:00</updated><title type='text'>Presentation slide with Latex</title><content type='html'>Using Latex for presentation slide ? It may not be very obvious, but it can be very helpful if we have papers/thesis in Latex and want to reuse it. It is also helpful to cite with existing Latex bibiliography database.&lt;br /&gt;&lt;br /&gt;Currently I only use two kinds of Latex presentation packages:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.tug.org/applications/Seminar/"&gt;seminar&lt;/a&gt;; and&lt;/li&gt;   &lt;li&gt;&lt;a href="http://latex-beamer.sourceforge.net/"&gt;beamer&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; The first one is very simple and easy to work with, while the other is very advance, beautiful template and a little bit too automatic. With the first one, you have everything in your control. Thus, if I want something simple and fast, I'll use the seminar package, while for serious and advanced presentation I use beamer. I heard PowerDot is a very simple but powerful package. It may worth to try.&lt;br /&gt;&lt;br /&gt;notes: Do not forget to run texhash or mktexlsr to rebuild Latex database&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19796644-113683793890031532?l=adhianto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adhianto.blogspot.com/feeds/113683793890031532/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19796644&amp;postID=113683793890031532' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19796644/posts/default/113683793890031532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19796644/posts/default/113683793890031532'/><link rel='alternate' type='text/html' href='http://adhianto.blogspot.com/2006/01/presentation-slide-with-latex.html' title='Presentation slide with Latex'/><author><name>Laksono Adhianto</name><uri>http://www.blogger.com/profile/15297127601614301975</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19796644.post-113519121270914318</id><published>2005-12-21T10:53:00.000-08:00</published><updated>2005-12-21T10:53:32.710-08:00</updated><title type='text'>Computer and personal stuff</title><content type='html'>&lt;a href="http://adhianto.blogspot.com/"&gt;Computer and personal stuff&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19796644-113519121270914318?l=adhianto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adhianto.blogspot.com/feeds/113519121270914318/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19796644&amp;postID=113519121270914318' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19796644/posts/default/113519121270914318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19796644/posts/default/113519121270914318'/><link rel='alternate' type='text/html' href='http://adhianto.blogspot.com/2005/12/computer-and-personal-stuff.html' title='Computer and personal stuff'/><author><name>Laksono Adhianto</name><uri>http://www.blogger.com/profile/15297127601614301975</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19796644.post-113519110105315418</id><published>2005-12-21T10:39:00.000-08:00</published><updated>2005-12-21T10:51:41.070-08:00</updated><title type='text'>Callgraph for your application</title><content type='html'>I always wonder how my program looks like, what is the relationship between the subroutines, and is there any dead code. I wrote a tool to display callgraph based on gnu profiling (gprof) so not only it displays routines caller-callee relations, but also the time spent in each routine. The tool is written in tcl/tk and uses &lt;a href="http://www.google.com/url?sa=U&amp;start=1&amp;q=http://www.cs.uni-sb.de/RW/users/sander/html/gsvcg1.html&amp;e=9797"&gt;VCG &lt;/a&gt;format as the output. So far, I am quite pleased with the tool, and I hope I can make it publish soon. Currently I submit a new project to sourforge for this tool. A possible name for the project is &lt;b&gt;cgprof&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Recently, I found out there is a very similar tool but more &lt;span style="font-style:italic;"&gt;convenient&lt;/span&gt;. It is more convenient because I don't need to recompile or run my program. The tool is called &lt;a href="http://sourceforge.net/projects/nmdepend/"&gt;nmDepend, &lt;/a&gt;a callgraph dependent graph that is based on posix/unix nm command. A similar tool for .Net is: &lt;a href="http://smacchia.chez-alice.fr/NDepend.html"&gt;nDepend&lt;/a&gt;. The former uses &lt;a href="http://www.graphviz.org/"&gt;Graphviz &lt;/a&gt;as the output while the later seems uses their own format.&lt;br /&gt;&lt;br /&gt;The three tools: cgprof, nmDepend and nDepend are similar. They all avoid parsing a source code which can be too language dependent and hard to code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19796644-113519110105315418?l=adhianto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adhianto.blogspot.com/feeds/113519110105315418/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19796644&amp;postID=113519110105315418' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19796644/posts/default/113519110105315418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19796644/posts/default/113519110105315418'/><link rel='alternate' type='text/html' href='http://adhianto.blogspot.com/2005/12/callgraph-for-your-application.html' title='Callgraph for your application'/><author><name>Laksono Adhianto</name><uri>http://www.blogger.com/profile/15297127601614301975</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19796644.post-113516044456402129</id><published>2005-12-21T02:17:00.000-08:00</published><updated>2005-12-21T02:20:44.573-08:00</updated><title type='text'>Website design</title><content type='html'>Looking for a free web template ? Finding a simple template with good Xhtml and CSS, plus simplicity is not easy. But thanks to &lt;a href="http://www.oswd.org/"&gt;Open Source Web Design&lt;/a&gt;, we can choose free (or almost ?) and open source template. &lt;br /&gt;Most of the templates are well written and clean. It is a good think to see their template first before you create your own.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19796644-113516044456402129?l=adhianto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adhianto.blogspot.com/feeds/113516044456402129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19796644&amp;postID=113516044456402129' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19796644/posts/default/113516044456402129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19796644/posts/default/113516044456402129'/><link rel='alternate' type='text/html' href='http://adhianto.blogspot.com/2005/12/website-design.html' title='Website design'/><author><name>Laksono Adhianto</name><uri>http://www.blogger.com/profile/15297127601614301975</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19796644.post-113439098352233103</id><published>2005-12-12T04:22:00.000-08:00</published><updated>2005-12-12T04:38:14.973-08:00</updated><title type='text'>Latex and figures</title><content type='html'>Example from &lt;a href="http://yann.lecacheux.free.fr/LaTeX/Affichage.php?pageactuelle=5"&gt;Archimats&lt;/a&gt; 2 small figures side-by-side:&lt;br /&gt;&lt;blockquote&gt;\begin{figure}&lt;br /&gt;\centerline{&lt;br /&gt;\begin{tabular}{cc}&lt;br /&gt;\includegraphics[width=9cm]{Dessin1.png} &amp;amp; \includegraphics[width=9cm]{Dessin2.png}&lt;br /&gt;\end{tabular}}&lt;br /&gt;\caption{Deux dessins bitmap en PDF\LaTeX.}&lt;br /&gt;\label{example}&lt;br /&gt;\end{figure}&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;This is taken from &lt;a href="http://www.jalix.org/ressources/miscellaneous/tex/_faq-latex2/html/8.3.html"&gt;Jalix&lt;/a&gt;:&lt;br /&gt;Or with titles:&lt;br /&gt;&lt;blockquote&gt; \begin{figure}&lt;br /&gt; \begin{minipage}[b]{.46\linewidth}&lt;br /&gt;  \centering\epsfig{figure=fig1.ps,width=\linewidth}&lt;br /&gt;  \caption{premiere figure \label{fig1}}&lt;br /&gt; \end{minipage} \hfill&lt;br /&gt; \begin{minipage}[b]{.46\linewidth}&lt;br /&gt;  \centering\epsfig{figure=fig2.ps,width=\linewidth}&lt;br /&gt;  \caption{deuxieme figure \label{fig2}}&lt;br /&gt; \end{minipage}&lt;br /&gt;\end{figure} &lt;/blockquote&gt;&lt;br /&gt;Another example using minipage:&lt;br /&gt;&lt;blockquote&gt; \begin{minipage}[t]{.46\linewidth}&lt;br /&gt;   \center\epsfxsize= 5cm \epsfbox{fig1.eps}&lt;br /&gt;\end{minipage} % ne pas sauter de ligne&lt;br /&gt;\begin{minipage}[t]{.46\linewidth}&lt;br /&gt;   \center\epsfxsize= 5cm \epsfbox{fig2.eps}&lt;br /&gt;\end{minipage} &lt;/blockquote&gt;&lt;br /&gt;Or using package subfigure:&lt;br /&gt;&lt;blockquote&gt; \begin{figure}[ht]&lt;br /&gt;\begin{center}&lt;br /&gt;  \subfigure[I]{\epsfig{figure=st1.ps,width=6.58cm}}\quad&lt;br /&gt;  \subfigure[II]{\epsfig{figure=st2.ps,width=5.0cm}}\  \subfigure[III]{\epsfig{figure=st3.ps,width=5.0cm}}&lt;br /&gt;\end{center}&lt;br /&gt;\caption{Impermeable surface treatments}&lt;br /&gt;\label{fig:inf}&lt;br /&gt;\end{figure}&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;More information on obselete commands: &lt;a href="http://www.tug.org/texlive/devsrc/Master/texmf-doc/doc/french/l2tabu-french/"&gt;list des peches&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19796644-113439098352233103?l=adhianto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adhianto.blogspot.com/feeds/113439098352233103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19796644&amp;postID=113439098352233103' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19796644/posts/default/113439098352233103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19796644/posts/default/113439098352233103'/><link rel='alternate' type='text/html' href='http://adhianto.blogspot.com/2005/12/latex-and-figures.html' title='Latex and figures'/><author><name>Laksono Adhianto</name><uri>http://www.blogger.com/profile/15297127601614301975</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
