<?xml version="1.0" encoding="UTF-8" standalone="no"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:gd="http://schemas.google.com/g/2005" xmlns:georss="http://www.georss.org/georss" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-5172310849636966878</atom:id><lastBuildDate>Thu, 09 Apr 2026 07:43:21 +0000</lastBuildDate><category>technology</category><category>software</category><category>fun</category><category>linux</category><category>foss</category><category>web</category><category>leisure</category><category>coding</category><category>hacking</category><category>me</category><category>windows</category><category>blogging</category><category>security</category><category>programming</category><category>administration</category><category>career</category><category>journey</category><category>exam</category><category>mobile</category><category>phone</category><category>photography</category><category>travel</category><category>blogger</category><category>education</category><category>facebook</category><category>firefox</category><category>games</category><category>html</category><category>javascript</category><category>ltte</category><category>media</category><category>microsoft</category><category>music</category><category>privacy</category><category>army</category><category>atlassian</category><category>bugs</category><category>google</category><category>jira</category><category>social</category><category>troops</category><category>usb</category><category>video</category><category>war</category><category>Android</category><category>apps</category><category>asia</category><category>beach</category><category>chrome</category><category>database</category><category>destroy</category><category>development</category><category>fedora</category><category>gentoo</category><category>grub</category><category>hunk</category><category>icta</category><category>java</category><category>junk</category><category>motorcycle</category><category>movies</category><category>nokia</category><category>pacific</category><category>past</category><category>school</category><category>storage</category><category>symbian</category><category>theend</category><category>virtualbox</category><title>Shaakunthala's Portal</title><description>Anything can go here, in any language... except my native language Sinhala. Be cool... anybody is warmly welcomed! :)</description><link>http://portal.shaakunthala.com/</link><managingEditor>noreply@blogger.com (ශාකුන්තල | Shaakunthala)</managingEditor><generator>Blogger</generator><openSearch:totalResults>47</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><xhtml:meta content="noindex" name="robots" xmlns:xhtml="http://www.w3.org/1999/xhtml"/><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5172310849636966878.post-8025084589437375624</guid><pubDate>Wed, 13 Dec 2017 10:59:00 +0000</pubDate><atom:updated>2017-12-13T16:29:37.438+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">blogger</category><category domain="http://www.blogger.com/atom/ns#">blogging</category><category domain="http://www.blogger.com/atom/ns#">theend</category><title>The End | නිමාව</title><description>&lt;span style="float: left; font-size: 300%; line-height: 80%; width: 0.7em;"&gt;E&lt;/span&gt;leven years back, I started blogging at Blogger.com as a hobby, using our slow dial-up Internet connection. Facebook was so young at that time, and the latest emerging trend was called "Blogging". The new unfamiliar English word 'blogging' created so much desire to experiment with the new thing. My little write-ups didn't attract much, so I closed the blog in a couple of months. In 2008, I started over, but in my native language, Sinhalese. And in both cases, it wasn't &lt;a href="http://portal.shaakunthala.com/" target="_blank"&gt;THIS&lt;/a&gt; blog. :)&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZCXrtYkHPV2VyC8nS7ntj78K4A8sXtjkbOJnuFyt12g1_s1C3D-Z5wpe8ATKyBR2N9oXe7DNY1OXcAr0v4LzLlx9TvVVbepHUopFS0Dxr0ymm0hAwsXBxlsH3yo9FPvhYhoC6C_kk_g8/s1600/the-end-1544913_640.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="480" data-original-width="640" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZCXrtYkHPV2VyC8nS7ntj78K4A8sXtjkbOJnuFyt12g1_s1C3D-Z5wpe8ATKyBR2N9oXe7DNY1OXcAr0v4LzLlx9TvVVbepHUopFS0Dxr0ymm0hAwsXBxlsH3yo9FPvhYhoC6C_kk_g8/s320/the-end-1544913_640.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;span style="font-size: xx-small;"&gt;Image courtesy: pixabay.com&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
At that time, there was a significant lack of proper representation of Sinhalese language in the Internet. Unicode text standards had just emerged and there was a need of more and more content to signify the presence of our language. Sinhala Bloggers' Union, an alliance of enthusiast bloggers undertook part of promoting Sinhalese content with the fun and excitement of blogging, and soon became a top Internet trend in Sri Lanka. I restarted blogging with the support of SBU members in 2008, to keep up with this trend, share my self-learning experience and contribute to the good cause.&lt;br /&gt;
&lt;br /&gt;
Today, if I look back, Sinhala Bloggers' mission is well accomplished. Our language is everywhere on the Internet, including many social media sites, instant messaging platforms, etc. At that time I dedicated my &lt;a href="http://shaakunthala.blogspot.com/" target="_blank"&gt;blog&lt;/a&gt; 100% to Sinhalese content because the trend and cause felt important. Soon I started this blog to write in English. And another to try out the concept of 'blog marathons' and microblogging (now taken over by Twitter). It was all experiment.&lt;br /&gt;
&lt;br /&gt;
However, now, it has come to the point that I find no use of maintaining multiple websites. Keeping one site for 100% Sinhalese content is no longer needed because it's not the same today. So, I'm closing this blog today.&lt;br /&gt;
&lt;br /&gt;
My writeups will continue in my Sinhala blog, which will become a bilingual blog thereafter. It was all fun and exciting experiment. Even closing a website and taking visitors to the new home gradually could also be an experiment. Occasionally, some of the old posts in this blog will be re-posted in the new location.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;So, here's the home of all future write ups: &lt;a href="http://blog.shaakunthala.com/"&gt;http://blog.shaakunthala.com&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
I'm still just a hobbyist blogger with not that much time for blogging.&lt;br /&gt;
&lt;br /&gt;
Adios! :)</description><link>http://portal.shaakunthala.com/2017/12/the-end.html</link><author>noreply@blogger.com (ශාකුන්තල | Shaakunthala)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZCXrtYkHPV2VyC8nS7ntj78K4A8sXtjkbOJnuFyt12g1_s1C3D-Z5wpe8ATKyBR2N9oXe7DNY1OXcAr0v4LzLlx9TvVVbepHUopFS0Dxr0ymm0hAwsXBxlsH3yo9FPvhYhoC6C_kk_g8/s72-c/the-end-1544913_640.jpg" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5172310849636966878.post-5706325843928002076</guid><pubDate>Wed, 02 Sep 2015 06:42:00 +0000</pubDate><atom:updated>2015-09-08T13:19:11.441+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">administration</category><category domain="http://www.blogger.com/atom/ns#">atlassian</category><category domain="http://www.blogger.com/atom/ns#">career</category><category domain="http://www.blogger.com/atom/ns#">coding</category><category domain="http://www.blogger.com/atom/ns#">development</category><category domain="http://www.blogger.com/atom/ns#">fun</category><category domain="http://www.blogger.com/atom/ns#">hacking</category><category domain="http://www.blogger.com/atom/ns#">java</category><category domain="http://www.blogger.com/atom/ns#">jira</category><category domain="http://www.blogger.com/atom/ns#">programming</category><category domain="http://www.blogger.com/atom/ns#">software</category><category domain="http://www.blogger.com/atom/ns#">technology</category><title>[JIRA Administration] How Groovy scripting makes your life easy</title><description>In my &lt;a href="http://portal.shaakunthala.com/2015/08/save-your-day-with-jira-aui-javascript.html"&gt;last blog post&lt;/a&gt; I insisted that &lt;a href="https://www.google.com/search?client=ubuntu&amp;amp;channel=fs&amp;amp;q=why+learn+to+code%3F&amp;amp;ie=utf-8&amp;amp;oe=utf-8" target="_blank"&gt;everyone should learn how to code&lt;/a&gt;. If you are a JIRA administrator who would like to do some advanced sort of stuff, keep reading, you'll find out how a little bit of coding can help marvellously. I have a limited &lt;abbr title="Object Oriented Programming"&gt;OOP&lt;/abbr&gt; background, in fact I've never been a Java programmer, so I find having to deal with this sort of things very exciting.&lt;br /&gt;
&lt;br /&gt;
I wanted to do some cleanup of a huge JIRA instance that has been bit messed up with a LOT of schemes (workflow, issue type, field configuration, etc.). Something I learned from my past experience is, per-project schemes in JIRA is a very bad idea. It affects the manageability of the JIRA instance when it grows. When it comes to duplicate Field Configurations in JIRA, it is &lt;u&gt;extremely difficult to find them by hand&lt;/u&gt;.&lt;br /&gt;
&lt;br /&gt;
Normally I would query the database to identify the duplicate schemes in such cases, but when I wanted to see how many duplicate JIRA field configurations exists, Oracle SQL met a likely dead end.&lt;br /&gt;
&lt;br /&gt;
Here's the first SQL query I used:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:sql" name="code"&gt;SELECT
  FL.NAME FIELDCONFIG,
  LISTAGG(FLI.FIELDIDENTIFIER || ISHIDDEN || ISREQUIRED || RENDERERTYPE, ';') WITHIN GROUP (ORDER BY FLI.FIELDIDENTIFIER || ISHIDDEN || ISREQUIRED || RENDERERTYPE)
FROM
  FIELDLAYOUT FL,
  FIELDLAYOUTITEM FLI
WHERE
  FL.ID = FLI.FIELDLAYOUT
GROUP BY FL.NAME;
&lt;/pre&gt;
&lt;br /&gt;
&lt;code&gt;
ORA-01489: result of string concatenation is too long&lt;br /&gt;
01489. 00000 -  "result of string concatenation is too long"&lt;br /&gt;
*Cause:    String concatenation result is more than the maximum size.&lt;br /&gt;
*Action:   Make sure that the result is less than the maximum size.
&lt;/code&gt;
&lt;br /&gt;
&lt;br /&gt;
My plan was to list-aggregate each field's configuration against field configuration's name, and then use SQL "having" clause in a parent query to find out duplicates. This didn't work due to the limitations of Oracle's "listagg" function. Of course a custom "listagg" written in PL/SQL could have helped, but I didn't want to create any additional objects in the database. Also, I wanted to do something that I have never done before. Thus it came to Groovy.&lt;br /&gt;
&lt;br /&gt;
First you need the &lt;a href="https://marketplace.atlassian.com/plugins/com.onresolve.jira.groovy.groovyrunner" target="_blank"&gt;JIRA Script Runner add-on&lt;/a&gt; (in my case it was already there). This add-on provides a Script Console in which you can code Groovy. It doesn't come with a handy IDE, but just a basic code editor. Serves the purpose.&lt;br /&gt;
&lt;br /&gt;
If you execute the following one line piece of code there, you'll see how simple it is. It's based on Java, but lot more simpler to use. If you are scared of OOP like I used to be, here's your chance to practice by swimming in shallow freshwater.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:java; html-script:true" name="code"&gt;"&amp;lt;h1&amp;gt;Hello World!&amp;lt;/h1&amp;gt;";&lt;/pre&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6x-jJzZ-hhM9Qcy8KTGThYyACLMqSh__RZ7lZQVMilvHOqzW1M4-Xo_vAVOVuuOx4tjRa54KAde2CDNuB0wHq-N7O6ky86dQOasycb4nhWZb2_lNzZI0FCrRrXykkNF-2tkcAvBe1bNE/s1600/helloworld.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6x-jJzZ-hhM9Qcy8KTGThYyACLMqSh__RZ7lZQVMilvHOqzW1M4-Xo_vAVOVuuOx4tjRa54KAde2CDNuB0wHq-N7O6ky86dQOasycb4nhWZb2_lNzZI0FCrRrXykkNF-2tkcAvBe1bNE/s1600/helloworld.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;It will do neat HTML!&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
Here's the piece of code I wrote in Groovy. I'll explain how it serves the purpose as well.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:java; html-script:false" name="code"&gt;import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.fields.layout.field.FieldLayoutManager;

log.setLevel(org.apache.log4j.Level.DEBUG);

FieldLayoutManager flm = ComponentAccessor.getComponent (FieldLayoutManager.class);

x = flm.getEditableFieldLayouts();
html = "&amp;lt; table&amp;gt;&amp;lt; tr&amp;gt;&amp;lt; th&amp;gt;Field Configuration&amp;lt; /th&amp;gt;&amp;lt; th&amp;gt;HashCode&amp;lt; /th&amp;gt;&amp;lt; /tr&amp;gt;";
x.each {
 l -&amp;gt; k = l.getName();
  v = l.getFieldLayoutItems().hashCode();
  html = html + "&amp;lt; tr&amp;gt;&amp;lt; td&amp;gt;" + k + "&amp;lt; /td&amp;gt;&amp;lt; td&amp;gt;" + v + "&amp;lt; /td&amp;gt;&amp;lt; /tr&amp;gt;";
}
html = html + "&amp;lt; /table&amp;gt;";&lt;/pre&gt;
&lt;br /&gt;
&lt;b&gt;Edit:&lt;/b&gt; I've noticed that SyntaxHighlighter intermittently messing up with the HTML parts of the source code above. As a quick workaround I broke the HTML tags to avoid breaking the whole thing.&lt;br /&gt;
&lt;br /&gt;
Alright, you got the fish, now here's how to fish. If you have a limited JIRA API knowledge like I do, it's better to start reading with the first two import lines. All you have to do is a Google search, entering the package name followed by "javadoc".&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpJE4td954xAevpQgTU3DnhmpEz6X2rX6McKglHJMmyRQlLVuTzu2fynkBdxvdzKQGcvlwIJX9fC_luHmPYQtrH8H3E_F9tAv6rM_B3lx0a-swdE0AEQPtlIzrfBz8hU55tQJb69cPdsE/s1600/javadoc.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpJE4td954xAevpQgTU3DnhmpEz6X2rX6McKglHJMmyRQlLVuTzu2fynkBdxvdzKQGcvlwIJX9fC_luHmPYQtrH8H3E_F9tAv6rM_B3lx0a-swdE0AEQPtlIzrfBz8hU55tQJb69cPdsE/s1600/javadoc.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Image courtesy: Google Web Search&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
Everything seems neatly documented, right? How did I find that &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;FieldLayoutManager&lt;/span&gt; package will give me the exact information I need? For that I had to do some keyword searches on the web, go up and down in the API documentation and read some of the package descriptions carefully to choose the correct one.&lt;br /&gt;
&lt;br /&gt;
I (had already) learned that &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;FieldConfiguration&lt;/span&gt; has a different meaning internally, and Field Configurations are internally called FieldLayouts. A FieldLayout has FieldLayoutItems, each item describes characteristics of a single JIRA/ custom field within its parent Field Configuration. The information I need here is a list of Field Configurations against aggregated list of each item's field characteristics for comparison. Initially I read through several interfaces under &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;com.atlassian.jira.issue.fields.layout.field&lt;/span&gt; package, but with a little common sense I soon realized that &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;FieldLayoutManager&lt;/span&gt; interface is going to give me the information I need (it manages the field layouts - so it might give me a list).&lt;br /&gt;
&lt;br /&gt;
The next important line shows how you create a &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;FieldLayoutManager&lt;/span&gt; object. See that's not the 'conventional Java way' which we learned at school but using the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ComponentAccessor&lt;/span&gt;. This is something I learned from observing other developers' work, but the &lt;a href="https://developer.atlassian.com/static/javadoc/jira/reference/com/atlassian/jira/component/ComponentAccessor.html" target="_blank"&gt;reasoning is out there in the JavaDoc&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Next, we use the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;getEditableFieldLayouts()&lt;/span&gt; method to get the list of all Field Configurations in the JIRA instance. As you can see in this line, you don't have to declare an array and then call the method. That's simplicity of Groovy. Now, the question is, what did it return? What's the value of &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;x&lt;/span&gt;? According to the method specification of &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;getEditableFieldLayout()&lt;/span&gt;, it's a &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;List&lt;/span&gt; of &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;EditableFieldLayout&lt;/span&gt; objects. In human readable terms, it's the list of Field Configurations in JIRA. Now we know the list of Field Configurations.&lt;br /&gt;
&lt;br /&gt;
However, they don't come in pretty neat looking strings. They are still Java objects. Each Field Configuration returned is a Java object. We don't know what's inside yet. To see what's inside, I'd take a look at the JavaDoc of the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;EditableFieldLayout&lt;/span&gt; class. It has two methods that I'm interested in, one is &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;getName()&lt;/span&gt;, which returns the human readable name of the Field Configuration. The next is, &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;getFieldLayoutItems()&lt;/span&gt;, which returns a &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;List&lt;/span&gt; of &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;FieldLayoutItem&lt;/span&gt; objects. That is the list of fields with characteristics of each.&lt;br /&gt;
&lt;br /&gt;
But now, this list inside list thing is getting deeper by one level, and do we really need to dig that deep? &lt;b&gt;Here's the turning point.&lt;/b&gt; My original requirement was to find the duplicates. It doesn't mean that I should follow the same thing I attempted with Oracle. What I actually need is &lt;i&gt;something&lt;/i&gt; against each Field Configuration's name that &lt;i&gt;uniquely&lt;/i&gt; describes the entire Field Configuration.&lt;br /&gt;
&lt;br /&gt;
This is where &lt;a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#hashCode%28%29" target="_blank"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;hashCode()&lt;/span&gt;&lt;/a&gt; method in Java comes to play. Every Java &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Object&lt;/span&gt; inherently gets this method. It generates a &lt;i&gt;unique&lt;/i&gt; 32-bit hash of the object that is is invoked from. Whenever the object changes, the hash also changes. In this particular case, what we need is to hash the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;List&lt;/span&gt; of &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;FieldLayoutItem&lt;/span&gt; objects of each Field Configuration.&lt;br /&gt;
&lt;br /&gt;
With a little bit of HTML formatting to append the Field Configuration - Hash pairs into JIRA Script Console's page, we get a nice table which we can copy-paste into a spreadsheet program and then easily find the duplicate items. Two Field Configurations have the same hash means both Field Configurations are identical.&lt;br /&gt;
&lt;br /&gt;
Example output:
&lt;br /&gt;
&lt;table border="1px" cellpadding="5px" cellspacing="0px"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;th&gt;Field Configuration&lt;/th&gt;&lt;th&gt;HashCode&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Default Field Configuration&lt;/td&gt;&lt;td&gt;179968652&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Copy of Copy of Default Field Configuration&lt;/td&gt;&lt;td&gt;179968653&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Copy of Default Field Configuration&lt;/td&gt;&lt;td&gt;179968653&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Copy of FC1&lt;/td&gt;&lt;td&gt;1290893968&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;FC1&lt;/td&gt;&lt;td&gt;391319565&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
Just copy-paste the provided source code into your JIRA instance's Script Runner Console and see the results. Create a Field Configuration and execute again. Make a field mandatory in the new Field Configuration and then execute the script again to see that hash also changes. Revert back and the hash also changes to the previous value.&lt;br /&gt;
&lt;br /&gt;
The piece of code I wrote here is not a big deal. I just took some effort
 to describe it to those who have a little coding knowledge. But see the beauty of results!&lt;br /&gt;
&lt;br /&gt;
Before I wind up, here's a couple of things you'll need to know as a newbie Groovy programmer:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Executing &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;.getClass().getName()&lt;/span&gt; method on any Java object returns the name of its constructor class. You can then google the classname followed by 'javadoc' to find all the information you need to know about that class, including available methods. This can be helpful when you work with any API you are not familiar with. With &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;log.debug()&lt;/span&gt;, you can append this to the application log.&lt;/li&gt;
&lt;li&gt;I recently read in a funny webcomic that today's computer programming is actually 'Googling the StackOverflow'. Most of the things you need are already out there. What you need is to get the parts together and 'assemble' in the proper manner. Most of the time all you need to have from your own is a clear idea of what you are going to achieve, and the way you are going to achieve it.&lt;/li&gt;
&lt;li&gt;Although I started explaining the packages imported in the first two lines, the correct way to start writing your own script would be to find out the Java classes that represent the key objects that involve in your mission.&lt;/li&gt;
&lt;/ul&gt;
Coding improves your health, isn't it? Think how. Thanks for reading!</description><link>http://portal.shaakunthala.com/2015/09/jira-administration-how-groovy.html</link><author>noreply@blogger.com (ශාකුන්තල | Shaakunthala)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6x-jJzZ-hhM9Qcy8KTGThYyACLMqSh__RZ7lZQVMilvHOqzW1M4-Xo_vAVOVuuOx4tjRa54KAde2CDNuB0wHq-N7O6ky86dQOasycb4nhWZb2_lNzZI0FCrRrXykkNF-2tkcAvBe1bNE/s72-c/helloworld.png" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5172310849636966878.post-3560826747504715543</guid><pubDate>Thu, 27 Aug 2015 18:48:00 +0000</pubDate><atom:updated>2015-08-28T09:29:30.533+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">administration</category><category domain="http://www.blogger.com/atom/ns#">apps</category><category domain="http://www.blogger.com/atom/ns#">atlassian</category><category domain="http://www.blogger.com/atom/ns#">career</category><category domain="http://www.blogger.com/atom/ns#">coding</category><category domain="http://www.blogger.com/atom/ns#">firefox</category><category domain="http://www.blogger.com/atom/ns#">fun</category><category domain="http://www.blogger.com/atom/ns#">html</category><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">jira</category><category domain="http://www.blogger.com/atom/ns#">programming</category><category domain="http://www.blogger.com/atom/ns#">software</category><category domain="http://www.blogger.com/atom/ns#">technology</category><category domain="http://www.blogger.com/atom/ns#">web</category><title>Save your day with JIRA AUI JavaScript Hacks</title><description>I've been a &lt;a href="https://www.atlassian.com/software/jira" target="_blank"&gt;JIRA&lt;/a&gt; administrator &lt;a href="https://linkedin.com/in/shaakunthala" target="_blank"&gt;for more than four years&lt;/a&gt; with the hope that time would permit me to blog anything about JIRA. Finally here it has come to that - my first blog post on JIRA administration!&lt;br /&gt;
&lt;br /&gt;
So what I'm going to talk about today is how AUI JavaScript hacks can save a JIRA administrator's time and make his life easy.&lt;br /&gt;
&lt;br /&gt;
AUI is an abbreviation for &lt;a href="https://docs.atlassian.com/aui/latest/" target="_blank"&gt;Atlassian User Interface Library&lt;/a&gt;. AUI JavaScript is actually a modified version of the famous JavaScript framework jQuery. Thus, the most of &lt;a href="https://api.jquery.com/" target="_blank"&gt;jQuery's official documentation&lt;/a&gt; works with AUI without a hassle.&lt;br /&gt;
&lt;br /&gt;
Now, let me explain a case where AUI hacks can save you from cumbersome work.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Changing the workflow scheme of a JIRA project&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
It really frustrates me of when it comes to the status mapping part. I hate repetitive work. Especially when your JIRA project has a lot of issue types with a lot of Issues this step is a nightmare.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSVAkmQ86hwqppcv0TrEmqgR1G6StaKLzlvYgN-wfP8rsubfqozYtJID6xLfe_HF5VjiLlCm1X9tLbhOl0AN2ROX4_TMsXzdHwBBDmEgxq0sR0KbEYUjF26v4WJoDTatofYkI_hs3YpT8/s1600/1.wfc.png" style="margin-left: auto; margin-right: auto;" /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;And this list repeats with all available issue types...&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
For simplicity, let's just assume all issue types follow the same workflow in the workflow scheme. Imagine your JIRA project has ten issue types and current workflow has ten statuses that do not exist in the new workflow. Then JIRA will give you 10 × 10 = 100 drop down lists to pick the new status mapping for each type-status. And it's a highly error prone when you do this by hand.&lt;br /&gt;
&lt;br /&gt;
So how do we get through it in a 'hacker' way? Learning how to code is a worthy investment. :)&lt;br /&gt;
&lt;br /&gt;
I’m using the Mozilla Firefox web browser with Firebug add-on here because it’s my familiar environment. But you can use vanilla Firefox or Chrome browser with pre-built development tools. First, when you are at the status mapping step, inspect a drop-down list using Firebug.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGQKRccaZwhDXn0n9pLSLO0kvW0TupSPhU8Ud_O6uTxsj7dFujEISo4auCOnw24Cb8b0iyuj0AGQ-QQOqqvoIyDeCeEIBnBvdAZCfI-DLeOQ5fV_HFoRoMC06Nwcu7FMkGMkV7BLBF7dM/s1600/2.fb1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGQKRccaZwhDXn0n9pLSLO0kvW0TupSPhU8Ud_O6uTxsj7dFujEISo4auCOnw24Cb8b0iyuj0AGQ-QQOqqvoIyDeCeEIBnBvdAZCfI-DLeOQ5fV_HFoRoMC06Nwcu7FMkGMkV7BLBF7dM/s1600/2.fb1.png" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
And then,&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj30PGdNUl9XZL6Dcp6jOSe2XyeyoOkqHy0cj-8vOmwccq72xN5LII_NfmxSYDshQllb0gJxmnTt1fDL_ve1jJunuIK5ye74oWiOPD-sY6qXGBwqF7ZlMRpSSl5xChBoL-fT8-FXmNsm3o/s1600/2.statusvalues.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj30PGdNUl9XZL6Dcp6jOSe2XyeyoOkqHy0cj-8vOmwccq72xN5LII_NfmxSYDshQllb0gJxmnTt1fDL_ve1jJunuIK5ye74oWiOPD-sY6qXGBwqF7ZlMRpSSl5xChBoL-fT8-FXmNsm3o/s1600/2.statusvalues.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
When you expand the HTML code for the select list, the HTML elements for the available options become visible. The value for each option is actually the ISSUESTATUS.ID column in JIRA database.&lt;br /&gt;
&lt;br /&gt;
Looking at the structure of the page, jQuery's official documentation, AUI documentation you can quickly come up with a JavaScript code to change each drop down list's selected option to "In Progress" like this:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:js" name="code"&gt;AJS.$('select option[value="3"]').attr('selected','selected');&lt;/pre&gt;
&lt;br /&gt;
The code says, "&lt;i&gt;Make every drop down option who's value is 3 (In Progress) the selected option of its parent select element&lt;/i&gt;". Execute it in the Firebug script console and you can see all the drop down lists change their selection at once.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now that was simple. Imagine you have discussed with the project stakeholders about how existing issue statuses should be mapped and agreed upon a mapping. For this example, let's take only two statuses.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
Investigating --&amp;gt; In Progress&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
Verified --&amp;gt; Closed&lt;/div&gt;
&lt;br /&gt;
Now, you can't use the above one line code because you want to 'filter off' old statuses other than "Investigating" before you change the values to "In Progress". Same applies to the "Verified" old status.&lt;br /&gt;
&lt;br /&gt;
Don't panic. Let's just dig little deeper. If you carefully look at the "name" element of the select element we observed above, it says "mapping_1_10105". We have no idea what these numbers are for now, but with a little more inspection you will see in each drop down list where old status is "Investigating" the select element's name ends with 10105. (yes, it's very likely that status ID of "Investigating" is 10105)&lt;br /&gt;
&lt;br /&gt;
Now, with a little more jQuery knowledge (read more about jQuery selectors), we can modify the above code as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:js" name="code"&gt;AJS.$('select[name$="_10105"] option[value="3"]').attr('selected','selected');&lt;/pre&gt;
&lt;br /&gt;
And for the "Verified" old status we can come up with something like this:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:js" name="code"&gt;AJS.$('select[name$="_10101"] option[value="6"]').attr('selected','selected');&lt;/pre&gt;
&lt;br /&gt;
Just few lines of code and you're through a one cumbersome boring step with a big WOW! :)&lt;br /&gt;
&lt;br /&gt;
Now, here's a question that some of my audience may ask:&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;What is the benefit of this whole process if you have spend more time on Firebugging and reading jQuery documentation than you could have just updated all entries by hand within a couple of minutes?&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Because coding is so exciting and &lt;a href="https://www.google.com/search?client=ubuntu&amp;amp;channel=fs&amp;amp;q=why+learn+to+code%3F&amp;amp;ie=utf-8&amp;amp;oe=utf-8" target="_blank"&gt;everyone should learn how to code&lt;/a&gt;. :)&lt;/li&gt;
&lt;li&gt;Because this approach is less error prone. If your client or stakeholders are paranoid about data integrity, a wrong selection on a production environment can end up in a nightmare for real.&lt;/li&gt;
&lt;li&gt;If you are doing data migration projects that have to do multiple rounds of testing and UAT, then this approach is a one time investment. You can save your code somewhere and reuse in each testing iteration. This ultimately saves a lot of time.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
This blog post would have become unnecessarily long if I were to explain another case. So I won't be discussing more examples here. But AUI JavaScript is a cool thing to play with. Prepare your own evaluation instance of JIRA and you will see many ugly setups can be handled with simple pieces of JavaScript code. So play around, learn and share!&lt;br /&gt;
&lt;br /&gt;
And to finish,... thanks for reading!&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;span style="font-size: x-small;"&gt;(The screenshots and examples used in this blog post do not reflect any of the JIRA setups I worked with at my previous or present places of work. All screenshots and examples are my own work on an evaluation instance of Atlassian JIRA)&lt;/span&gt;</description><link>http://portal.shaakunthala.com/2015/08/save-your-day-with-jira-aui-javascript.html</link><author>noreply@blogger.com (ශාකුන්තල | Shaakunthala)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSVAkmQ86hwqppcv0TrEmqgR1G6StaKLzlvYgN-wfP8rsubfqozYtJID6xLfe_HF5VjiLlCm1X9tLbhOl0AN2ROX4_TMsXzdHwBBDmEgxq0sR0KbEYUjF26v4WJoDTatofYkI_hs3YpT8/s72-c/1.wfc.png" width="72"/><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5172310849636966878.post-7354099080543972764</guid><pubDate>Sat, 10 Aug 2013 04:59:00 +0000</pubDate><atom:updated>2013-08-10T11:11:14.130+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Android</category><category domain="http://www.blogger.com/atom/ns#">blogger</category><category domain="http://www.blogger.com/atom/ns#">blogging</category><category domain="http://www.blogger.com/atom/ns#">mobile</category><category domain="http://www.blogger.com/atom/ns#">technology</category><title>Blogging from Android</title><description>&lt;p dir=ltr&gt;This is going to be quite a short blog post. I bought an Android device. Well this is no big thing because it's been almost five years since the first release of Android. But I'm new to it. Still grabbing bits and pieces on how to use it.&lt;/p&gt;
&lt;p dir=ltr&gt;I've been using several mobile devices time to time over the past few years. My first phone was a NEC-e1108 which was not good at all. Then used a Sony Ericsson K770i which was really a good phone. That phone made me a photogrpher. In 2011 I got a Nokia 5230 as a gift from a friend. Good thing with it was it had GPS. But when when my needs become more I wanted something that capable of much more things. That's why I bought my Galaxy Note II. Few years back it was the dream of mine to use a Linux capable phone. And now it's here.&lt;/p&gt;
&lt;p dir=ltr&gt;As I said I'm still trying to grab bits and pieces on how to use Android. I've been able to experience several cool stuff. I'm writing this post using the S-Pen and using the Google's Blogger app. Handwriting recognition is pretty awesome.&lt;/p&gt;
&lt;p dir=ltr&gt;A while ago I managed to setup Tor to work with Google Chrome browser. Most probably within next few months I'm planning to learn Android application development as well. No plans to root the device until The warranty expires, however I would love to hack this device.&lt;/p&gt;
&lt;p dir=ltr&gt;And much more to try out such as USB OTG (On The Go). I'm going to try out mounting my one terabyte portable hard disk into the phone. And I hope it's going to open the door for much more cool and interesting stuff. :)&lt;/p&gt;
&lt;p dir=ltr&gt;Cheers! &lt;br&gt;
(This is just a blog post I wrote to try out Blogger app on Android)&lt;/p&gt;
</description><link>http://portal.shaakunthala.com/2013/08/blogging-from-android.html</link><author>noreply@blogger.com (ශාකුන්තල | Shaakunthala)</author><thr:total>9</thr:total><georss:featurename>Kandewatta Rd, Galle</georss:featurename><georss:point>6.037846 80.210594</georss:point></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5172310849636966878.post-4722602468154436583</guid><pubDate>Sun, 09 Jun 2013 20:18:00 +0000</pubDate><atom:updated>2013-06-10T01:48:07.577+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">facebook</category><category domain="http://www.blogger.com/atom/ns#">hacking</category><category domain="http://www.blogger.com/atom/ns#">privacy</category><category domain="http://www.blogger.com/atom/ns#">security</category><category domain="http://www.blogger.com/atom/ns#">social</category><category domain="http://www.blogger.com/atom/ns#">technology</category><category domain="http://www.blogger.com/atom/ns#">web</category><title>Viral Apps on Facebook | Would you let them to use you?</title><description>Recently I saw some videos spreading on Facebook. 'Spreading', in the sense that people watch and share. What so special with these videos was, their thumbnails had that "Youtube feel", but seemed bit different. Also, most of these had eye-catching titles (in Sinhala), and eye-catching thumbnails (For example, a girl changing her dress... ;-) ).&lt;br /&gt;
&lt;br /&gt;
I actually clicked on one of these to play the video. Then it took me to a Facebook application page where it prompted me to grant permissions to a Facebook app called "Gindara videos". Why would I ever let a Facebook app to access my personal information when I have dozens of better ways to anonymously watch video on the Internet? As a matter of fact, I stopped there. Access denied, Gindara videos go fly a kite, please.&lt;br /&gt;
&lt;br /&gt;
Few days back I saw a girl has shared another video of the same type. She is a fun person I know, but it was bit of odd thing that she would share such a thing publicly. So I left a chat message to her jokingly, "&lt;i&gt;what are these things you post on fb? :P&lt;/i&gt;", and she replied, "&lt;i&gt;seriously i didn't know. :'(&lt;/i&gt;".&lt;br /&gt;
&lt;br /&gt;
Then I wanted to have a close look at the phenomenon. "Gindara videos" is a malware hosted on a Sri Lankan website called tharunaya.co.uk. This is not the only such malware seen on the Internet. Even years ago, there have been many of this type. But I feel this particular malware remained on Facebook for sometime longer than the previous ones, totally because people's ignorance. Their targeted victims seemed to be Sri Lankans and that may be the reason for such long lasting. If it ever had a 'global presence', not very long time it takes to vanish from Facebook.&lt;br /&gt;
&lt;br /&gt;
Whenever you spot that kind of video or any malicious post on Facebook, take a moment to &lt;b&gt;report them for spam&lt;/b&gt;. It's more of a civic duty. After reading the story below this picture, you'll better understand why you should report them.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipBat3uaWc6APnTd7a6Z_VsrGTNoC_w0PgiRmqZD7sBW_SlbwkXimUPzjbobcg7zaKuOARriXvC5QX3v_3idMFepZX9wFv1-7enxXUMWr07A_40kJFmVIJxBk3dQcOw6MMmULNaDb68dQ/s1600/gindara-2.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipBat3uaWc6APnTd7a6Z_VsrGTNoC_w0PgiRmqZD7sBW_SlbwkXimUPzjbobcg7zaKuOARriXvC5QX3v_3idMFepZX9wFv1-7enxXUMWr07A_40kJFmVIJxBk3dQcOw6MMmULNaDb68dQ/s1600/gindara-2.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Just report it for Spam&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
I did a piece of Holmes stuff and found out that these guys are using tool called "&lt;b&gt;Facebook Viral Videos App With Auto Share&lt;/b&gt;" from a vendor called &lt;b&gt;Appstico&lt;/b&gt;. As the name says, it's a 'viral' app which can automatically share videos on Facebook. Now, look at my friend's reply above again... &lt;u&gt;she didn't know that she has shared a video on Facebook&lt;/u&gt;.&lt;br /&gt;
&lt;br /&gt;
I don't want to promote Appstico's blackmarket stuff here, but just putting a &lt;i&gt;nofollow&lt;/i&gt; hyperlink for you to go through it as &lt;b&gt;understand what these guys do with &lt;span style="color: red;"&gt;YOUR&lt;/span&gt; personal information that &lt;span style="color: red;"&gt;YOU&lt;/span&gt; allow them to see&lt;/b&gt;.&lt;br /&gt;
&lt;a href="http://appstico.com/facebook-viral-videos-app-with-auto-share/" rel="nofollow" target="_blank"&gt;http://appstico.com/facebook-viral-videos-app-with-auto-share/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
This is what exactly tharunaya.co.uk/Gindara all about. In short, here's how it works.&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;There's a bunch of bad guys who want few more visitors coming into their website.&lt;/li&gt;
&lt;li&gt;They deploy a virus. A &lt;b&gt;social virus&lt;/b&gt; which uses &lt;b&gt;human mind&lt;/b&gt; as its career and people's &lt;b&gt;curiosity&lt;/b&gt; as the exploit.&lt;/li&gt;
&lt;li&gt;Misled people just want to watch something that is rarely or never seen for real. No time to worry about privacy!&lt;/li&gt;
&lt;li&gt;The video hyperlink on Facebook actually directs the victim to the bad guys' website.&lt;/li&gt;
&lt;li&gt;It doesn't stop there. Without victim's knowledge, it posts a video hyperlink to the victim's Facebook timeline, which can be seen by other people. &lt;/li&gt;
&lt;li&gt;They get more traffic, more traffic is more profit, and target accomplished. And the poor victim even doesn't know that someone has used him/her until a friend pokes.&lt;/li&gt;
&lt;/ol&gt;
Let's have a look at the 2nd step above. These 'Tharunaya' guys do business and their sole purpose is to increase their business. Who has time to learn &lt;i&gt;how to make a virus&lt;/i&gt; from A to Z? So they outsource it to another party. And that another party is Appstico. &lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhO1tcr6cdvd5iRBZ5E3CaTpIWT-GI3N_p72U-DPeYTZHziTy90c7kn5ZWOiDk1Zif_nccssbD__xqzx5Ovk1H-eyZR-KXy3BCRb6HXasSsv2aBbSCh0yaiJHRkRdDICGep3GjRDzYcABk/s1600/Screenshot+from+2013-06-10+01:19:40.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="252" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhO1tcr6cdvd5iRBZ5E3CaTpIWT-GI3N_p72U-DPeYTZHziTy90c7kn5ZWOiDk1Zif_nccssbD__xqzx5Ovk1H-eyZR-KXy3BCRb6HXasSsv2aBbSCh0yaiJHRkRdDICGep3GjRDzYcABk/s400/Screenshot+from+2013-06-10+01:19:40.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;(click to enlarge)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Appstico also does is business, and knows that there are many bunches of bad guys who want more business coming in. So Appstico makes a package for everyone, and sell it to the bad guys just for one hundred US dollars. Bad guys just rename it to "Gindara videos" and make use of it. How clever is that?&lt;br /&gt;
&lt;br /&gt;
Would you still let them to &lt;b&gt;use you&lt;/b&gt;? Myself, I wouldn't. The more you report these malicious activities for spam, less they get spread. Eventually the viral app will be taken out by Facebook. And as I said above, it's a civic duty to report malicious things, as it helps to keep Facebook clean and safe place for people.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfYl8Tgdg_7OERfJxdGoVFjb0YrOJ7OxJyVVYaQRTHumbijKhkihE9iR421j2UtlURalvwWMO-1JQhIwTSoZp51ozbqK1gBX1Ccp9OKqW6cbrgjz-yy6ftB82cPhWp1hiFSBROdvsrpF8/s1600/gindara_.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfYl8Tgdg_7OERfJxdGoVFjb0YrOJ7OxJyVVYaQRTHumbijKhkihE9iR421j2UtlURalvwWMO-1JQhIwTSoZp51ozbqK1gBX1Ccp9OKqW6cbrgjz-yy6ftB82cPhWp1hiFSBROdvsrpF8/s1600/gindara_.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;It doen't cost much time - usually lesser than to watch a video :-)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
Theoretically this entire blog post is all about a separate area in Internet security called "&lt;i&gt;Social Engineering&lt;/i&gt;". To end this blog post, I'll leave that for your further reading:&lt;br /&gt;
&lt;a href="http://en.wikipedia.org/wiki/Social_engineering_%28security%29" rel="dofollow"&gt;http://en.wikipedia.org/wiki/Social_engineering_%28security%29&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Thanks for reading!&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;* If anyone is interested, I have proof of what I speak.&lt;/span&gt;</description><link>http://portal.shaakunthala.com/2013/06/viral-apps-on-facebook-would-you-let.html</link><author>noreply@blogger.com (ශාකුන්තල | Shaakunthala)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipBat3uaWc6APnTd7a6Z_VsrGTNoC_w0PgiRmqZD7sBW_SlbwkXimUPzjbobcg7zaKuOARriXvC5QX3v_3idMFepZX9wFv1-7enxXUMWr07A_40kJFmVIJxBk3dQcOw6MMmULNaDb68dQ/s72-c/gindara-2.png" width="72"/><thr:total>8</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5172310849636966878.post-6329721551430614239</guid><pubDate>Mon, 13 Feb 2012 04:11:00 +0000</pubDate><atom:updated>2012-02-21T22:58:36.394+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">fun</category><category domain="http://www.blogger.com/atom/ns#">hunk</category><category domain="http://www.blogger.com/atom/ns#">journey</category><category domain="http://www.blogger.com/atom/ns#">leisure</category><category domain="http://www.blogger.com/atom/ns#">me</category><category domain="http://www.blogger.com/atom/ns#">mobile</category><category domain="http://www.blogger.com/atom/ns#">motorcycle</category><category domain="http://www.blogger.com/atom/ns#">nokia</category><category domain="http://www.blogger.com/atom/ns#">phone</category><category domain="http://www.blogger.com/atom/ns#">software</category><category domain="http://www.blogger.com/atom/ns#">symbian</category><category domain="http://www.blogger.com/atom/ns#">technology</category><category domain="http://www.blogger.com/atom/ns#">travel</category><category domain="http://www.blogger.com/atom/ns#">video</category><title>How to Make a HelmetCam Using Your Nokia Smartphone</title><description>I have been a silent blogger for more than one year. It's actually one year and one month since I have published my &lt;a href="http://portal.shaakunthala.com/2011/01/k770i-camera-problem-solved.html" target="_blank"&gt;last post&lt;/a&gt; on 10 January 2011. Things have changed a lot around me and now I'm not even using the Sony Ericsson phone mentioned in my last post!&lt;br /&gt;
&lt;br /&gt;
Two things happened in the last year... on February I got a new phone as a gift from a friend, and on October I got a bike. That's it! Made in India, and called &lt;a href="http://www.heromotocorp.com/hunk" target="_blank"&gt;Hero Honda Hunk&lt;/a&gt;. It is said that this bike can topped to 112 km/h. For me that's not enough top speed, but this is one of the most stable bikes made in India. Most others waggle and vibrate, but Hunk is very stable at speed.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTJbivzLZ_oI7IsA7iRjRy-wPuBJ42ELj7Ra6Q3RYgjwOIXDUZY9u9_ZV5xjoKa-S19gj1MTiSe8FHR88tcDr32JfXziKAbCwDu3TmqnvHEBMHTXy48vBqc5TBkvCY_mKlMObhTLEPMs8/s1600/DSC00028.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTJbivzLZ_oI7IsA7iRjRy-wPuBJ42ELj7Ra6Q3RYgjwOIXDUZY9u9_ZV5xjoKa-S19gj1MTiSe8FHR88tcDr32JfXziKAbCwDu3TmqnvHEBMHTXy48vBqc5TBkvCY_mKlMObhTLEPMs8/s400/DSC00028.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Due to the extreme excitement of the bike, I'd just forget to mention the phone! It's a &lt;a href="http://www.gsmarena.com/nokia_5230-2909.php" target="_blank"&gt;Nokia 5230&lt;/a&gt; and not that handy, but enough for my day-to-day activities. Same as most Nokia cameraphones, this one's camera is also not suitable for professional photography. But, its video recording is pretty good.&lt;br /&gt;
&lt;br /&gt;
I really love to ride this Hunk... (despite of its gay name :-) ) it brings lots of excitement every time when it's over 100. Its stability at higher speeds, and stability when cornering, wheelies, stoppies... everything eventually tempted me to have a video collection of it. This is how I become interested in making a HelmetCam. I don't have much of equipments for this, and I've heard somewhere that a professional HelmetCam kit costs over US $200. So why not use my own cameraphone? Here, I'll explain how to get it prepared with a Symbian (Nokia) phone.&lt;br /&gt;
&lt;br /&gt;
The simple setup is to wear your helmet, and then put the cameraphone in, and fasten it. This setup has a problem. Why? Whenever the touchscreen/ keypad hits your nose or somewhere in your face, there's a probability for video recording to interrupt. Or even it can dial emergency while you are on ride!&lt;br /&gt;
&lt;br /&gt;
This is the time for &lt;b&gt;SymDVR&lt;/b&gt; to shine. SymDVR is a very handy app which can turn your cameraphone into a DVR with lots of options. The main reason for using this app is, unlike your phone's in-built video recording application this allows you to lock the screen/ keypad while recording. This is a huge advantage as it also keeps the phone's backlight off while recording.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCAKBRNPZinDhTJwhxDcmZIEDjTZTti3-THj0YIB4CPIh-nRB4gs-ubc4t_bvMI48mCYrBdUZ1mA5V32G0_K8-JX7C-AzKn0OYD_zEuiNW7KyXG1L9A1VmPsDmHYe2m6JxGBnrJ60_52w/s1600/SymDVR.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCAKBRNPZinDhTJwhxDcmZIEDjTZTti3-THj0YIB4CPIh-nRB4gs-ubc4t_bvMI48mCYrBdUZ1mA5V32G0_K8-JX7C-AzKn0OYD_zEuiNW7KyXG1L9A1VmPsDmHYe2m6JxGBnrJ60_52w/s400/SymDVR.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Other advantages include that it can calculate your riding speed using GPS and include as subtitles, landscape recording while keeping the phone in vertical position, etc.&lt;br /&gt;
&lt;br /&gt;
Go to &lt;a href="http://sites.google.com/site/symdvr/en" target="_blank"&gt;SymDVR homepage&lt;/a&gt;, download and install the app on your Nokia phone. Start the application, choose appropriate settings and start video recording. Once you start recording, you will see a Nokia Menu icon on the screen. Tap on it, and SymDVR will continue to record video, running in the background. Now it can be placed even inside your underwear without interrupting the record. :D&lt;br /&gt;
&lt;br /&gt;
Be sure to have a strap for your phone. You can fasten the helmet's strap across phone's strap to make sure it's safe in case if your phone loosens inside the helmet and falls down on to the road. Other than that, the phone will fall onto the road making you distracted, eventually turning you into dead meat. If you don't have a strap, just go and buy. It won't cost much. &lt;b&gt;This is important to avoid accidental distractions.&lt;/b&gt;&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioNdA50srcgnKFrckoaCw4bsYLLFR2cTPOrOi7nHiIB6fni3G8eUso7o55p7lhWrEE7ff1OxdKpGRQD-Ko7wDIFBxzjLUcyLtsstuBZeVIUhAk5fZBRmS1f4E52_Y2gnXEWVpGRj4StJ0/s1600/CP-306-Plectrum-Stylus-with-Cell-Phone-Strap-for-Nokia-5800-XpressMusic-Skyblue-6344997935289062501.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioNdA50srcgnKFrckoaCw4bsYLLFR2cTPOrOi7nHiIB6fni3G8eUso7o55p7lhWrEE7ff1OxdKpGRQD-Ko7wDIFBxzjLUcyLtsstuBZeVIUhAk5fZBRmS1f4E52_Y2gnXEWVpGRj4StJ0/s200/CP-306-Plectrum-Stylus-with-Cell-Phone-Strap-for-Nokia-5800-XpressMusic-Skyblue-6344997935289062501.jpg" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Image courtesy: fadbus.com&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
Now, we need to have is a full face helmet. We are going to need a full face helmet because then only it can be held between your face and the helmet.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOJ7dSL3zpq7Ay-uOrSFwG4_9VyzncxbUkeUe2eKEE3I1NP7iDtZ0ceUrm8oUEZWrXdzunbOpZxovqQ1CRn-0ulxPazO5SbuV_OuRpe-d7osZ0R-ZIJ05ywkkl2QSyEtuGZRKMlyZ_m7g/s1600/ff.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="312" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOJ7dSL3zpq7Ay-uOrSFwG4_9VyzncxbUkeUe2eKEE3I1NP7iDtZ0ceUrm8oUEZWrXdzunbOpZxovqQ1CRn-0ulxPazO5SbuV_OuRpe-d7osZ0R-ZIJ05ywkkl2QSyEtuGZRKMlyZ_m7g/s400/ff.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
If you plan to try this out in Sri Lanka, be sure to choose a helmet with a dark tinted visor. Most of the traffic cops are weird jerks, and if they see the cameraphone inside helmet they will remake the story as you were having a phone call while riding. (They just want you to invite them for a bribe). That's Sri Lankan traffic cops. So beware of them.&lt;br /&gt;
&lt;br /&gt;
Firstly hold your phone vertically, and start recording on SymDVR. Then click on Nokia Menu icon to allow SymDVR to run in background, and lock the screen/ keypad. Even if you hold it vertically, SymDVR will record the video clip in landscape mode without having you to flip the phone, and without affecting the clip size.Then, while wearing the helmet, place the cameraphone in the helmet in the way shown in the photo below. It will fit between your face and the helmet.&amp;nbsp; Finally, cross the straps as described above.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVWtzZgqGIjpyNXcHgTJyc6OSpeeVeiccbnoyL4Ksqc1SEATIQEOd3SpnutfjVjN5E9pifKa9xuVCWxq8YzsRkCkNXFjnBGN4IyphcEsJUo9HL1X_JAy-ip0WenPFIatCbzi-sQgYVutw/s1600/helmetcam_.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="266" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVWtzZgqGIjpyNXcHgTJyc6OSpeeVeiccbnoyL4Ksqc1SEATIQEOd3SpnutfjVjN5E9pifKa9xuVCWxq8YzsRkCkNXFjnBGN4IyphcEsJUo9HL1X_JAy-ip0WenPFIatCbzi-sQgYVutw/s400/helmetcam_.jpg" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;In this setup, cameraphone fits between my face and helmet.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
Make sure that your sight is not disturbed by the position of the camera. Letting it cover one eye and seeing the road by the other is prone for accidents. You need your both eyes to get the correct idea of distance to other vehicles on the road. If you still unsure why, read more about &lt;a href="http://en.wikipedia.org/wiki/Depth_perception" target="_blank"&gt;depth perception&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
If it doesn't fit into your helmet you will have to find a workaround. A good suggestion that I have seen over the Internet is to use Velcro, but the problem is that you will have glue it onto the phone. :-/&lt;br /&gt;
&lt;br /&gt;
Another suggestion of is to use a phone holder such as &lt;a href="http://europe.nokia.com/find-products/accessories/all-accessories/car-solutions/mobile-holders/nokia-mobile-holder-cr-119" target="_blank"&gt;Nokia CR-119&lt;/a&gt;. You will have to remove the cone shaped part which in normal use attaches to a vehicle windshield. Carefully mount the phone into the holder facing the camera out. This arrangement will take more space inside the helmet, and it will fit better if your head is small. :-)&lt;br /&gt;
&lt;br /&gt;
Make sure that camera is facing directly front. Start your ride, bang all over the city. Forget about the phone and enjoy your ride as much as possible. &lt;br /&gt;
&lt;br /&gt;
A great feature that I really love on SymDVR is that it can measure your speed using GPS. This can be different from the actual speed , plus or minus 2 km/h, but with this feature on you don't have to look at the speedometer to get the speed on video. It also helps a lot to avoid distraction. Speed is recorded in a separate subtitle file (srt), and later you can use a video encoding software to merge it with the video file.&lt;br /&gt;
&lt;br /&gt;
Once you are done, take the phone out, and open up SymDVR. Properly stop recording or otherwise you will end up with a corrupted video file. It will take a moment for the video file to be prepared. Once done, you can connect the phone to PC in Mass Storage Mode, and transfer the video file to your PC. It's in &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;\SymDVR\&lt;/span&gt; directory on your phone's memory card. This is by default hidden if you are using Windows on your PC.&lt;br /&gt;
&lt;br /&gt;
After recording if you want to embed subtitles into the video, I recommend using &lt;a href="http://www.videohelp.com/tools/MPlayer" target="_blank"&gt;mencoder&lt;/a&gt;. If you just want to trim the video file, you can use &lt;a href="http://ffmpeg.org/" target="_blank"&gt;ffmpeg&lt;/a&gt; to get it done without affecting the video quality.&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
I have done some helmetcam videos using this setup. And.... here goes my first performing a stoppie somewhere near the end.........&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='480' height='399' src='https://www.youtube.com/embed/va45cgfrsLk?feature=player_embedded' frameborder='0'&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
And another I took at Malabe...&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='480' height='399' src='https://www.youtube.com/embed/V13LXxbEcnk?feature=player_embedded' frameborder='0'&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;br /&gt;
Well,... finally that's it! Thanks for reading.&lt;br /&gt;
Enjoy!!</description><link>http://portal.shaakunthala.com/2012/02/how-to-make-helmetcam-using-your-nokia.html</link><author>noreply@blogger.com (ශාකුන්තල | Shaakunthala)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTJbivzLZ_oI7IsA7iRjRy-wPuBJ42ELj7Ra6Q3RYgjwOIXDUZY9u9_ZV5xjoKa-S19gj1MTiSe8FHR88tcDr32JfXziKAbCwDu3TmqnvHEBMHTXy48vBqc5TBkvCY_mKlMObhTLEPMs8/s72-c/DSC00028.JPG" width="72"/><thr:total>5</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5172310849636966878.post-3478982068748630603</guid><pubDate>Mon, 10 Jan 2011 06:35:00 +0000</pubDate><atom:updated>2011-01-10T12:05:08.213+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">bugs</category><category domain="http://www.blogger.com/atom/ns#">leisure</category><category domain="http://www.blogger.com/atom/ns#">mobile</category><category domain="http://www.blogger.com/atom/ns#">phone</category><category domain="http://www.blogger.com/atom/ns#">photography</category><category domain="http://www.blogger.com/atom/ns#">software</category><category domain="http://www.blogger.com/atom/ns#">technology</category><title>K770i Camera Problem [ SOLVED ]</title><description>I'm using a Sony Ericsson K770i for more than 1½ years. Since I'm a novice and hobbist photographer my choice was that cameraphone.&lt;br /&gt;
&lt;br /&gt;
Recently, the camera seemed to malfunction. When I open the lens cover, the screen switches between camera viewport and home screen repeatively. Sometimes it looked OK until I capture the scene. This behaviour made things more annoying.&lt;br /&gt;
&lt;br /&gt;
First, I thought this could be a software problem. So I reinstalled the phone's software. But no luck. Then I googled for similar issues and Google took me to &lt;a href="http://talk.sonyericsson.com/message/22322;jsessionid=44470E490214E57406B8158AB51A6532.node0#6399"&gt;this forum discussion&lt;/a&gt;. But it also says the same thing.&lt;br /&gt;
&lt;br /&gt;
After examining the camera's unusual behaviour carefully, I realized that there's a low probability of this being a software bug. The problem occurs randomly (not when I do a specific or unusual thing with phone's software). So this should be a hardware problem.&lt;br /&gt;
&lt;br /&gt;
So what could be the problem? Casually I found it.&lt;br /&gt;
&lt;br /&gt;
If you remove the back cover of your K770i phone, you'll see two triangular white tips at the right side of the camera. Now hold the battery with your middle finger and press the upper tip. What you see on screen is the camera viewport. Now try some captures. Will it switch between the home screen and viewport? No.&lt;br /&gt;
&lt;br /&gt;
The problem is actually with the phone's back cover. Hundreds of times I have removed the back cover to change between SIM cards, memory sticks, etc. So it has become loose. It's obvious by looking at this phone, loose back cover means loose lens cover. Nothing wrong with lens cover itself. When you aim the camera, slight movemets of your fingers make the loose cover tighten and loosen, and that tip will press and release repeatively.&lt;br /&gt;
&lt;br /&gt;
So I guess this might be a known issue with K770i. Time spans, back cover loosens.&lt;br /&gt;
&lt;br /&gt;
To temporirily overcome the problem I adjusted the metallic plates in the lens cover. But I advice you not do so yourself and ask for support from a qualified technician.&lt;br /&gt;
&lt;br /&gt;
So this is it. Don't waste time reinstalling any software. Thanks for reading the article.</description><link>http://portal.shaakunthala.com/2011/01/k770i-camera-problem-solved.html</link><author>noreply@blogger.com (ශාකුන්තල | Shaakunthala)</author><thr:total>4</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5172310849636966878.post-705957831104626087</guid><pubDate>Thu, 23 Dec 2010 09:18:00 +0000</pubDate><atom:updated>2011-02-27T22:42:26.914+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">coding</category><category domain="http://www.blogger.com/atom/ns#">database</category><category domain="http://www.blogger.com/atom/ns#">programming</category><category domain="http://www.blogger.com/atom/ns#">software</category><category domain="http://www.blogger.com/atom/ns#">technology</category><title>Data Migration – From Access 2007 to MySQL</title><description>Recently, I was assigned for a project that required one-way synchronization of data, from MS Access to MySQL. This was required to be fully automated to make the task executed once a day. It has already been implemented by someone else before, using PHP as the programming language, and SOAP protocol as the underlying technology. The implementation had several issues, so I was asked to do it in a different approach.&lt;br /&gt;
&lt;br /&gt;
So, roughly, my plan was to dump the Access database into text, and then upload the dump file to the server, and then import to MySQL. So how to do that?&lt;br /&gt;
&lt;br /&gt;
Microsoft Office Access 2007 provides it's own methods to export table content as CSV, and it's really nice that at the MySQL's end the CSV files can be directly read into the MySQL database. Roughly, my approach looked like the following,&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;Synchronize necessary tables into MySQL&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;i&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;Using VBA code, export necessary tables into CSV&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;Compress and upload the CSV files, preferably in a single file&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;At the MySQL's end, import the data upon the upload completes&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;Make the whole task fully automated&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;i&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;Using a MS Access 2007 macro, trigger the VBA code&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;Set up Windows task scheduler&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;Now, let us explore step-by-step... :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;Synchronization of Necessary Tables into MySQL&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
I remember that I was doing good with Microsoft Visual Basic 6.0 six-seven years before. Almost forgotten some, I started working with VBA. Basically it's the &lt;a href="http://msdn.microsoft.com/en-us/library/aa141567%28office.10%29.aspx"&gt;&lt;code&gt;TransferText&lt;/code&gt;&lt;/a&gt; method provided by the &lt;code&gt;DoCmd&lt;/code&gt; object in MS Access. In brief, following is the code.&lt;br /&gt;
&lt;br /&gt;
I initially wrote this part of code as a Sub in VB, but later I understood that, to be automated with a macro, I have to make this a Function. (Sub does not return a value but a Function does)&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: vb; highlight: [13]" name="code"&gt;Function ExportData ()
 Dim tables (1 To 3) As String
 Dim table As String
 Dim exportpath As String

 exportpath = "C:\temp\"

 table (1) = "tblStudents"
 table (2) = "tblMarks"
 table (3) = "tblSubjects"

 For Each table In Tables
  DoCmd.TransferText acExportDelim, , table, exportpath + table + ".csv"
 Next table

 ExportData = True ' Return True to indicate (in case if necessary) all done without breaking in the middle
End Function&lt;/pre&gt;&lt;br /&gt;
In my work I had to export several tables. However it's that simple. Now, the next task is to upload the exported CSV to the server, through FTP. As far as I know, VBA does not provide any native/in-built methods to handle FTP. The solution is accessing Windows API. I have programmed with Windows API for classic Visual Basic before so I know how hard it can be without a proper documentation. I have found plenty of nice articles over the Internet on how to do it, but as I do not know how it would be working in later Windows releases such as Vista and Seven and how would Internet security software handle that, I decided to use the PHP command line instead of Visual Basic. By installing the XAMPP package in Windows, you can get PHP CLI work. So, the latter part of the above VBA code goes like this,&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: vb"&gt;Dim cmdline
cmdline = "C:\xampp\php\php.exe c:\uploadcsv.php "
For Each table In Tables
 DoCmd.TransferText ()
 cmdline = cmdline + Chr$ (34) + exportpath + table + ".csv" + Chr$ (34) + " "
Next table

Shell cmdline, vbNormalFocus&lt;/pre&gt;&lt;br /&gt;
As you can see, all the exported file paths are passed to a PHP script called uploadcsv.php. Work to be done with VBA code ends here. Now, the next task is to handle the file upload. PHP provides very easy and nice methods to do that.&lt;br /&gt;
&lt;br /&gt;
First, let us examine the command line, the cmdline variable in our VBA code. It will look like the following. Note that &lt;code&gt;Chr$ (34)&lt;/code&gt; returns a double quotation mark (ASCII 34).&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;code&gt;C:\xampp\php\php.exe c:\uploadcsv.php "C:\temp\tblStudents.csv" "C:\temp\tblMarks .csv" "C:\temp\tblSubjects.csv"&lt;/code&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
So, the contents of uploadcsv.php goes here...&lt;br /&gt;
I'll explain PHP code wherever necessary, in PHP comments.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: php, highlight: [7, 17, 18, 19, 20, 21, 26, 27, 28, 29, 45, 46, 47, 49, 51, 64, 67, 68, 69, 71, 72, 73, 75, 76, 77, 78, 80, 92]"&gt;&amp;lt;?php
/* 
$argv handles command line input
The first element of the array is the php script filename itself.
So we'll remove it. 
*/
array_shift ($argv);

/* 
We're going to upload several tables in different files.
To upload three files we need three FTP connections.
Archiving makes the three one. And finally we need one FTP connection.
So it reduces the time spent for the work to be done.
For archiving I used the Archive Tar library
which is available at http://pear.php.net/package/Archive_Tar/ 
*/
require_once ("Tar.php");
$tar = "exportcsv.tar";
$tarfile = new Archive_Tar ($tar);
$tarfile-&amp;gt;create ($argv);
unset ($tarfile);

/*
Now we can delete the temporary CSV files
*/
foreach ($argv as $file)
{
 unlink ($file);
}

/*
Archiving isn't just enough when file size becomes quite large to upload.
We have several compression methods available
that can drastically reduce the file size.
PHP provides methods to compress data into bzip2 format,
where very high compression ratios are achievable.

When you compress a set of files into one in your computer,
it automatically performs the two steps of archiving and
compressing as a single step.

In my work, archive was 19.xx MB and after compression
it took just 3.xx MB
*/
$finale = $tar . ".bz2";
$bz2 = fopen ($finale, "w");
$bz2data = 

unlink ($tar);

$upload_md5 = md5_file ($finale);
/*
As we are uploading this file,
we need to verify it's integrity at the 
remote end before processing. I used MD5 to
verify the uploaded file's integrity.
Please read http://en.wikipedia.org/wiki/MD5 for more information.
*/

/*
Our data is ready now.
Next is to upload it using FTP
*/
$remote_path = "/home/example/ftp/" . $finale;
/*this is the remote directory where we're going to upload the file.
For security reasons this should be outside of the website's document root (/home/user/public_html) */
$ftp_host = "example.com";
$ftp_user = "example";
$ftp_pass = "p4ssw0r!";

$conn = ftp_connect ($ftp_host,);
ftp_login ($conn, $ftp_user, $ftp_pass);
ftp_pasv ($conn, true);

if (!ftp_put ($conn, $remote_path, $finale, FTP_BINARY))
{
 die ("Upload failed!"); // Abort if upload failed.
}

ftp_close ($conn);

/*
After the upload has finished, we need to tell
the website that the uploaded file is ready to be 
proceed.

We can do this with a HTTP GET but some part of the actual system inspired me to use SOAP.
For simplicity of this article I may use a HTTP request here.

*/

$final_result = file_get_contents ("http://www.example.com/importer.php?file=" . $finale . "&amp;amp;checksum=" . $upload_md5);
/* where www.example.com is the remote location where we keep the script to import data from CSV files */

if ($final_result == "Success!")
{
 echo "One way sync successful!";
}
else
{
 echo "Synchronization failed!\n";
 echo $final_result;
}&lt;/pre&gt;&lt;br /&gt;
Alright. Finally, one more step ahead... data is ready to be imported to MySQL.&lt;br /&gt;
It's that &lt;i&gt;importer.php&lt;/i&gt; that we called in the earlier script. We need to keep this file inside the document root of the website so it can be called over HTTP.&lt;br /&gt;
I'll put the code here, explaining each piece, in the same way as the above.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: php, highlight: [3, 8, 9, 10, 11, 16, 21, 22, 23, 29, 30, 32, 33, 34, 35, 36, 44, 45, 46, 47, 48, 49, 50, 52, 53, 54, 67, 68, 69, 78, 79, 80, 81, 86, 87, 93, 94, 100, 101, 102, 103, 105, 106, 107, 108, 109, 110, 116]"&gt;&amp;lt;?php

require_once ('Tar.php');
 
/*
MySQL Database configuration
*/
$db_server = 'localhost';
$db_user  = 'example';
$db_pass  = 'p4ssw0r!';
$db     = 'example_com';

/*
Directory path (on the remote server) where the uploaded file is kept
*/
$basedir = "/home/example/ftp/";

/*
Connect to the MySQL database
*/
$conn = mysql_connect ($db_server, $db_user, $db_pass);
if (!$conn) { die ("MQSQL database connection failed! Can't continue."); }
mysql_select_db ($db, $conn);


/*
Validate the upl;oaded file against the MD5 checksum
*/
$filename = trim ($_GET['file']);
$checksum = trim ($_GET['checksum']);

$md5 = md5_file ($basedir . $filename);
if ($md5 != $checksum)
{
 die ("File checksum mismatch. Please try again!");
}


/*
Decompress the uploaded file and extract the archive.
Whenever a file becomes no longer necessary,
it is deleted using unlink ()
*/
$arch = $basedir . substr ($filename, 0, -4);
$bz2data = implode ("", file ($basedir . $filename));
$data = bzdecompress ($bz2data, true);
$fp = fopen ($arch, "w");
fwrite ($fp, $data);
fclose ($fp);
unlink ($basedir . $filename);

$tar = new Archive_Tar ($arch);
$tar-&amp;gt;extract ($basedir);
unlink ($arch);


/*
Now we have CSV files back, in the server space.
Next task is to find them, and import to MySQL
using a LOAD DATA LOCAL query.

When a particular directory is scanned with scandir () for files,
it returns an array containing the current directory and one level
upper directory as the first two elements. We have to
skip these two before using the return value.
*/
$fl = scandir ($basedir);
array_shift ($fl);
array_shift ($fl); 

/*
A simple loop is used to import each table.
Here each filename (without extension) is equvalant to the
table name in MySQL. That means, the table names are identicle
to the table names in the original Access database.
Otherwise we need to do a small workaround to fix any mismatch.
*/
foreach ($fl as $file)
{
 if ($file != $filename) {
  $src = realpath ($basedir . $file);

  /*
  Strip '.csv' from the filename to get the exact table name
  */
  $tblname = str_replace (".csv", "", $tblname);
  $tblname = strtolower ($tblname);

  /*
  Empty the table before importing
  to prevent duplicate records.
  */
  $q = "TRUNCATE TABLE $tblname";
  mysql_query ($q);
  /*
  This query handles importing CSV to MySQL directly.
  If this functionality was not there with MySQL
  then it would be a certain workaround to import the tables.
  */
  $q = "LOAD DATA LOCAL INFILE '$src' REPLACE INTO TABLE $tblname FIELDS TERMINATED BY ','
  OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\r\n'";
  $ret = mysql_query ($q);  
  unlink ($src);

  if ($ret != true)
  {
   echo "MySQL query failed!";
  }
 }
}

/*
Everything is complete.
Close the MySQL database connection
*/
mysql_close ($conn);&lt;/pre&gt;&lt;br /&gt;
Finished! Now, additionally we can automate the whole task to make sure the one way synchronization happens time to time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;Making the whole task fully automated&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
This actually doesn't need anything to do with coding. We need to set up one macro on Access database, and a scheduled task on Windows.&lt;br /&gt;
&lt;br /&gt;
Although I have prepared a clean user manual for our client, I do not wish to do it here in detail here as I am writing this note to technical people. The macro on Access database should go like this,&lt;br /&gt;
&lt;br /&gt;
&lt;style type="text/css"&gt;
table.macro { border-width: 2px;border-spacing: 0px;border-style: outset;border-color: green;border-collapse: separate;background-color: rgb(255, 250, 250); }
table.macro th { border-width: 1px;padding: 3px;border-style: inset;border-color: black;background-color: rgb(255, 250, 250);-moz-border-radius: 0px 0px 0px 0px; }
table.macro td { border-width: 1px;padding: 3px;border-style: inset;border-color: black;background-color: rgb(255, 250, 250);-moz-border-radius: 0px 0px 0px 0px; }
&lt;/style&gt;&lt;br /&gt;
&lt;table class="macro"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;th&gt;Action&lt;/th&gt;&lt;th&gt;Arguments&lt;/th&gt;&lt;th&gt;Comment&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;code&gt;RunCode&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;ExportData ()&lt;/code&gt;&lt;/td&gt;&lt;td&gt;-&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;code&gt;Quit&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;Prompt&lt;/code&gt;&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
Give the macro a meaningful name. Here I use &lt;b style="color: #cc0000;"&gt;Sync&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
What we're going to do is, periodically open the database file with Microsoft Access, and then automatically execute the macro so it can trigger the function inside the VBA module. But, by default Microsoft Office blocks macros.&lt;br /&gt;
&lt;br /&gt;
We need to prevent Microsoft Access from blocking the macro. Unless we can't automate the task. To do this, &lt;a href="http://office.microsoft.com/en-us/access-help/create-remove-or-change-a-trusted-location-for-your-files-HA010031999.aspx"&gt;create a trusted location&lt;/a&gt; and place the database file there.&lt;br /&gt;
&lt;br /&gt;
Finally, we need to set up a scheduled task on Windows, and the program/ command line should go like this,&lt;br /&gt;
&lt;br /&gt;
&lt;span style="border-bottom-style: dotted; border-bottom-width: 1px; border-color: initial; border-left-style: dotted; border-left-width: 1px; border-right-style: dotted; border-right-width: 1px; border-top-style: dotted; border-top-width: 1px; font-size: 120%; padding-bottom: 8px; padding-left: 10px; padding-right: 5px; padding-top: 5px; text-align: center;"&gt;&lt;code&gt;msaccess.exe "&lt;span style="color: blue;"&gt;C:\Database.accdb&lt;/span&gt;" /ro /nostartup /x &lt;b style="color: #cc0000;"&gt;Sync&lt;/b&gt;&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is my approach. Now, the leftover work is to apply security if necessary, and then sit back, relax, and watch it go! :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="color: #4c1130;"&gt;&lt;b&gt;Security:&lt;/b&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;This implementation is not secure if tables carry sensitive data. Someone can sniff the data in the middle and study the pattern how it works. For additional security we can use SFTP instead of FTP upload. To do this, we can use &lt;a href="http://www.php.net/manual/en/book.ssh2.php"&gt;SSH2 functions for PHP&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Also, when calling the 'importer' script we can use SSL encryption. Also it is possible to attach this functionality to the index.php file of the website.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;div style="color: #4c1130;"&gt;&lt;b&gt;Gotchas:&lt;/b&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;If the target MySQL tables have DATE fields, this will import the dates incorrectly as MySQL expects the date exactly in &lt;i&gt;four digit year-two digit month- two digit date&lt;/i&gt;&amp;nbsp; (ex. "2010-12-25") format.&lt;/li&gt;
&lt;li&gt;I haven't tested how this would handle primary keys and relationships in the target database. In my case the data in MySQL database was for just displaying only. So it didn't have any keys.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;div style="color: #4c1130;"&gt;&lt;b&gt;References:&lt;/b&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://dev.mysql.com/doc/refman/5.1/en/load-data.html"&gt;MySQL &lt;code&gt;LOAD DATA INFILE&lt;/code&gt; Syntax&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://office.microsoft.com/en-us/access-help/CL010072900.aspx"&gt;Microsoft Office Access 2007 Support&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://php.net/manual/en/index.php"&gt;PHP Manual&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;div style="text-align: center;"&gt;---&lt;/div&gt;&lt;br /&gt;
This was my approach. If you have a different approach, or any comments, below you have space to write. Comments and expert advice are warmly welcome. :-)&lt;br /&gt;
&lt;br /&gt;
Thanks for reading!&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
&lt;b&gt;PS:&lt;/b&gt;&lt;br /&gt;
This wouldn't be a much workaround if there were timestamps in the source tables. But the business client was not willing to change his existing database structure. But, this is what I had and how I solved it. They ask and we got to shut up and do.</description><link>http://portal.shaakunthala.com/2010/12/data-migration-from-access-2007-to.html</link><author>noreply@blogger.com (ශාකුන්තල | Shaakunthala)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5172310849636966878.post-5281492241328230357</guid><pubDate>Fri, 01 Oct 2010 21:37:00 +0000</pubDate><atom:updated>2010-10-02T03:07:05.644+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">army</category><category domain="http://www.blogger.com/atom/ns#">blogging</category><category domain="http://www.blogger.com/atom/ns#">fun</category><category domain="http://www.blogger.com/atom/ns#">journey</category><category domain="http://www.blogger.com/atom/ns#">leisure</category><category domain="http://www.blogger.com/atom/ns#">ltte</category><category domain="http://www.blogger.com/atom/ns#">me</category><category domain="http://www.blogger.com/atom/ns#">phone</category><category domain="http://www.blogger.com/atom/ns#">photography</category><category domain="http://www.blogger.com/atom/ns#">travel</category><category domain="http://www.blogger.com/atom/ns#">troops</category><category domain="http://www.blogger.com/atom/ns#">war</category><title>Jaffna Tour (10/09/2010 to 12/09/2010)</title><description>If you've read &lt;a href="http://portal.shaakunthala.com/2010/09/k770i-photography-and-sorting-problem.html"&gt;my last post&lt;/a&gt; you'll find that I had a trip to Jaffna. Yes, it was last month, but I had nothing to do other than waiting for my internet connection to be restored. Sad. :(&amp;nbsp;Early in the last month, our ADSL router seemed not working properly. So we handed it over to claim warranty. This caused me miss some important events including few career opportunities. I tried to use my mobile phone to connect, but it also failed. Although Airtel provides a very attractive and pleasing 'Youth Pack', no chance for us to use at least 100 MB of the 400 MB data bundle -- no 3G connectivity. I live in Ambalangoda, a well known coastal urban area in Sri Lanka, and I don't know why would such a big telecommunication service provider fail to offer a satisfactory service.&lt;br /&gt;
&lt;br /&gt;
However, things are now OK as we got the router back yesterday evening. :)&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;---&lt;/div&gt;&lt;br /&gt;
Okey,... let's get back to the topic -- &lt;b&gt;Jaffna&lt;/b&gt;. I had a chance to join a group of devotees who were on their way to &lt;a href="http://en.wikipedia.org/wiki/Nainathivu"&gt;Nainativu&lt;/a&gt;. For a person living in the Southern Province it's a fairly cheap travel to Jaffna. Since I'm a novice photographer I wanted to make this a chance to enjoy the art of photography also. So,... my &lt;a href="http://www.gsmarena.com/sony_ericsson_k770-2052.php"&gt;K770i&lt;/a&gt; was back in action, althogh it has begun malfunctioning a bit. Here's the journey... (please click on each image to enlarge)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUgWkMSyFB1ELnPkUUaZvMDrhdeRlXrS8v1lGCf8y1Fhc3qccQzfJ97KvpOQL8fPLCx7dP62K-DNrVZPwBl05Whm0bTrwkc5kYWJVVdWLSAXlVKz1QqSgbtNXEHWbTg-x0tcJjJ-ag1fQ/s1600/DSC00020.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUgWkMSyFB1ELnPkUUaZvMDrhdeRlXrS8v1lGCf8y1Fhc3qccQzfJ97KvpOQL8fPLCx7dP62K-DNrVZPwBl05Whm0bTrwkc5kYWJVVdWLSAXlVKz1QqSgbtNXEHWbTg-x0tcJjJ-ag1fQ/s400/DSC00020.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;Turbine of Iranamadu power plant which was built by the LTTE.&lt;/i&gt;&lt;/div&gt;&lt;span id="goog_1843739314"&gt;&lt;/span&gt;&lt;span id="goog_1843739315"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhx6lpXPJhAAnvoaP5lWY5sSmoM2Rj2TZPVNGk9NvGS3jBYkYVw3e7mdu2tNdoQE6MJmuBvzHP9u3YOD9X7SWtBs0GNG38nWlIUsN1OutQXxKj5F2vMgPccxCh-Zi2_SwwDcw1wEE3AdCE/s1600/C:%5Cfakepath%5CDSC00025.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhx6lpXPJhAAnvoaP5lWY5sSmoM2Rj2TZPVNGk9NvGS3jBYkYVw3e7mdu2tNdoQE6MJmuBvzHP9u3YOD9X7SWtBs0GNG38nWlIUsN1OutQXxKj5F2vMgPccxCh-Zi2_SwwDcw1wEE3AdCE/s400/C:%5Cfakepath%5CDSC00025.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;This little guy seemed not ready to leave his pals at the camp.&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-zqV0NkabDW9GGtZLsFZ2Tpri4Bce6yKVQz7vNQCi0px-4j_voPIJ3qj9wH30AjdGc7oB-7LUYW3cfZSSa2j__QmR-Ab5hU8b02cA8JfCLAxeVX12ExnHnVltESNL1bBL5WcD0XdB3Dc/s1600/C:%5Cfakepath%5CDSC00038.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-zqV0NkabDW9GGtZLsFZ2Tpri4Bce6yKVQz7vNQCi0px-4j_voPIJ3qj9wH30AjdGc7oB-7LUYW3cfZSSa2j__QmR-Ab5hU8b02cA8JfCLAxeVX12ExnHnVltESNL1bBL5WcD0XdB3Dc/s400/C:%5Cfakepath%5CDSC00038.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;Kilinochchi water tower which was destroyed by the LTTE.&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwntVkDsrTk1jIDF4n6jxYFe0QJql_vBbWS7zdiPR5ZBm-Hf0sv9xBQyUsWoNbJGG_9Kb46fxHapmF44FHFkPILq-FLPUGeIFuQiM7sJIBTqfkke6H9ZS_ejTYye69H0ayhhQ4O0BSIL0/s1600/C:%5Cfakepath%5CDSC00048.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="162" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwntVkDsrTk1jIDF4n6jxYFe0QJql_vBbWS7zdiPR5ZBm-Hf0sv9xBQyUsWoNbJGG_9Kb46fxHapmF44FHFkPILq-FLPUGeIFuQiM7sJIBTqfkke6H9ZS_ejTYye69H0ayhhQ4O0BSIL0/s640/C:%5Cfakepath%5CDSC00048.JPG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;A panorama of A9 highway at Elephant Pass.&amp;nbsp;&lt;/i&gt;&lt;i&gt;Camera is aimed along the way South.&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxkWzv4XquhupkRK49_qu4bMvARPVlOyGGYVavPNU7jLFBHnS1Pb36vvdervage_lFJ1IP7xUCwhNOSF4zOL5hkhkufxsfmA0SGBtpZrv46XnB93mW9n6osYy6LgBLrN3IJQz1V4HQ8pI/s1600/C:%5Cfakepath%5CDSC00056.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxkWzv4XquhupkRK49_qu4bMvARPVlOyGGYVavPNU7jLFBHnS1Pb36vvdervage_lFJ1IP7xUCwhNOSF4zOL5hkhkufxsfmA0SGBtpZrv46XnB93mW9n6osYy6LgBLrN3IJQz1V4HQ8pI/s400/C:%5Cfakepath%5CDSC00056.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;Monument for the legendary hero of Hasalaka, Corporal Gamini Kularatne. [&lt;a href="http://en.wikipedia.org/wiki/Gamini_Kularatne"&gt;read story&lt;/a&gt;]&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSHw1fiGix89e1KzEM0TsZ9bRy77kGvSA4VNDsz3DmNMZARCTN6YY00jTta4RT25K1KzFzn4yoDM5oLMRihYRIXmrt40P2AWhLDs1ItfYqsczqcaLR06gext2vqsgz3as5HPLtjH5GGI0/s1600/C:%5Cfakepath%5CDSC00067.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSHw1fiGix89e1KzEM0TsZ9bRy77kGvSA4VNDsz3DmNMZARCTN6YY00jTta4RT25K1KzFzn4yoDM5oLMRihYRIXmrt40P2AWhLDs1ItfYqsczqcaLR06gext2vqsgz3as5HPLtjH5GGI0/s400/C:%5Cfakepath%5CDSC00067.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;A pet aligator kept at a military camp, somewhere I don't exactly remember.&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUeHV7FGRRNWINjilgIHIw4-VuL79wH7zjusSFUeIZ0JTyndlSTiPQiLkVcgHsFlOi7bU6nPc9DpiBfccpugK_fw_3agwaIzvNpSLD8k1DwlIdwtb0BzCCTGFIueFDV9H13KgauqvWqz8/s1600/C:%5Cfakepath%5CDSC00069.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUeHV7FGRRNWINjilgIHIw4-VuL79wH7zjusSFUeIZ0JTyndlSTiPQiLkVcgHsFlOi7bU6nPc9DpiBfccpugK_fw_3agwaIzvNpSLD8k1DwlIdwtb0BzCCTGFIueFDV9H13KgauqvWqz8/s400/C:%5Cfakepath%5CDSC00069.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;Nallur Kovil, Jaffna&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVVv2I1-DC4ZVqjqnMzIAN5mnd-bM01OPt9pFEAZDUrm0uNqCFRhOPIPAmLVaEnrRyH882gL4UwsOkCdMarBNdLqbiYDhkODNd-PgfNLXJR4Vfw6pTj3tKcRPddn-RyeohUVvdZdoy4DM/s1600/C:%5Cfakepath%5CDSC00081.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVVv2I1-DC4ZVqjqnMzIAN5mnd-bM01OPt9pFEAZDUrm0uNqCFRhOPIPAmLVaEnrRyH882gL4UwsOkCdMarBNdLqbiYDhkODNd-PgfNLXJR4Vfw6pTj3tKcRPddn-RyeohUVvdZdoy4DM/s400/C:%5Cfakepath%5CDSC00081.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;Interior frescoes at Naga Vihara, Jaffna.&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipnK8xjKXV2CCpXTRFhggU1Nd_1L5YdCFymC7TLwzWJ2CXNO-O_vSu483_gUR-0f4MSM7PDPEGzjopY4NZvZ9BXPSHq2sion44lxl0kf9VOzjh7Izc3f6cZojhpuo8KQzChrzBd-Su3A4/s1600/C:%5Cfakepath%5CDSC00086.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipnK8xjKXV2CCpXTRFhggU1Nd_1L5YdCFymC7TLwzWJ2CXNO-O_vSu483_gUR-0f4MSM7PDPEGzjopY4NZvZ9BXPSHq2sion44lxl0kf9VOzjh7Izc3f6cZojhpuo8KQzChrzBd-Su3A4/s400/C:%5Cfakepath%5CDSC00086.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;The narrow road from the peninsula to an island.&lt;/i&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;If my memory is correct this is the way to Mandativu, as we were heading to Nainativu.&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6AcV3jI0rCchVfHo6HUNotofq5JIwCJ9Wl8D2886nDirXJkWbjZvIpEsfxpmwh9kcgtb2u1xoZ3iIwpe1ypB9jB7exi27GLJvrcLB0xef2NQOyewp_5j7EZFxfomHuk7PxYoh_re_Wr4/s1600/C:%5Cfakepath%5CDSC00089.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6AcV3jI0rCchVfHo6HUNotofq5JIwCJ9Wl8D2886nDirXJkWbjZvIpEsfxpmwh9kcgtb2u1xoZ3iIwpe1ypB9jB7exi27GLJvrcLB0xef2NQOyewp_5j7EZFxfomHuk7PxYoh_re_Wr4/s400/C:%5Cfakepath%5CDSC00089.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;Prawn traps set in the lagoon&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6ZVC9wCzndSy5b4O4zHSrTWR9sVnlKi_G_4R06SfGwktFuIbOKZoxJv0stCzID5nlYxHX0_RLFc540NyXxLfbuSJJ4mkY2a2y1QyrQNUfbXXJkmw2_NwKGgYKRgbHHayotReOAHNkjfc/s1600/C:%5Cfakepath%5CDSC00113.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="171" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6ZVC9wCzndSy5b4O4zHSrTWR9sVnlKi_G_4R06SfGwktFuIbOKZoxJv0stCzID5nlYxHX0_RLFc540NyXxLfbuSJJ4mkY2a2y1QyrQNUfbXXJkmw2_NwKGgYKRgbHHayotReOAHNkjfc/s640/C:%5Cfakepath%5CDSC00113.JPG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;Way to the boatyard. Boats are used as the transportation means to Nainativu (Naga Deepa).&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF4b3mQlilH38MhN5e0xP01Sb37Pm9Ka8E3GZ4XKRmeZInFvIhYZ9GBFLYUF1SO6hE9uyz47iqTHKTOwO1jwHI7Q-Aq3av03pjaxAXzR9rrqPdwBQkEDAXO5uHmgzm57Zw-Q-kR0NNwHs/s1600/C:%5Cfakepath%5CDSC00126.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF4b3mQlilH38MhN5e0xP01Sb37Pm9Ka8E3GZ4XKRmeZInFvIhYZ9GBFLYUF1SO6hE9uyz47iqTHKTOwO1jwHI7Q-Aq3av03pjaxAXzR9rrqPdwBQkEDAXO5uHmgzm57Zw-Q-kR0NNwHs/s400/C:%5Cfakepath%5CDSC00126.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;The lord settling up the dispute between Chulodara and Mahodara [&lt;a href="http://www.dailynews.lk/2009/03/25/fea29.asp"&gt;read story&lt;/a&gt;]&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgm74JiowxvIU2OHQixDT0twIoe3IQqNLbEMWHIK-1og2f12bV8-RqY9MmSBTDPFIQvE2Eggqxj_ul32-UNZ52vNYHX1pfNgq3rOobj-A3WkoqqL6aHo0hdPBecpNwJNOxSSWT_ZdnSNO4/s1600/C:%5Cfakepath%5CDSC00149.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgm74JiowxvIU2OHQixDT0twIoe3IQqNLbEMWHIK-1og2f12bV8-RqY9MmSBTDPFIQvE2Eggqxj_ul32-UNZ52vNYHX1pfNgq3rOobj-A3WkoqqL6aHo0hdPBecpNwJNOxSSWT_ZdnSNO4/s400/C:%5Cfakepath%5CDSC00149.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;Cattles!&lt;/i&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;(I took this one sitting on the foot-board of the bus,&lt;/i&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;and I was not able to properly aim the camera with just one hand.&lt;/i&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;Also the bus was moving at a speed)&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8WEo4qShu3859bCptr0m1YL1r73LtLeJNWhBFRxATMS44BrJ-xI7stb6lye6Ey_5aRiUFek92dg8sXaqQ4YmbfMAh6vmWCQCyAq4SX_zMRRosJI4VECo0V_w5tfk-HUulVYhA2rz1wBQ/s1600/C:%5Cfakepath%5CDSC00154.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8WEo4qShu3859bCptr0m1YL1r73LtLeJNWhBFRxATMS44BrJ-xI7stb6lye6Ey_5aRiUFek92dg8sXaqQ4YmbfMAh6vmWCQCyAq4SX_zMRRosJI4VECo0V_w5tfk-HUulVYhA2rz1wBQ/s400/C:%5Cfakepath%5CDSC00154.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;Lieutenant General Denzil Kobbekaduwa monument [&lt;a href="http://www.defence.lk/new.asp?fname=20100808_01"&gt;read story&lt;/a&gt;]&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDKg71stLTTY8TXPzs9Z37IcEjRBIhmgxgf5d2pMm4sEe8k8e0iqTEZtV2vA78spB9ne42cECuZJv0LKEtu1d2SFTAZeQFZ4FjBkhAbyNyKBuJjvgQfP7C9kim571XgjE8wZKFsp-xxzY/s1600/C:%5Cfakepath%5CDSC00162.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="161" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDKg71stLTTY8TXPzs9Z37IcEjRBIhmgxgf5d2pMm4sEe8k8e0iqTEZtV2vA78spB9ne42cECuZJv0LKEtu1d2SFTAZeQFZ4FjBkhAbyNyKBuJjvgQfP7C9kim571XgjE8wZKFsp-xxzY/s640/C:%5Cfakepath%5CDSC00162.JPG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;Thewarikkulam tank - uncommon, but it was somewhere near the rest house.&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCYig-zfAEx_kUIxtJxeLThe1yKFJA-0mpE0rvyVFva63qmUg7q1O-ifyNrWF4QwI3J1Uynrt12ix1y_XrDwBCgmPxKn5OA5lKkna0_XZsJEMgsdFzXll4tvKB3Y50ThD-9HTp4P_Mkds/s1600/C:%5Cfakepath%5CDSC00164.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCYig-zfAEx_kUIxtJxeLThe1yKFJA-0mpE0rvyVFva63qmUg7q1O-ifyNrWF4QwI3J1Uynrt12ix1y_XrDwBCgmPxKn5OA5lKkna0_XZsJEMgsdFzXll4tvKB3Y50ThD-9HTp4P_Mkds/s400/C:%5Cfakepath%5CDSC00164.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;Remainders of a/the railroad?&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzptrMlolNDtmKOb2ebMSCXT_4seCoz_S0n84hFJsuTgBnSi0WLRQYDrInugW-UFUhMGovpQ__XzOwVaRimKT0EHU4Ahk82rKzVVy6Z_cfUCqMFl6g2Wm_he0LTsMFGn1fqmDK5rgKZNs/s1600/C:%5Cfakepath%5CDSC00171.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzptrMlolNDtmKOb2ebMSCXT_4seCoz_S0n84hFJsuTgBnSi0WLRQYDrInugW-UFUhMGovpQ__XzOwVaRimKT0EHU4Ahk82rKzVVy6Z_cfUCqMFl6g2Wm_he0LTsMFGn1fqmDK5rgKZNs/s400/C:%5Cfakepath%5CDSC00171.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;Dagabas at Kadurugoda Ancient Vihara - a landmark that you should visit!&lt;/i&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;[&lt;a href="http://cimicjaffna.com/Kandarodai.htm"&gt;read story&lt;/a&gt;]&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdsJ0u4RJKXls4bD7zLvgN_M77Dmj0aOyR6l88bwNjaiislVGb-0iTT2WraQtgZBwURsiYNClgphpeg3ml6fCJb-h0o3U3gIF-d5V2LxkmrLcQ-0yBBMZnf-zcV3OODub4E9eXut9Iuug/s1600/C:%5Cfakepath%5CDSC00183.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdsJ0u4RJKXls4bD7zLvgN_M77Dmj0aOyR6l88bwNjaiislVGb-0iTT2WraQtgZBwURsiYNClgphpeg3ml6fCJb-h0o3U3gIF-d5V2LxkmrLcQ-0yBBMZnf-zcV3OODub4E9eXut9Iuug/s400/C:%5Cfakepath%5CDSC00183.JPG" width="300" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;Bhikkhuni (nun) Sangamitta statue&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqgAVBFc5HIpIEh11hG7WqTE7opjykymnsi-WYKkwjeI9COzU1VTmsgiJHB719I34bMk-sedV0J1bPvWJzOqYMfio-wNhonkqp9P8PgPlIGKafK-gZ1pmY4jV4p4sxTXMHbG03d6t-tkE/s1600/C:%5Cfakepath%5CDSC00212.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqgAVBFc5HIpIEh11hG7WqTE7opjykymnsi-WYKkwjeI9COzU1VTmsgiJHB719I34bMk-sedV0J1bPvWJzOqYMfio-wNhonkqp9P8PgPlIGKafK-gZ1pmY4jV4p4sxTXMHbG03d6t-tkE/s400/C:%5Cfakepath%5CDSC00212.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;Statues at Naguleswaram Kovil&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDfBOk3Tgtmg8NMtcFvTThDRxIHXyjsScCAQfNiI5jpr51DHMluNMPalxCrclQo9wbwWHA6cq92OlNtEJtWPA62fkzCeAp4K1LuOHZ3Y2oC1IYf_hMsjBJYI_8j8CJERVIxrNWn60C_uU/s1600/C:%5Cfakepath%5CDSC00229.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDfBOk3Tgtmg8NMtcFvTThDRxIHXyjsScCAQfNiI5jpr51DHMluNMPalxCrclQo9wbwWHA6cq92OlNtEJtWPA62fkzCeAp4K1LuOHZ3Y2oC1IYf_hMsjBJYI_8j8CJERVIxrNWn60C_uU/s400/C:%5Cfakepath%5CDSC00229.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;Cultivation in Jaffna&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMWMcvBLraOfSpZeq_tRfygqV9xB7xQEOqvJUCYQm7-vOzQzFXVRtbJBd1IVOxQqIK8EqamiJC5XFv4Yo__NtFeZhu88_Dda4NijueXTFOA2gfzFpZboJ2c3hN-70FZNp0e0HruoHfUiE/s1600/C:%5Cfakepath%5CDSC00232.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMWMcvBLraOfSpZeq_tRfygqV9xB7xQEOqvJUCYQm7-vOzQzFXVRtbJBd1IVOxQqIK8EqamiJC5XFv4Yo__NtFeZhu88_Dda4NijueXTFOA2gfzFpZboJ2c3hN-70FZNp0e0HruoHfUiE/s400/C:%5Cfakepath%5CDSC00232.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;Nilavarai water well - a natural well believed to have no bottom&lt;/i&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;This is the last landmark we could vi&lt;/i&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;sit during the tour&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkNiY4keY2b7NUlDqeECeqjpsgz5PmpqCntMvbzmHossEK0or3mLjxMP0JIENgEvT15e6HxrQvXiBjgdBKaPpovJMwIdKZF0-j-OXoGyR2pryaWvLutPNnGdD7NVHgX3b4KztpLTmECJM/s1600/C:%5Cfakepath%5CDSC00252.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkNiY4keY2b7NUlDqeECeqjpsgz5PmpqCntMvbzmHossEK0or3mLjxMP0JIENgEvT15e6HxrQvXiBjgdBKaPpovJMwIdKZF0-j-OXoGyR2pryaWvLutPNnGdD7NVHgX3b4KztpLTmECJM/s400/C:%5Cfakepath%5CDSC00252.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;The danger zone&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;Landmines are not yet 100% cleared in Muhamalai.&lt;/i&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;As you can see in the photo, only the narrow area surrounded by the ribbon is safe.&lt;/i&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;This is almost aside along the A9 highway.&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE0uP25NZmzw0hYb5x4CUYeo9kKPdHVD_8ecT4aBTjkpqsVwSKhROleIn3J5-N7DGZEDnh-aEoBI95fsEN6RLIyMS-Q_IJubjJ41_8ISso0d45v5wK4SFjiEWVhExZSmDBezTHKF2-tcg/s1600/C:%5Cfakepath%5CDSC00269.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE0uP25NZmzw0hYb5x4CUYeo9kKPdHVD_8ecT4aBTjkpqsVwSKhROleIn3J5-N7DGZEDnh-aEoBI95fsEN6RLIyMS-Q_IJubjJ41_8ISso0d45v5wK4SFjiEWVhExZSmDBezTHKF2-tcg/s400/C:%5Cfakepath%5CDSC00269.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;The Monument of Victory!&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNJINV9xrjxj8yC0NEY4IE2dK_5kT96epHH0l_s-7MdO4Wg0P9giIGW2VFkO21UKC2T3Ch9YgwzPmilo85rKNqEL2HllJ_5TBcurKCEDV7eFK6sD2RG3tyhIJlAVSHxQ8_NtvvPQHTTqo/s1600/C:%5Cfakepath%5CDSC00266.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNJINV9xrjxj8yC0NEY4IE2dK_5kT96epHH0l_s-7MdO4Wg0P9giIGW2VFkO21UKC2T3Ch9YgwzPmilo85rKNqEL2HllJ_5TBcurKCEDV7eFK6sD2RG3tyhIJlAVSHxQ8_NtvvPQHTTqo/s400/C:%5Cfakepath%5CDSC00266.JPG" width="300" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;b&gt;&lt;i&gt;Dignity of the LIONS... towards the infinity...!&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
I have many more. Not all are worthy shots, but I've kept them because I believe that in any particular graphic any viewer other than myself may see something that I may never see. They're available to download.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="border: 3px solid #444; padding: 10px; text-align: center;"&gt;&lt;a href="http://www.4shared.com/file/HD0yvvKp/Public_Release.html" target="_blank"&gt;&lt;img alt="Download" src="http://upload.wikimedia.org/wikipedia/commons/9/9c/The_Unarchiver_zip.png" style="border: none;" /&gt;&lt;br /&gt;
Download Here!&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://creativecommons.org/licenses/by-sa/3.0/" rel="license"&gt;&lt;img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-sa/3.0/88x31.png" style="border-width: 0pt;" /&gt;&lt;/a&gt;&lt;br /&gt;
This &lt;span href="http://purl.org/dc/dcmitype/StillImage" rel="dc:type" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;work&lt;/span&gt; by &lt;a href="http://www.shaakunthala.com/" property="cc:attributionName" rel="cc:attributionURL" xmlns:cc="http://creativecommons.org/ns#"&gt;Sameera Shaakunthala&lt;/a&gt; is licensed under a &lt;a href="http://creativecommons.org/licenses/by-sa/3.0/" rel="license"&gt;Creative Commons Attribution-Share Alike 3.0 Unported License&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="text-align: center;"&gt;---&lt;/div&gt;&lt;br /&gt;
Since sunlight is too heavy in the North province, lighting quality of raw photographs were poor. Even automatic white balance settings in my camera didn't work. So I had to do some post-fixes such as curves and levels, with the use of &lt;a href="http://www.gimp.org/"&gt;GIMP 2.6&lt;/a&gt; software. This is something usually I don't like to do becuse I believe that the photographer must retain the original lighting conditions whenever possible; simply because &lt;u&gt;photography is the art of capturing light&lt;/u&gt;.&lt;br /&gt;
&lt;br /&gt;
Overall I'm not satisfied with my photography experience during this tour. I even missed several 24k shots. If you're a reader of &lt;a href="http://blog.shaakunthala.com/"&gt;my Sinhala blog&lt;/a&gt;, you could know that I had a &lt;a href="http://blog.shaakunthala.com/2009/09/blog-post.html"&gt;wondeful experience in our tour last year&lt;/a&gt;. This time it was with a group of devotees and the tour was to worship Nainativu and some other religious activities. No no time to wait and capture light... what do do? :(&lt;br /&gt;
&lt;br /&gt;
Okey... thanks for reading! Have a great time!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;PS:&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="background-color: #fff2cc;"&gt;If you use Airtel be sure to keep your phone in 'Flight mode' to save battery. &lt;u&gt;Your Airtel SIM will act as a world class dumb SIM&lt;/u&gt;, as it is required for nothing but keeping few other phone&amp;nbsp;functionalities other than communication. X( &amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;</description><link>http://portal.shaakunthala.com/2010/10/jaffna-tour-10092010-to-12092010.html</link><author>noreply@blogger.com (ශාකුන්තල | Shaakunthala)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUgWkMSyFB1ELnPkUUaZvMDrhdeRlXrS8v1lGCf8y1Fhc3qccQzfJ97KvpOQL8fPLCx7dP62K-DNrVZPwBl05Whm0bTrwkc5kYWJVVdWLSAXlVKz1QqSgbtNXEHWbTg-x0tcJjJ-ag1fQ/s72-c/DSC00020.JPG" width="72"/><thr:total>8</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5172310849636966878.post-5923344520461576837</guid><pubDate>Wed, 15 Sep 2010 22:11:00 +0000</pubDate><atom:updated>2010-09-16T11:37:47.797+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">coding</category><category domain="http://www.blogger.com/atom/ns#">foss</category><category domain="http://www.blogger.com/atom/ns#">fun</category><category domain="http://www.blogger.com/atom/ns#">journey</category><category domain="http://www.blogger.com/atom/ns#">leisure</category><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">me</category><category domain="http://www.blogger.com/atom/ns#">mobile</category><category domain="http://www.blogger.com/atom/ns#">phone</category><category domain="http://www.blogger.com/atom/ns#">photography</category><category domain="http://www.blogger.com/atom/ns#">software</category><category domain="http://www.blogger.com/atom/ns#">technology</category><category domain="http://www.blogger.com/atom/ns#">travel</category><category domain="http://www.blogger.com/atom/ns#">web</category><title>K770i, Photography and Sorting Problem</title><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrIrQ0Ly0P87EVDzwmbCzhPaQNN83QxY7a8CAloxPTc52f_NonlHaVhyvOiCnVyXCc3O-q-WSHowygMFB8iUhdjMR9vYm6XcntNEpEWSTyb0oo1ur36TwLL8gPzGsroBcgEG0T5GfVFTI/s1600/1113199164_ba7227c087_o.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrIrQ0Ly0P87EVDzwmbCzhPaQNN83QxY7a8CAloxPTc52f_NonlHaVhyvOiCnVyXCc3O-q-WSHowygMFB8iUhdjMR9vYm6XcntNEpEWSTyb0oo1ur36TwLL8gPzGsroBcgEG0T5GfVFTI/s200/1113199164_ba7227c087_o.jpg" width="114" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;Hi fellas, after few days... I'm back again with some cool cool stuff. My internship is over... and now I look for new career opportunities. Anyhow, I was not so quick to apply for a new job like others did. After completing my internship, I wanted a 'free time' of just one or two weeks to have a tour around Sri Lanka.&lt;br /&gt;
&lt;br /&gt;
So, I just had the tour. Amazingly, it was to Jaffna. I live in &amp;nbsp;Southern Province and going for a tour in Jaffna is just a daydream for a busy man. However, in any tour I have two main&amp;nbsp;intentions, photography and flirting :P . (&lt;i&gt;however I was not able to photograph her since her mom was there :-O &lt;/i&gt;)&lt;br /&gt;
&lt;br /&gt;
I have been using a &lt;a href="http://www.gsmarena.com/sony_ericsson_k770-2052.php"&gt;Sony Ericsson K770i&lt;/a&gt; phone for more than one year and that phone has made me a &lt;a href="http://www.flickr.com/photos/shaakunthala"&gt;photography&amp;nbsp;freak&lt;/a&gt;. But recently, it had encountered a problem with it's memory stick reader&amp;nbsp;compartment. This really made me upset as my phone now can't read memory sticks. However, by deleting some wallpapers, ringtones, themes and midlets I managed to make some free space of 15 MB in the phone's internal memory. This is just enough for 15 photos at maximum possible quality. Sad! :(&lt;br /&gt;
&lt;br /&gt;
Luckily I found another phone (a&amp;nbsp;Chinese&amp;nbsp;phone without a brand) which had a memory stick installed and bluetooth also. So my plan was to transfer photos&amp;nbsp;into the Chinese phone&amp;nbsp;over bluetooth after taking each 15 photographs, and delete originals to make free space on my phone for new photos... just like using a revolver ;) . It worked, but since bluetooth file&amp;nbsp;transfer&amp;nbsp;took longer than expected each time I missed few imoprtant shots as well. :(&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sony Cyber-shot cameras use a specific file naming&amp;nbsp;convention. It's the &lt;b&gt;DSC&lt;/b&gt; (Digital Still Camera) prefix before the five-digit file number (i.e. &lt;b&gt;DSC00001.JPG&lt;/b&gt;, &lt;b&gt;DSC00002.JPG&lt;/b&gt;, ...). Due to my 'revolver methodology' sometimes when I make free space my phone seemed to reset the file number. This resulted duplicate filenames, and upon transfer those&amp;nbsp;duplicates&amp;nbsp;were added a &lt;b&gt;Dup(&lt;/b&gt;&lt;i&gt;&lt;b&gt;xx&lt;/b&gt;&lt;/i&gt;&lt;b&gt;)&lt;/b&gt; prefix in their filenames. However, thanks to the Chinese phone, during the three days of tour I have been able to take nearly 300 photos, including few panoramas.&lt;br /&gt;
&lt;br /&gt;
After coming home I wanted to arrange all the photos in the correct timeline. Since file naming has already been&amp;nbsp;messed&amp;nbsp;up it was no use arranging them by name. So the next chance is to arrange them by the modification time (unix &lt;i&gt;mtime&lt;/i&gt;). Due to some unknown reason, there were some small misconjusnctions in the series when arranging by mtime. It was like &lt;i&gt;Elephant Pass&lt;/i&gt;&amp;nbsp;coming before &lt;i&gt;Kilinochchi&lt;/i&gt;&amp;nbsp;when heading to Jaffna. :P&lt;br /&gt;
&lt;br /&gt;
So here comes the sorting problem... it's not the &lt;b&gt;Sorting Problem&lt;/b&gt; that we learn at the computer science lecture, although we use the tools built upon those theories. I realized that playing with &lt;i&gt;ctime&lt;/i&gt;, &lt;i&gt;mtime&lt;/i&gt; and &lt;i&gt;atime&lt;/i&gt; is just a waste of time... so I was looking for another solution. Yes!, there is. It's the &lt;b&gt;Exif&lt;/b&gt; data stored with each file. I can extract the &lt;b&gt;DateTimeOriginal&lt;/b&gt; tag from Exif and arrange the file accordingly. I am a Linux geek, so rather than doing a web search for an automated GUI tool &amp;nbsp;I wanted to do it by myself.&lt;br /&gt;
&lt;br /&gt;
So my ultimate plan was to write a bash script that will check date-time from each file and rename them in the correct order. Also, I wanted them to follow the same DSC convention. There's a handy command line tool for reading image exif on Linux. It's &lt;b&gt;exifprobe&lt;/b&gt;. Just an &lt;b&gt;apt-get install&lt;/b&gt; is enough to get it installed on the computer. With exifprobe we have another handy tool called &lt;b&gt;exifgrep&lt;/b&gt;. Now let us go ahead.&lt;br /&gt;
&lt;br /&gt;
Here we extract the origianal date-time:&lt;br /&gt;
&lt;b&gt;$ &lt;span class="Apple-style-span" style="color: blue;"&gt;exifgrep&lt;/span&gt; -n &lt;span class="Apple-style-span" style="color: red;"&gt;DateTimeOriginal&lt;/span&gt; &lt;span class="Apple-style-span" style="color: #660000;"&gt;DSC00001.JPG&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
and the output will look like,&lt;br /&gt;
&lt;b&gt;JPEG.APP1.Ifd0.Exif.&lt;span class="Apple-style-span" style="color: red;"&gt;DateTimeOriginal&lt;/span&gt; = '&lt;span class="Apple-style-span" style="color: blue;"&gt;2010:09:10 12:04:16&lt;/span&gt;' &amp;nbsp; &amp;nbsp;# &lt;span class="Apple-style-span" style="color: #660000;"&gt;DSC00001.JPG&lt;/span&gt;:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
What I want to do is to list each file against it's OriginalDateTime and then sort with Unix &lt;b&gt;sort&lt;/b&gt; command. So it's just one more simple step, (I wanted the output in a text file too)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;$ &lt;span class="Apple-style-span" style="color: blue;"&gt;exifgrep&lt;/span&gt; -n D&lt;span class="Apple-style-span" style="color: red;"&gt;ateTimeOriginal&lt;/span&gt; &lt;span class="Apple-style-span" style="color: #660000;"&gt;*.JPG&lt;/span&gt; | &lt;span class="Apple-style-span" style="color: blue;"&gt;sort&lt;/span&gt; &amp;gt; &lt;span class="Apple-style-span" style="color: #20124d;"&gt;sorted.txt&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Here's a random portion of the output I got,&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;JPEG.APP1.Ifd0.Exif.DateTimeOriginal = '2010:09:11 12:18:54' &amp;nbsp; &amp;nbsp;# Dup(01)DSC00046.JPG:&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;JPEG.APP1.Ifd0.Exif.DateTimeOriginal = '2010:09:11 12:20:39' &amp;nbsp; &amp;nbsp;# DSC00048.JPG:&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;JPEG.APP1.Ifd0.Exif.DateTimeOriginal = '2010:09:11 12:23:13' &amp;nbsp; &amp;nbsp;# Dup(01)DSC00052.JPG:&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;JPEG.APP1.Ifd0.Exif.DateTimeOriginal = '2010:09:11 13:31:30' &amp;nbsp; &amp;nbsp;# DSC00001.JPG:&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;JPEG.APP1.Ifd0.Exif.DateTimeOriginal = '2010:09:11 13:31:49' &amp;nbsp; &amp;nbsp;# DSC00002.JPG:&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;JPEG.APP1.Ifd0.Exif.DateTimeOriginal = '2010:09:11 13:32:38' &amp;nbsp; &amp;nbsp;# DSC00003.JPG:&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;JPEG.APP1.Ifd0.Exif.DateTimeOriginal = '2010:09:11 13:34:07' &amp;nbsp; &amp;nbsp;# Dup(01)DSC00004.JPG:&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;JPEG.APP1.Ifd0.Exif.DateTimeOriginal = '2010:09:11 13:48:40' &amp;nbsp; &amp;nbsp;# DSC00007.JPG:&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;JPEG.APP1.Ifd0.Exif.DateTimeOriginal = '2010:09:11 14:01:13' &amp;nbsp; &amp;nbsp;# Dup(02)DSC00008.JPG:&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;JPEG.APP1.Ifd0.Exif.DateTimeOriginal = '2010:09:11 14:24:49' &amp;nbsp; &amp;nbsp;# Dup(01)DSC00014.JPG:&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;JPEG.APP1.Ifd0.Exif.DateTimeOriginal = '2010:09:11 14:25:43' &amp;nbsp; &amp;nbsp;# Dup(02)DSC00015.JPG:&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Now, it's the time to write the actual shell script. It's not a big deal&amp;nbsp;actually, as you can see, so I don't need to explain.&lt;br /&gt;
&lt;pre class="brush: bash" name="code"&gt;#!/bin/bash

mkdir sorted
lines=`cat sorted.txt | wc -l`
for (( line=1; line&amp;lt;=$lines; line++ ))
do
&amp;nbsp;&amp;nbsp;src=`cat sorted.txt | head -$line | tail -1 | awk '{ print $6 }' | cut -d: -f1`
&amp;nbsp;&amp;nbsp;dest="DSC"`printf "%05d\n" $line`".JPG"
&amp;nbsp;&amp;nbsp;cp $src sorted/$dest -v
done
&lt;/pre&gt;&lt;br /&gt;
Finally, after running this script I managed to get all photographs according to the timeline. I'll be writing a note about my Jaffna tour as soon as possible, and will be releasing some photographs&amp;nbsp;under the &lt;a href="http://creativecommons.org/licenses/by-sa/3.0/"&gt;Creative Commons Attribution-Share Alike 3.0 Unported&lt;/a&gt; license.&lt;br /&gt;
&lt;br /&gt;
Few of them (such as &lt;a href="http://en.wikipedia.org/wiki/File:JaffnaPeninsula.JPG"&gt;File:JaffnaPeninsula.JPG&lt;/a&gt;) are already available on Wikipedia! :-)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;See also:&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.exif.org/specifications.html"&gt;EXIF.org - EXIF and related resources - specifications&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.virtual-cafe.com/~dhh/tools.d/exifprobe.d/exifprobe.html"&gt;exifprobe - camera image probe&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;Thanks for reading... have a nice day! :) :) :)&lt;/div&gt;&lt;b&gt;&lt;/b&gt;</description><link>http://portal.shaakunthala.com/2010/09/k770i-photography-and-sorting-problem.html</link><author>noreply@blogger.com (ශාකුන්තල | Shaakunthala)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrIrQ0Ly0P87EVDzwmbCzhPaQNN83QxY7a8CAloxPTc52f_NonlHaVhyvOiCnVyXCc3O-q-WSHowygMFB8iUhdjMR9vYm6XcntNEpEWSTyb0oo1ur36TwLL8gPzGsroBcgEG0T5GfVFTI/s72-c/1113199164_ba7227c087_o.jpg" width="72"/><thr:total>5</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5172310849636966878.post-3494309202838210954</guid><pubDate>Fri, 27 Aug 2010 07:25:00 +0000</pubDate><atom:updated>2010-08-27T12:55:18.968+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">bugs</category><category domain="http://www.blogger.com/atom/ns#">microsoft</category><category domain="http://www.blogger.com/atom/ns#">software</category><category domain="http://www.blogger.com/atom/ns#">technology</category><category domain="http://www.blogger.com/atom/ns#">virtualbox</category><category domain="http://www.blogger.com/atom/ns#">windows</category><title>After BSOD -- Windows Se7en</title><description>As most of my readers know my day-to-day desktop OS is Ubuntu (Linux). However I still use Windows (on VirtualBox) in certain cases, usually software testing. These days I'm involved in some work that involve 'eavesdropping' on COM port for nothing but පිටිපස්සේ අමාරුව. :P&lt;br /&gt;
&lt;br /&gt;
When I switch from seamless mode to windowed mode, the machine held itself. On the top there was a greenish stripe with some random dots, and mouse pointer animation has stopped. However I could move the mouse over -- of course I should be able to do that since it supports mouse pointer integration.&lt;br /&gt;
&lt;br /&gt;
I waited about 5 mins for the VM to respond; and there was no response and I rebooted. After reboot I got to know that it was a BSOD :P . I never knew before -- so no screenshot.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiT0seDqyBnCyPLgEc6iFxiFgy6TolRQ3xaxjYrhZqBg1CluEdV-nOg8QleU5agIeGh8EOh68BUm8ybNI_bapPnhYUG_HX1iMkFtN32xdtNNelmDaANwQ2ADsbns7cSP37XsDMFULqOlnc/s1600/blue.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="312" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiT0seDqyBnCyPLgEc6iFxiFgy6TolRQ3xaxjYrhZqBg1CluEdV-nOg8QleU5agIeGh8EOh68BUm8ybNI_bapPnhYUG_HX1iMkFtN32xdtNNelmDaANwQ2ADsbns7cSP37XsDMFULqOlnc/s400/blue.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
So that's how BSOD in Windows Se7en on VirtualBox! (It's not really blue :P )</description><link>http://portal.shaakunthala.com/2010/08/after-bsod-windows-se7en.html</link><author>noreply@blogger.com (ශාකුන්තල | Shaakunthala)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiT0seDqyBnCyPLgEc6iFxiFgy6TolRQ3xaxjYrhZqBg1CluEdV-nOg8QleU5agIeGh8EOh68BUm8ybNI_bapPnhYUG_HX1iMkFtN32xdtNNelmDaANwQ2ADsbns7cSP37XsDMFULqOlnc/s72-c/blue.png" width="72"/><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5172310849636966878.post-16956122036927034</guid><pubDate>Sat, 17 Jul 2010 17:03:00 +0000</pubDate><atom:updated>2010-07-18T01:23:02.740+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">facebook</category><category domain="http://www.blogger.com/atom/ns#">hacking</category><category domain="http://www.blogger.com/atom/ns#">privacy</category><category domain="http://www.blogger.com/atom/ns#">security</category><category domain="http://www.blogger.com/atom/ns#">social</category><category domain="http://www.blogger.com/atom/ns#">technology</category><category domain="http://www.blogger.com/atom/ns#">web</category><title>Be Aware of Social Engineering | Know Your Weaknesses</title><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFSDBntVp7Ix5yKePCX3Pi6Kg4uv3aKsN8GTbAXiiCPwFOfZRUG0gcGpX6Tc46bpgwoBTYMyBZ4XM2u3qOSEl5ahzFNcL9X6ERvfNp-3hxVoBTMcLH36pdLomjCTgo6sljVMjf2Gq6GI0/s1600/Exclamation_mark_red.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFSDBntVp7Ix5yKePCX3Pi6Kg4uv3aKsN8GTbAXiiCPwFOfZRUG0gcGpX6Tc46bpgwoBTYMyBZ4XM2u3qOSEl5ahzFNcL9X6ERvfNp-3hxVoBTMcLH36pdLomjCTgo6sljVMjf2Gq6GI0/s200/Exclamation_mark_red.png" width="180" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Email account hacked? Somebody has accessed your personal email?? If you have experienced this before, surely this blog post will be useful. Today I'm writing this note for those who do not have much experience with the Internet and WWW.&lt;br /&gt;
&lt;br /&gt;
First of all, we'll follow up a small hypothetical case. Suppose I am a novice computer user; like one of the most of our community. I have a Facebook account. One day, a nice lady appears in... violah! She wants to be my friend!! Of course I don't know her... but who cares? She's at my doorstep, knocking my door. Accepted! (And she's here for a Relationship, Dating,.... blah blah)&lt;br /&gt;
&lt;br /&gt;
After some time... it looks like something has gone wrong... I can't login to my Facebook account!!! Oh Jeasus..! Some weird status updates on my wall.... :( What on Earth is happening?&lt;br /&gt;
&lt;br /&gt;
May be resetting my Facebook password may work. So I'm trying the “Forgot password” link. OMG!!! I can't access my email account...!! It's HACKED!!! O_o&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;(phone rings)&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
“&lt;i&gt;Hello, is this J?&lt;/i&gt;”&lt;br /&gt;
&lt;br /&gt;
“Yes,&amp;nbsp;&lt;i&gt;Speaking...&lt;/i&gt;”&lt;br /&gt;
&lt;br /&gt;
“&lt;i&gt;Idiot! What's the meaning of that $#$%# email you have sent to me????&lt;/i&gt;”&lt;br /&gt;
&lt;br /&gt;
“&lt;i&gt;Hey I'm sorry; I'm really sorry... my email account was hacked by someone. I didn't send that by myself... somebody has taken over.... believe me,.. sorry..........!!!!&lt;/i&gt;”&lt;br /&gt;
&lt;br /&gt;
(conversation continues, and so and so)&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
Fine. The story is enough for us. Let us see what has really happened. The nice lady is actually an online predator. In reality, 'she' might potentially be 'he'. Remember the second training that Morpheus gives to Neo in the movie Matrix? Yes, &lt;a href="http://video.google.com/videoplay?docid=-4966097245128487948&amp;amp;hl=en#" target="_blank"&gt;the lady in red dress&lt;/a&gt;!&lt;br /&gt;
&lt;br /&gt;
The very first advice that I might give you is, do not accept friend requests from unknown people on whatever social networking website you are using. It's always better to limit your connections to those who you know in reality. If the lady is too cute to be denied, you can just ask somebody and find out who she really is.&lt;br /&gt;
&lt;br /&gt;
Then, how was (s)he able to hijack your all the accounts? I'm making one assumption here, that the victim in the above example is bit lazy in remembering passwords. So he uses his birthday as the email password!&lt;br /&gt;
&lt;br /&gt;
(S)he just looks at your Facebook profile info, and then finds the victim's email and birthday on it. Suppose it's 06 July 1988. The predator might try &lt;b&gt;880706&lt;/b&gt; on his/her first attempt. May be (s)he will fail. There is a second attempt... and of course subsequent attempts. So (s)he may re-attempt with,&lt;br /&gt;
&lt;b&gt;060788&lt;br /&gt;
070688&lt;br /&gt;
07061988&lt;br /&gt;
19880706&lt;br /&gt;
…&lt;br /&gt;
…&lt;/b&gt;&lt;br /&gt;
… and so on...&lt;br /&gt;
&lt;br /&gt;
If the victim has set one of those as the email password, and if our 'nice lady' has been able to match it, accidentally or somehow... what will happen?&lt;br /&gt;
&lt;br /&gt;
You might have used your email account to create accounts/ profiles on various web-based services such as Facebook and Twitter. Almost all of them have the 'password reset' (or 'forgot password') feature, directly associated with your email accont. This means your email account is the one that you should keep eye on most. It's like the queen bee in a population. Once somebody has access, they can do almost anything.&lt;br /&gt;
&lt;br /&gt;
So, now in our case, not only the email but also, &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;(S)he can overtake victim's Facebook account&lt;/li&gt;
&lt;li&gt;(S)he can overtake victim's eBay Account&lt;/li&gt;
&lt;li&gt;(S)he can overtake victim's Paypal Account&lt;/li&gt;
&lt;/ul&gt;Panic!!&lt;br /&gt;
&lt;br /&gt;
Then, my next point goes like this,... &lt;br /&gt;
Never use your sensitive personal information to fomulate passwords. May be your birthday, name of the spouce, phone number, national ID card/ social security number – avoid useing them in passwords.&lt;br /&gt;
&lt;br /&gt;
Those who know your personal information can GUESS your password. And that's what we call “Social Engineering”!&lt;br /&gt;
&lt;br /&gt;
A good password should consist of capital letters, simple letters, numbers, and punctuation. Also, it should not be less than 8 characters. Preferred length for a stong password is 14 characters and as mentioned above.&lt;br /&gt;
&lt;br /&gt;
Finally, see it... You do “&lt;b&gt;Social Networking&lt;/b&gt;”; and they do “&lt;b&gt;Social Engineering&lt;/b&gt;”... Be aware..!&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
The above case was not something that I have experienced in my real life, but I can show you dozens of people who have had this real world nightmare.&lt;br /&gt;
&lt;br /&gt;
So, thanks for reading... take your time and think... it's about your privacy. Ciao.........!!!!!! :-)</description><link>http://portal.shaakunthala.com/2010/07/be-aware-of-social-engineering-know.html</link><author>noreply@blogger.com (ශාකුන්තල | Shaakunthala)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFSDBntVp7Ix5yKePCX3Pi6Kg4uv3aKsN8GTbAXiiCPwFOfZRUG0gcGpX6Tc46bpgwoBTYMyBZ4XM2u3qOSEl5ahzFNcL9X6ERvfNp-3hxVoBTMcLH36pdLomjCTgo6sljVMjf2Gq6GI0/s72-c/Exclamation_mark_red.png" width="72"/><thr:total>7</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5172310849636966878.post-8103641043941855255</guid><pubDate>Mon, 05 Jul 2010 12:02:00 +0000</pubDate><atom:updated>2014-03-25T19:16:40.748+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">asia</category><category domain="http://www.blogger.com/atom/ns#">career</category><category domain="http://www.blogger.com/atom/ns#">education</category><category domain="http://www.blogger.com/atom/ns#">icta</category><category domain="http://www.blogger.com/atom/ns#">media</category><category domain="http://www.blogger.com/atom/ns#">pacific</category><category domain="http://www.blogger.com/atom/ns#">technology</category><category domain="http://www.blogger.com/atom/ns#">web</category><title>Join Asia Pacific Telecenter Network!</title><description>The &lt;a href="http://en.wikipedia.org/wiki/Asia-Pacific_Telecentre_Network"&gt;Asia Pacific Telecentre Network&lt;/a&gt; web portal just got a new domain name, &lt;a href="http://www.aptn.asia/"&gt;www.aptn.asia&lt;/a&gt; . Now you can find your regional telecenter network by entering easy URL, &lt;a href="http://www.aptn.asia/"&gt;www.aptn.asia&lt;/a&gt; .&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.aptn.asia/" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://www.freeimagehosting.net/uploads/20801a9680.gif" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;a href="http://www.aptn.asia/"&gt;Join today..! Discus, blog, share your ideas...&lt;/a&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;</description><link>http://portal.shaakunthala.com/2010/07/join-asia-pacific-telecenter-network.html</link><author>noreply@blogger.com (ශාකුන්තල | Shaakunthala)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5172310849636966878.post-3320736316690302588</guid><pubDate>Wed, 14 Apr 2010 09:12:00 +0000</pubDate><atom:updated>2010-04-14T14:44:08.852+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">facebook</category><category domain="http://www.blogger.com/atom/ns#">games</category><category domain="http://www.blogger.com/atom/ns#">leisure</category><category domain="http://www.blogger.com/atom/ns#">privacy</category><category domain="http://www.blogger.com/atom/ns#">security</category><category domain="http://www.blogger.com/atom/ns#">technology</category><category domain="http://www.blogger.com/atom/ns#">web</category><title>Is it a legit Facebook app?</title><description>Hi folks, just a small story with four screenshots...&lt;br /&gt;
&lt;br /&gt;
If you use Facebook, you might have got game/application requests from&amp;nbsp; your 'friends'. But, did you know that some of those requests are actually not made by your friend? He/she might even doesn't know. They just add the application, and then the application automatically sends requests to each friend. And you think that they might get upset, and Allow the app.&lt;br /&gt;
&lt;br /&gt;
In some cases, the application can even steal our privacy. So who do we get aware? Just go through the following screenshots:&lt;br /&gt;
(please click on each screenshot if you can't read them properly) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwappBvtJ4NAt5J02HuIxMkG-92NtFv4jlL61BU_3Bk3H5NY9Ea-s6CZTI6bIrygfrm0W-kmTsxv5wjuhfiROy5wQoqDsIU5AmjgSgLlMTI25kiLuNhM-mK9k_AWKh1bIA8wI7gML_Jlo/s1600/step1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="176" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwappBvtJ4NAt5J02HuIxMkG-92NtFv4jlL61BU_3Bk3H5NY9Ea-s6CZTI6bIrygfrm0W-kmTsxv5wjuhfiROy5wQoqDsIU5AmjgSgLlMTI25kiLuNhM-mK9k_AWKh1bIA8wI7gML_Jlo/s400/step1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Note the fake application icon, and five-star rating.&lt;/div&gt;&lt;div style="text-align: center;"&gt;Click on the application's name (that I've highlighted) to learn more about the application...&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdy4aXKjF1IezZZg-JOjCx5gryvXaahvN2f2ye5uXllmhdIP2Bd5MJGn_ChaECvJfxaPbg8FtyoGPuK30M8I2sb-8T0Oz4UVLjNekCq8T3FIa-y5nHKZ_vlrgXR5geRHkw4iHmPPLIyGU/s1600/step2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="227" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdy4aXKjF1IezZZg-JOjCx5gryvXaahvN2f2ye5uXllmhdIP2Bd5MJGn_ChaECvJfxaPbg8FtyoGPuK30M8I2sb-8T0Oz4UVLjNekCq8T3FIa-y5nHKZ_vlrgXR5geRHkw4iHmPPLIyGU/s400/step2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Look carefully, the app holds the Facebook logo as it's logo, but, this is NOT developed by Facebook! (see the left side pane)&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKnqZLgdvrLye_knOUdSi41iM4RvP7QWmQYhf-5oFrU_efjheD2pcWDi3QmMP1kZID56aDDB0LDjhHjWWhuyCcPcGbZv2vgWr7PqJQAjDYvq3Dys0KiT90eT8-Q8WZKLgHXj3bgxOMMpU/s1600/step3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="312" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKnqZLgdvrLye_knOUdSi41iM4RvP7QWmQYhf-5oFrU_efjheD2pcWDi3QmMP1kZID56aDDB0LDjhHjWWhuyCcPcGbZv2vgWr7PqJQAjDYvq3Dys0KiT90eT8-Q8WZKLgHXj3bgxOMMpU/s400/step3.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Go to the Reviews tab and see the comments from the community. The TRUTH!!!&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1GpzSNq82lF3tq09qocPxKXvZ89rdoQHOnPfo2NTKwaf_vJuww3NYgFHuER1J6sd3BpWlnvK_7pglGaTLo8AXGBtD-Mwel5g0wFppL0gDDUruHvSx4AQTuDCJvUj8xS_gxrJX4TLqpvU/s1600/step4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="258" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1GpzSNq82lF3tq09qocPxKXvZ89rdoQHOnPfo2NTKwaf_vJuww3NYgFHuER1J6sd3BpWlnvK_7pglGaTLo8AXGBtD-Mwel5g0wFppL0gDDUruHvSx4AQTuDCJvUj8xS_gxrJX4TLqpvU/s400/step4.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;And finally, you might want to &lt;b&gt;Block&lt;/b&gt; the application, so you won't get requests anymore... :-)&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
&lt;b&gt;After Facebook has introduced their new privacy model, things have become ever worst. They have made some limits on capability of blocking stuff, and eventually we get addicted. Facebook is marketing our privacy. All they want us to spend more on Facebook. We fools trap in their strategies - they make profit - and we make loss to our boss.&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;So think wisely. &lt;span style="color: red;"&gt;USE FACEBOOK, BUT DON'T LET FACEBOOK TO USE YOU!&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
And finally I must say,.... I willingly misspell Facebook founder's name,... &lt;b&gt;SUCKERberg&lt;/b&gt;!!! :-)</description><link>http://portal.shaakunthala.com/2010/04/is-it-legit-facebook-app.html</link><author>noreply@blogger.com (ශාකුන්තල | Shaakunthala)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwappBvtJ4NAt5J02HuIxMkG-92NtFv4jlL61BU_3Bk3H5NY9Ea-s6CZTI6bIrygfrm0W-kmTsxv5wjuhfiROy5wQoqDsIU5AmjgSgLlMTI25kiLuNhM-mK9k_AWKh1bIA8wI7gML_Jlo/s72-c/step1.png" width="72"/><thr:total>5</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5172310849636966878.post-6417189914435752994</guid><pubDate>Sun, 28 Feb 2010 14:00:00 +0000</pubDate><atom:updated>2010-02-28T19:43:26.015+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">beach</category><category domain="http://www.blogger.com/atom/ns#">fun</category><category domain="http://www.blogger.com/atom/ns#">journey</category><category domain="http://www.blogger.com/atom/ns#">leisure</category><category domain="http://www.blogger.com/atom/ns#">photography</category><category domain="http://www.blogger.com/atom/ns#">travel</category><title>Tangalle, Sri Lanka – 16/Feb/2010</title><description>Hi folks, since I wrote my &lt;a href="http://portal.shaakunthala.com/2010/01/attack-and-defence.html"&gt;last post on a malware attack&lt;/a&gt; that I had to defend, still didn't find any interesting technological stuff to work on. So no blogging. :( Also, I was so busy with examination at &lt;a href="http://www.ucsc.cmb.ac.lk/"&gt;UCSC&lt;/a&gt;,... ohh I hate cramming and re-writing stuff! :-S&lt;br /&gt;
&lt;br /&gt;
Anyway, there's a good news too. Our internships begin this semester. I have been able to pass my very first job interview and now I'm about to go for my very first job! :) It's gonna start on 2nd of March and I wonder whether time would permit me for more blogging since the start. :|&lt;br /&gt;
&lt;br /&gt;
By the time, on 16th, I had a visit to a one of my relatives living in &lt;a href="http://en.wikipedia.org/wiki/Tangalle"&gt;Tangalle&lt;/a&gt;. We spent most of that day at beach, and I have been able to take some remarkable captures with my &lt;a href="http://www.sonyericsson.com/cws/products/mobilephones/overview/k770i"&gt;K770i&lt;/a&gt;. Photography has become one of my hobbies since the day I bought my phone. ;) Hell yeah, it's an amazing beach in Sri Lanka.&lt;br /&gt;
&lt;br /&gt;
So I thought of sharing my captres with the World. All photos are available under the &lt;a href="http://creativecommons.org/licenses/by-sa/3.0/"&gt;Creative Commons Attribute-Share Alike 3.0 Unported&lt;/a&gt; license. Some will appear in this post, and everything is available for download.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;---&lt;br /&gt;
&lt;div style="text-align: left;"&gt;Please click on the images to see full resolution. &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMlj4rDky5rUnfEvrp0vSFJRM26_Wl8glW4k2ulbF3Nc4tchEk5I702SpB4EdjQu852FgXPHAxLtGqQ9yUERNpK2ZllzTBW2iEw8ye-T1afClwMLSzTuhZ0vDk64MTjaDhCG8K8nF0rgE/s1600-h/DSC01828.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="301" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMlj4rDky5rUnfEvrp0vSFJRM26_Wl8glW4k2ulbF3Nc4tchEk5I702SpB4EdjQu852FgXPHAxLtGqQ9yUERNpK2ZllzTBW2iEw8ye-T1afClwMLSzTuhZ0vDk64MTjaDhCG8K8nF0rgE/s400/DSC01828.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;sea shells&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgof3G07WmCEz8APklEfD0N2i66mO7kShlyO0GEY1LiNovnXYiHi6tWLYWd3076rOGF3cUieXiXVQs4SRB_RSQhbOxCpcvp5gkXDl0Z6tmFDdCsViOU1blWBMXJgVIWW67rHdcJBdnqcTs/s1600-h/DSC01835.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="302" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgof3G07WmCEz8APklEfD0N2i66mO7kShlyO0GEY1LiNovnXYiHi6tWLYWd3076rOGF3cUieXiXVQs4SRB_RSQhbOxCpcvp5gkXDl0Z6tmFDdCsViOU1blWBMXJgVIWW67rHdcJBdnqcTs/s400/DSC01835.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;clear seawater &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPSEp0WyffUGx2y8bMjWRroXsHTuEU73KSH5V2q_hnrJeXhIE-m0UTBts-7hp5M-CENNyVU3Sj5Hg8aWDUzxJOENgDK5mxuKxLMfl7VPzdqgcWGXk9OvRu-77zMLWjW3NFnPcM53rqjBY/s1600-h/DSC01841.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="302" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPSEp0WyffUGx2y8bMjWRroXsHTuEU73KSH5V2q_hnrJeXhIE-m0UTBts-7hp5M-CENNyVU3Sj5Hg8aWDUzxJOENgDK5mxuKxLMfl7VPzdqgcWGXk9OvRu-77zMLWjW3NFnPcM53rqjBY/s400/DSC01841.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;an &lt;a href="http://en.wikipedia.org/wiki/Sea_urchin"&gt;urchin&lt;/a&gt; - not so away from the shore&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC4NJr92jo3G1ge055Jb2VL9lznaJO8tplA13RXvn4vM144GWlo50Cw0GRSaCn97lHRuZvyFgfSO2NOV7JlaPGSckSQtxQoYONT8OCicBdWmAvLASnSWLBAF8gnilJqzfkL_NcZyflBj0/s1600-h/DSC01856.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="302" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC4NJr92jo3G1ge055Jb2VL9lznaJO8tplA13RXvn4vM144GWlo50Cw0GRSaCn97lHRuZvyFgfSO2NOV7JlaPGSckSQtxQoYONT8OCicBdWmAvLASnSWLBAF8gnilJqzfkL_NcZyflBj0/s400/DSC01856.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;sunlight, urchin, and the rock - i put one on the rock and took this..&lt;/span&gt; &lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqnapoYhhAr6kcMHQNg6xBMFa_zyT5oKfdIm_eKcVdmGvVJ4PARpToMCniCUeVu41JAH7x53tFgAnmUvjdBtdlLnwFBzM_1yJY5D_exb24yZ-bpr59Er5NZSWmsTnPKVir02Z7XmYl_wE/s1600-h/DSC01879.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="302" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqnapoYhhAr6kcMHQNg6xBMFa_zyT5oKfdIm_eKcVdmGvVJ4PARpToMCniCUeVu41JAH7x53tFgAnmUvjdBtdlLnwFBzM_1yJY5D_exb24yZ-bpr59Er5NZSWmsTnPKVir02Z7XmYl_wE/s400/DSC01879.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;a common bivalve mollusc often served as food in sri lanka&lt;br /&gt;
however i don't know a proper name, just know the taste :P may be it's &lt;a href="http://en.wikipedia.org/wiki/Blue_mussel"&gt;blue mussels&lt;/a&gt;?&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFhfi48Z_zCTT6L6GDxzHj_RawF6YhTRmf8FBuPm2qt7FjrWZPjDNDnyurAaOhccd8TFw-lXu4Oj1VhHI6mfXKWhD3muJFa5yBBsqYhpVRbr18pk6I2Ejo6G9LqViVCAiCUfRBled33EU/s1600-h/DSC01894.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="302" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFhfi48Z_zCTT6L6GDxzHj_RawF6YhTRmf8FBuPm2qt7FjrWZPjDNDnyurAaOhccd8TFw-lXu4Oj1VhHI6mfXKWhD3muJFa5yBBsqYhpVRbr18pk6I2Ejo6G9LqViVCAiCUfRBled33EU/s400/DSC01894.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;coast - you can see fishermen's boats&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUpKmEM86nGY3fbtppLxRgBc3Uxk0lXkYT8OxAcZlAcQTrg0SEtPK-YU1PCdLI6Hd4RJ3JxHPcI_RrrV3SaeCQhVODgwp5Pzl7A6-DSLY46R1JJyhLZGb4vo3DJ4JKF6zAKbBTMqGH67U/s1600-h/DSC01905.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="302" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUpKmEM86nGY3fbtppLxRgBc3Uxk0lXkYT8OxAcZlAcQTrg0SEtPK-YU1PCdLI6Hd4RJ3JxHPcI_RrrV3SaeCQhVODgwp5Pzl7A6-DSLY46R1JJyhLZGb4vo3DJ4JKF6zAKbBTMqGH67U/s400/DSC01905.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;fishermen launching the boat that carries large seine for fishing&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="text-align: center;"&gt;---&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: left;"&gt;Had a nice and remarkable day,... and here's the download link for the entire collection (63 photos). And... one more thing to promote my beloved open source software... photo editing was done using &lt;a href="http://www.gimp.org/"&gt;GIMP&lt;/a&gt; on &lt;a href="http://www.ubuntu.com/"&gt;Ubuntu&lt;/a&gt;. :)&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="border: medium solid; text-align: center;"&gt;&lt;a href="http://www.4shared.com/file/231490696/7846c668/Tangalle_-_20100216.html
" imageanchor="1"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhxdQgWziTZQ2QgydiNngiqjLvEJ3ocUANkWL7BALCPXaTXZyyU9IPVMEeWys5A8g2ffUSXVLhKM-4Ed1fk1V9lk4IW_zc8ozxR-74nDMYqsdxujeWcj5JkeWnCjMt9crTtCbsYQp96Og/s320/icon.png" /&gt;&lt;br /&gt;
Download&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://creativecommons.org/licenses/by-sa/3.0/" rel="license"&gt;&lt;img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-sa/3.0/88x31.png" style="border-width: 0pt;" /&gt;&lt;/a&gt;&lt;br /&gt;
This &lt;span href="http://purl.org/dc/dcmitype/StillImage" rel="dc:type" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;work&lt;/span&gt; by &lt;a href="http://www.shaakunthala.com/" property="cc:attributionName" rel="cc:attributionURL" xmlns:cc="http://creativecommons.org/ns#"&gt;Sameera Shaakunthala&lt;/a&gt; is licensed under a &lt;a href="http://creativecommons.org/licenses/by-sa/3.0/" rel="license"&gt;Creative Commons Attribution-Share Alike 3.0 Unported License&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Thanks for reading!</description><link>http://portal.shaakunthala.com/2010/02/tangalle-sri-lanka-16feb2010.html</link><author>noreply@blogger.com (ශාකුන්තල | Shaakunthala)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMlj4rDky5rUnfEvrp0vSFJRM26_Wl8glW4k2ulbF3Nc4tchEk5I702SpB4EdjQu852FgXPHAxLtGqQ9yUERNpK2ZllzTBW2iEw8ye-T1afClwMLSzTuhZ0vDk64MTjaDhCG8K8nF0rgE/s72-c/DSC01828.JPG" width="72"/><thr:total>6</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5172310849636966878.post-2932829090505784390</guid><pubDate>Wed, 06 Jan 2010 12:34:00 +0000</pubDate><atom:updated>2014-03-25T19:16:40.742+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">administration</category><category domain="http://www.blogger.com/atom/ns#">career</category><category domain="http://www.blogger.com/atom/ns#">coding</category><category domain="http://www.blogger.com/atom/ns#">foss</category><category domain="http://www.blogger.com/atom/ns#">hacking</category><category domain="http://www.blogger.com/atom/ns#">html</category><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">programming</category><category domain="http://www.blogger.com/atom/ns#">security</category><category domain="http://www.blogger.com/atom/ns#">software</category><category domain="http://www.blogger.com/atom/ns#">technology</category><category domain="http://www.blogger.com/atom/ns#">web</category><title>Attack and the Defence</title><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGwpGM0VMLDrniZPW6xGNw3_jNGosxa4vrmEGWr-u28vZYlwnAnVi60-pIm2h0WYTCfalz_TXBmPUufQfHR620KR1QQjbYsw7KO-nWSE6B68LqXVss4RW3YVc-pGOZ_BQwU3Nw1x5MdzY/s200/fingerprint.png" /&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Hi dear readers! First of all, &lt;b&gt;&lt;span style="background-color: #f9cb9c; color: blue;"&gt;I WISH YOU A HAPPY AND PROSPEROUS NEW YEAR WITH LOT OF ACHIEVEMENTS, GLORY AND JOYNESS&lt;/span&gt;&lt;/b&gt;!! Anyway, 2012 is also approaching.. :D (just kidding) &lt;br /&gt;
&lt;br /&gt;
After a long long time, I've got an interesting problem to solve. I'm not an expert. I'm just writing my own way that I followed in the situation.&lt;br /&gt;
&lt;br /&gt;
This happened during the Christmas days in 2009, and after all, I feel it like a Christmas gift, seriously! :-) I wrote two blog posts in my native language, I you can read, just visit the following links. You'll find it more interesting than this one if you can read. :)&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;a href="http://blog.shaakunthala.com/2009/12/hacker.html"&gt;http://blog.shaakunthala.com/2009/12/hacker.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.shaakunthala.com/2009/12/bash.html"&gt;http://blog.shaakunthala.com/2009/12/bash.html&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;/ol&gt;Alright, then... I'm responsible for the administration of several websites. As I feel, an administrator's job is very much similar to the job of a sea captain. He has to look after the system, like his own... be vigilant of the attacks and other problems,.. and many more work.&lt;br /&gt;
&lt;br /&gt;
Recently, I've been notified that one of my sites is down. An empty page with an error message is displayed when the site is visited, and according to that error message, there's an error on &lt;b&gt;index.php&lt;/b&gt;, line 38 and the character &lt;b&gt;&amp;lt;&lt;/b&gt; is the cause. This is the way how PHP shows error messages. As my immediate actions, I logged on to the FTP server where our website is hosted and opened the &lt;b&gt;index.php&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
The website was developed using a CMS. The code looked some kind of strange for me because it had no corresponding &lt;b&gt;?&amp;gt;&lt;/b&gt; tag for its beginning &lt;b&gt;&amp;lt;php&lt;/b&gt; tag. An unknown HTML/ Javascript code snippet has appended at the end of the file.&lt;br /&gt;
&lt;br /&gt;
Yes, that's the cause of that error. Somebody has injected a malicious code snippet at the end of the index document, and the PHP engine on the server side has tried to interpret it as PHP. As this has caused a syntax error in PHP, the whole site has gone down as the final result.&lt;br /&gt;
&lt;br /&gt;
Here's the structure of &lt;b&gt;index.php&lt;/b&gt; :&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: php; highlight: [6]" name="code"&gt;&amp;lt;?php
/* PHP
codings of
CMS */

&amp;lt;script&amp;gt; // The foreign Javascript code snippet &amp;lt;/script&amp;gt;

&lt;/pre&gt;What I did is, just copy-pasted the code into a separate text file (for analyzing), and cleaned &lt;b&gt;index.php&lt;/b&gt;. Then everything looked normal, but sooner I got to know, actually it is not.&lt;br /&gt;
&lt;br /&gt;
I've never experienced such a situation before. I didn't know where to start, and what to do. But I wanted to find out what the code says. It was some kind of scary and big JavaScript code in a single line. However, it's not so scary!&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEincL3KQsbgYaxcM42Ag0009cZAE9Gr0p16pvF8Eprt00R1_kDYDmQWUeQAmdKnweNZdeNACw2gDU8MzexfAdTOcLWKUiypD2A85IDZT3eqyNKmD5ZZskOhdy3D2_hJfCBt2Fn0KOeOePFm/s1600-h/code1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEincL3KQsbgYaxcM42Ag0009cZAE9Gr0p16pvF8Eprt00R1_kDYDmQWUeQAmdKnweNZdeNACw2gDU8MzexfAdTOcLWKUiypD2A85IDZT3eqyNKmD5ZZskOhdy3D2_hJfCBt2Fn0KOeOePFm/s640/code1.png" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;Okey,... a closer look...&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNdMCwhAb-8Wjx7TJdtrLf6kGQaVVToohT2ZQPC1kC8jIhBfaW6N9nLfR4HhcIVSNq6dAkUkUGoZtnF6DEn7-1MiW4HZ3s2RVXCccUph-abeLI28wlP8_cd4RMfJjNOaVHaSUaif7XUIae/s1600-h/code2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNdMCwhAb-8Wjx7TJdtrLf6kGQaVVToohT2ZQPC1kC8jIhBfaW6N9nLfR4HhcIVSNq6dAkUkUGoZtnF6DEn7-1MiW4HZ3s2RVXCccUph-abeLI28wlP8_cd4RMfJjNOaVHaSUaif7XUIae/s640/code2.png" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;Right... and this is our troublemaker...&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqX3d11EXxeG4vowPd_V2BLGmeyuCqQvjSmQQ-spH7TUEzBiqS9_d6S4xwowcyDVbby2yelRfuWKAFLfrOxHqH3V72b-lQv17lauWQ35EOjnQZIT5gKie1FzBezOGh9BomFvzSL5X1Zcvu/s1600-h/code3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqX3d11EXxeG4vowPd_V2BLGmeyuCqQvjSmQQ-spH7TUEzBiqS9_d6S4xwowcyDVbby2yelRfuWKAFLfrOxHqH3V72b-lQv17lauWQ35EOjnQZIT5gKie1FzBezOGh9BomFvzSL5X1Zcvu/s640/code3.png" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;Just see carefully,.. you don't need to be a JavaScript guru. :-)&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNGz7Ifdg4Bm5blgRDVHKa5KzvU2aQjaQ32Dcq2JeplUuBCQ_wX7ytEv2S9AGWCExvHSeObtkucCO4z0iIGGdG9pRDbAgaE-zJMnuGUYfJF7tthzvsFxZ-U9a20MMQKNdkRUyh08sSjgD6/s1600-h/code4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNGz7Ifdg4Bm5blgRDVHKa5KzvU2aQjaQ32Dcq2JeplUuBCQ_wX7ytEv2S9AGWCExvHSeObtkucCO4z0iIGGdG9pRDbAgaE-zJMnuGUYfJF7tthzvsFxZ-U9a20MMQKNdkRUyh08sSjgD6/s640/code4.png" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;It's not a big deal to identify such big codes. Vigilance is what matters here. They have used the &lt;b&gt;replace ()&lt;/b&gt; method in JavaScript. See... strategically hiding text by just randomly mixing punctuation, retrieving the original text at run time. Wow!&lt;br /&gt;
&lt;br /&gt;
Finally, it's this:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKbHVNdrqYU_FMabOaLwmu3vArkVHkLwJygYY53TYf96B0A4terc0D3OsX3HZ-79dmZKuGVYNrPBdZTZHII98Sr7L6q1wdkdWjDg-VRjSau40FBosq71y3Wl46tC8LcSKYLmLvMzSboB6i/s1600-h/code5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKbHVNdrqYU_FMabOaLwmu3vArkVHkLwJygYY53TYf96B0A4terc0D3OsX3HZ-79dmZKuGVYNrPBdZTZHII98Sr7L6q1wdkdWjDg-VRjSau40FBosq71y3Wl46tC8LcSKYLmLvMzSboB6i/s640/code5.png" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;Looks like it has been created for phishing purposes... but I'm not sure exactly. However, this URL points to an empty page. What I expected was a JavaScript code, but this resulted nothing... I don't know a reason. :-/&lt;br /&gt;
&lt;br /&gt;
Within few hours after fixing the issue, I got to know that our website is down again. The same thing has happened, same style, but the malicious code resulted a different URL. I fixed it again, and started thinking... what on earth could be happened here? :-O&lt;br /&gt;
&lt;br /&gt;
Whoever the attacker has done is injecting some malicious code into the index document, and letting it execute at the client's (browser) end. However, as the code has blindly appended at the end of the file despite the structure of it, I came to a conclusion -- definitely this is done by a bot / script or some other automated mechanism.&lt;br /&gt;
&lt;br /&gt;
So, I did the same operation as before for cure, and then tried to find some solution. Yes, it's gonna be a new experience. To prevent further attacks, I put the following line at the end of the &lt;b&gt;index.php&lt;/b&gt; file. It prevented interpreting any code below the line. When I say die!, no further interpretation of code at all. Hence, the site is safe from being down, but the risk is still their till I find where the attack comes from and where the security hole is.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;die ();&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
I tried to find any clue on site logs,.. but no luck. If this attack was carried out through HTTP, site logs (not the CMS logs) should indicate that. What I suspect is, somebody has gained access to the server, and executed a script. By adjusting file permissions on the index document, I found out that the malicious script on the server (or bot) has gained the root access.&lt;br /&gt;
&lt;br /&gt;
Later, I got to know, this has recursed into directory hierarchy through the entire site. And also, I saw that some JavaScript files are also infected. It was shocking! Everything throughout the site can be potentially infected with malicious code and hence unsafe for visitors!! I didn't know how serious the attack was. I have never faced such a situation before, and as the responsible personnel, I have to fix this as soon as possible, with my best efforts.&lt;br /&gt;
&lt;br /&gt;
According to all observations, my conclusion was, this is happened due to the fault of the web hosting provider. I know that CMS' sometimes can contain security holes, but if it was, there should be at least something on the site logs. &lt;br /&gt;
&lt;br /&gt;
All of the above is the summary of my first blog post, mentioned at the top of this post. The next few paragraphs in this post explain how I performed the disinfection.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&amp;nbsp;---&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
The only backup we had was bit old, so I forget the idea of restoring from a bacup archive. The challenge was to find out how serious the attack was, and to disinfect everything.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;What I suspect so far:&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;Every JavaScript file and index document is infected -- but not sure about other text-based file formats.&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;So I have to check each file for malicious code, and then clean them.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
First, I thought of writing a PHP script for the purpose. But, PHP is bit insecure with this work. I know, it's not a big deal to fix the security with PHP, but, I was more interested in bash scripting. As a daily Linux-only computer user, I am very familiar with bash, and feel more reliability with that.&lt;br /&gt;
&lt;br /&gt;
Luckily, the web hosting service provider has offered remote access through ssh. Yes, that's great! I was very keen, the rest's gonna be a party!! ;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here's the match highlights... :P&lt;br /&gt;
&lt;br /&gt;
Access through ssh, compress the entire site, and then download it. This is necessary because the safe way is to keep a backup + do a testing when doing something serious. One mistake, could ruin everything!!&lt;br /&gt;
&lt;br /&gt;
Here we go, ssh&lt;br /&gt;
&lt;pre class="brush: bash" name="code"&gt;$ ssh user@mysite.com
&lt;/pre&gt;&lt;br /&gt;
Create an archive, (make it tar.bz2 for higher compression ratio -- easy to download). Then exit ssh.&lt;br /&gt;
&lt;pre class="brush: bash" name="code"&gt;$ tar cvfj mysite.tar.bz2 mysite/
$ exit
&lt;/pre&gt;&lt;br /&gt;
Download the backup, through ssh copy.&lt;br /&gt;
&lt;pre class="brush: bash" name="code"&gt;$ scp user@mysite.com:/home/user/mysite.tar.bz2 /home/shaakunthala/
&lt;/pre&gt;&lt;br /&gt;
Unpack on my computer, to be tested with the script.&lt;br /&gt;
&lt;pre class="brush: bash" name="code"&gt;$ tar xvjf mysite.tar.bz
&lt;/pre&gt;&lt;br /&gt;
Now, next step is to write the script. Fired up my favourite vim editor, and then started thinking. ;) Before writing the script it's necessary to exactly identify the nature of the malicious code. Here's what I've identified:&lt;ul&gt;&lt;li&gt;If a file is infected, the malicious code is at the end of the file.&lt;/li&gt;&lt;li&gt;The foreign code snippet is different from point to point. But, following text portions can be recognized as a common pattern.&lt;ul&gt;&lt;li&gt;GNU GPL&lt;/li&gt;&lt;li&gt;window.onload&lt;/li&gt;&lt;li&gt;.replace&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Although it seemed like the infection is only with JavaScript and index documents, I refused to accept that. Also, as we didn't have any gigantic files with our website, I decided the script to test all files throughout the site.&lt;/li&gt;&lt;/ul&gt;Although it was such an easy task to write a script for malware removal, I had to separate the program into two scripts because &lt;a href="http://www.linux.net.nz/pipermail/nzlug/2007-April/008537.html"&gt;&lt;b&gt;find -exec&lt;/b&gt; does not recognize functions in bash&lt;/a&gt;. So, here's what I wrote:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="color: #20124d;"&gt;&lt;b&gt;sitefix.sh&lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;&lt;pre class="brush: bash" name="code"&gt;#!/bin/bash
# Author: Sameera Shaakunthala

rm fixlog.txt
rootdir=`pwd`/mysite/
sup=`pwd`"/fixfile.sh"
find $rootdir -exec $sup {} \;
echo "JOB DONE!"
&lt;/pre&gt;&lt;br /&gt;
&lt;div style="color: #20124d;"&gt;&lt;b&gt;fixfile.sh&lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;&lt;pre class="brush: bash" name="code"&gt;#!/bin/bash
# Author: Sameera Shaakunthala

echo "Processing file: "$1
code=`tail --lines=1 $1 | grep "GNU GPL" | grep window.onload | grep .replace`
l=`echo $code | wc -m | awk '{ print $1 }'`

if [ $l -ne 1 ]
then
 lc=`wc -l $1 | awk '{ print $1 }'`
 lc=`expr $lc - 1`
 head $1 -n $lc &amp;gt; tempfile.tmp
 mv tempfile.tmp $1
 echo "File "$1" has been fixed!" | tee -a fixlog.txt
fi
&lt;/pre&gt;&lt;br /&gt;
Now, the next task is the test run on my local machine. If this succeeds, it is safe to run the script on the server.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: bash" name="code"&gt;$ chmod +x sitefix.sh fixfile.sh
$ ./sitefix.sh
&lt;/pre&gt;&lt;br /&gt;
After execution, I checked the fixlog.txt, which is the output log of the script. OMG! 602 infected files!! :-O I vigorously checked some randomly selected files, they were clean, and as everything seemed to be clean, I uploaded the script to the server, and then executed. :)&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: bash" name="code"&gt;$ scp sitefix.sh fixfile.sh user@mysite.com:/home/user
$ ssh user@mysite.com
$ chmod +x sitefix.sh fixfile.sh
$ ./sitefix.sh
&lt;/pre&gt;&lt;br /&gt;
Finally, we have set this as a cron job, till we find the actual security hole.&lt;br /&gt;
&lt;br /&gt;
&lt;b style="background-color: #ead1dc; color: blue;"&gt;The final result was, the disinfection of the entire website, within few minutes.&lt;/b&gt; As I got to know that virus scanners no longer block our website, it was confirmed that the site is clean. Just see the spirit of Linux bash scripting! :)&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #fff2cc; color: blue; text-align: center;"&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Hallelujah!&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Finally, I put a link to a shocking article that must be read... &lt;a href="http://www.scmagazineus.com/every-36-seconds-a-website-is-infected/article/140414/"&gt;Just click and see&lt;/a&gt;! :(&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;b style="color: blue;"&gt;Finally, captain Shaakunthala saved the day, with the support of other captains and sailors, yeah it's an amazing Christmas gift for a newbie administrator! :D&lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;</description><link>http://portal.shaakunthala.com/2010/01/attack-and-defence.html</link><author>noreply@blogger.com (ශාකුන්තල | Shaakunthala)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGwpGM0VMLDrniZPW6xGNw3_jNGosxa4vrmEGWr-u28vZYlwnAnVi60-pIm2h0WYTCfalz_TXBmPUufQfHR620KR1QQjbYsw7KO-nWSE6B68LqXVss4RW3YVc-pGOZ_BQwU3Nw1x5MdzY/s72-c/fingerprint.png" width="72"/><thr:total>4</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5172310849636966878.post-8768027966608276627</guid><pubDate>Thu, 17 Dec 2009 08:05:00 +0000</pubDate><atom:updated>2009-12-18T00:07:57.148+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">education</category><category domain="http://www.blogger.com/atom/ns#">foss</category><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">me</category><category domain="http://www.blogger.com/atom/ns#">past</category><category domain="http://www.blogger.com/atom/ns#">software</category><category domain="http://www.blogger.com/atom/ns#">technology</category><title>How I switched to Linux</title><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh26TNa5uThg7JFOgdiv57cfTk1ykdhVWguYhEn73XYvXSEOblbu9V56UTejQVMKcgT_gKuFnvzQ3D1KjUSGBkknd1BsDv2ewNSVRhrleB8Xp-g58hzftPQQ17Dm1i2mxgUagMoYRA_wUc/s1600-h/linux.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh26TNa5uThg7JFOgdiv57cfTk1ykdhVWguYhEn73XYvXSEOblbu9V56UTejQVMKcgT_gKuFnvzQ3D1KjUSGBkknd1BsDv2ewNSVRhrleB8Xp-g58hzftPQQ17Dm1i2mxgUagMoYRA_wUc/s200/linux.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;Hi all, after about a one month of silence, I've thought of a nice story to share with you readers. How I switched to Linux.... well, I feel it interesting.... don't know how you'll feel. Just read... you don't need to be a geek. :-)&lt;br /&gt;
&lt;br /&gt;
I live in Ambalangoda, 86 kilometers away from the capital of Sri Lanka and at that time the Internet and computers were not so popular in our area. Even I got my own personal computer in 2003. (I'm still talking about the situation before 2003) The main source of information were just newspapers, magazines, and library books. Because of my usual habit of reading everything I have, I got to know that there is something called Linux, some call it RedHat, and it is different from our Windows, we have to use it from the command line, no mouse,.. and blah blah..&lt;br /&gt;
&lt;br /&gt;
However, after I got my own computer in 2003 (which had Windows installed by default -- obviously), I wanted to try out Linux. But, I couldn't find any installation media. And also, at that time I was living inside a 'Matrix' made by Windows, and I eventually forgot Linux.&lt;br /&gt;
&lt;br /&gt;
In 2005, while I was studying for my A Level examination, one of my friends, who was spending his first year as an undergraduate at &lt;a href="http://www.sliit.lk/"&gt;SLIIT&lt;/a&gt;, opened the door of open source to me. And that was Ubuntu! He was one of my closest friends, and we usually discuss technology related stuff and share our knowledge whenever we meet. He said that they study C programming language in their first semester, and the course is based on Linux.&lt;br /&gt;
&lt;br /&gt;
Furthermore, as he introduced it to me, Ubuntu is a type of Linux, and it looks the same as Windows, you can install aside Windows, you can use the mouse, grapical user interface, you have nice themes, but can't play videos and music, and can't install any software that works with Windows.&lt;br /&gt;
&lt;br /&gt;
So, it made me an Alice in the Wonderland, and I was very keen to learn more. I asked, &lt;i&gt;"Don't we need to type a single command?"&lt;/i&gt; (that's what I've heard before). Then he showed me, &lt;i&gt;"Here it is..."&lt;/i&gt; the terminal. For me it was amazing,... totally new and there's a whole World in front of me to explore, but, for most of the same aged individuals, it is not.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;"Can I borrow your copy for two days?"&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;"Hey, it's yours!"&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
He gave me another copy containing two CDs of Ubuntu 5.10, with their logo originally printed on it. One Live CD - One Installation CD. Wow! it was free!!&lt;br /&gt;
&lt;br /&gt;
Canonical, the maintainer of Ubuntu, was shipping large quantities of installation at that time. My friend has ordered 20 copies for re-distribution. But I'm pretty sure that nobody other than both of us were using it till today.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRZvRfJE_V7yaT2WC7LNOq3EBLQ74KuYQrBPkTr33pLJo0exYV1c4Tf7gC_0hzpg8tWvbkDroQascJUIrf8jlE09pMh3EfM5Kt6zZoIeXG784XGpv7y2xfYMF5IzfzmqD7lzyBHqjJhqc/s1600-h/breezy_cover.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRZvRfJE_V7yaT2WC7LNOq3EBLQ74KuYQrBPkTr33pLJo0exYV1c4Tf7gC_0hzpg8tWvbkDroQascJUIrf8jlE09pMh3EfM5Kt6zZoIeXG784XGpv7y2xfYMF5IzfzmqD7lzyBHqjJhqc/s400/breezy_cover.png" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
I installed it on my computer and started using it as my secondary OS, but I still didn't have an Internet connection at home. So, learning was very hard. Several times Windows installer ruined the bootloader and I was helpless. But interestingly, my courage and effort was still there! I still wanted to explore this new world!!&lt;br /&gt;
&lt;br /&gt;
I wanted to join Ubuntu community, but no Internet. Download software for Ubuntu, no Internet. But, although I've felt Ubuntu can do nothing other than consuming three valuable gigabytes of my 20 GB hard drive, the remarkable thing was, I still wanted to use and redistribute!! But again,.. no Internet to make the shipit order. :(&lt;br /&gt;
&lt;br /&gt;
Finally, in 2006, I was lucky to have a dial-up Internet connection at home. I've joined the Ubuntu community, asked lot of questions, answered one or two, and I began learning fast. Still I didn't know what Linux is, haven't even heard the word "kernel", but I was happy with what I have. I also distributed some installation media, about 50 copies were given to various people, but, today, only less that ten of those are still using it.&lt;br /&gt;
&lt;br /&gt;
I was doing Win-Lin dual boot for some time. By reading various stuff, I got to know that there are many distributions. I've used Kubuntu, Edubuntu, Mandriva, Puppy, Knoppix and PCLinuxOS 2007. But none of them were able to suit me like Ubuntu did. I know, it's psychology,... the first impression with the meaning of the word "Ubuntu" -- humanity; it simply didn't let me run away.&lt;br /&gt;
&lt;br /&gt;
In 2007, I entered &lt;a href="http://www.ucsc.cmb.ac.lk/"&gt;University of Colombo School of Computing&lt;/a&gt; as and internal undergraduate, and UCSC is an excellent playground for wannabe Linux geeks. I was studying, studying and studying,... I got to know about the software market, copyrights, law, the FOSS concept, RMS' four freedoms, software licensing, community, what Linux is, it's evolution, the kenel, and all that. So, finally I decided to completely switch to the open source software, rather than sticking into closed Windows.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;i&gt;"Once I get to know about what the Linux is, I will switch"&lt;/i&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
So, roughly seven months ago, I have been able to do it! (most of my colleagues have not) I removed all Windows stuff from my hard drive, re-partitioned it, and installed two distros. One is Ubuntu, and the other is Fedora. Ubuntu is for day-to-day usage and Fedora is for learning purposes. As I had a sound understanding of what Linux is, and how it worked, it was very easy for me to adopt to the new environment.&lt;br /&gt;
&lt;br /&gt;
I'm still an undergraduate at UCSC, and spending my final year. I have gained lots of things thought my experience, and thought my studies. I use Linux at my school desk, I use it at home, I use it on the way to home, I listen to rock, watch TV, do my assignments and projects, collaborate with my friends, continuously learn, blog and have fun,... one system - for everything. Thanks to Linus and RMS!! :-)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Finally, today I feel I am one of the happy Linux users of this World but I know still we have very few happy Linux users in the World. And I am proud to be part of that beneficent community.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Thanks for reading!</description><link>http://portal.shaakunthala.com/2009/12/how-i-switched-to-linux.html</link><author>noreply@blogger.com (ශාකුන්තල | Shaakunthala)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh26TNa5uThg7JFOgdiv57cfTk1ykdhVWguYhEn73XYvXSEOblbu9V56UTejQVMKcgT_gKuFnvzQ3D1KjUSGBkknd1BsDv2ewNSVRhrleB8Xp-g58hzftPQQ17Dm1i2mxgUagMoYRA_wUc/s72-c/linux.jpg" width="72"/><thr:total>7</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5172310849636966878.post-4820203027042239094</guid><pubDate>Sun, 15 Nov 2009 19:55:00 +0000</pubDate><atom:updated>2009-11-16T01:35:58.582+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">foss</category><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">software</category><category domain="http://www.blogger.com/atom/ns#">technology</category><title>Ubuntu 9.10, Karmic Koala</title><description>&lt;div class="separator" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGc9lOCNlgEbX0OcP1CRpr5PIdFqTMGPVmbKTOJ2Gynr1xOZ0FcNLMq8wwK-uOcz6TfdywuQeNLHA6daSn6vVNktOSJSwdDmMXjfxaLicyq_oSLxXfuStaR5xCl4U1ORfGzW229aT7yTs/s200/koala-232x300.jpg" /&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Howdy..! At last, I was lucky enough to receive my copy of the latest &lt;a href="https://wiki.ubuntu.com/KarmicKoala"&gt;Ubuntu 9.10 Karmic Koala&lt;/a&gt;, from &lt;a href="http://www.canonical.com/"&gt;Canonical&lt;/a&gt;. I was silent over past few days because severe lightning ruined my laptop's power adapter. :( My laptop runs without a battery, and it's only power source is the AC adapter. However, I managed to make it work somehow, and at this time, things are bit OK.&lt;br /&gt;
&lt;br /&gt;
Mmm... Ubuntu..! It looks like that Canonical has bit changed their usual way of shipping policies. In earlier releases, they shipped big amounts of installation media. Later, they limited. But now, if you has received the earlier version (9.04) via shipit service, they won't ship the latest version. They would deny the request, and ask you to update the existing version instead. :(&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At glance, the new Ubuntu is OK and friendlier than previous version. Here, I discuss few things I have specially noticed. Some of them are really good, but few things are not.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;GRUB2 (Beta)&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
The bootloader used in earlier versions of Ubuntu is GRUB. But now it has been replaced by GRUB2 which is still in beta. GRUB2 provides more sophisticated graphical interface than GRUB Legacy. When booting, stage 1.5 is no longer used. Also, GRUB configuration is stored in a file named &lt;b&gt;grub.cfg&lt;/b&gt;, rather than &lt;b&gt;menu.lst&lt;/b&gt;. Configuration file syntax has become changed, and more advanced&amp;nbsp; than legacy.&lt;br /&gt;
&lt;br /&gt;
But, a one serious draw back with GRUB2 that I have noticed is, it no longer supports bootloader password. In my point of view, this is a huge disadvantage since any idiot can adjust kernel parameters in order to gain root access very easily. So what I did is, soon after installing Ubuntu, switched back to GRUB Legacy. If you wish to do that, use the following command:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;$ sudo apt-get install grub&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;$ sudo grub &lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Then overwrite the bootloader as specified in &lt;a href="http://portal.shaakunthala.com/2009/10/how-i-prepared-my-grub-bootable-usb.html"&gt;this article&lt;/a&gt;. Follow the same procedure for your hard drive.&lt;br /&gt;
&lt;br /&gt;
GRUB Legacy works with Ubuntu 9.10 very well, no issues at all. :-)&lt;br /&gt;
&lt;br /&gt;
In distros like Debian, the user is asked to chose the bootloader (whether GRUB, LILO or GRUB2) during installation. But Ubuntu does not. It asks only for the location where bootloader should install. But according to my views, when distributing beta software as a default package for some appliance, the older (stable) version should be kept aside as an option to let the user decide what to install. Because beta software might sometimes dissatisfy the user.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;Encrypted Home Folder&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
This is actually an option provided by &lt;b&gt;ubiquity&lt;/b&gt;, the Ubuntu installer. When you set up your user account during installation, you can either choose to require password to login, or require password to login and decrypt home folder, or automatically login. But, the second option seems like a troublemaker since it makes problems with login if you change your password later.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.google.lk/#hl=en&amp;amp;source=hp&amp;amp;q=karmic+koala+require+password+to+login+and+decrypt+home+folder&amp;amp;btnG=Google+Search&amp;amp;meta=&amp;amp;aq=f&amp;amp;oq=karmic+koala+require+password+to+login+and+decrypt+home+folder&amp;amp;fp=24cd4e187593799d"&gt;Just see for yourself&lt;/a&gt;. ;-)&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;New Appearance&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
New dark splash and login screens feel better than earlier ones, Boot time also seems reduced than 9.04. Console font has also become more readable and because of that, console screen has made more roomy.&lt;br /&gt;
&lt;br /&gt;
Default human theme has also modified to become more darker than the earlier... ;-) However, personally I would prefer the earlier one than that. &lt;br /&gt;
&lt;br /&gt;
Like in 9.04, in this release also Ctrl+Alt+Backspace key sequence is disabled. This is not so good since if your desktop freezes, you might need to restart your computer. If this key sequence has been enabled, you can just restart the current X session (without having to reboot) in a such situation. If you want to re-enable it, just go to &lt;b&gt;System --&amp;gt; Preferences --&amp;gt; Keyboard&lt;/b&gt;, and then follow the screenshot below.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiUSr13tZgZHTBaXqnxtMpGn0bz_3y13xVkm3i0pCF2Smqo971c5eoUxbJoxzv0SB30X5NQmOwPIaaXndcCxSt9e9emQeKwAvlWwmyTIu9jgjByHy0DC-ObC_IufXZiJnEwI5aGxlwiE4/s1600-h/ctrl+alt+backspace.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiUSr13tZgZHTBaXqnxtMpGn0bz_3y13xVkm3i0pCF2Smqo971c5eoUxbJoxzv0SB30X5NQmOwPIaaXndcCxSt9e9emQeKwAvlWwmyTIu9jgjByHy0DC-ObC_IufXZiJnEwI5aGxlwiE4/s400/ctrl+alt+backspace.png" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;Click to zoom&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
However, in Linux, freezing is not an often thing. :-)&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;New Wallpapers Collection&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
New wallpapers collection is really a thing to mention because rather than greenish one or two wallpapers that earlier releases had, the new aesthetically pleasing wallpaper set attracts the user... like Windows Vista did. :P&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;Audio Volume Increasable up to 150%&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
The worst problem I ever had with Ubuntu audio is, it does not produce enough sound. I was looking for a solution browsing through various forums and blogs, but had no luck. Finally I decided to use &lt;a href="http://smplayer.org/"&gt;SMPlayer&lt;/a&gt; since it provides capability to increase audio volume up to more than 100%.&lt;br /&gt;
&lt;br /&gt;
But now, in new Ubuntu 9.10, it provides a very convenient graphical way to increase audio volume up to 150%. For me this is really a great thing since I'm a huge fan of music. However, if you increase volume level than 100%, changes are not persistent. At next reboot, it will again drop to 100%. :(&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizZQmiqoyynsugG9DTd1iPBxvCtqmbmtkdURsSeWujSnExmjQwBHUwrgoWGLVGhNENMDwIO-AOBVVntbvCs6DP8U982ogU9ioaXJ20GW0EmAJCnT7iSwlb6_Zjjk3a8cn60wT7qLvkQLo/s1600-h/audio.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizZQmiqoyynsugG9DTd1iPBxvCtqmbmtkdURsSeWujSnExmjQwBHUwrgoWGLVGhNENMDwIO-AOBVVntbvCs6DP8U982ogU9ioaXJ20GW0EmAJCnT7iSwlb6_Zjjk3a8cn60wT7qLvkQLo/s400/audio.png" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;Click to zoom&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Also, Karmic Koala provides a more comprehensible interface for audio configuration. But older configuration interface is also still available through the command line. Just run &lt;b&gt;alsamixer&lt;/b&gt; on command line and see.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;iBus Input Method Framework&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
Since I use two languages, it is often needed to switch between those input methods. So, an input method provider is a must. Earlier it was SCIM, and now it has been replaced by iBus which provides a more user friendly configuration interface, and smoother operation. I really like the new iBus. :-)&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimbh0kMzOqYS00TzFk6vDZbwchA9lznaCuLLGD2POpDDjqYKl3FpdyVL-cf-lw3uut4HFSdhdK0QVClYTL0DbK-EFiCOXaPZYBiYXwrRWzjhoL_knG8HVjWo4myv2-n3MjkWb60HwArC8/s1600-h/iBus.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimbh0kMzOqYS00TzFk6vDZbwchA9lznaCuLLGD2POpDDjqYKl3FpdyVL-cf-lw3uut4HFSdhdK0QVClYTL0DbK-EFiCOXaPZYBiYXwrRWzjhoL_knG8HVjWo4myv2-n3MjkWb60HwArC8/s400/iBus.png" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;UbuntuOne&lt;/i&gt; &lt;/b&gt;&lt;br /&gt;
UbuntuOne is an online file hosting service based on &lt;a href="http://en.wikipedia.org/wiki/Cloud_computing"&gt;cloud computing technology&lt;/a&gt;. It is offered by Canonical and they provide 2 GB of space for free of charge, and it cloud can be upgraded to 50 GB for $10 per month. The service is still in public beta.&lt;br /&gt;
&lt;br /&gt;
More information is available &lt;a href="https://one.ubuntu.com/"&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;Firefox 3.5 as Web Browser&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
Although Firefox 3.5 was released before Ubuntu 9.04 Jaunty, they distributed the older version. But, in Ubuntu 9.10 the web browser is Firefox 3.5.3.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;Empathy as the Default IM Client&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
A significant change is that they have replaced the default IM client by &lt;a href="http://live.gnome.org/Empathy"&gt;Empathy&lt;/a&gt;. Earlier it was &lt;a href="http://www.pidgin.im/"&gt;Pidgin&lt;/a&gt;. Unlike Pidgin, Empathy supports audio and visual communication.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;Screensavers&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
The number of screensavers has been reduced, and my favourite screensaver Skyrocket is also missing. :-( &lt;br /&gt;
&lt;br /&gt;
In the screensavers dialog box, screen saver preview area had some issues with compiz fusion, but now that seems fixed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall, I feel that Ubuntu has become more and more like Windows than ever it was. And it no longer looks like a g33k's operating system. In my laptop, Karmic Koala works really faster than Jaunty Jackalope. And also compiz fusion works with no issues. However, most users like it. :-)&lt;br /&gt;
&lt;br /&gt;
So, why waiting? &lt;a href="http://www.ubuntu.com/getubuntu"&gt;Get it&lt;/a&gt;..!&lt;br /&gt;
&lt;br /&gt;
(Till I get my laptop fixed, ciao......!!!)</description><link>http://portal.shaakunthala.com/2009/11/ubuntu-910-karmic-koala.html</link><author>noreply@blogger.com (ශාකුන්තල | Shaakunthala)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGc9lOCNlgEbX0OcP1CRpr5PIdFqTMGPVmbKTOJ2Gynr1xOZ0FcNLMq8wwK-uOcz6TfdywuQeNLHA6daSn6vVNktOSJSwdDmMXjfxaLicyq_oSLxXfuStaR5xCl4U1ORfGzW229aT7yTs/s72-c/koala-232x300.jpg" width="72"/><thr:total>9</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5172310849636966878.post-5869786989198864030</guid><pubDate>Tue, 27 Oct 2009 15:19:00 +0000</pubDate><atom:updated>2009-12-27T20:03:08.487+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">coding</category><category domain="http://www.blogger.com/atom/ns#">firefox</category><category domain="http://www.blogger.com/atom/ns#">foss</category><category domain="http://www.blogger.com/atom/ns#">fun</category><category domain="http://www.blogger.com/atom/ns#">google</category><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">programming</category><category domain="http://www.blogger.com/atom/ns#">software</category><category domain="http://www.blogger.com/atom/ns#">technology</category><category domain="http://www.blogger.com/atom/ns#">web</category><title>Invoke Google's Web Search from Bash</title><description>Nice ideas come in handy way :) ; invoke Google's web search from your Linux desktop shell! :-O&lt;br /&gt;
&lt;br /&gt;
Here's a small shell script that I wrote couple of minutes ago. Copy-paste it into a new file, save it inside &lt;b&gt;/usr/bin&lt;/b&gt; as &lt;b&gt;google&lt;/b&gt;. This works in GUI mode with firefox very well, but it doesn't work with lynx. I still could not find any reason,.. may be somebody can come up with an idea.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: bash" name="code"&gt;if [ $# -ne 0 ]
then
&amp;nbsp;&amp;nbsp;query="http://www.google.lk/#hl=en&amp;amp;q="
&amp;nbsp;&amp;nbsp;for i in $@
&amp;nbsp;&amp;nbsp;do
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;query=$query$i+
&amp;nbsp;&amp;nbsp;done
&amp;nbsp;&amp;nbsp;firefox $query &amp;amp;
else
&amp;nbsp;&amp;nbsp;echo "Usage: google &amp;lt;your search query&amp;gt;."
fi&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Then &lt;b&gt;chmod +x /usr/bin/google&lt;/b&gt; as root to make it executable.&lt;br /&gt;
&lt;br /&gt;
Now, enter the following as a command and see: B-)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;$ google shaakunthala&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Or,&lt;br /&gt;
&lt;br /&gt;
Just press &lt;b&gt;Alt+F2&lt;/b&gt;, type &lt;b&gt;google shaakunthala&lt;/b&gt; and press Enter.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can use whatever as your keyword. But, have to follow usual bash (shell) syntax.&lt;br /&gt;
&lt;br /&gt;
For example,&lt;br /&gt;
If your query is &lt;b&gt;sameera shaakunthala&lt;/b&gt;, your command should be,&lt;br /&gt;
&lt;b&gt;$ google sameera shaakunthala&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
If your query is &lt;b&gt;shaakunthala's portal&lt;/b&gt;, your command should be,&lt;br /&gt;
&lt;b&gt;$ google shaakunthala\'s portal&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
If your query is &lt;b&gt;"shaakunthala's portal"&lt;/b&gt;, your command should be,&lt;br /&gt;
&lt;b&gt;$ google "\"shaakunthala\'s portal\""&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
... and so on.&lt;br /&gt;
&lt;br /&gt;
And use your creativity and combine this with some google search hacks that you know. It can be a powerful web search command from your desktop! :-O&lt;br /&gt;
&lt;br /&gt;
Bye! Ciao! Sweet dreams! :P&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;*** Update ***&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
I re-wrote the script for lynx. The problem arises with the hash (#)sign in the URL. So I removed it. The whole thing is more convenient in the command line, than in the GUI mode.&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="brush: bash"&gt;if [ $# -ne 0 ]
then
&amp;nbsp;&amp;nbsp;query="http://www.google.lk/search?hl=en&amp;amp;q="
&amp;nbsp;&amp;nbsp;for i in $@
&amp;nbsp;&amp;nbsp;do
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;query=$query$i+
&amp;nbsp;&amp;nbsp;done
&amp;nbsp;&amp;nbsp;lynx -accept_all_cookies $query
else
&amp;nbsp;&amp;nbsp;echo "Usage: google &amp;lt;your search query&amp;gt;."
fi&lt;/pre&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;Here's the code explanation (how it works):&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
When you execute the script with some arguments, it will concatenate all arguments with plus sign (+) in between. This is necessary to parse the input as web browser URL format. Then it will concatenate it to the Google search URL string to pass it to the server script at Google.&lt;br /&gt;
&lt;br /&gt;
And finally pass the whole thing as an argument to your web browser.&lt;br /&gt;
&lt;br /&gt;
if - then - else - fi : &lt;i&gt;Decision making&lt;/i&gt;&lt;br /&gt;
$# : &lt;i&gt;Total number of arguements passed to the shell&lt;/i&gt;&lt;br /&gt;
-ne : &lt;i&gt;not equals&lt;/i&gt;&lt;br /&gt;
for - do - done : &lt;i&gt;Looping&lt;/i&gt;&lt;br /&gt;
$@ : &lt;i&gt;all the arguments (except the command itself) passed to the shell&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Ciao! :)</description><link>http://portal.shaakunthala.com/2009/10/invoke-googles-web-search-from-bash.html</link><author>noreply@blogger.com (ශාකුන්තල | Shaakunthala)</author><thr:total>5</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5172310849636966878.post-4767320041134744980</guid><pubDate>Mon, 26 Oct 2009 13:00:00 +0000</pubDate><atom:updated>2009-12-27T19:46:20.341+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">coding</category><category domain="http://www.blogger.com/atom/ns#">foss</category><category domain="http://www.blogger.com/atom/ns#">fun</category><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">music</category><category domain="http://www.blogger.com/atom/ns#">programming</category><category domain="http://www.blogger.com/atom/ns#">technology</category><title>MP3 Batch Transcoding with Linux</title><description>&lt;div class="separator" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvh_TXP-ARRa98mslRvSLFAeYlpgPmJojvHLz9yaHak2LjdakR8g3O9QxJD0nF0hZ_2l1REr5LgfmFDg9A6il_7lPSk-frhmLAYQqQYYEBQpoHLksLUqe3x2SpGJli32n8D3IXa-oGZrXF/s200/music-notes.jpg" width="140" /&gt;&lt;br /&gt;
&lt;/div&gt;Well, hello there; after some time... this one is about some small work I've done, that I think usful for other Linux users.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;I'm huge fan of music -- especially hard rock and thrash metal. I feel almost dead if I don't get a chance at least once a day, to listen to them. So I wanted to put my huge collection into my mobile phone's memory chip so I can carry them anywhere I go. But, my poor memory chip is just 1 GB. It's not enough at all! So, the only way to pack as much as I can is, reduce the bitrate of the MP3 files.&lt;br /&gt;
&lt;br /&gt;
The next problem... I don't use Windows, nor Windows based software. But, if occurs a situation where I don't have any chance with Linux, I have installed Windows inside a virtual machine for use. But I rarely use that. Of course I can use JetAudio or any other audio conver to do this easily, but, as a professional and permanent Linux user, that's not my style.&lt;br /&gt;
&lt;br /&gt;
So I asked our smart genie... Google to find out a solution. Here's what I've got:&lt;br /&gt;
&lt;pre class="brush: bash" name="code"&gt;#!/bin/bash
for file in `ls`
do
file=`echo $file | sed s/\ /_/g`
echo $file
lame --decode $file
lame -b 128 $file.wav
rm $file
rm $file.wav
mv $file.wav.mp3 $file
done&lt;/pre&gt;&lt;br /&gt;
&lt;a href="http://www.linuxquestions.org/questions/linux-software-2/reduce-mp3-bitrate-336791/"&gt;http://www.linuxquestions.org/questions/linux-software-2/reduce-mp3-bitrate-336791/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
It's a shell script for batch processing. It will process all the MP3 files inside a given directory. Yes, that's more than what I wanted, but, what would happen if filenames contain whitespaces? The solution is not much practical, because most MP3s we get contains at least one whitespace in filename. I don't have time to rename each and every file. So I wsa thinking about a suitable solution.&lt;br /&gt;
&lt;br /&gt;
It is based on lame encoder, if you don't have it, please install it first.&lt;br /&gt;
&lt;b&gt;# apt-get install lame&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Yes, the find command! Got that!!! Here's the code I've wrote:&lt;br /&gt;
Copy this into a text file (&lt;b&gt;mp3enc.sh&lt;/b&gt;).&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: bash" name="code"&gt;if [ $# -eq 2 ]
then
mkdir $1/output
cd $1
find . -maxdepth 1 -exec lame -h -b $2 {} ./output/{}  \;
else
echo "Invalid arguements, please refer http://portal.shaakunthala.com/2009/10/mp3-batch-transcoding-with-linux.html"
fi&lt;/pre&gt;&lt;br /&gt;
Then execute,&lt;br /&gt;
&lt;b&gt;$ chmod +x mp3enc.sh&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Now run it,&lt;br /&gt;
&lt;b&gt;$ ./mp3enc.sh &amp;lt;mp3_files_directory&amp;gt; &amp;lt;target_bitrate_kbps&amp;gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Eg:&lt;br /&gt;
&lt;b&gt;$ ./mp3enc.sh /home/ubuntu/Music/MyMusic 128&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
It will make a directory called &lt;b&gt;output&lt;/b&gt; inside your music directory, and put the encoded files in.&lt;br /&gt;
&lt;br /&gt;
It's simple as that! I think it's easier than JetAudio, isn't it? ;)&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;a href="http://www.4shared.com/file/143713781/fe7dbac9/mp3enc.html"&gt;Download the script&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://blog.shaakunthala.com/2009/10/mp3.html"&gt;&lt;span style="font-size: x-small;"&gt;Read the Sinhalese version&amp;nbsp; of this article&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;</description><link>http://portal.shaakunthala.com/2009/10/mp3-batch-transcoding-with-linux.html</link><author>noreply@blogger.com (ශාකුන්තල | Shaakunthala)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvh_TXP-ARRa98mslRvSLFAeYlpgPmJojvHLz9yaHak2LjdakR8g3O9QxJD0nF0hZ_2l1REr5LgfmFDg9A6il_7lPSk-frhmLAYQqQYYEBQpoHLksLUqe3x2SpGJli32n8D3IXa-oGZrXF/s72-c/music-notes.jpg" width="72"/><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5172310849636966878.post-6911884037440074706</guid><pubDate>Sun, 04 Oct 2009 20:00:00 +0000</pubDate><atom:updated>2009-10-05T01:30:37.199+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">administration</category><category domain="http://www.blogger.com/atom/ns#">foss</category><category domain="http://www.blogger.com/atom/ns#">grub</category><category domain="http://www.blogger.com/atom/ns#">hacking</category><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">software</category><category domain="http://www.blogger.com/atom/ns#">technology</category><category domain="http://www.blogger.com/atom/ns#">usb</category><title>How I Prepared My GRUB-Bootable USB Flash Drive</title><description>&lt;div class="separator" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzAOS-OxHlF6G3_yQgow-eqog08YyGhWi6wOSNbhQ7NzPcsIEBpOKd5uXi-H31RUzejtEAP4gs0Vylq9Q9vftTXOIS71BVmGlAAW0wl1SYt9CSsEAHE8uDZPYrnMMhgx-Me-RLsXpibTpT/s400/grub2.gif" /&gt;&lt;br /&gt;
&lt;/div&gt;Again... the GNU GRUB. I really can't forget such an interesting software that I can study. Today, I'm going to put the English version of my another &lt;a href="http://blog.shaakunthala.com/2009/10/grub-flash-drive.html"&gt;Sinhala blog post&lt;/a&gt;. It's about how I made my flash drive a bootable one.&lt;br /&gt;
&lt;br /&gt;
Now you might say,.. "That's pretty easy stuff with Windows... Just right click and Format...."; wait.........! I'm not going to talk about the DOS/ Windows bootloader. DOS/ Windows bootloader is nothing compared to the GNU GRUB. What I'm going to put here is how to put the GRUB + kernel into your flash drive.&lt;br /&gt;
&lt;br /&gt;
First, I would like to give a small introduction on the GNU GRUB. Wikipedia got a whole lot of information,.. but I'll also explain. Simply, GRUB is a bootloader. A bootloader is the program loads the operating system when your computer boots. Have you ever seen the "NTLDR is missing" error on a Windows XP installed system? Yes, that NTLDR is the bootloader of Windows NT based operating systems. There are two most used types of bootloaders with Linux. One is &lt;a href="http://en.wikipedia.org/wiki/LILO_%28boot_loader%29"&gt;LILO (LInux LOader)&lt;/a&gt; and the other is &lt;a href="http://en.wikipedia.org/wiki/GNU_GRUB"&gt;GRUB (GRand Unified Bootloader)&lt;/a&gt;. Due to numerous reasons the most popular bootloader among the two is the GRUB. I'm not going to list them here,.. but believe me.. the GRUB is really a 'thing' to study!&lt;br /&gt;
&lt;br /&gt;
So,.. we are bit off the topic.Let's get back on it. How would it be if I install the GRUB on a USB flash drive? That's what came into my mind when I was reading the &lt;a href="http://uglms.ucsc.cmb.ac.lk/mod/forum/discuss.php?d=1243"&gt;posts on UCSC LMS&lt;/a&gt; (I'm a student). Yes, it would be great! There are several advantages I can think of.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;If I boot a Live CD, it takes some time. But, here as it is a bootloader only system, it takes a less time to boot up.&lt;/li&gt;
&lt;li&gt;I can study further,.. (I'm not a Linux expert)&lt;/li&gt;
&lt;li&gt;I can hijack Linux systems,... :D&lt;/li&gt;
&lt;li&gt;I can check the RAM using &lt;b&gt;memtest+86.bin&lt;/b&gt; kernel&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;I have a 4 GB flash drive. So here's how I did with it:&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b style="color: blue;"&gt;1.&lt;/b&gt; Backed up all the data on the flash drive as I'm gonna partition it.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="color: blue;"&gt;2. &lt;/span&gt;&lt;/b&gt;Divided the drive into two primary partitions. It doesn't matter whether it is primary or logical, but as I didn't need any more partitions, I set it as this.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;# fdisk /dev/sdb&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
One partition is a FAT-32 one to keep my personal files,which I might need to use with both Windows and Linux. It should be the first partition on the flash drive. Unless, Windows will spoil up everything. I left 50 MB at the end of the partition table as unpartitioned/ free space which I'm going to use for the boot partition.&lt;br /&gt;
&lt;br /&gt;
As I've mentioned earlier, Windows can not identify the partitions other than the physically first partition on the flash drive partition table. That means, even if the partition number is not 1, it should exist first to be identified by Windows.&lt;br /&gt;
&lt;br /&gt;
The second one, is nearly 50 MB, and is ext-2 type. It holds the GRUB's files and the kernel.&lt;br /&gt;
&lt;br /&gt;
Formatted the partitions using the following commands:&lt;br /&gt;
&lt;b&gt;# mkdosfs /dev/sdb1 -v -F 32 -n LEONIDAS_4G&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;# mke2fs /dev/sdb2 -L boot&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Now mounted them,&lt;br /&gt;
&lt;b&gt;# mkdir /media/data; mount -t vfat /dev/sdb1 /media/data&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;# mkdir /media/boot; mount /dev/sdb2 /media/boot&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b style="color: blue;"&gt;3.&lt;/b&gt; Well, there could be a systematic way to do this. But, I'm not a Linux expert. So, please don't laugh at me. This is how I did it:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;# cd /&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;# cp -rfv boot /media/boot&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Now, the GRUB installation, the thing I recently got to know from our LMS forum.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;# grub&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;grub&amp;gt; find /media/boot/boot/grub/stage1&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Now it gives the following output:&lt;br /&gt;
&lt;b&gt;(hd1,1)&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
According to the notation, the second partition on the flash drive is &lt;b&gt;(hd1,1)&lt;/b&gt;. The next step is;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;grub&amp;gt; root (hd1,1)&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;grub&amp;gt; setup (hd1)&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;grub&amp;gt; quit&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Now, the GRUB has been installed on the flash drive.&lt;br /&gt;
&lt;br /&gt;
&lt;b style="color: blue;"&gt;4.&lt;/b&gt; Now I carefully examined the boot partition on the flash drive. There were two versions of the kernal and related files. This might be probably due to a kernal update on my system. It doesn't matter. I kept the most recent version and deleted the other.&lt;br /&gt;
&lt;br /&gt;
&lt;b style="color: blue;"&gt;5.&lt;/b&gt; Finally I edited the &lt;b&gt;menu.lst&lt;/b&gt;, which caontains the initial configuration of the GRUB, when it boots. Here's the entire menu.lst file:&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
title &amp;nbsp;&amp;nbsp; Linux kernel 2.6.27-14-generic&lt;br /&gt;
root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (hd0,1)&lt;br /&gt;
kernel&amp;nbsp;&amp;nbsp;          /boot/vmlinuz-2.6.27-14-generic root=UUID=d1670f8e-eb3f-4dba-bba5-e00f0437e2a2 ro single&lt;br /&gt;
initrd &amp;nbsp;          /boot/initrd.img-2.6.27-14-generic&lt;br /&gt;
&lt;br /&gt;
title&amp;nbsp;&amp;nbsp;&amp;nbsp;           memtest86+&lt;br /&gt;
root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            (hd0,1)&lt;br /&gt;
kernel&amp;nbsp;&amp;nbsp;          /boot/memtest86+.bin&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
There's another few important things to state here. Althoug the flash drive is &lt;b&gt;(hd1)&lt;/b&gt; here, it becomes &lt;b&gt;(hd0)&lt;/b&gt; when booting. The reason is almost obvious, when you set it as the first boot device on the BIOS, it becomes the first device.&lt;br /&gt;
&lt;br /&gt;
The next thing is the &lt;a href="http://en.wikipedia.org/wiki/Uuid"&gt;UUID&lt;/a&gt;. UUID is sent to the kernel as a parameter. You can find the UUID using this:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;# vol_id --uuid /dev/sdb2&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b style="color: blue;"&gt;6.&lt;/b&gt; Okey,.. I'm almost done. The final step is to boot. The GRUB loading can bee seen and then the boot menu. You can either edit the menu and boot the kernel on the hard disk or boot the kernel on the flash drive.&lt;br /&gt;
&lt;br /&gt;
There is no &lt;a href="http://en.wikipedia.org/wiki/Init"&gt;init&lt;/a&gt; on the flash drive because I didn't put it on the drive. So when booting, it show an error message, and drops into a &lt;a href="http://en.wikipedia.org/wiki/Busybox"&gt;BusyBox&lt;/a&gt; &lt;i&gt;&lt;b&gt;shell&lt;/b&gt;&lt;/i&gt;. It works on the RAM (initramfs). In simple terms, &lt;i&gt;&lt;b&gt;there is a shell = we can make use of the kernel&lt;/b&gt;&lt;/i&gt;. :)&lt;br /&gt;
&lt;br /&gt;
&lt;b style="color: blue;"&gt;7.&lt;/b&gt; Restore the backup (personal data/ files) onto the FAT 32 partition on the flash drive. If you plug the flash drive inta a Windows machine, the whole thing may look like this:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHeTNXyEjIfRFSjvCHpLXv3ci5RWp_dAcdPIFbstagQWpGbkAvKDhJa0BiwodOt0dPZ-S1fSpJJdMH4-l_LyUljt5IK4Udg3bG6zcFgY38XeQJ9Wmk5D9kBkc4qLiTZYLmW3UvPk62FRPJ/s1600-h/win.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHeTNXyEjIfRFSjvCHpLXv3ci5RWp_dAcdPIFbstagQWpGbkAvKDhJa0BiwodOt0dPZ-S1fSpJJdMH4-l_LyUljt5IK4Udg3bG6zcFgY38XeQJ9Wmk5D9kBkc4qLiTZYLmW3UvPk62FRPJ/s400/win.png" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div style="color: red; text-align: center;"&gt;&lt;b&gt;Do not delete any of the partitions using the Windows Disk Management Console. If you want to format your data drive, you can go through My Computer and format. Do not touch the other one as it could ruin the entire filesystem on the flash drive which we have built so far. Also if you want to adjust the partition table, the safe option is to do it with Linux.&lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Finally, I have to say is I've experimented and learnt something new. And I wanted to share my experience here!&lt;br /&gt;
&lt;br /&gt;
Thanks for reading.</description><link>http://portal.shaakunthala.com/2009/10/how-i-prepared-my-grub-bootable-usb.html</link><author>noreply@blogger.com (ශාකුන්තල | Shaakunthala)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzAOS-OxHlF6G3_yQgow-eqog08YyGhWi6wOSNbhQ7NzPcsIEBpOKd5uXi-H31RUzejtEAP4gs0Vylq9Q9vftTXOIS71BVmGlAAW0wl1SYt9CSsEAHE8uDZPYrnMMhgx-Me-RLsXpibTpT/s72-c/grub2.gif" width="72"/><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5172310849636966878.post-173543912366795073</guid><pubDate>Wed, 30 Sep 2009 19:16:00 +0000</pubDate><atom:updated>2009-10-01T00:48:04.714+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">software</category><category domain="http://www.blogger.com/atom/ns#">storage</category><category domain="http://www.blogger.com/atom/ns#">technology</category><category domain="http://www.blogger.com/atom/ns#">usb</category><category domain="http://www.blogger.com/atom/ns#">windows</category><title>Solution for Some USB Flash Drive Problems</title><description>&lt;div class="separator" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjewOUYSig6jomu7fH_Tn2WnTqIGNqh7y1sBbkLc0Jnqu6hlyW9VCVQWkRGlL5fCkrga7ESQymnLVG-HPjAi9v8-BunuoBWhXiwAqp9cEX9LqdyseAum1y5XgmFVUD6YoN5Blcdosu_o1I/s200/Super-Talent-Pico-Mini-flash-drive.gif" /&gt;&lt;br /&gt;
&lt;/div&gt;Today I'm gonna put the English translation of &lt;a href="http://blog.shaakunthala.com/2009/03/usb.html"&gt;one of my Sinhala blog posts&lt;/a&gt;, which talks about a solution some possible problems that might occur with USB flash drives. Roughly I would say the solution is to destroy and rebuild the filesystem on the device. But this is not actually the same content from original blog post.&lt;br /&gt;
&lt;br /&gt;
Well, most of us are carrying those portable memory devices... some call it pen drive... and some call it flash drive... and some other may call thumb drive. Whatever it is, it has become an essential thing with our day to day life.&lt;br /&gt;
&lt;br /&gt;
First, I must tell an important thing,.. pay extreme attention when following these instructions. Unless, a single mistake could ruin your entire hard drive!&lt;br /&gt;
&lt;br /&gt;
OK, the first thing that I'm going to point out is, you may have seen that capacity of a flash drive is indicated less than the value printed on it. I'm not talking about indicating a 4 GB drive as 3.77 GB. Sometimes you might have seen a scenario where the drive has been indicating 3.77 GB, but later it has become a lower value like 1.2 GB. Yes, I'm talking about that problem.&lt;br /&gt;
&lt;br /&gt;
In certain other cases, Windows would not detect the device. It might show a message like 'Insert disk...' also.&lt;br /&gt;
&lt;br /&gt;
As far as I think, the reason behind this might be physical, electrical or electronically damage to the device. Also, viruses are also a suspect. However, if the damage is too severe, then you might not be lucky enough to succeed with these instructions. I have tested this several times successfully, but unsuccessful attempts are there as well.&lt;br /&gt;
&lt;br /&gt;
So, my instructions are based on Linux, to be executed on a command line shell, free, open and adventurous! :)&lt;br /&gt;
&lt;br /&gt;
First, you need to backup existing data on the device. Use any backup tool or you can use the following command. (Assumed that the flash drive is &lt;b&gt;/dev/sdb&lt;/b&gt; and it's filesystem is FAT32)&lt;br /&gt;
&lt;b&gt;# mount -t vfat /dev/sdb1 /mnt&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;# tar cvpzf backup.sdb.tgz /mnt&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
If you are not sure about the device file (&lt;b&gt;/dev/?d?&lt;/b&gt;), just enter the following command and identify your flash drive.&lt;br /&gt;
&lt;b&gt;# fdisk -l&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Now unmout the device if mounted.&lt;br /&gt;
# umount /dev/sdb&lt;br /&gt;
&lt;br /&gt;
Then we will clear everything on the device, including it's partition table (overwriting &lt;a href="http://en.wikipedia.org/wiki/Master_boot_record"&gt;MBR&lt;/a&gt;). We do not have this option with Windows.&lt;br /&gt;
&lt;b&gt;# fdisk /dev/sdb&lt;/b&gt;&lt;br /&gt;
Enter &lt;b&gt;o&lt;/b&gt; to create a new disklabel (this is not the drive label which we can see on a windows parition)&lt;br /&gt;
Enter &lt;b&gt;w&lt;/b&gt; to write the MBR and exit &lt;b&gt;fdisk&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Now, create the only partition on the flash drive. Of course you can have multiple partitions on the flash drive. But I'm not sure about whether Windows would detect all the partitions.&lt;br /&gt;
&lt;b&gt;# fdisk /dev/sdb&lt;/b&gt;&lt;br /&gt;
Enter &lt;b&gt;n&lt;/b&gt; to create a new partition.&lt;br /&gt;
Enter &lt;b&gt;p&lt;/b&gt; to make it primary.&lt;br /&gt;
Enter &lt;b&gt;1&lt;/b&gt; as the partition number.&lt;br /&gt;
Press Enter twice to use default starting and ending points.&lt;br /&gt;
Enter &lt;b&gt;w&lt;/b&gt; to write changes and exit.&lt;br /&gt;
&lt;br /&gt;
We have finished setting up the partition, now the next thing is to format. It's a good choice to format as FAT32 because when you do so, the drive can be used with both Windows and Linux. If the device capacity is more than 4 GB, I would recommend NTFS. Well, that would be another story. I'm gonna write about that some day as well. If it is the memory stick on your mobile phone, your choice should be FAT16 -- this depend on your phone's type also.&lt;br /&gt;
&lt;br /&gt;
To format as FAT32,&lt;br /&gt;
&lt;b&gt;# mkdosfs -F 32 -cv -n DRIVELABEL&lt;/b&gt;&lt;br /&gt;
I use verbose (-v) option so I can see the progress, -c is to probe for bad clusters (this can take some time), and -n for Windows disk volume label (DRIVELABEL in this example) which can be or less than 11 ASCII characters.&lt;br /&gt;
&lt;br /&gt;
To format as NTFS,&lt;br /&gt;
&lt;b&gt;# mkntfs -C -I -v -L DRIVELABEL&lt;/b&gt;&lt;br /&gt;
-C to enable compression, and I to disable indexing (Windows XP), -v for verbose output and -L for volume label which cab be or less than 32 ASCII or unicode characters.&lt;br /&gt;
&lt;br /&gt;
So, this is the end of my post. This method is not alwsys successful, but I was lucky in two of three situations.&lt;br /&gt;
&lt;br /&gt;
Thanks for reading!</description><link>http://portal.shaakunthala.com/2009/10/some-known-problems-with-usb-flash.html</link><author>noreply@blogger.com (ශාකුන්තල | Shaakunthala)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjewOUYSig6jomu7fH_Tn2WnTqIGNqh7y1sBbkLc0Jnqu6hlyW9VCVQWkRGlL5fCkrga7ESQymnLVG-HPjAi9v8-BunuoBWhXiwAqp9cEX9LqdyseAum1y5XgmFVUD6YoN5Blcdosu_o1I/s72-c/Super-Talent-Pico-Mini-flash-drive.gif" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5172310849636966878.post-7716624557479834391</guid><pubDate>Wed, 30 Sep 2009 09:38:00 +0000</pubDate><atom:updated>2009-10-01T19:00:09.563+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">education</category><category domain="http://www.blogger.com/atom/ns#">foss</category><category domain="http://www.blogger.com/atom/ns#">gentoo</category><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">software</category><category domain="http://www.blogger.com/atom/ns#">technology</category><category domain="http://www.blogger.com/atom/ns#">video</category><title>Gentoo Installation Screencast - ep 1</title><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjByAPuZos7f0rzYM8upYW__DmRTFTLvOS2r_AN4Zv5WHthyphenhyphen_mOXFzbazAijkTpvmT8q2YZNO44tM5N8tRnVU-GLPucirlbpE2mY331ZbB0FWOat4IOR28bEy_V3IhDo-_KF73KYdR7QrY/s1600-h/gentoo-logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjByAPuZos7f0rzYM8upYW__DmRTFTLvOS2r_AN4Zv5WHthyphenhyphen_mOXFzbazAijkTpvmT8q2YZNO44tM5N8tRnVU-GLPucirlbpE2mY331ZbB0FWOat4IOR28bEy_V3IhDo-_KF73KYdR7QrY/s400/gentoo-logo.png" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;As a FOSS enthusiast and a penguin lover I thought of writing more on Linux. For a Linux beginner I would say just use &lt;a href="http://www.gentoo.org/"&gt;Ubuntu&lt;/a&gt; and have some practice with basic idea. But, if you really want to dig deeper, Ubuntu is not the one. For that purpose, to get our hands dirty, what our lecturers have recommended for us is &lt;a href="http://www.gentoo.org/"&gt;Gentoo&lt;/a&gt;. Yes, most online resources say the same thing. If you just install Gentoo using the command line, you'll get to know a whole lot of things. Gentoo is not easy, and it's a good choice for wannabe GNU/ Linux hackers.&lt;br /&gt;
&lt;br /&gt;
If you need a good guide for installation of Gentoo, just refer one of these links:&lt;br /&gt;
&lt;a href="http://www.gentoo.org/doc/en/?catid=install"&gt;http://www.gentoo.org/doc/en/?catid=install&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.gentoo.org/doc/en/handbook/"&gt;http://www.gentoo.org/doc/en/handbook/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://gentoo-install.com/install"&gt;http://gentoo-install.com/install&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Actually installing Gentoo is not a big thing, just know what you do. I thought of preparing some kind of video screencast of how I did it, and it's available for download [21.5 MB] at  &lt;b&gt;&lt;a href="http://www.4shared.com/file/136463718/3a2a3124/bootogv.html"&gt;http://www.4shared.com/file/136463718/3a2a3124/bootogv.html&lt;/a&gt; Actually this video is just booting, partitioning disks and mounting. The first part of a series of videos.&lt;/b&gt; If you have any critiques, feel free to discuss here. Due to limitations with my Internet connectivity I can't upload a bigger video which contains the whole thing. I will put subsequent episodes for download as soon as possible.&lt;br /&gt;
&lt;br /&gt;
I did the recording with &lt;b&gt;recordmydesktop&lt;/b&gt; (can be seen on the video) which uses the &lt;a href="http://www.theora.org/"&gt;Theora&lt;/a&gt; codec, and VirtualBox for as the hardware emulator.&lt;br /&gt;
&lt;br /&gt;
What did I forget to say..? Mhh... yes, the video is copyleft. Download, use it for any purpose. :)&lt;br /&gt;
&lt;br /&gt;
Thanks for reading!&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;EDIT (01-Oct-2009) &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Now I feel like my attempt is quite unsuccessful. However I would neither delete the video nor this post. Without narration and a properly written guide this is unsuccessful. I have a target of preparing some video tutorials with no involvement of propritary software. Till then I may have to learn more about open source video production.</description><link>http://portal.shaakunthala.com/2009/09/gentoo-installation-screencast.html</link><author>noreply@blogger.com (ශාකුන්තල | Shaakunthala)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjByAPuZos7f0rzYM8upYW__DmRTFTLvOS2r_AN4Zv5WHthyphenhyphen_mOXFzbazAijkTpvmT8q2YZNO44tM5N8tRnVU-GLPucirlbpE2mY331ZbB0FWOat4IOR28bEy_V3IhDo-_KF73KYdR7QrY/s72-c/gentoo-logo.png" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5172310849636966878.post-623312685977985611</guid><pubDate>Tue, 29 Sep 2009 15:04:00 +0000</pubDate><atom:updated>2009-09-29T20:34:55.335+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">blogging</category><category domain="http://www.blogger.com/atom/ns#">hacking</category><category domain="http://www.blogger.com/atom/ns#">me</category><category domain="http://www.blogger.com/atom/ns#">security</category><category domain="http://www.blogger.com/atom/ns#">technology</category><category domain="http://www.blogger.com/atom/ns#">web</category><title>A Childish Attempt Made to Hijack my Gmail Account</title><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3-qtw91VJNk7_tyfqkZrVPE1Lau0XNd4CY4ksCliQ40LwfaPqZJu0SPl_s4g9o3n5S3vAYZI8aOglCvyU8j9WsAA6InJKQz-osXF8qfQy8omZaiLFlGnV5cwktVjctO9JkHyGt7L3uFs/s1600-h/hacker.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3-qtw91VJNk7_tyfqkZrVPE1Lau0XNd4CY4ksCliQ40LwfaPqZJu0SPl_s4g9o3n5S3vAYZI8aOglCvyU8j9WsAA6InJKQz-osXF8qfQy8omZaiLFlGnV5cwktVjctO9JkHyGt7L3uFs/s400/hacker.gif" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;Today, I've received an email from Google (accounts-noreply@google.com) subjecting &lt;b&gt;Google Password Assistance&lt;/b&gt;. Google sends this email when somebody has made an attempt to reset the particular Gmail account's password. But, this request is not initiated by me.&lt;br /&gt;
&lt;br /&gt;
Google password reset process works as follows:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;User enters the Gmail address into the password reset form.&lt;/li&gt;
&lt;li&gt;Using &lt;a href="http://en.wikipedia.org/wiki/CAPTCHA"&gt;CAPTCHA&lt;/a&gt;, Google verifies that the request is not made by truly a human.&lt;/li&gt;
&lt;li&gt;Google uses either of the following methods to verify the account ownership. &lt;br /&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;If the Gmail account was inactive during the past 24 hours, Gmail asks for the security question which the account owner has provided during sign up.&lt;/li&gt;
&lt;li&gt;If the Gmail account was not inactive, it sends an email to the secondary address that is provided during sign up.&lt;/li&gt;
&lt;/ul&gt;&lt;ol&gt;&lt;li value="4"&gt;After the verification of account ownership, it enables the user to choose a new password.&lt;br /&gt;
&lt;/li&gt;
&lt;/ol&gt;In my case, somebody has made the attempt, and Google has sent me the password reset email. Well, I have reset my password -- I periodically do so. :) So thanks to the poor guy who made the attempt. :P&lt;br /&gt;
&lt;br /&gt;
Anyway, how do we prevent such vulnerabilities? Here's what I think:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Use at least two email accounts. Use each other to receive password reset emails. &lt;i&gt;Eg: set your Yahoo! address as your Google account's secondary address and set your Gmail address as your Yahoo! account's secondary address.&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;Try to access those accounts frequently.&lt;/li&gt;
&lt;li&gt;Use ambiguous Q/A pair as the security question and answer. Use your own tunes with creativity. I know, this can go INSANE!!! &lt;i&gt;Eg: Q - Where did you spend your honeymoon? A - Cloud #9&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
OK. Anything else does not come to my mind this time. May be later I might add more. By the way,....... who might want to hijack my Gmail account? I still don't have an answer. :-?&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4WaXPpDZlawLYETrz3d23a2GedlzXO8bVpn7D6wtDFVTArrkr2SS9szMJwi5v7QMJhWn1ZBUbhqnYoMTWUGkLbFc-h6BP0hs9lwkLvOGWX0MScu2jHQvfo3jlTlmclX2w38X0AkWHjng/s1600-h/comment.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4WaXPpDZlawLYETrz3d23a2GedlzXO8bVpn7D6wtDFVTArrkr2SS9szMJwi5v7QMJhWn1ZBUbhqnYoMTWUGkLbFc-h6BP0hs9lwkLvOGWX0MScu2jHQvfo3jlTlmclX2w38X0AkWHjng/s400/comment.png" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://blog.shaakunthala.com/2009/06/leonidas.html?showComment=1246209784925#c8787695360951451054"&gt;http://blog.shaakunthala.com/2009/06/leonidas.html?showComment=1246209784925#c8787695360951451054&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Well, there might be several bloggers who want to do this adventure. :D&lt;br /&gt;
&lt;br /&gt;
Thank for reading!</description><link>http://portal.shaakunthala.com/2009/09/childish-attempt-made-to-hijack-my.html</link><author>noreply@blogger.com (ශාකුන්තල | Shaakunthala)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3-qtw91VJNk7_tyfqkZrVPE1Lau0XNd4CY4ksCliQ40LwfaPqZJu0SPl_s4g9o3n5S3vAYZI8aOglCvyU8j9WsAA6InJKQz-osXF8qfQy8omZaiLFlGnV5cwktVjctO9JkHyGt7L3uFs/s72-c/hacker.gif" width="72"/><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5172310849636966878.post-6337832276631583093</guid><pubDate>Tue, 29 Sep 2009 10:47:00 +0000</pubDate><atom:updated>2009-09-29T22:52:41.076+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">administration</category><category domain="http://www.blogger.com/atom/ns#">foss</category><category domain="http://www.blogger.com/atom/ns#">hacking</category><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">security</category><category domain="http://www.blogger.com/atom/ns#">software</category><title>Disk Maintenance with Ubuntu Live</title><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhY8hmC9ZP4SbDrALG1WOeDmRkbdCFRpsjnPl4bi6OEaTAWdrjgU-yh6s8wdOqOxDgP2HtXiaOqJNiYSFIktF6ZmYpiWzrqfZZrGngyTu2k2k3opq6f0q9eFk-gAfBPAWPUrsaTeFWkEgI/s1600-h/Grub2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhY8hmC9ZP4SbDrALG1WOeDmRkbdCFRpsjnPl4bi6OEaTAWdrjgU-yh6s8wdOqOxDgP2HtXiaOqJNiYSFIktF6ZmYpiWzrqfZZrGngyTu2k2k3opq6f0q9eFk-gAfBPAWPUrsaTeFWkEgI/s400/Grub2.png" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;Well, I thought of writing about some disk management which you can do with just using an Ubuntu Live CD.&lt;br /&gt;
&lt;br /&gt;
First thing is, we don't need the GUI. Forget it. The text mode works considerably faster. After loading the initial screen of the Ubuntu Live CD, select the language, then press F6. You get a line that can be edited, and ends with the following parameters:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;initrd=/casper/initrd.gz &lt;/span&gt;&lt;span style="color: blue; font-weight: bold;"&gt;quiet splash&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; --&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Replace &lt;span style="color: blue; font-weight: bold;"&gt;quiet splash&lt;/span&gt; with this:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: blue;"&gt;ro &lt;span style="font-weight: bold;"&gt;single&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
And press Enter. Now the system boots into the single user mode. In other words, you are taken into the text mode. In later versions of Ubuntu, you get a menu. Just select &lt;span style="font-weight: bold;"&gt;root&lt;/span&gt; and you'll become root user! You can backup your disks, partition disks, file system check and many more!&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-style: italic;"&gt;Partitioning disks:&lt;/span&gt;&lt;br /&gt;
Just use either &lt;span style="font-weight: bold;"&gt;parted&lt;/span&gt; or &lt;span style="font-weight: bold;"&gt;fdisk&lt;/span&gt;. Personally I would prefer fdisk.&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;# fdisk -l&lt;/span&gt; (to list all filesystems)&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;# fdisk /dev/sda&lt;/span&gt; (to partition the first disk which is SCSI)&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;# parted /dev/sda&lt;/span&gt; (to partition the first disk which is SCSI)&lt;br /&gt;
&lt;br /&gt;
Dont panic! Help is provided inside these commands. You just need to know plain English and the way that a partition table is structured (theory). :)&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-style: italic;"&gt;Format disks:&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;# mke2fs /dev/sda1&lt;/span&gt; (format the partition as ext-2)&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;# mke2fs -j /dev/sda1&lt;/span&gt; (format the partition as ext-3)&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;# mkntfs /dev/sda1&lt;/span&gt; (format the partition as ntfs)&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;# mkdosfs /dev/sda1&lt;/span&gt; (format the partition as FAT12/ FAT16 or FAT32)&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;# mkswap&lt;/span&gt; (format as swap)&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-style: italic;"&gt;Filesystem check:&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;# fsck /dev/sda1&lt;/span&gt; (check and repair Linux filesystem on the drive, the partition should be unmounted first!!!)&lt;br /&gt;
&lt;b&gt;# dosfsck /dev/sda1&lt;/b&gt; (check FAT12/16/32 filesystem)&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Tune Filesystem:&lt;/i&gt;&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;# tune2fs /dev/sda1&lt;/span&gt; (tune adjustable parameters on a Linux filesystem)&lt;br /&gt;
Linux filesystems are periodically checked for&amp;nbsp; consistency during boot. You can adjust that time period with this tool.&lt;br /&gt;
&lt;b&gt;# tune2fs -c 60 /dev/sda1&lt;/b&gt; (set &lt;b&gt;fsck&lt;/b&gt; to be executed on /dev/sda1 once a two months)&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Backup your data into another drive:&lt;/i&gt;&lt;br /&gt;
Just execute the following commands one by one. Please refer &lt;a href="http://ubuntuforums.org/showthread.php?t=35087"&gt;this thread&lt;/a&gt; for a broader discussion.&lt;br /&gt;
&lt;b&gt;# mkdir /source &lt;/b&gt;&lt;br /&gt;
&lt;b&gt;# mount /dev/sda1 /source; mount /dev/sdb1 /mnt&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;# cd /mnt&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;# tar cvpzf backup.tgz --exclude=/source/lost+found --exclude=/mnt /source&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
To restore later (assume the backup archive is located at /dev/sdb1),&lt;br /&gt;
&lt;b&gt;# mkdir /mnt/backup /mnt/restore&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;# mount /dev/sda1 /mnt/restore; mount /dev/sdb1 /mnt/backup&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;# cd /backup&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;# tar xvpfz backup.tgz -C /restore&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Repair GRUB bootloader:&lt;/i&gt;&lt;br /&gt;
I got to know about this from &lt;a href="http://uglms.ucsc.cmb.ac.lk/mod/forum/discuss.php?d=1243&amp;amp;parent=2288"&gt;here&lt;/a&gt;. Not everybody can access that site, so I'll put the whole thing here. Enter the following commands one by one.&lt;br /&gt;
&lt;b&gt;# grub&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;/find/grub/stage1 &lt;/b&gt;(find the corresponding values for &lt;i&gt;x&lt;/i&gt; and &lt;i&gt;y&lt;/i&gt; for the next step)&lt;br /&gt;
&lt;b&gt;root(hd&lt;i&gt;x&lt;/i&gt;,&lt;i&gt;y&lt;/i&gt;)&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;setup(hd&lt;i&gt;x&lt;/i&gt;)&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Execute binaries on an existing Linux installation:&lt;/i&gt;&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;# mount /dev/sda1 /mnt; chroot /mnt&lt;/span&gt;&lt;br /&gt;
You can change the root password too!!! :-O&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Wanna see how NTFS is supported on Ubuntu?&lt;/i&gt;&lt;br /&gt;
Just type &lt;span style="font-weight: bold;"&gt;ntfs&lt;/span&gt; at the root shell prompt and press the Tab twice. I'm not gonna put it here.&lt;br /&gt;
&lt;br /&gt;
If you think I might have forgotten anything to put here, don't hesitate to share it here... Thanks for reading!</description><link>http://portal.shaakunthala.com/2009/09/disk-maintenance-with-ubuntu-live.html</link><author>noreply@blogger.com (ශාකුන්තල | Shaakunthala)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhY8hmC9ZP4SbDrALG1WOeDmRkbdCFRpsjnPl4bi6OEaTAWdrjgU-yh6s8wdOqOxDgP2HtXiaOqJNiYSFIktF6ZmYpiWzrqfZZrGngyTu2k2k3opq6f0q9eFk-gAfBPAWPUrsaTeFWkEgI/s72-c/Grub2.png" width="72"/><thr:total>2</thr:total></item></channel></rss>