<?xml version="1.0" encoding="iso-8859-1"?>
<rss version="2.0">
	<channel>
		<title>Sumit Bhasin : Sumit Bhasin</title>
		<link>http://sumit-bhasin.talkmeblog.com/Sumit-Bhasin-b0.htm</link>
		<description>j2me, java ,ldap ,hibernate,tips and tricks, free books ,forum</description>
		<lastBuildDate>Fri, 12 Mar 2010 22:12:02 GMT</lastBuildDate>
		<ttl>10</ttl>
		<image>
			<title>Sumit Bhasin : Sumit Bhasin</title>
			<url></url>
			<link>http://sumit-bhasin.talkmeblog.com/Sumit-Bhasin-b0.htm</link>
		</image>
	<item>
		<title>Downloading entire websites using Wget</title>
		<category>Sumit Bhasin</category>
		<pubDate>2009-06-11T15:01:42Z</pubDate>
		<description>&lt;h2&gt;&lt;a href=&quot;http://varrunr.wordpress.com/2009/05/18/downloading-entire-websites-using-wget/&quot; title=&quot;Read Downloading entire websites using Wget&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/a&gt;&lt;/h2&gt;&lt;br /&gt;&lt;span class=&quot;date_day&quot;&gt;18&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;date_month&quot;&gt;05&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;date_year&quot;&gt;2009&lt;/span&gt;&lt;br /&gt;&lt;div class=&quot;entry&quot;&gt;&lt;br /&gt;&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;a href=&quot;http://www.cg.tuwien.ac.at/%7Eprikryl/wget.html&quot;&gt;Wget&lt;/a&gt; is a good tool for downloading resources from the internet. The basic usage is wget url:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style=&quot;color: #993300&quot;&gt;wget http://linuxreviews.org/&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The power of &lt;a href=&quot;http://www.cg.tuwien.ac.at/%7Eprikryl/wget.html&quot;&gt;wget&lt;/a&gt; is that you may download sites recursive, meaning you also get all pages (and images and other data) linked on the front page:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;span style=&quot;color: #993300&quot;&gt;&lt;strong&gt;wget -r http://linuxreviews.org/&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;But many sites do not want you to download their entire site. To&lt;br /&gt;prevent this, they check how browsers identify. Many sites refuses you&lt;br /&gt;to connect or sends a blank page if they detect you are not using a&lt;br /&gt;web-browser. You might get a message like:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;	&lt;pre&gt;&lt;br /&gt;	&lt;span style=&quot;color: #993300&quot;&gt;Sorry, but the download manager you are using to view this site is not supported.&lt;br /&gt;	We do not support use of such download managers as flashget, go!zilla, or getright&lt;/span&gt;&lt;br /&gt;	&lt;/pre&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Wget has a very useful -U option for such websites. Use -U [your-browser] to tell the site you are using some commonly accepted browser:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;span style=&quot;text-decoration: underline&quot;&gt;&lt;span style=&quot;color: #993300&quot;&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #993300&quot;&gt;&lt;strong&gt;wget  -r -p -U Mozilla http://www.thesiteyouwannadnld.com/restricedplace.html&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;The most important command line options&lt;/strong&gt; are --limit-rate= and --wait=.&lt;br /&gt;You should add –wait=20 to pause 20 seconds between retrievals, this&lt;br /&gt;makes sure you are not manually added to a blacklist. –limit-rate&lt;br /&gt;defaults to bytes, add K to set KB/s. Example:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style=&quot;color: #993300&quot;&gt;wget --wait=20 --limit-rate=20K -r -p -U Mozilla http://www.stupidsite.com/restricedplace.html&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;A web-site owner will probably get upset if you attempt to download his entire site using a simple wget http://foo.bar&lt;br /&gt;command. However, the web-site owner will not even notice you if you&lt;br /&gt;limit the download transfer rate and pause between fetching files.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style=&quot;color: #993300&quot;&gt;Use –no-parent&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;--no-parent is a very handy option that guarantees wget&lt;br /&gt;will not download anything from the folders beneath the folder you want&lt;br /&gt;to acquire. Use this to make sure wget does not fetch more than it&lt;br /&gt;needs to if just just want to download the files in a folder.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;				&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;</description>
		<guid>http://sumit-bhasin.talkmeblog.com/Sumit-Bhasin-b1/Downloading-entire-websites-using-Wget-b1-p5551.htm</guid>
	</item>
	<item>
		<title>Facebooker ROR setup steps</title>
		<category>Sumit Bhasin</category>
		<pubDate>2009-04-24T13:17:24Z</pubDate>
		<description>&lt;div id=&quot;app_content_7833123843&quot; class=&quot;app_content_7833123843 canvas_rel_positioning&quot;&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;div id=&quot;app7833123843_tutorial_steps&quot;&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;	&lt;li&gt; Create a rails application: &lt;br /&gt;	&lt;p class=&quot;command_line&quot;&gt;&lt;br /&gt;	 rails facebooker_tutorial&lt;br /&gt;	&lt;/p&gt;&lt;br /&gt;	&lt;/li&gt;&lt;br /&gt;	&lt;li&gt; Install Facebooker Plugin: &lt;br /&gt;	&lt;p class=&quot;command_line&quot;&gt;&lt;br /&gt;	 script/plugin install git://github.com/mmangino/facebooker.git or &lt;br /&gt;	&lt;/p&gt;&lt;br /&gt;	&lt;p&gt;&lt;br /&gt;	 cd RAILS_ROOT/vendor/plugins; git clone git://github.com/mmangino/facebooker.git or &lt;br /&gt;	&lt;/p&gt;&lt;br /&gt;	&lt;p&gt;&lt;br /&gt;	    Grab the tarball from &lt;a href=&quot;http://github.com/mmangino/facebooker/tree/master&quot; onclick=&quot;return wait_for_load(this, event, function() { (new Image()).src = &#039;/ajax/ct.php?app_id=7833123843&amp;action_type=3&amp;post_form_id=32e17bb05cdd84a45e4f04a235741703&amp;position=3&amp;&#039; + Math.random();return true; });&quot;&gt;http://github.com/mmangino/facebooker/tree/master&lt;/a&gt; and stick it in vendor/plugins manually&lt;br /&gt;	&lt;/p&gt;&lt;br /&gt;	&lt;/li&gt;&lt;br /&gt;	&lt;li&gt; Create a controller:        &lt;br /&gt;	&lt;p class=&quot;command_line&quot;&gt;&lt;br /&gt;	 ruby script/generate controller getting_started&lt;br /&gt;	&lt;/p&gt;&lt;br /&gt;	&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;&lt;br /&gt;	Setup your application on &lt;a href=&quot;http://www.facebook.com/developers/editapp.php?new&quot; target=&quot;fb_tut_external&quot; onclick=&quot;return wait_for_load(this, event, function() { (new Image()).src = &#039;/ajax/ct.php?app_id=7833123843&amp;action_type=3&amp;post_form_id=32e17bb05cdd84a45e4f04a235741703&amp;position=3&amp;&#039; + Math.random();return true; });&quot;&gt;Facebook&lt;/a&gt;.&lt;br /&gt;	&lt;p class=&quot;descriptive_text&quot;&gt;&lt;br /&gt;	This should take you to the new app page. &lt;br /&gt;	&lt;img src=&quot;http://fbtt.shacknet.nu/images/getting_started/add_application.jpg?1235537486&quot; border=&quot;0&quot; alt=&quot;Add_application&quot; /&gt; &lt;br /&gt;	&lt;/p&gt;&lt;br /&gt;	&lt;ul&gt;&lt;br /&gt;		&lt;li&gt; Enter in Your Application Name.  This name will appear anywhere your application mentioned. &lt;/li&gt;&lt;br /&gt;		&lt;li&gt; Enter in you Callback URL.  Make this the base URL of your server. &lt;em&gt; Note: For FBML apps, like this one, the url must be web accessible.&lt;/em&gt;&lt;/li&gt;&lt;br /&gt;		&lt;li&gt; Enter in your Canvas Page URL.  This will be the path that users see in their browser. &lt;/li&gt;&lt;br /&gt;	&lt;/ul&gt;&lt;br /&gt;	&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;&lt;br /&gt;	Setup facebooker environment via RAILS_ROOT/config/facebooker.yml, &lt;em&gt; You can copy the template file from the facebooker source.&lt;/em&gt; &lt;br /&gt;	&lt;div style=&quot;margin: 10px auto; width: 90%&quot;&gt;&lt;br /&gt;	 &lt;br /&gt;	&lt;div class=&quot;code&quot;&gt;&lt;br /&gt;	&lt;table border=&quot;0&quot; class=&quot;CodeRay&quot;&gt;&lt;br /&gt;		&lt;tbody&gt;&lt;br /&gt;			&lt;tr&gt;&lt;br /&gt;				&lt;td class=&quot;line_numbers&quot;&gt;&lt;br /&gt;				&lt;pre&gt;&lt;br /&gt;				1&lt;br /&gt;				2&lt;br /&gt;				3&lt;br /&gt;				4&lt;br /&gt;				5&lt;br /&gt;				6&lt;br /&gt;				7&lt;br /&gt;				8&lt;br /&gt;				9&lt;br /&gt;				&lt;strong&gt;10&lt;/strong&gt;&lt;br /&gt;				11&lt;br /&gt;				12&lt;br /&gt;				13&lt;br /&gt;				14&lt;br /&gt;				15&lt;br /&gt;				16&lt;br /&gt;				17&lt;br /&gt;				18&lt;br /&gt;				19&lt;br /&gt;				&lt;strong&gt;20&lt;/strong&gt;&lt;br /&gt;				21&lt;br /&gt;				22&lt;br /&gt;				23&lt;br /&gt;				24&lt;br /&gt;				25&lt;br /&gt;				26&lt;br /&gt;				27&lt;br /&gt;				28&lt;br /&gt;				29&lt;br /&gt;				&lt;strong&gt;30&lt;/strong&gt;&lt;br /&gt;				31&lt;br /&gt;				32&lt;br /&gt;				33&lt;br /&gt;				&lt;/pre&gt;&lt;br /&gt;				&lt;/td&gt;&lt;br /&gt;				&lt;td class=&quot;code&quot;&gt;&lt;br /&gt;				&lt;pre&gt;&lt;br /&gt;				&lt;span class=&quot;c&quot;&gt;# File: config/facebooker-mock.yml&lt;/span&gt;&lt;br /&gt;				&lt;span class=&quot;c&quot;&gt;# The api key, secret key, and canvas page name are required to get started&lt;/span&gt;&lt;br /&gt;				&lt;span class=&quot;c&quot;&gt;# Tunnel configuration is only needed if you are going to use the facebooker:tunnel Rake tasks&lt;/span&gt;&lt;br /&gt;				&lt;span class=&quot;c&quot;&gt;# Your callback url in Facebook should be set to http://public_host:public_port&lt;/span&gt;&lt;br /&gt;				development:&lt;br /&gt;				api_key: &lt;span class=&quot;i&quot;&gt;442&lt;/span&gt;c6504bd2362d8a7fba7303cd583ca &lt;br /&gt;				secret_key: &lt;span class=&quot;co&quot;&gt;XXXXXXXXXXXXX&lt;/span&gt;&lt;br /&gt;				canvas_page_name: facebooker_tutorial    &lt;br /&gt;				callback_url: http&lt;span class=&quot;sy&quot;&gt;:/&lt;/span&gt;/staging.travelerstable.com:&lt;span class=&quot;i&quot;&gt;8888&lt;/span&gt;&lt;br /&gt;				tunnel:&lt;br /&gt;				public_host_username: fooberryfoo &lt;br /&gt;				public_host: staging.travelerstable.com&lt;br /&gt;				public_port: &lt;span class=&quot;i&quot;&gt;8888&lt;/span&gt;&lt;br /&gt;				local_port: &lt;span class=&quot;i&quot;&gt;3000&lt;/span&gt;    &lt;br /&gt;				test:&lt;br /&gt;				api_key: &lt;br /&gt;				secret_key: &lt;br /&gt;				canvas_page_name: &lt;br /&gt;				tunnel:&lt;br /&gt;				public_host_username: &lt;br /&gt;				public_host: &lt;br /&gt;				public_port: &lt;span class=&quot;i&quot;&gt;4007&lt;/span&gt;&lt;br /&gt;				local_port: &lt;span class=&quot;i&quot;&gt;3000&lt;/span&gt;&lt;br /&gt;				production:&lt;br /&gt;				api_key: &lt;br /&gt;				secret_key: &lt;br /&gt;				canvas_page_name: &lt;br /&gt;				tunnel:&lt;br /&gt;				public_host_username: &lt;br /&gt;				public_host: &lt;br /&gt;				public_port: &lt;span class=&quot;i&quot;&gt;4007&lt;/span&gt;&lt;br /&gt;				local_port: &lt;span class=&quot;i&quot;&gt;3000&lt;/span&gt; &lt;br /&gt;				&lt;/pre&gt;&lt;br /&gt;				&lt;/td&gt;&lt;br /&gt;			&lt;/tr&gt;&lt;br /&gt;		&lt;/tbody&gt;&lt;br /&gt;	&lt;/table&gt;&lt;br /&gt;	&lt;/div&gt;&lt;br /&gt;	&lt;/div&gt;&lt;br /&gt;	  &lt;br /&gt;	&lt;ul&gt;&lt;br /&gt;		&lt;li&gt;Enter in the callback url that you specified in the facebook application settings.&lt;/li&gt;&lt;br /&gt;		&lt;li&gt;Enter in your Canvas Page Name. &lt;em&gt;This the last part of the path you entered in the Canvas Page URL &lt;/em&gt;&lt;/li&gt;&lt;br /&gt;	&lt;/ul&gt;&lt;br /&gt;	&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Okay create a view for you getting_started controller.  And put anything you want in there.&lt;br /&gt;	&lt;p&gt;&lt;br /&gt;	EDIT: app/views/getting_started/add_facebook_application.fbml.erb.  Like this: &lt;br /&gt;	&lt;/p&gt;&lt;br /&gt;	&lt;div class=&quot;code&quot;&gt;&lt;br /&gt;	&lt;table border=&quot;0&quot; class=&quot;CodeRay&quot;&gt;&lt;br /&gt;		&lt;tbody&gt;&lt;br /&gt;			&lt;tr&gt;&lt;br /&gt;				&lt;td class=&quot;line_numbers&quot;&gt;&lt;br /&gt;				&lt;pre&gt;&lt;br /&gt;				1&lt;br /&gt;				2&lt;br /&gt;				3&lt;br /&gt;				4&lt;br /&gt;				5&lt;br /&gt;				6&lt;br /&gt;				7&lt;br /&gt;				8&lt;br /&gt;				9&lt;br /&gt;				&lt;strong&gt;10&lt;/strong&gt;&lt;br /&gt;				11&lt;br /&gt;				12&lt;br /&gt;				13&lt;br /&gt;				14&lt;br /&gt;				15&lt;br /&gt;				16&lt;br /&gt;				17&lt;br /&gt;				18&lt;br /&gt;				19&lt;br /&gt;				&lt;strong&gt;20&lt;/strong&gt;&lt;br /&gt;				21&lt;br /&gt;				22&lt;br /&gt;				23&lt;br /&gt;				24&lt;br /&gt;				25&lt;br /&gt;				26&lt;br /&gt;				27&lt;br /&gt;				28&lt;br /&gt;				29&lt;br /&gt;				&lt;strong&gt;30&lt;/strong&gt;&lt;br /&gt;				31&lt;br /&gt;				32&lt;br /&gt;				33&lt;br /&gt;				34&lt;br /&gt;				35&lt;br /&gt;				36&lt;br /&gt;				37&lt;br /&gt;				38&lt;br /&gt;				39&lt;br /&gt;				&lt;strong&gt;40&lt;/strong&gt;&lt;br /&gt;				41&lt;br /&gt;				42&lt;br /&gt;				43&lt;br /&gt;				44&lt;br /&gt;				45&lt;br /&gt;				46&lt;br /&gt;				47&lt;br /&gt;				48&lt;br /&gt;				49&lt;br /&gt;				&lt;strong&gt;50&lt;/strong&gt;&lt;br /&gt;				51&lt;br /&gt;				52&lt;br /&gt;				53&lt;br /&gt;				54&lt;br /&gt;				55&lt;br /&gt;				56&lt;br /&gt;				57&lt;br /&gt;				58&lt;br /&gt;				59&lt;br /&gt;				&lt;strong&gt;60&lt;/strong&gt;&lt;br /&gt;				61&lt;br /&gt;				62&lt;br /&gt;				63&lt;br /&gt;				&lt;/pre&gt;&lt;br /&gt;				&lt;/td&gt;&lt;br /&gt;				&lt;td class=&quot;code&quot;&gt;&lt;br /&gt;				&lt;pre&gt;&lt;br /&gt;				&lt;span class=&quot;c&quot;&gt;# File: app/views/getting_started/_steps.html.erb&lt;/span&gt;&lt;br /&gt;				&amp;lt;div id=&lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;tutorial_steps&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;br /&gt;				&amp;lt;ol&amp;gt;&lt;br /&gt;				&amp;lt;li&amp;gt; &lt;span class=&quot;co&quot;&gt;Create&lt;/span&gt; a rails application: &amp;lt;p &lt;span class=&quot;r&quot;&gt;class&lt;/span&gt;=&lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;command_line&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&amp;gt; rails facebooker_tutorial&amp;lt;&lt;span class=&quot;rx&quot;&gt;&lt;span class=&quot;dl&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;p&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;/&lt;/span&gt;&lt;/span&gt;li&amp;gt;    &lt;br /&gt;				&amp;lt;li&amp;gt; &lt;span class=&quot;co&quot;&gt;Install&lt;/span&gt; &lt;span class=&quot;co&quot;&gt;Facebooker&lt;/span&gt; &lt;span class=&quot;co&quot;&gt;Plugin&lt;/span&gt;: &amp;lt;p &lt;span class=&quot;r&quot;&gt;class&lt;/span&gt;=&lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;command_line&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&amp;gt; script/plugin install git&lt;span class=&quot;sy&quot;&gt;:/&lt;/span&gt;/github.com/mmangino/facebooker.git &lt;span class=&quot;r&quot;&gt;or&lt;/span&gt; &amp;lt;&lt;span class=&quot;rx&quot;&gt;&lt;span class=&quot;dl&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;p&amp;gt;&lt;br /&gt;				&amp;lt;p&amp;gt; cd RAILS_ROOT&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;/&lt;/span&gt;&lt;/span&gt;vendor/plugins; git clone git&lt;span class=&quot;sy&quot;&gt;:/&lt;/span&gt;/github.com/mmangino/facebooker.git &lt;span class=&quot;r&quot;&gt;or&lt;/span&gt; &amp;lt;&lt;span class=&quot;rx&quot;&gt;&lt;span class=&quot;dl&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;p&amp;gt;&lt;br /&gt;				&amp;lt;p&amp;gt;    Grab the tarball from &amp;lt;%= link_to(&amp;quot;http:&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;/&lt;/span&gt;&lt;/span&gt;/github.com/mmangino/facebooker/tree/master&lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;http&lt;span class=&quot;sy&quot;&gt;:/&lt;/span&gt;/github.com/mmangino/facebooker/tree/master&lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;) %&amp;gt; and stick it in vendor/plugins manually&lt;br /&gt;				&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;				&amp;lt;li&amp;gt; Create a controller:        &amp;lt;p class=&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;command_line&lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;&amp;gt; ruby script/generate controller getting_started&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;				&amp;lt;li&amp;gt;&lt;br /&gt;				Setup your application on &amp;lt;%= link_to(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;co&quot;&gt;Facebook&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;http&lt;span class=&quot;sy&quot;&gt;:/&lt;/span&gt;/www.facebook.com/developers/editapp.php?new&lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;, :target =&amp;gt; &lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;fb_tut_external&lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;) %&amp;gt;.&lt;br /&gt;				&amp;lt;p class=&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;descriptive_text&lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;&amp;gt;&lt;br /&gt;				This should take you to the new app page. &lt;br /&gt;				&amp;lt;%= image_tag(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;getting_started/add_application.jpg&lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;) %&amp;gt; &lt;br /&gt;				&amp;lt;ul&amp;gt;     &lt;br /&gt;				&amp;lt;li&amp;gt; Enter in Your Application Name.  This name will appear anywhere your application mentioned. &amp;lt;/li&amp;gt;&lt;br /&gt;				&amp;lt;li&amp;gt; Enter in you Callback URL.  Make this the base URL of your server. &amp;lt;em&amp;gt; Note: For FBML apps, like this one, the url must be web accessible.&amp;lt;/em&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;				&amp;lt;li&amp;gt; Enter in your Canvas Page URL.  This will be the path that users see in their browser. &amp;lt;/li&amp;gt;&lt;br /&gt;				&amp;lt;/ul&amp;gt;&lt;br /&gt;				&amp;lt;/p&amp;gt;        &lt;br /&gt;				&amp;lt;/li&amp;gt;&lt;br /&gt;				&amp;lt;li&amp;gt;&lt;br /&gt;				Setup facebooker environment via RAILS_ROOT/config/facebooker.yml, &amp;lt;em&amp;gt; You can copy the template file from the facebooker source.&amp;lt;/em&amp;gt; &lt;br /&gt;				&amp;lt;div style=&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;width:&lt;span class=&quot;i&quot;&gt;90&lt;/span&gt;%;margin: &lt;span class=&quot;i&quot;&gt;10&lt;/span&gt;px auto;&lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;&amp;gt; &lt;br /&gt;				&amp;lt;%= highlight_file(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;config/facebooker-mock.yml&lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;) %&amp;gt;&lt;br /&gt;				&amp;lt;/div&amp;gt;  &lt;br /&gt;				&amp;lt;ul&amp;gt; &lt;br /&gt;				&amp;lt;li&amp;gt;Enter in the callback url that you specified in the facebook application settings.&amp;lt;/li&amp;gt;&lt;br /&gt;				&amp;lt;li&amp;gt;Enter in your Canvas Page Name. &amp;lt;em&amp;gt;This the last part of the path you entered in the Canvas Page URL &amp;lt;/em&amp;gt;&amp;lt;/li&amp;gt; &lt;br /&gt;				&amp;lt;/ul&amp;gt;&lt;br /&gt;				&amp;lt;/li&amp;gt;&lt;br /&gt;				&amp;lt;li&amp;gt;Okay create a view for you getting_started controller.  And put anything you want in there.&lt;br /&gt;				&amp;lt;p&amp;gt;EDIT: app/views/getting_started/add_facebook_application.fbml.erb.  Like this: &amp;lt;/p&amp;gt;&lt;br /&gt;				&amp;lt;%= highlight_file(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;app/views/getting_started/_steps.html.erb&lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;) %&amp;gt;&lt;br /&gt;				&amp;lt;/li&amp;gt;&lt;br /&gt;				&amp;lt;li&amp;gt; &lt;br /&gt;				Add a default route for your application.  &lt;br /&gt;				&amp;lt;div style=&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;width:&lt;span class=&quot;i&quot;&gt;90&lt;/span&gt;%;margin: &lt;span class=&quot;i&quot;&gt;10&lt;/span&gt;px auto;&lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;&amp;gt; &lt;br /&gt;				&amp;lt;%= highlight_code(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;map.connect &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&#039;&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&#039;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;sy&quot;&gt;:controller&lt;/span&gt; =&amp;gt; &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&#039;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;getting_started&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&#039;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;sy&quot;&gt;:action&lt;/span&gt; =&amp;gt; &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&#039;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;add_facebook_application&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&#039;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;) %&amp;gt;&lt;br /&gt;				&amp;lt;/div&amp;gt;&lt;br /&gt;				&amp;lt;/li&amp;gt;&lt;br /&gt;				&amp;lt;li&amp;gt;&lt;br /&gt;				Start up rails &amp;lt;p class=&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;command_line&lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;&amp;gt;ruby script/server  &amp;lt;/p&amp;gt;&lt;br /&gt;				&amp;lt;/li&amp;gt;&lt;br /&gt;				&amp;lt;li&amp;gt;&lt;br /&gt;				Check out your app at &amp;lt;%= link_to(url =  url_for(:controller =&amp;gt;  params[:controller ], :action =&amp;gt; params[:action], :only_path =&amp;gt; false), url  ) %&amp;gt;&lt;br /&gt;				&amp;lt;/li&amp;gt;&lt;br /&gt;				&amp;lt;li&amp;gt;Now create a view accessible straight from the web and put whatever you want in there. &amp;lt;p&amp;gt;EDIT: app/views/getting_started/add_facebook_application.html.erb&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;				&amp;lt;li&amp;gt; Try from the web &amp;lt;%= link_to(url =  url_for(:controller =&amp;gt;  params[:controller ], :action =&amp;gt; params[:action], :canvas =&amp;gt; false, :only_path =&amp;gt; false), url  ) %&amp;gt;  -- Here you are accessing you app straight from the web!!&amp;lt;/li&amp;gt;     &lt;br /&gt;				&amp;lt;/ol&amp;gt;            &lt;br /&gt;				&amp;lt;/div&amp;gt; &lt;br /&gt;				&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;				&lt;/pre&gt;&lt;br /&gt;				&lt;/td&gt;&lt;br /&gt;			&lt;/tr&gt;&lt;br /&gt;		&lt;/tbody&gt;&lt;br /&gt;	&lt;/table&gt;&lt;br /&gt;	&lt;/div&gt;&lt;br /&gt;	&lt;/li&gt;&lt;br /&gt;	&lt;li&gt; &lt;br /&gt;	Add a default route for your application.  &lt;br /&gt;	&lt;div style=&quot;margin: 10px auto; width: 90%&quot;&gt;&lt;br /&gt;	 &lt;br /&gt;	&lt;div class=&quot;code&quot;&gt;&lt;br /&gt;	&lt;table border=&quot;0&quot; class=&quot;CodeRay&quot;&gt;&lt;br /&gt;		&lt;tbody&gt;&lt;br /&gt;			&lt;tr&gt;&lt;br /&gt;				&lt;td class=&quot;line_numbers&quot;&gt;&lt;br /&gt;				&lt;pre&gt;&lt;br /&gt;				&lt;/pre&gt;&lt;br /&gt;				&lt;/td&gt;&lt;br /&gt;				&lt;td class=&quot;code&quot;&gt;&lt;br /&gt;				&lt;pre&gt;&lt;br /&gt;				map.connect &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&#039;&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&#039;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;sy&quot;&gt;:controller&lt;/span&gt; =&amp;gt; &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&#039;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;getting_started&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&#039;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;sy&quot;&gt;:action&lt;/span&gt; =&amp;gt; &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&#039;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;add_facebook_application&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&#039;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;				&lt;/pre&gt;&lt;br /&gt;				&lt;/td&gt;&lt;br /&gt;			&lt;/tr&gt;&lt;br /&gt;		&lt;/tbody&gt;&lt;br /&gt;	&lt;/table&gt;&lt;br /&gt;	&lt;/div&gt;&lt;br /&gt;	&lt;/div&gt;&lt;br /&gt;	&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;&lt;br /&gt;	Start up rails &lt;br /&gt;	&lt;p class=&quot;command_line&quot;&gt;&lt;br /&gt;	ruby script/server  &lt;br /&gt;	&lt;/p&gt;&lt;br /&gt;	&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;&lt;br /&gt;	Check out your app at &lt;a href=&quot;http://fbtt.shacknet.nu/&quot; onclick=&quot;return wait_for_load(this, event, function() { (new Image()).src = &#039;/ajax/ct.php?app_id=7833123843&amp;action_type=3&amp;post_form_id=32e17bb05cdd84a45e4f04a235741703&amp;position=3&amp;&#039; + Math.random();return true; });&quot;&gt;http://fbtt.shacknet.nu/&lt;/a&gt;&lt;br /&gt;	&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Now create a view accessible straight from the web and put whatever you want in there. &lt;br /&gt;	&lt;p&gt;&lt;br /&gt;	EDIT: app/views/getting_started/add_facebook_application.html.erb&lt;br /&gt;	&lt;/p&gt;&lt;br /&gt;	&lt;/li&gt;&lt;br /&gt;	&lt;li&gt; Try from the web &lt;a href=&quot;http://fbtt.shacknet.nu/&quot; onclick=&quot;return wait_for_load(this, event, function() { (new Image()).src = &#039;/ajax/ct.php?app_id=7833123843&amp;action_type=3&amp;post_form_id=32e17bb05cdd84a45e4f04a235741703&amp;position=3&amp;&#039; + Math.random();return true; });&quot;&gt;http://fbtt.shacknet.nu/&lt;/a&gt;  -- Here you are accessing you app straight from the web!!&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;            &lt;br /&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;</description>
		<guid>http://sumit-bhasin.talkmeblog.com/Sumit-Bhasin-b1/Facebooker-ROR-setup-steps-b1-p5550.htm</guid>
	</item>
	<item>
		<title>iPhone on Rails - Creating an iPhone optimised version of your Rails site using iUI and Rails 2</title>
		<category>Sumit Bhasin</category>
		<pubDate>2009-04-13T13:53:49Z</pubDate>
		<description>&lt;div class=&quot;primary&quot;&gt;&lt;br /&gt;&lt;h1&gt;iPhone on Rails - Creating an iPhone optimised version of your Rails site using iUI and Rails 2&lt;/h1&gt;&lt;br /&gt;&lt;p style=&quot;float: right&quot;&gt;&lt;br /&gt;&lt;a href=&quot;http://www.slashdotdash.net/images/iPhone3.gif&quot;&gt;&lt;img src=&quot;http://www.slashdotdash.net/images/iPhone3p.gif&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style=&quot;float: right&quot;&gt;&lt;br /&gt;&lt;a href=&quot;http://www.slashdotdash.net/images/iPhone2.gif&quot;&gt;&lt;img src=&quot;http://www.slashdotdash.net/images/iPhone2p.gif&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;a href=&quot;http://www.slashdotdash.net/articles/2007/12/03/rails-2-upgrade-notes&quot;&gt;After upgrading trawlr.com to Rails 2&lt;/a&gt; I thought I’d make use of some of the new features and attempt to create an iPhone version of the site.&lt;br /&gt;&lt;br /&gt;With Rails 2 you can create a mime type specifically for the iPhone and then use that format in a respond_to block (along with views such as index.iphone.erb).&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;Before you start – iPhoney&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;a href=&quot;http://www.marketcircle.com/iphoney/&quot;&gt;iPhoney&lt;/a&gt; is an indispensable Mac-only tool for aiding the development of an iPhone specific site.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;	&lt;p&gt;&lt;br /&gt;	Looking for a way to see how your web creations will look on iPhone?&lt;br /&gt;	Look no further. iPhoney gives you a pixel-accurate web browsing&lt;br /&gt;	environment—powered by Safari—that you can use when developing web&lt;br /&gt;	sites for iPhone. It’s the perfect 320 by 480-pixel canvas for your&lt;br /&gt;	iPhone development. And it’s free. iPhoney is not an iPhone simulator&lt;br /&gt;	but instead is designed for web developers who want to create 320 by&lt;br /&gt;	480 (or 480 by 320) websites for use with iPhone. It gives you a canvas&lt;br /&gt;	on which to test the visual quality of your designs.&lt;br /&gt;	&lt;/p&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Ensure iPhoney’s user agent is set to iPhone User Agent in the menu.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;iPhone mime type&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Create an iPhone mime type alias using Rails 2 initializers.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;config/initializers/mime_types&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Mime::Type.register_alias &amp;quot;text/html&amp;quot;, :iphone&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;h2&gt;Detecting iPhone user agents&lt;/h2&gt;&lt;br /&gt;&lt;p style=&quot;float: right&quot;&gt;&lt;br /&gt;&lt;a href=&quot;http://www.slashdotdash.net/images/iPhone1.gif&quot;&gt;&lt;img src=&quot;http://www.slashdotdash.net/images/iPhone1p.gif&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Apple recommends that rather than redirecting iPhone users to an&lt;br /&gt;iPhone-optimised version of your site you should instead show the&lt;br /&gt;original site with a link to the alternative.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;This can be achieved via user agent sniffing; looking for Mobile Safari (as Apple suggests), rather that iPhone or iPod touch, to allow for future device support.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Adding a helper method to application_helper.rb allows a notification message to be shown for &lt;em&gt;only&lt;/em&gt; iPhone users (try accessing &lt;a href=&quot;http://www.trawlr.com/&quot;&gt;www.trawlr.com&lt;/a&gt; from an iPhone).&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;app/helpers/application_helper.rb&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# Request from an iPhone or iPod touch? (Mobile Safari user agent)&lt;br /&gt;def iphone_user_agent?&lt;br /&gt;request.env[&amp;quot;HTTP_USER_AGENT&amp;quot;] &amp;amp;&amp;amp; request.env[&amp;quot;HTTP_USER_AGENT&amp;quot;][/(Mobile/.+Safari)/]&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;In your view, show a message for iPhone user agents directing them to the iPhone version.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;% if iphone_user_agent? # Show message for iPhone users -%&amp;gt;&lt;br /&gt;&amp;lt;div class=&amp;quot;message&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;p&amp;gt;Using an iPhone? &amp;lt;a href=&amp;quot;http://iphone.trawlr.com/&amp;quot;&amp;gt;Use the optimised version&amp;lt;/a&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;% end -%&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;h2&gt;iPhone subdomain&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Instead of forcing users straight to our iPhone version, we offer them the option by using a separate subdomain (&lt;a href=&quot;http://iphone.trawlr.com/&quot;&gt;iphone.trawlr.com&lt;/a&gt;) with a link back to the &lt;em&gt;regular&lt;/em&gt; site if they wish. When developing locally I modified my /etc/hosts file as follows so that I could use http://iphone.localhost.com:3000/.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;/etc/hosts&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;127.0.0.1 iphone.localhost.com&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;You may need to flush the &lt;span class=&quot;caps&quot;&gt;DNS&lt;/span&gt; cache after making the changes.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;sudo dscacheutil -flushcache&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;h2&gt;Adjust format for iPhone&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;I chose to require login for all requests to the iPhone version of the site.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;class ApplicationController &amp;lt; ActionController::Base&lt;br /&gt;before_filter :adjust_format_for_iphone&lt;br /&gt;before_filter :iphone_login_required&lt;br /&gt;private&lt;br /&gt;# Set iPhone format if request to iphone.trawlr.com&lt;br /&gt;def adjust_format_for_iphone&lt;br /&gt;request.format = :iphone if iphone_request?&lt;br /&gt;end&lt;br /&gt;# Force all iPhone users to login&lt;br /&gt;def iphone_login_required&lt;br /&gt;if iphone_request?&lt;br /&gt;redirect_to login_path unless logged_in?&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;# Return true for requests to iphone.trawlr.com&lt;br /&gt;def iphone_request?&lt;br /&gt;return (request.subdomains.first == &amp;quot;iphone&amp;quot; || params[:format] == &amp;quot;iphone&amp;quot;)&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Note that sessions_controller.rb (handles login) requires skip_before_filter :iphone_login_required.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;Using iUI and creating iPhone views&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The &lt;a href=&quot;http://code.google.com/p/iui/&quot;&gt;iUI&lt;/a&gt; framework, based&lt;br /&gt;on Joe Hewitt’s iPhone navigation work, hugely simplifies iPhone web&lt;br /&gt;development. All you need to do is include the iUI JavaScript and &lt;span class=&quot;caps&quot;&gt;CSS&lt;/span&gt;&lt;br /&gt;files along with included images and create your views in a particular&lt;br /&gt;structure to have native iPhone behaviour such as sliding menus and &lt;span class=&quot;caps&quot;&gt;AJAX&lt;/span&gt; page loading.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Rails 2 makes it trivial to create different views depending upon&lt;br /&gt;the format, including layouts. Our iPhone layout includes a few&lt;br /&gt;specifics for iUI and a viewport meta tag for the device.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;app/views/layouts/application.iphone.erb&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Strict//EN&amp;quot; &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; xml:lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;meta http-equiv=&amp;quot;content-type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;meta id=&amp;quot;viewport&amp;quot; name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=320; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;&amp;lt;%= @page_title -%&amp;gt;&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;%= stylesheet_link_tag &#039;iui&#039; %&amp;gt;&lt;br /&gt;&amp;lt;%= javascript_include_tag &#039;iui&#039; %&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;div class=&amp;quot;toolbar&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;h1 id=&amp;quot;pageTitle&amp;quot;&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;&amp;lt;a id=&amp;quot;backButton&amp;quot; class=&amp;quot;button&amp;quot; href=&amp;quot;#&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;%= yield %&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;When creating your iPhone views you should follow the iUI style&lt;br /&gt;guide, an example page is given below. Standard hyperlinks are loaded&lt;br /&gt;using &lt;span class=&quot;caps&quot;&gt;AJAX&lt;/span&gt; and &lt;em&gt;slide&lt;/em&gt; into view, navigating back is handled by iUI. Links may be prefixed with target=&amp;quot;_self&amp;quot; to replace the entire page or target=&amp;quot;_replace&amp;quot; to replace the element with the response (using &lt;span class=&quot;caps&quot;&gt;AJAX&lt;/span&gt;).&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;index.iphone.erb&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;ul title=&amp;quot;Home&amp;quot; selected=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;li&amp;gt;&amp;lt;%= link_to &#039;Example action&#039;, example_path %&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;lt;li&amp;gt;&amp;lt;%= link_to &#039;Logout&#039;, logout_path, :method =&amp;gt; :delete, :target =&amp;gt; &#039;_self&#039; %&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;show.iphone.erb&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;div class=&amp;quot;panel&amp;quot; title=&amp;quot;Example&amp;quot; selected=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;h2&amp;gt;Example Content&amp;lt;/h2&amp;gt;&lt;br /&gt;&amp;lt;p&amp;gt;Here&#039;s some content&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;It’s important to remember that iUI will load content using &lt;span class=&quot;caps&quot;&gt;AJAX&lt;/span&gt;, thus you &lt;strong&gt;only&lt;/strong&gt; need to render a layout (such as application.iphone.erb) for the first request or page of your iPhone site. All following requests should use render :layout =&amp;gt; false (unless loaded into a new page with target=&amp;quot;_replace&amp;quot;). If you experience any wierd rendering issues it’ll most likely be due to this irregularity.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;respond_to do |format|&lt;br /&gt;format.iphone do  # action.iphone.erb&lt;br /&gt;render :layout =&amp;gt; false&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;h2&gt;Show, don’t tell&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Why not try &lt;a href=&quot;http://iphone.trawlr.com/&quot;&gt;iphone.trawlr.com&lt;/a&gt; for yourself? It’ll work for your iPhone or any web browser. You’ll need to register via the &lt;a href=&quot;http://www.trawlr.com/&quot;&gt;normal site&lt;/a&gt; if you don’t already have an account (quick, no email registration required)!&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;References&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The following resources on the new Rails 2 iPhone format ability and&lt;br /&gt;iUI library were extremely helpful; the documentation from Apple not so&lt;br /&gt;much!&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;	&lt;li&gt;http://developer.apple.com/iphone/&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;http://www.railspikes.com/2007/11/8/iphone-subdomains-with-rails&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;http://blog.nicksieger.com/articles/2007/09/18/railsconf-europe-david-heinemeier-hansson&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;http://www.joehewitt.com/blog/introducing_iui.php&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;http://code.google.com/p/iui/&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Yes, I’m still loving the iPhone!&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;</description>
		<guid>http://sumit-bhasin.talkmeblog.com/Sumit-Bhasin-b1/iPhone-on-Rails-Creating-an-iPhone-optimised-version-of-your-Rails-site-using-iUI-and-Rails-2-b1-p5549.htm</guid>
	</item>
	<item>
		<title>linux command  tips</title>
		<category>Sumit Bhasin</category>
		<pubDate>2009-02-04T06:23:59Z</pubDate>
		<description>This is a linux command line reference for common operations.&lt;br /&gt;&lt;br /&gt;Examples marked with • are valid/safe to paste without modification into a terminal, so&lt;br /&gt;&lt;br /&gt;you may want to keep a terminal window open while reading this so you can &lt;a href=&quot;http://www.pixelbeat.org/docs/xclipboard.html&quot;&gt;cut &amp;amp; paste&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;All these commands have been tested both on Fedora and Ubuntu.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table border=&quot;0&quot; class=&quot;pixelbeat&quot;&gt;&lt;br /&gt;	&lt;tbody&gt;&lt;br /&gt;		&lt;tr id=&quot;misc&quot; class=&quot;pbtitle&quot;&gt;&lt;br /&gt;			&lt;td colspan=&quot;2&quot;&gt;&lt;strong&gt;Command&lt;/strong&gt;&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;apropos whatis&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Show commands pertinent to string. See also &lt;a href=&quot;http://www.pixelbeat.org/scripts/threadsafe&quot;&gt;threadsafe&lt;/a&gt;&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;&lt;a href=&quot;http://www.pixelbeat.org/lkdb/less.html&quot;&gt;man&lt;/a&gt; -t man | ps2pdf - &amp;gt; man.pdf&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;make a pdf of a manual page&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;which command&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Show full path name of command&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;time command&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;See how long a command takes&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;time cat&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Start stopwatch. Ctrl-d to stop. See also &lt;a href=&quot;http://www.pixelbeat.org/scripts/stopwatch/&quot;&gt;sw&lt;/a&gt;&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;nice &lt;a href=&quot;http://www.pixelbeat.org/lkdb/info.html&quot;&gt;info&lt;/a&gt;&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Run a low priority command (The &amp;quot;info&amp;quot; reader in this case)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;renice 19 -p $$&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Make shell (script) low priority. Use for non interactive tasks&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr id=&quot;dirs&quot; class=&quot;pbtitle&quot;&gt;&lt;br /&gt;			&lt;td colspan=&quot;3&quot;&gt;&lt;strong&gt;dir navigation&lt;/strong&gt;&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;cd -&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Go to previous directory&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;cd&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Go to $HOME directory&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;(cd dir &amp;amp;&amp;amp; command)&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Go to dir, execute command and return to current dir&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;pushd &lt;strong&gt;.&lt;/strong&gt;&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Put current dir on stack so you can &lt;strong&gt;popd&lt;/strong&gt; back to it&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr id=&quot;file_search&quot; class=&quot;pbtitle&quot;&gt;&lt;br /&gt;			&lt;td colspan=&quot;3&quot;&gt;&lt;strong&gt;file searching&lt;/strong&gt;&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;&lt;a href=&quot;http://www.pixelbeat.org/settings/.bashrc&quot;&gt;alias&lt;/a&gt; l=&#039;ls -l --color=auto&#039;&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;quick dir listing&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;ls -lrt&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;List files by date. See also &lt;a href=&quot;http://www.pixelbeat.org/scripts/newest&quot;&gt;newest&lt;/a&gt; and &lt;a href=&quot;http://www.pixelbeat.org/scripts/find_mm_yyyy&quot;&gt;find_mm_yyyy&lt;/a&gt;&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;ls /usr/bin | pr -T9 -W$COLUMNS&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Print in 9 columns to width of terminal&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;find -name &#039;*.[ch]&#039; | xargs grep -E &#039;expr&#039;&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Search &#039;expr&#039; in this dir and below. See also &lt;a href=&quot;http://www.pixelbeat.org/scripts/findrepo&quot;&gt;findrepo&lt;/a&gt;&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;find -type f -print0 | xargs -r0 grep -F &#039;example&#039;&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Search all regular files for &#039;example&#039; in this dir and below&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;find -maxdepth 1 -type f | xargs grep -F &#039;example&#039;&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Search all regular files for &#039;example&#039; in this dir&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;find -maxdepth 1 -type d | while &lt;a href=&quot;http://www.pixelbeat.org/programming/readline/&quot;&gt;read&lt;/a&gt; dir; do echo $dir; echo cmd2; done&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Process each item with multiple commands (in while loop)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;find -type f ! -perm -444&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Find files not readable by all (useful for web site)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;find -type d ! -perm -111&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Find dirs not accessible by all (useful for web site)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;locate -r &#039;file[^/]*.txt&#039;&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Search cached index for names. This re is like glob *file*.txt&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;look reference&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Quickly search (sorted) dictionary for prefix&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;grep &lt;a href=&quot;http://www.pixelbeat.org/settings/.bashrc&quot;&gt;--color&lt;/a&gt; reference /usr/share/dict/words&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Highlight occurances of regular expression in dictionary&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr id=&quot;archives&quot; class=&quot;pbtitle&quot;&gt;&lt;br /&gt;			&lt;td colspan=&quot;3&quot;&gt;&lt;strong&gt;archives and compression&lt;/strong&gt;&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;gpg -c file&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Encrypt file&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;gpg file.gpg&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Decrypt file&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;tar -c dir/ | bzip2 &amp;gt; dir.tar.bz2&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Make compressed archive of dir/&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;bzip2 -dc dir.tar.bz2 | tar -x&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Extract archive (use gzip instead of bzip2 for tar.gz files)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;tar -c dir/ | gzip | gpg -c | ssh user@remote &#039;dd of=dir.tar.gz.gpg&#039;&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Make encrypted archive of dir/ on remote machine&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;find dir/ -name &#039;*.txt&#039; | tar -c --files-from=- | bzip2 &amp;gt; dir_txt.tar.bz2&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Make archive of subset of dir/ and below&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;find dir/ -name &#039;*.txt&#039; | xargs cp -a --target-directory=dir_txt/ --parents&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Make copy of subset of dir/ and below&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;( tar -c /dir/to/copy ) | ( cd /where/to/ &amp;amp;&amp;amp; tar -x -p )&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Copy (with permissions) copy/ dir to /where/to/ dir&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;( cd /dir/to/copy &amp;amp;&amp;amp; tar -c &lt;strong&gt;.&lt;/strong&gt; ) | ( cd /where/to/ &amp;amp;&amp;amp; tar -x -p )&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Copy (with permissions) contents of copy/ dir to /where/to/&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;( tar -c /dir/to/copy ) | ssh -C user@remote &#039;cd /where/to/ &amp;amp;&amp;amp; tar -x -p&#039; &lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Copy (with permissions) copy/ dir to remote:/where/to/ dir&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;dd bs=1M if=/dev/sda | gzip | ssh user@remote &#039;dd of=sda.gz&#039;&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Backup harddisk to remote machine&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr id=&quot;rsync&quot; class=&quot;pbtitle&quot;&gt;&lt;br /&gt;			&lt;td colspan=&quot;3&quot;&gt;&lt;strong&gt;rsync&lt;/strong&gt; (Network efficient file copier: Use the --dry-run option for testing)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;rsync -P rsync://rsync.server.com/path/to/file file&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Only get diffs. Do multiple times for troublesome downloads&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;rsync --bwlimit=1000 fromfile tofile&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Locally copy with rate limit. It&#039;s like nice for I/O&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;rsync -az -e ssh --delete ~/public_html/ remote.com:&#039;~/public_html&#039;&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Mirror web site (using compression and encryption)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;rsync -auz -e ssh remote:/dir/ &lt;strong&gt;.&lt;/strong&gt; &amp;amp;&amp;amp; rsync -auz -e ssh &lt;strong&gt;.&lt;/strong&gt; remote:/dir/&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Synchronize current directory with remote one&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr id=&quot;ssh&quot; class=&quot;pbtitle&quot;&gt;&lt;br /&gt;			&lt;td colspan=&quot;3&quot;&gt;&lt;strong&gt;ssh&lt;/strong&gt; (Secure SHell)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;ssh $USER@$HOST command&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Run command on $HOST as $USER (default command=shell)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;ssh -f -Y $USER@$HOSTNAME xeyes&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Run GUI command on $HOSTNAME as $USER&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;scp -p -r $USER@$HOST: file dir/&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Copy with permissions to $USER&#039;s home directory on $HOST&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;ssh -g -L 8080:localhost:80 root@$HOST&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Forward connections to $HOSTNAME:8080 out to $HOST:80&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;ssh -R 1434:imap:143 root@$HOST&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Forward connections from $HOST:1434 in to imap:143&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr id=&quot;wget&quot; class=&quot;pbtitle&quot;&gt;&lt;br /&gt;			&lt;td colspan=&quot;3&quot;&gt;&lt;strong&gt;wget&lt;/strong&gt; (multi purpose download tool)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;(cd cli &amp;amp;&amp;amp; wget -nd -pHEKk http://www.pixelbeat.org/cmdline.html)&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Store local browsable version of a page to the current dir&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;wget -c http://www.example.com/large.file&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Continue downloading a partially downloaded file&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;wget -r -nd -np -l1 -A &#039;*.jpg&#039; http://www.example.com/dir/&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Download a set of files to the current directory&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;wget ftp://remote/file[1-9].iso/&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;FTP supports globbing directly&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;wget -q -O- http://www.pixelbeat.org/timeline.html | grep &#039;a href&#039; | head&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Process output directly&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;echo &#039;wget url&#039; | at 01:00&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Download url at 1AM to current dir&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;wget --limit-rate=20k url&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Do a low priority download (limit to 20&lt;a href=&quot;http://www.pixelbeat.org/speeds.html&quot;&gt;KB/s&lt;/a&gt; in this case)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;wget -nv --spider --force-html -i bookmarks.html&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Check links in a file&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;wget --mirror http://www.example.com/&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Efficiently update a local copy of a site (handy from cron)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr id=&quot;net&quot; class=&quot;pbtitle&quot;&gt;&lt;br /&gt;			&lt;td colspan=&quot;3&quot;&gt;&lt;strong&gt;networking&lt;/strong&gt; (Note ifconfig, route, mii-tool, nslookup commands are obsolete)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;&lt;acronym title=&quot;usually in /sbin/&quot;&gt;ethtool&lt;/acronym&gt; eth0&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Show status of ethernet interface eth0&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;ethtool --change eth0 autoneg off speed 100 duplex full&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Manually set ethernet interface speed&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;&lt;acronym title=&quot;usually in /sbin/&quot;&gt;iwconfig&lt;/acronym&gt; eth1&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Show status of wireless interface eth1&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;iwconfig eth1 rate 1Mb/s fixed&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Manually set wireless interface speed&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;&lt;acronym title=&quot;usually in /sbin/&quot;&gt;iwlist&lt;/acronym&gt; scan&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;List wireless networks in range&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;&lt;acronym title=&quot;usually in /sbin/&quot;&gt;ip&lt;/acronym&gt; link show&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;List network interfaces&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;ip link set dev eth0 name wan&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Rename interface eth0 to wan&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;ip link set dev eth0 up&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Bring interface eth0 up (or down)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;ip addr show&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;List addresses for interfaces&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;ip addr add 1.2.3.4/24 brd + dev eth0&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Add (or del) ip and mask (255.255.255.0)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;ip route show&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;List routing table&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;ip route add default via 1.2.3.254&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Set default gateway to 1.2.3.254&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;&lt;acronym title=&quot;usually in /sbin/&quot;&gt;tc&lt;/acronym&gt; qdisc add dev lo root handle 1:0 netem delay 20msec&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Add 20ms latency to loopback device (for testing)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;tc qdisc del dev lo root&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Remove latency added above&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;host pixelbeat.org&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Lookup DNS ip address for name or vice versa&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;hostname -i&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Lookup local ip address (equivalent to host `hostname`)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;whois pixelbeat.org&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Lookup whois info for hostname or ip address&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;netstat -tupl&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;List internet services on a system&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;netstat -tup&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;List active connections to/from system&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr id=&quot;windows&quot; class=&quot;pbtitle&quot;&gt;&lt;br /&gt;			&lt;td colspan=&quot;3&quot;&gt;&lt;strong&gt;windows networking&lt;/strong&gt; (Note samba is the package that provides all this windows specific networking support)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;smbtree&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Find windows machines. See also findsmb&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;nmblookup -A 1.2.3.4&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Find the windows (netbios) name associated with ip address&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;smbclient -L windows_box&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;List shares on windows machine or samba server&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;mount -t smbfs -o fmask=666,guest //windows_box/share /mnt/share&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Mount a windows share&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;echo &#039;message&#039; | smbclient -M windows_box&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Send popup to windows machine (off by default in XP sp2)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr id=&quot;text&quot; class=&quot;pbtitle&quot;&gt;&lt;br /&gt;			&lt;td colspan=&quot;3&quot;&gt;&lt;strong&gt;text manipulation&lt;/strong&gt; (Note sed uses stdin and stdout. Newer versions support inplace editing with the -i option)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;sed &#039;s/string1/string2/g&#039;&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Replace string1 with string2&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;sed &#039;s/(.*)1/12/g&#039;&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Modify anystring1 to anystring2&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;sed &#039;/ *#/d; /^ *$/d&#039;&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Remove comments and blank lines&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;sed &#039;:a; /\$/N; s/\n//; ta&#039;&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Concatenate lines with trailing &lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;sed &#039;s/[ t]*$//&#039;&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Remove trailing spaces from lines&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;sed &#039;s/([\`\&amp;quot;$\\])/\1/g&#039;&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Escape shell metacharacters active within double quotes&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;seq 10 | sed &amp;quot;s/^/      /; s/ *(.{7,})/1/&amp;quot;&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Right align numbers&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;sed -n &#039;1000p;&lt;acronym title=&quot;quit ASAP&quot;&gt;1000q&lt;/acronym&gt;&#039;&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Print 1000th line&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;sed -n &#039;10,20p;&lt;acronym title=&quot;quit ASAP&quot;&gt;20q&lt;/acronym&gt;&#039;&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Print lines 10 to 20&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;sed -n &#039;s/.*&amp;lt;title&amp;gt;(.*)&amp;lt;/title&amp;gt;.*/1/ip;&lt;acronym title=&quot;quit after match&quot;&gt;T;q&lt;/acronym&gt;&#039;&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Extract title from HTML web page&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;sed -i 42d ~/.ssh/known_hosts&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Delete a particular line&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;sort -t. -k1,1n -k2,2n -k3,3n -k4,4n&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Sort IPV4 ip addresses&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;echo &#039;Test&#039; | tr &#039;[:lower:]&#039; &#039;[:upper:]&#039;&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Case conversion&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;tr -dc &#039;[:print:]&#039; &amp;lt; /dev/urandom&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Filter non printable characters&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;history | wc -l&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Count lines&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr id=&quot;sets&quot; class=&quot;pbtitle&quot;&gt;&lt;br /&gt;			&lt;td colspan=&quot;3&quot;&gt;&lt;strong&gt;set operations&lt;/strong&gt; (Note you can &lt;a href=&quot;http://www.pixelbeat.org/docs/env.html&quot;&gt;export LANG=C&lt;/a&gt; for speed. Also these assume no duplicate lines within a file)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;sort file1 file2 | uniq&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;&lt;acronym title=&quot;Items in either file1 or file2&quot;&gt;Union&lt;/acronym&gt; of unsorted files&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;sort file1 file2 | uniq -d&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;&lt;acronym title=&quot;Items both in file1 and file2&quot;&gt;Intersection&lt;/acronym&gt; of unsorted files&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;sort file1 file1 file2 | uniq -u&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;&lt;acronym title=&quot;Items in file2 not in file1&quot;&gt;Difference&lt;/acronym&gt; of unsorted files&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;sort file1 file2 | uniq -u&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;&lt;acronym title=&quot;Items in only one file&quot;&gt;Symmetric Difference&lt;/acronym&gt; of unsorted files&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;join -a1 -a2 file1 file2&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Union of sorted files&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;join file1 file2&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Intersection of sorted files&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;join -v2 file1 file2&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Difference of sorted files&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;join -v1 -v2 file1 file2&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Symmetric Difference of sorted files&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr id=&quot;math&quot; class=&quot;pbtitle&quot;&gt;&lt;br /&gt;			&lt;td colspan=&quot;3&quot;&gt;&lt;strong&gt;math&lt;/strong&gt;&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;echo &#039;(1 + sqrt(5))/2&#039; | bc -l&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Quick math (Calculate &amp;#966;). See also &lt;a href=&quot;http://www.pixelbeat.org/scripts/bc&quot;&gt;bc&lt;/a&gt;&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;echo &#039;pad=20; min=64; (100*10^6)/((pad+min)*8)&#039; | bc&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;More complex (int) e.g. This shows max FastE packet rate&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;echo &#039;pad=20; min=64; print (100E6)/((pad+min)*8)&#039; | python&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Python handles scientific notation&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;echo &#039;pad=20; plot [64:1518] (100*10**6)/((pad+x)*8)&#039; | gnuplot -persist&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Plot FastE packet rate vs packet size&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;echo &#039;obase=16; ibase=10; 64206&#039; | bc&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Base conversion (decimal to hexadecimal)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;echo $((0x2dec))&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Base conversion (hex to dec) ((shell arithmetic expansion))&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;units -t &#039;100m/&lt;a href=&quot;http://www.pixelbeat.org/misc/usain_bolt/&quot;&gt;9.69s&lt;/a&gt;&#039; &#039;miles/hour&#039;&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Unit conversion (metric to imperial)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;units -t &#039;500GB&#039; &#039;GiB&#039;&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Unit conversion (&lt;acronym title=&quot;powers of 10&quot;&gt;SI&lt;/acronym&gt; to &lt;acronym title=&quot;powers of 2&quot;&gt;IEC&lt;/acronym&gt; prefixes)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;units -t &#039;1 googol&#039;&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Definition lookup&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;seq 100 | (tr &#039;n&#039; +; echo 0) | bc&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Add a column of numbers. See also &lt;a href=&quot;http://www.pixelbeat.org/scripts/add&quot;&gt;add&lt;/a&gt; and &lt;a href=&quot;http://www.pixelbeat.org/scripts/funcpy&quot;&gt;funcpy&lt;/a&gt;&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr id=&quot;dates&quot; class=&quot;pbtitle&quot;&gt;&lt;br /&gt;			&lt;td colspan=&quot;3&quot;&gt;&lt;strong&gt;calendar&lt;/strong&gt;&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;cal -3&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Display a calendar&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;cal 9 1752&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Display a calendar for a particular month year&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;date -d fri&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;What date is it this friday. See also &lt;a href=&quot;http://www.pixelbeat.org/scripts/day&quot;&gt;day&lt;/a&gt;&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;[ $(date -d &amp;quot;tomorrow&amp;quot; +%d) = &amp;quot;01&amp;quot; ] || exit&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;exit a script unless it&#039;s the last day of the month&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;date --date=&#039;25 Dec&#039; +%A&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;What day does xmas fall on, this year&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;date --date=&#039;@2147483647&#039;&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Convert seconds since the epoch (1970-01-01 UTC) to date&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;TZ=&#039;:America/Los_Angeles&#039; date&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;What time is it on West coast of US (use tzselect to find TZ)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;echo &amp;quot;mail -s &#039;get the train&#039; P@draigBrady.com &amp;lt; /dev/null&amp;quot; | at 17:45&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Email reminder&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;echo &amp;quot;DISPLAY=$DISPLAY xmessage cooker&amp;quot; | at &amp;quot;NOW + 30 minutes&amp;quot;&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Popup reminder&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr id=&quot;locale&quot; class=&quot;pbtitle&quot;&gt;&lt;br /&gt;			&lt;td colspan=&quot;3&quot;&gt;&lt;strong&gt;locales&lt;/strong&gt;&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;printf &amp;quot;%&#039;dn&amp;quot; 1234&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Print number with thousands grouping appropriate to locale&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;BLOCK_SIZE=&#039;1 ls -l&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;get ls to do thousands grouping appropriate to locale&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;echo &amp;quot;I live in `locale territory`&amp;quot;&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Extract info from locale database&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;LANG=en_IE.utf8 locale int_prefix&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Lookup locale info for specific country. See also &lt;a href=&quot;http://www.pixelbeat.org/scripts/ccodes&quot;&gt;ccodes&lt;/a&gt;&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;locale | cut -d= -f1 | xargs locale -kc | less&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;List fields available in locale database&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr id=&quot;recode&quot; class=&quot;pbtitle&quot;&gt;&lt;br /&gt;			&lt;td colspan=&quot;3&quot;&gt;&lt;strong&gt;recode&lt;/strong&gt; (Obsoletes iconv, dos2unix, unix2dos)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;recode -l | less&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Show available conversions (aliases on each line)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;recode windows-1252.. file_to_change.txt&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Windows &amp;quot;ansi&amp;quot; to local charset (auto does CRLF conversion)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;recode utf-8/CRLF.. file_to_change.txt&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Windows utf8 to local charset&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;recode iso-8859-15..utf8 file_to_change.txt&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Latin9 (western europe) to utf8&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;recode ../b64 &amp;lt; file.txt &amp;gt; file.b64&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Base64 encode&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;recode /qp.. &amp;lt; file.txt &amp;gt; file.qp&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Quoted printable decode&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;recode ..HTML &amp;lt; file.txt &amp;gt; file.html&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Text to HTML&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;recode -lf windows-1252 | grep euro&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Lookup &lt;a href=&quot;http://www.pixelbeat.org/docs/utf8.html&quot;&gt;table of characters&lt;/a&gt;&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;echo -n 0x80 | recode latin-9/x1..dump&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Show what a code represents in latin-9 charmap&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;echo -n 0x20AC | recode ucs-2/x2..latin-9/x&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Show latin-9 encoding&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;echo -n 0x20AC | recode ucs-2/x2..utf-8/x&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Show utf-8 encoding&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr id=&quot;CDs&quot; class=&quot;pbtitle&quot;&gt;&lt;br /&gt;			&lt;td colspan=&quot;3&quot;&gt;&lt;strong&gt;&lt;acronym title=&quot;Compact Disks&quot;&gt;CDs&lt;/acronym&gt;&lt;/strong&gt;&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;gzip &amp;lt; /dev/cdrom &amp;gt; cdrom.iso.gz&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Save copy of data cdrom&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;mkisofs -V LABEL -r dir | gzip &amp;gt; cdrom.iso.gz&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Create cdrom image from contents of dir&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;mount -o loop cdrom.iso /mnt/dir&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Mount the cdrom image at /mnt/dir (read only)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;cdrecord -v dev=/dev/cdrom blank=fast&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Clear a CDRW&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;gzip -dc cdrom.iso.gz | cdrecord -v dev=/dev/cdrom -&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Burn cdrom image (use dev=ATAPI -scanbus to confirm dev)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;cdparanoia -B&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Rip audio tracks from CD to wav files in current dir&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;cdrecord -v dev=/dev/cdrom -audio *.wav&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Make audio CD from all wavs in current dir (see also cdrdao)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;oggenc --tracknum=&#039;track&#039; track.cdda.wav -o &#039;track.ogg&#039;&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Make ogg file from wav file&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr id=&quot;disk_space&quot; class=&quot;pbtitle&quot;&gt;&lt;br /&gt;			&lt;td colspan=&quot;3&quot;&gt;&lt;strong&gt;disk space&lt;/strong&gt; (See also &lt;a href=&quot;http://www.pixelbeat.org/fslint/&quot;&gt;FSlint&lt;/a&gt;)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;ls -lSr&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Show files by size, biggest last&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;du -s * | sort -k1,1rn | head&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Show top disk users in current dir. See also &lt;a href=&quot;http://www.pixelbeat.org/scripts/dutop&quot;&gt;dutop&lt;/a&gt;&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;df -h&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Show free space on mounted filesystems&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;df -i&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Show free inodes on mounted filesystems&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;&lt;acronym title=&quot;usually in /sbin/&quot;&gt;fdisk&lt;/acronym&gt; -l&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Show disks partitions sizes and types (run as root)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;&lt;a href=&quot;http://www.pixelbeat.org/docs/packaging.html&quot;&gt;rpm&lt;/a&gt; -q -a --qf &#039;%10{SIZE}t%{NAME}n&#039; | sort -k1,1n&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;List all &lt;a href=&quot;http://www.pixelbeat.org/docs/packaging.html&quot;&gt;packages&lt;/a&gt; by installed size (Bytes) on rpm distros&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;&lt;a href=&quot;http://www.pixelbeat.org/docs/packaging.html&quot;&gt;dpkg&lt;/a&gt;-query -W -f=&#039;${Installed-Size;10}t${Package}n&#039; | sort -k1,1n&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;List all &lt;a href=&quot;http://www.pixelbeat.org/docs/packaging.html&quot;&gt;packages&lt;/a&gt; by installed size (KBytes) on deb distros&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;dd bs=1 seek=2TB if=/dev/null of=ext3.test&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Create a large test file (taking no space). See also &lt;a href=&quot;http://www.pixelbeat.org/scripts/truncate&quot;&gt;truncate&lt;/a&gt;&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr id=&quot;monitor&quot; class=&quot;pbtitle&quot;&gt;&lt;br /&gt;			&lt;td colspan=&quot;3&quot;&gt;&lt;strong&gt;monitoring/debugging&lt;/strong&gt;&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;tail -f /var/log/messages&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;&lt;a href=&quot;http://www.pixelbeat.org/docs/web/access_log/monitoring.html&quot;&gt;Monitor messages&lt;/a&gt; in a log file&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;strace -c ls &amp;gt;/dev/null&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Summarise/profile system calls made by command&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;strace -f -e open ls &amp;gt;/dev/null&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;List system calls made by command&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;ltrace -f -e getenv ls &amp;gt;/dev/null&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;List library calls made by command&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;&lt;acronym title=&quot;usually in /usr/sbin/&quot;&gt;lsof&lt;/acronym&gt; -p &lt;acronym title=&quot;process id of current shell&quot;&gt;$$&lt;/acronym&gt;&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;List paths that process id has open&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;lsof ~&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;List processes that have specified path open&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;tcpdump not port 22&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Show network traffic except ssh. See also &lt;a href=&quot;http://www.pixelbeat.org/scripts/tcpdump_not_me&quot;&gt;tcpdump_not_me&lt;/a&gt;&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;ps -e -o pid,args --forest&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;List processes in a hierarchy&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | sed &#039;/^ 0.0 /d&#039;&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;List processes by % cpu usage&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;ps -e -orss=,args= | sort -b -k1,1n | pr -TW$COLUMNS&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;List processes by mem usage. See also &lt;a href=&quot;http://www.pixelbeat.org/scripts/ps_mem.py&quot;&gt;ps_mem.py&lt;/a&gt;&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;ps -C firefox-bin -L -o pid,tid,pcpu,state&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;List all threads for a particular process&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;ps -p 1,2&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;List info for particular process IDs&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;last reboot&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Show system reboot history&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;free -m&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Show amount of (remaining) RAM (-m displays in MB)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;watch -n.1 &#039;cat /proc/interrupts&#039;&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Watch changeable data continuously&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr id=&quot;sysinfo&quot; class=&quot;pbtitle&quot;&gt;&lt;br /&gt;			&lt;td colspan=&quot;3&quot;&gt;&lt;strong&gt;system information&lt;/strong&gt; (see also &lt;a href=&quot;http://www.pixelbeat.org/scripts/sysinfo&quot;&gt;sysinfo&lt;/a&gt;) (&#039;#&#039; means root access is required)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;uname -a&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Show kernel version and system architecture&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;head -n1 /etc/issue&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Show name and version of distribution&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;cat /proc/partitions&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Show all partitions registered on the system&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;grep MemTotal /proc/meminfo&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Show RAM total seen by the system&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;grep &amp;quot;model name&amp;quot; /proc/cpuinfo&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Show CPU(s) info&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;&lt;acronym title=&quot;usually in /sbin/&quot;&gt;lspci&lt;/acronym&gt; -tv&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Show PCI info&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;&lt;acronym title=&quot;usually in /sbin/&quot;&gt;lsusb&lt;/acronym&gt; -tv&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Show USB info&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;mount | column -t&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;List mounted filesystems on the system (and align output)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;grep -F capacity: /proc/acpi/battery/BAT0/info&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Show state of cells in laptop battery&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;#&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;dmidecode -q | less&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Display SMBIOS/DMI information&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;#&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;smartctl -A /dev/sda | grep Power_On_Hours&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;How long has this disk (system) been powered on in total&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;#&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;hdparm -i /dev/sda&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Show info about disk sda&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;#&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;hdparm -tT /dev/sda&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Do a read speed test on disk sda&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;#&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;badblocks -s /dev/sda&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Test for unreadable blocks on disk sda&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr id=&quot;interactive&quot; class=&quot;pbtitle&quot;&gt;&lt;br /&gt;			&lt;td colspan=&quot;3&quot;&gt;&lt;strong&gt;interactive&lt;/strong&gt; (see also &lt;a href=&quot;http://www.pixelbeat.org/lkdb/&quot;&gt;linux keyboard shortcuts)&lt;/a&gt;&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;&lt;a href=&quot;http://www.pixelbeat.org/lkdb/readline.html&quot;&gt;readline&lt;/a&gt;&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Line editor used by bash, python, bc, gnuplot, ...&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;&lt;a href=&quot;http://www.pixelbeat.org/lkdb/screen.html&quot;&gt;screen&lt;/a&gt;&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Virtual terminals with detach capability, ...&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;&lt;a href=&quot;http://www.pixelbeat.org/lkdb/mc.html&quot;&gt;mc&lt;/a&gt;&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Powerful file manager that can browse rpm, tar, ftp, ssh, ...&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;&lt;a href=&quot;http://www.pixelbeat.org/docs/web/access_log/analyzing.html&quot;&gt;gnuplot&lt;/a&gt;&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Interactive/scriptable graphing&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;links&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Web browser&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;xdg-open http://www.pixelbeat.org/&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;open a file or url with the registered desktop application&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr id=&quot;misc&quot; class=&quot;pbtitle&quot;&gt;&lt;br /&gt;			&lt;td colspan=&quot;3&quot;&gt;&lt;strong&gt;miscellaneous&lt;/strong&gt;&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;&lt;a href=&quot;http://www.pixelbeat.org/settings/.bashrc&quot;&gt;alias&lt;/a&gt; hd=&#039;od -Ax -tx1z -v&#039;&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Handy hexdump. (usage e.g.: • hd /proc/self/cmdline | less)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;&lt;a href=&quot;http://www.pixelbeat.org/settings/.bashrc&quot;&gt;alias&lt;/a&gt; realpath=&#039;readlink -f&#039;&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Canonicalize path. (usage e.g.: • realpath ~/../$USER)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;set | grep $USER&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Search current &lt;a href=&quot;http://www.pixelbeat.org/docs/env.html&quot;&gt;environment&lt;/a&gt;&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;touch -c -t 0304050607 file&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Set file timestamp (YYMMDDhhmm)&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;•&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;nw&quot;&gt;python -m SimpleHTTPServer&lt;/td&gt;&lt;br /&gt;			&lt;td&gt;Serve current directory tree at http://$HOSTNAME:8000/&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;	&lt;/tbody&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;</description>
		<guid>http://sumit-bhasin.talkmeblog.com/Sumit-Bhasin-b1/linux-command-tips-b1-p5548.htm</guid>
	</item>
	<item>
		<title>Eclipse performance tweaks</title>
		<category>Sumit Bhasin</category>
		<pubDate>2009-01-05T06:19:55Z</pubDate>
		<description>&lt;div class=&quot;NewsEntryTop&quot;&gt;&lt;br /&gt;&lt;h1 class=&quot;NewsEntryTitle&quot;&gt;Eclipse performance tweaks&lt;/h1&gt;&lt;br /&gt;&lt;div class=&quot;NewsEntryDate&quot;&gt;&lt;br /&gt;31&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;NewsEntryMonth&quot;&gt;&lt;br /&gt;Oct&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;        	       &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;        		&lt;br /&gt;&lt;a href=&quot;http://www.eclipse.org/&quot; target=&quot;_new&quot;&gt;Eclipse&lt;/a&gt; is a pretty powerful IDE. It has been in use in Java, &lt;a href=&quot;http://www.rubyonrails.org/&quot; target=&quot;_new&quot;&gt;Ruby on Rails&lt;/a&gt;, &lt;a href=&quot;http://www.python.org/&quot; target=&quot;_new&quot;&gt;Python&lt;/a&gt;&lt;br /&gt;and even C++. It can, however, be quite the RAM hog. This does not mean&lt;br /&gt;that Eclipse needs to be slow, however. There are ways make your&lt;br /&gt;development life with Eclipse just that bit more bearable at the cost&lt;br /&gt;of some minor conveniences.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here&#039;s a couple of tips on how to squeeze that extra speed out of&lt;br /&gt;Eclipse. (Do note that for some of these tips you might need to restart&lt;br /&gt;Eclipse in order to effect the changes.)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;	&lt;li&gt;&lt;br /&gt;	&lt;strong&gt;Close unused projects&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;	Close those projects which you don&#039;t need to work on. If I have&lt;br /&gt;	projects which I don&#039;t need to work on more than a few days, I&#039;d close&lt;br /&gt;	them, keeping opened projects to the basic minimum. Fewer open projects&lt;br /&gt;	mean fewer files Eclipse need to manage.&lt;br /&gt;&lt;br /&gt;	&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;&lt;br /&gt;	&lt;strong&gt;Disable folding&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;	Disable Automatic Folding in Windows &amp;gt; Preferences &amp;gt; Java &amp;gt; Editor &amp;gt; Folding. Untick the &#039;Enable Folding&#039; check box.&lt;br /&gt;&lt;br /&gt;	&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;&lt;br /&gt;	&lt;strong&gt;Disable Content Assist&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;	Those cool widgets which pop up and assist your coding can be real&lt;br /&gt;	nice, but they can slow Eclipse down by magnitudes.&lt;br /&gt;	To disable Content Assist, go to Windows &amp;gt; Preferences &amp;gt; Java&lt;br /&gt;	&amp;gt; Editor &amp;gt; Content Assist &amp;gt; Untick the &amp;quot;Enable Auto&lt;br /&gt;	Activation&amp;quot; check box.&lt;br /&gt;&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;	I know this tip will disable the uber cool Content Assist by not&lt;br /&gt;	popping up automatically while you type or dot a method invokation, but&lt;br /&gt;	you can still access this manually by hitting CTRL+SPACE whenever you&lt;br /&gt;	need help. Try it! Before you know it, it&#039;ll be second nature.&lt;br /&gt;&lt;br /&gt;	&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;&lt;br /&gt;	&lt;strong&gt;Remove/undeploy unused contexts and applications.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;	This is not really an Eclipse tip per-se but often when developing Web&lt;br /&gt;	apps, you&#039;ll be running a servlet container or application server (&lt;a href=&quot;http://tomcat.apache.org/&quot; target=&quot;_new&quot;&gt;Apache Tomcat&lt;/a&gt;, &lt;a href=&quot;http://www.bea.com/framework.jsp?CNT=index.htm&amp;amp;FP=/content/products/weblogic/server/&quot; target=&quot;_new&quot;&gt;BEA Weblogic&lt;/a&gt;, &lt;a href=&quot;http://www-306.ibm.com/software/websphere/&quot; target=&quot;_new&quot;&gt;IBM Websphere&lt;/a&gt;&lt;br /&gt;	etc) at the same time. Remove unused contexts and applications from&lt;br /&gt;	your app server. Sample and pre-installed applications would be guilty&lt;br /&gt;	of this. Less contexts/applications used, less RAM used by your server.&lt;br /&gt;	You can always redeploy anything you need again. Simple, no?&lt;br /&gt;&lt;br /&gt;	&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;&lt;br /&gt;	&lt;strong&gt;Change Heap memory used by Eclipse.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;	By default, Eclipse gets allocated a pitiful amount of memory by the&lt;br /&gt;	Java VM. The result is the ever-frustrating OutOfMemoryException. You&lt;br /&gt;	can change this amount by modifying certain configuration parameters&lt;br /&gt;	when launching Eclipse. &lt;br /&gt;&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;	&lt;em&gt;On Windows:&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;	If you&#039;re launching Eclipse from command line, include the -Xms and&lt;br /&gt;	-Xmx parameters with values larger than 64MB for Xms and 128MB for Xmx.&lt;br /&gt;&lt;br /&gt;	e.g: -Xms128m -Xmx256m&lt;br /&gt;&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;	&lt;em&gt;On Mac OSX:&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;	Edit the /Eclipse.app/Contents/Info.plist file and modify the Xms and Xmx settings.&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;	Sometimes, increasing the above setting to huge amounts would still&lt;br /&gt;	yeild errors such as PermGen errors. This PermGen error comes when the&lt;br /&gt;	VM runs out of PermSpace, which is an area where the VM stores java&lt;br /&gt;	class definitions and structures of data. To combat this, you can add&lt;br /&gt;	the switch -XX:MaxPermSize=128m.&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;	Having said this, sometimes, with framework such as Spring&lt;br /&gt;	with Hibernate, you can still get errors. I&#039;ve had success switching&lt;br /&gt;	Java Runtimes Environments instead. &lt;a href=&quot;http://www.bea.com/framework.jsp?CNT=index.htm&amp;amp;FP=/content/products/jrockit/&quot; target=&quot;_new&quot;&gt;BEA JRockit&lt;/a&gt; seem to work well where Sun&#039;s JRE fail with PermGen in these instances.&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;	Do take care to be aware of your computer&#039;s limitations. What memory&lt;br /&gt;	you allocate to Eclipse would mean less memory for your computer&lt;br /&gt;	overall. This could mean making things worse instead. I&#039;d recommend&lt;br /&gt;	running Eclipse on no less than 1GB of RAM if you intend to tweak&lt;br /&gt;	Eclipse&#039;s memory settings. YMMV.&lt;br /&gt;&lt;br /&gt;	&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;&lt;br /&gt;	&lt;strong&gt;MyEclipse Tip: Disable validators&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;	&lt;a href=&quot;http://www.myeclipseide.com/&quot; target=&quot;_new&quot;&gt;MyEclipse&lt;/a&gt; is a&lt;br /&gt;	full-featured IDE based on Eclipse and has a powerful runtime&lt;br /&gt;	validators to validate everything from JSP files to DTD to even&lt;br /&gt;	JavaScript. These comes with a cost of performance however. &lt;br /&gt;&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;	Disable by:&lt;br /&gt;&lt;br /&gt;	Windows &amp;gt; Preferences &amp;gt; MyEclipse &amp;gt; Validation;&lt;br /&gt;&lt;br /&gt;	Tick on the &#039;Suspend all validators&#039; check box.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;</description>
		<guid>http://sumit-bhasin.talkmeblog.com/Sumit-Bhasin-b1/Eclipse-performance-tweaks-b1-p5547.htm</guid>
	</item>
	<item>
		<title>Project Lifecycle Models</title>
		<category>Sumit Bhasin</category>
		<pubDate>2008-12-24T10:47:49Z</pubDate>
		<description>&lt;h2 align=&quot;left&quot;&gt;&lt;font face=&quot;Verdana, Arial, Helvetica, sans-serif&quot;&gt;&lt;span class=&quot;H3&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;/font&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;span class=&quot;type&quot;&gt;Business &lt;br /&gt;eSolutions provides System Development Project Management services, &lt;br /&gt;Problem Project Diagnostic and Recovery services and &lt;a href=&quot;http://www.business-esolutions.com/pmclass.htm&quot;&gt;Project &lt;br /&gt;Management Training and Facilitation&lt;/a&gt; courses covering strategy, &lt;br /&gt;project management, project estimating, business requirements, risk &lt;br /&gt;management and quality assurance. We can help you define a lifecycle &lt;br /&gt;methodology customized to your organizational strengths and development &lt;br /&gt;risks. Our mission is to help our clients produce quality systems &lt;br /&gt;on time and on budget.&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;span class=&quot;type&quot;&gt; &lt;br /&gt;Project lifecycle models are not interchangeable. To deliver a quality &lt;br /&gt;system, it&#039;s critical to know the risks facing your project and &lt;br /&gt;to use a model that reduces those risks. &lt;/span&gt;&lt;/font&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;The &lt;br /&gt;following describes standard project lifecycle models, and reviews &lt;br /&gt;their strengths and weaknesses. These standard models can be adapted &lt;br /&gt;to fit the industry issues, corporate culture, time constraints &lt;br /&gt;and team vulnerabilities which comprise your environment. &lt;a href=&quot;mailto:info@business-esolutions.com&quot;&gt;Contact &lt;br /&gt;Us &lt;/a&gt;to help.&lt;/font&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=&quot;type&quot; align=&quot;center&quot;&gt;&lt;br /&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;a href=&quot;http://www.business-esolutions.com/islm.htm#purewaterfall&quot;&gt;&lt;font color=&quot;#0000ff&quot;&gt;Pure &lt;br /&gt;Waterfall&lt;/font&gt;&lt;/a&gt; &lt;font color=&quot;#0000ff&quot;&gt;• &lt;a href=&quot;http://www.business-esolutions.com/islm.htm#spiral&quot;&gt;Spiral&lt;/a&gt; &lt;br /&gt;• &lt;a href=&quot;http://www.business-esolutions.com/islm.htm#modifiedwaterfall&quot;&gt;Modified Waterfall&lt;/a&gt; • &lt;br /&gt;&lt;a href=&quot;http://www.business-esolutions.com/islm.htm#evolutionaryprototyping&quot;&gt;Evolutionary Prototyping&lt;/a&gt; &lt;br /&gt;• &lt;a href=&quot;http://www.business-esolutions.com/islm.htm#codeandfix&quot;&gt;Code-and-Fix&lt;/a&gt; &lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=&quot;type&quot; align=&quot;center&quot;&gt;&lt;br /&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot; color=&quot;#0000ff&quot;&gt;&lt;a href=&quot;http://www.business-esolutions.com/islm.htm#stageddelivery&quot;&gt;Staged &lt;br /&gt;Delivery&lt;/a&gt; • &lt;a href=&quot;http://www.business-esolutions.com/islm.htm#evolutionarydelivery&quot;&gt;Evolutionary &lt;br /&gt;Delivery&lt;/a&gt; • &lt;a href=&quot;http://www.business-esolutions.com/islm.htm#designtoschedule&quot;&gt;Design-to-Schedule&lt;/a&gt; &lt;br /&gt;• &lt;a href=&quot;http://www.business-esolutions.com/islm.htm#designtotools&quot;&gt;Design-to-Tools&lt;/a&gt; • &lt;a href=&quot;http://www.business-esolutions.com/islm.htm#offtheshelf&quot;&gt;Off-the-Shelf&lt;/a&gt;&lt;/font&gt; &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=&quot;type&quot;&gt;&lt;br /&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;What &lt;br /&gt;model do you use? Or, more appropriately, what model should you &lt;br /&gt;be using? Here&#039;s a summary to help you decide.&lt;/font&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;h3 class=&quot;type&quot;&gt;&lt;a name=&quot;purewaterfall&quot;&gt;&lt;/a&gt;&lt;font face=&quot;Verdana, Arial, Helvetica, sans-serif&quot;&gt;Pure &lt;br /&gt;Waterfall&lt;/font&gt;&lt;/h3&gt;&lt;br /&gt;&lt;p class=&quot;type&quot;&gt;&lt;br /&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;span class=&quot;type&quot;&gt;This &lt;br /&gt;is the classical system development model. It consists of discontinuous &lt;br /&gt;phases:&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;	&lt;li&gt; &lt;br /&gt;	&lt;ul&gt;&lt;br /&gt;		&lt;li&gt; &lt;br /&gt;		&lt;ol&gt;&lt;br /&gt;			&lt;li class=&quot;type&quot;&gt;&lt;span class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;Concept&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;			&lt;li class=&quot;type&quot;&gt;&lt;span class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;Requirements&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;			&lt;li class=&quot;type&quot;&gt;&lt;span class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;Architectural &lt;br /&gt;			design&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;			&lt;li class=&quot;type&quot;&gt;&lt;span class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;Detailed &lt;br /&gt;			design&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;			&lt;li class=&quot;type&quot;&gt;&lt;span class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;Coding &lt;br /&gt;			and development&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;			&lt;li class=&quot;type&quot;&gt;&lt;span class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;Testing &lt;br /&gt;			and implementation&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;		&lt;/ol&gt;&lt;br /&gt;		&lt;/li&gt;&lt;br /&gt;	&lt;/ul&gt;&lt;br /&gt;	&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;table border=&quot;0&quot; width=&quot;100%&quot;&gt;&lt;br /&gt;	&lt;tbody&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			 &lt;br /&gt;			&lt;td width=&quot;384&quot;&gt; &lt;br /&gt;			&lt;div class=&quot;type&quot; align=&quot;center&quot;&gt;&lt;br /&gt;			&lt;span class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;em&gt;Strengths&lt;/em&gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;			&lt;/div&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;			&lt;td&gt; &lt;br /&gt;			&lt;div class=&quot;type&quot; align=&quot;center&quot;&gt;&lt;br /&gt;			&lt;span class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;em&gt;Weaknesses&lt;/em&gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;			&lt;/div&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr valign=&quot;top&quot;&gt;&lt;br /&gt;			 &lt;br /&gt;			&lt;td width=&quot;50%&quot;&gt; &lt;br /&gt;			&lt;ul&gt;&lt;br /&gt;				&lt;li class=&quot;type&quot;&gt;&lt;span class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;Minimizes &lt;br /&gt;				planning overhead since it can be done up front.&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;				&lt;li class=&quot;type&quot;&gt;&lt;span class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;Structure &lt;br /&gt;				minimizes wasted effort, so it works well for technically &lt;br /&gt;				weak or inexperienced staff.&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;			&lt;/ul&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;			&lt;td&gt; &lt;br /&gt;			&lt;ul&gt;&lt;br /&gt;				&lt;li class=&quot;type&quot;&gt;&lt;span class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;Inflexible&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;				&lt;li class=&quot;type&quot;&gt;&lt;span class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;Only &lt;br /&gt;				the final phase produces a non-documentation deliverable.&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;				&lt;li class=&quot;type&quot;&gt;&lt;span class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;Backing &lt;br /&gt;				up to address mistakes is difficult.&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;			&lt;/ul&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;	&lt;/tbody&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border=&quot;0&quot; width=&quot;100%&quot;&gt;&lt;br /&gt;	&lt;tbody&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			 &lt;br /&gt;			&lt;td width=&quot;95%&quot;&gt; &lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;strong class=&quot;H3&quot;&gt;Pure &lt;br /&gt;			Waterfall Summary&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;			&lt;span class=&quot;type&quot;&gt;The pure waterfall performs well for products &lt;br /&gt;			with clearly understood requirements or when working with well &lt;br /&gt;			understood technical tools, architectures and infrastructures. &lt;br /&gt;			It&#039;s weaknesses frequently make it inadvisable when rapid development &lt;br /&gt;			is needed. In those cases, modified models may be more effective.&lt;/span&gt;&lt;/font&gt;&lt;/td&gt;&lt;br /&gt;			&lt;td width=&quot;5%&quot;&gt;&lt;!-- #BeginLibraryItem &quot;/Library/Top arrow grey.lbi&quot; --&gt;&lt;em&gt;&lt;a href=&quot;http://www.business-esolutions.com/islm.htm#top&quot;&gt;&lt;font face=&quot;Times New Roman, Times, serif&quot;&gt;&lt;img src=&quot;http://www.business-esolutions.com/toparrowgrey.gif&quot; border=&quot;0&quot; alt=&quot;Return to top&quot; /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/em&gt;&lt;!-- #EndLibraryItem --&gt;&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;	&lt;/tbody&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;h3 class=&quot;type&quot;&gt; &lt;/h3&gt;&lt;br /&gt;&lt;h3 class=&quot;type&quot;&gt;&lt;a name=&quot;spiral&quot;&gt;&lt;/a&gt;&lt;font face=&quot;Verdana, Arial, Helvetica, sans-serif&quot;&gt;Spiral&lt;/font&gt;&lt;/h3&gt;&lt;br /&gt;&lt;p class=&quot;type&quot;&gt;&lt;br /&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;span class=&quot;type&quot;&gt;The &lt;br /&gt;spiral is a risk-reduction oriented model that breaks a software &lt;br /&gt;project up into mini-projects, each addressing one or more major &lt;br /&gt;risks. After major risks have been addressed, the spiral model terminates &lt;br /&gt;as a waterfall model. Spiral iterations involve six steps:&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;	&lt;li&gt; &lt;br /&gt;	&lt;ul&gt;&lt;br /&gt;		&lt;li&gt; &lt;br /&gt;		&lt;ol&gt;&lt;br /&gt;			&lt;li class=&quot;type&quot;&gt;&lt;span class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;Determine &lt;br /&gt;			objectives, alternatives and constraints.&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;			&lt;li class=&quot;type&quot;&gt;&lt;span class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;Identify &lt;br /&gt;			and resolve risks.&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;			&lt;li class=&quot;type&quot;&gt;&lt;span class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;Evaluate &lt;br /&gt;			alternatives.&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;			&lt;li class=&quot;type&quot;&gt;&lt;span class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;Develop &lt;br /&gt;			the deliverables for that iteration and verify that they are &lt;br /&gt;			correct.&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;			&lt;li class=&quot;type&quot;&gt;&lt;span class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;Plan &lt;br /&gt;			the next iteration.&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;			&lt;li class=&quot;type&quot;&gt;&lt;span class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;Commit &lt;br /&gt;			to an approach for the next iteration.&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;		&lt;/ol&gt;&lt;br /&gt;		&lt;/li&gt;&lt;br /&gt;	&lt;/ul&gt;&lt;br /&gt;	&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;table border=&quot;0&quot; width=&quot;100%&quot;&gt;&lt;br /&gt;	&lt;tbody&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			 &lt;br /&gt;			&lt;td class=&quot;type&quot;&gt; &lt;br /&gt;			&lt;div class=&quot;type&quot; align=&quot;center&quot;&gt;&lt;br /&gt;			&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;em&gt;Strengths&lt;/em&gt;&lt;/font&gt;&lt;br /&gt;			&lt;/div&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;type&quot; colspan=&quot;2&quot;&gt; &lt;br /&gt;			&lt;div class=&quot;type&quot; align=&quot;center&quot;&gt;&lt;br /&gt;			&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;em&gt;Weaknesses&lt;/em&gt;&lt;/font&gt;&lt;br /&gt;			&lt;/div&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr valign=&quot;top&quot;&gt;&lt;br /&gt;			 &lt;br /&gt;			&lt;td class=&quot;type&quot; width=&quot;50%&quot;&gt; &lt;br /&gt;			&lt;ul&gt;&lt;br /&gt;				&lt;li class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;span class=&quot;type&quot;&gt;Early &lt;br /&gt;				iterations of the project are the cheapest, enabling the &lt;br /&gt;				highest risks to be addressed at the lowest total cost. &lt;br /&gt;				This ensures that as costs increase, risks decrease.&lt;/span&gt;&lt;/font&gt;&lt;/li&gt;&lt;br /&gt;				&lt;li class=&quot;type&quot;&gt;&lt;span class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;Each &lt;br /&gt;				iteration of the spiral can be tailored to suit the needs &lt;br /&gt;				of the project.&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;			&lt;/ul&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;			&lt;td class=&quot;type&quot; width=&quot;50%&quot;&gt; &lt;br /&gt;			&lt;ul&gt;&lt;br /&gt;				&lt;li class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;It &lt;br /&gt;				is complicated and requires attentive and knowledgeable &lt;br /&gt;				management to pull it off.&lt;/font&gt;&lt;/li&gt;&lt;br /&gt;			&lt;/ul&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;	&lt;/tbody&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border=&quot;0&quot; width=&quot;100%&quot;&gt;&lt;br /&gt;	&lt;tbody&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			 &lt;br /&gt;			&lt;td width=&quot;95%&quot;&gt; &lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;strong class=&quot;H3&quot;&gt;Spiral &lt;br /&gt;			Summary&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;			&lt;span class=&quot;type&quot;&gt;For projects with risky elements, it&#039;s beneficial &lt;br /&gt;			to run a series of risk-reduction iterations which can be followed &lt;br /&gt;			by a waterfall or other non-risk-based lifecycle. &lt;/span&gt;&lt;/font&gt; &lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;			&lt;td width=&quot;5%&quot;&gt; &lt;br /&gt;			&lt;p class=&quot;type&quot;&gt;&lt;br /&gt;			&lt;em&gt;&lt;!-- #BeginLibraryItem &quot;/Library/Top arrow grey.lbi&quot; --&gt;&lt;em&gt;&lt;a href=&quot;http://www.business-esolutions.com/islm.htm#top&quot;&gt;&lt;font face=&quot;Times New Roman, Times, serif&quot;&gt;&lt;img src=&quot;http://www.business-esolutions.com/toparrowgrey.gif&quot; border=&quot;0&quot; alt=&quot;Return to top&quot; /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/em&gt;&lt;!-- #EndLibraryItem --&gt;&lt;/em&gt;&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;	&lt;/tbody&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;h3 class=&quot;type&quot;&gt; &lt;/h3&gt;&lt;br /&gt;&lt;h3 class=&quot;type&quot;&gt;&lt;a name=&quot;modifiedwaterfall&quot;&gt;&lt;/a&gt;&lt;font face=&quot;Verdana, Arial, Helvetica, sans-serif&quot;&gt;Modified &lt;br /&gt;Waterfall&lt;/font&gt;&lt;/h3&gt;&lt;br /&gt;&lt;p class=&quot;type&quot;&gt;&lt;br /&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;The &lt;br /&gt;modified waterfall uses the same phases as the pure waterfall, but &lt;br /&gt;is not done on a discontinuous basis. This enables the phases to &lt;br /&gt;overlap when needed. The pure waterfall can also split into subprojects &lt;br /&gt;at an appropriate phase (such as after the architectural design &lt;br /&gt;or detailed design).&lt;/font&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;table border=&quot;0&quot; width=&quot;100%&quot;&gt;&lt;br /&gt;	&lt;tbody&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			 &lt;br /&gt;			&lt;td&gt; &lt;br /&gt;			&lt;div class=&quot;type&quot; align=&quot;center&quot;&gt;&lt;br /&gt;			&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;em&gt;Strengths&lt;/em&gt;&lt;/font&gt;&lt;br /&gt;			&lt;/div&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;			&lt;td width=&quot;1&quot;&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td&gt; &lt;br /&gt;			&lt;div class=&quot;type&quot; align=&quot;center&quot;&gt;&lt;br /&gt;			&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;em&gt;Weaknesses&lt;/em&gt;&lt;/font&gt;&lt;br /&gt;			&lt;/div&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr valign=&quot;top&quot;&gt;&lt;br /&gt;			 &lt;br /&gt;			&lt;td width=&quot;50%&quot;&gt; &lt;br /&gt;			&lt;ul&gt;&lt;br /&gt;				&lt;li class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;span class=&quot;type&quot;&gt;More &lt;br /&gt;				flexibility than the pure waterfall model.&lt;/span&gt;&lt;/font&gt;&lt;/li&gt;&lt;br /&gt;				&lt;li class=&quot;type&quot;&gt;&lt;span class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;If &lt;br /&gt;				there is personnel continuity between the phases, documentation &lt;br /&gt;				can be substantially reduced.&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;				&lt;li class=&quot;type&quot;&gt;&lt;span class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;Inplementation &lt;br /&gt;				of easy areas do not need to wait for the hard ones.&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;			&lt;/ul&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td width=&quot;50%&quot;&gt; &lt;br /&gt;			&lt;ul&gt;&lt;br /&gt;				&lt;li class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;span class=&quot;type&quot;&gt;Milestones &lt;br /&gt;				are more ambiguous than for the pure waterfall.&lt;/span&gt;&lt;/font&gt;&lt;/li&gt;&lt;br /&gt;				&lt;li class=&quot;type&quot;&gt;&lt;span class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;Activities &lt;br /&gt;				performed in parallel are subject to miscommunication and &lt;br /&gt;				mistaken assumptions.&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;				&lt;li class=&quot;type&quot;&gt;&lt;span class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;Unforseen &lt;br /&gt;				interdependencies can create problems.&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;			&lt;/ul&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;	&lt;/tbody&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border=&quot;0&quot; width=&quot;100%&quot;&gt;&lt;br /&gt;	&lt;tbody&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			 &lt;br /&gt;			&lt;td width=&quot;95%&quot;&gt; &lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;strong class=&quot;H3&quot;&gt;Modified &lt;br /&gt;			Waterfall Summary&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;			&lt;span class=&quot;type&quot;&gt;Risk reduction spirals can be added to the &lt;br /&gt;			top of the waterfall to reduce risks prior to the waterfall &lt;br /&gt;			phases. The waterfall can be further modified using options &lt;br /&gt;			such as prototyping, JADs or CRC sessions or other methods of &lt;br /&gt;			requirements gathering done in overlapping phases. &lt;/span&gt;&lt;/font&gt;&lt;/td&gt;&lt;br /&gt;			&lt;td width=&quot;5%&quot;&gt;&lt;em&gt;&lt;!-- #BeginLibraryItem &quot;/Library/Top arrow grey.lbi&quot; --&gt;&lt;em&gt;&lt;a href=&quot;http://www.business-esolutions.com/islm.htm#top&quot;&gt;&lt;font face=&quot;Times New Roman, Times, serif&quot;&gt;&lt;img src=&quot;http://www.business-esolutions.com/toparrowgrey.gif&quot; border=&quot;0&quot; alt=&quot;Return to top&quot; /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/em&gt;&lt;!-- #EndLibraryItem --&gt;&lt;/em&gt;&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;	&lt;/tbody&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;p class=&quot;type&quot;&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=&quot;type&quot;&gt;&lt;br /&gt;&lt;a name=&quot;evolutionaryprototyping&quot;&gt;&lt;/a&gt;&lt;font face=&quot;Verdana, Arial, Helvetica, sans-serif&quot;&gt;Evolutionary &lt;br /&gt;Prototyping&lt;/font&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=&quot;type&quot;&gt;&lt;br /&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;span class=&quot;type&quot;&gt;Evolutionary &lt;br /&gt;prototyping uses multiple iterations of requirements gathering and &lt;br /&gt;analysis, design and prototype development. After each iteration, &lt;br /&gt;the result is analyzed by the customer. Their response creates the &lt;br /&gt;next level of requirements and defines the next iteration.&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;table border=&quot;0&quot; width=&quot;100%&quot;&gt;&lt;br /&gt;	&lt;tbody&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			 &lt;br /&gt;			&lt;td&gt; &lt;br /&gt;			&lt;div class=&quot;type&quot; align=&quot;center&quot;&gt;&lt;br /&gt;			&lt;span class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;em&gt;Strengths&lt;/em&gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;			&lt;/div&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;			&lt;td width=&quot;1&quot;&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td&gt; &lt;br /&gt;			&lt;div class=&quot;type&quot; align=&quot;center&quot;&gt;&lt;br /&gt;			&lt;span class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;em&gt;Weaknesses&lt;/em&gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;			&lt;/div&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr valign=&quot;top&quot;&gt;&lt;br /&gt;			 &lt;br /&gt;			&lt;td width=&quot;50%&quot;&gt; &lt;br /&gt;			&lt;ul&gt;&lt;br /&gt;				&lt;li class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;span class=&quot;type&quot;&gt;Customers &lt;br /&gt;				can see steady progress.&lt;/span&gt;&lt;/font&gt;&lt;/li&gt;&lt;br /&gt;				&lt;li class=&quot;type&quot;&gt;&lt;span class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;This &lt;br /&gt;				is useful when requirements are changing rapidly, when the &lt;br /&gt;				customer is reluctant to commit to a set of requirements, &lt;br /&gt;				or when no one fully understands the application area.&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;			&lt;/ul&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td width=&quot;50%&quot;&gt; &lt;br /&gt;			&lt;ul&gt;&lt;br /&gt;				&lt;li class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;span class=&quot;type&quot;&gt;It &lt;br /&gt;				is impossible to know at the outset of the project how long &lt;br /&gt;				it will take.&lt;/span&gt;&lt;/font&gt;&lt;/li&gt;&lt;br /&gt;				&lt;li class=&quot;type&quot;&gt;&lt;span class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;There &lt;br /&gt;				is no way to know the number of iterations that will be &lt;br /&gt;				required.&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;			&lt;/ul&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;	&lt;/tbody&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border=&quot;0&quot; width=&quot;100%&quot;&gt;&lt;br /&gt;	&lt;tbody&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			 &lt;br /&gt;			&lt;td width=&quot;95%&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;strong class=&quot;H3&quot;&gt;Evolutionary &lt;br /&gt;			Prototyping Summary&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;			&lt;span class=&quot;type&quot;&gt;The manager must be vigilant to ensure it &lt;br /&gt;			does not become an excuse to do code-and-fix development.&lt;/span&gt;&lt;/font&gt;&lt;/td&gt;&lt;br /&gt;			&lt;td width=&quot;5%&quot;&gt;&lt;em&gt;&lt;!-- #BeginLibraryItem &quot;/Library/Top arrow grey.lbi&quot; --&gt;&lt;em&gt;&lt;a href=&quot;http://www.business-esolutions.com/islm.htm#top&quot;&gt;&lt;font face=&quot;Times New Roman, Times, serif&quot;&gt;&lt;img src=&quot;http://www.business-esolutions.com/toparrowgrey.gif&quot; border=&quot;0&quot; alt=&quot;Return to top&quot; /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/em&gt;&lt;!-- #EndLibraryItem --&gt;&lt;/em&gt;&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;	&lt;/tbody&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;p class=&quot;type&quot;&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=&quot;type&quot;&gt;&lt;br /&gt;&lt;a name=&quot;codeandfix&quot;&gt;&lt;/a&gt;&lt;font face=&quot;Verdana, Arial, Helvetica, sans-serif&quot;&gt;Code-and-Fix&lt;/font&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=&quot;type&quot;&gt;&lt;br /&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;If &lt;br /&gt;you don&#039;t use a methodology, it&#039;s likely you are doing code-and-fix. &lt;br /&gt;Code-and-fix rarely produces useful results. It is very dangerous &lt;br /&gt;as there is no way to assess progress, quality or risk.&lt;/font&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;table border=&quot;0&quot; width=&quot;100%&quot;&gt;&lt;br /&gt;	&lt;tbody&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			 &lt;br /&gt;			&lt;td&gt; &lt;br /&gt;			&lt;div class=&quot;type&quot; align=&quot;center&quot;&gt;&lt;br /&gt;			&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;em&gt;Strengths&lt;/em&gt;&lt;/font&gt;&lt;br /&gt;			&lt;/div&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;			&lt;td width=&quot;1&quot;&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td&gt; &lt;br /&gt;			&lt;div class=&quot;type&quot; align=&quot;center&quot;&gt;&lt;br /&gt;			&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;em&gt;Weaknesses&lt;/em&gt;&lt;/font&gt;&lt;br /&gt;			&lt;/div&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr valign=&quot;top&quot;&gt;&lt;br /&gt;			 &lt;br /&gt;			&lt;td width=&quot;50%&quot;&gt; &lt;br /&gt;			&lt;ul&gt;&lt;br /&gt;				&lt;li class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;span class=&quot;type&quot;&gt;No &lt;br /&gt;				time spent on &amp;quot;overhead&amp;quot; like planning, documentation, &lt;br /&gt;				quality assurance, standards enforcement or other non-coding &lt;br /&gt;				activities.&lt;/span&gt;&lt;/font&gt;&lt;/li&gt;&lt;br /&gt;				&lt;li class=&quot;type&quot;&gt;&lt;span class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;Requires &lt;br /&gt;				little experience.&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;			&lt;/ul&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td width=&quot;50%&quot;&gt; &lt;br /&gt;			&lt;ul&gt;&lt;br /&gt;				&lt;li class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;span class=&quot;type&quot;&gt;Dangerous.&lt;/span&gt;&lt;/font&gt;&lt;/li&gt;&lt;br /&gt;				&lt;li class=&quot;type&quot;&gt;&lt;span class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;No &lt;br /&gt;				means of assessing quality or identifying risks.&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;				&lt;li class=&quot;type&quot;&gt;&lt;span class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;Fundamental &lt;br /&gt;				flaws in approach do not show up quickly, often requiring &lt;br /&gt;				work to be thrown out.&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;			&lt;/ul&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;	&lt;/tbody&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border=&quot;0&quot; width=&quot;100%&quot;&gt;&lt;br /&gt;	&lt;tbody&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			 &lt;br /&gt;			&lt;td width=&quot;95%&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;strong class=&quot;H3&quot;&gt;Code-and-Fix &lt;br /&gt;			Summary&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;			&lt;span class=&quot;type&quot;&gt;Code-and-fix is only appropriate for small &lt;br /&gt;			throwaway projects like proof-of-concept, short-lived demos &lt;br /&gt;			or throwaway prototypes.&lt;/span&gt; &lt;/font&gt;&lt;/td&gt;&lt;br /&gt;			&lt;td width=&quot;5%&quot;&gt;&lt;em&gt;&lt;!-- #BeginLibraryItem &quot;/Library/Top arrow grey.lbi&quot; --&gt;&lt;em&gt;&lt;a href=&quot;http://www.business-esolutions.com/islm.htm#top&quot;&gt;&lt;font face=&quot;Times New Roman, Times, serif&quot;&gt;&lt;img src=&quot;http://www.business-esolutions.com/toparrowgrey.gif&quot; border=&quot;0&quot; alt=&quot;Return to top&quot; /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/em&gt;&lt;!-- #EndLibraryItem --&gt;&lt;/em&gt;&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;	&lt;/tbody&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;p class=&quot;type&quot;&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=&quot;type&quot;&gt;&lt;br /&gt;&lt;a name=&quot;stageddelivery&quot;&gt;&lt;/a&gt;&lt;font face=&quot;Verdana, Arial, Helvetica, sans-serif&quot;&gt;Staged &lt;br /&gt;Delivery&lt;/font&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=&quot;type&quot;&gt;&lt;br /&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;Although &lt;br /&gt;the early phases cover the deliverables of the pure waterfall, the &lt;br /&gt;design is broken into deliverables stages for detailed design, coding, &lt;br /&gt;testing and deployment.&lt;/font&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;table border=&quot;0&quot; width=&quot;100%&quot;&gt;&lt;br /&gt;	&lt;tbody&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			 &lt;br /&gt;			&lt;td&gt; &lt;br /&gt;			&lt;div class=&quot;type&quot; align=&quot;center&quot;&gt;&lt;br /&gt;			&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;em&gt;Strengths&lt;/em&gt;&lt;/font&gt;&lt;br /&gt;			&lt;/div&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;			&lt;td width=&quot;1&quot;&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td&gt; &lt;br /&gt;			&lt;div class=&quot;type&quot; align=&quot;center&quot;&gt;&lt;br /&gt;			&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;em&gt;Weaknesses&lt;/em&gt;&lt;/font&gt;&lt;br /&gt;			&lt;/div&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr valign=&quot;top&quot;&gt;&lt;br /&gt;			 &lt;br /&gt;			&lt;td width=&quot;50%&quot;&gt; &lt;br /&gt;			&lt;ul&gt;&lt;br /&gt;				&lt;li class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;Can &lt;br /&gt;				put useful functionality into the hands of customers earlier &lt;br /&gt;				than if the product were delivered at the end of the project.&lt;/font&gt;&lt;/li&gt;&lt;br /&gt;			&lt;/ul&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td width=&quot;50%&quot;&gt; &lt;br /&gt;			&lt;ul&gt;&lt;br /&gt;				&lt;li class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;Doesn&#039;t &lt;br /&gt;				work well without careful planning at both management and &lt;br /&gt;				technical levels.&lt;/font&gt;&lt;/li&gt;&lt;br /&gt;			&lt;/ul&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;	&lt;/tbody&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border=&quot;0&quot; width=&quot;100%&quot;&gt;&lt;br /&gt;	&lt;tbody&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			 &lt;br /&gt;			&lt;td width=&quot;95%&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;strong class=&quot;H3&quot;&gt;Staged &lt;br /&gt;			Delivery Summary&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;			&lt;span class=&quot;type&quot;&gt;For staged delivery, management must ensure &lt;br /&gt;			that stages are meaningful to the customer. The technical team &lt;br /&gt;			must account for all dependencies between different components &lt;br /&gt;			of the system. &lt;/span&gt;&lt;/font&gt;&lt;/td&gt;&lt;br /&gt;			&lt;td width=&quot;5%&quot;&gt;&lt;em&gt;&lt;!-- #BeginLibraryItem &quot;/Library/Top arrow grey.lbi&quot; --&gt;&lt;em&gt;&lt;a href=&quot;http://www.business-esolutions.com/islm.htm#top&quot;&gt;&lt;font face=&quot;Times New Roman, Times, serif&quot;&gt;&lt;img src=&quot;http://www.business-esolutions.com/toparrowgrey.gif&quot; border=&quot;0&quot; alt=&quot;Return to top&quot; /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/em&gt;&lt;!-- #EndLibraryItem --&gt;&lt;/em&gt;&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;	&lt;/tbody&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;p class=&quot;type&quot;&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=&quot;type&quot;&gt;&lt;br /&gt;&lt;a name=&quot;evolutionarydelivery&quot;&gt;&lt;/a&gt;&lt;font face=&quot;Verdana, Arial, Helvetica, sans-serif&quot;&gt;Evolutionary &lt;br /&gt;Delivery&lt;/font&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=&quot;type&quot;&gt;&lt;br /&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;Evolutionary &lt;br /&gt;delivery straddles evolutionary prototyping and staged delivery.&lt;/font&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;table border=&quot;0&quot; width=&quot;100%&quot;&gt;&lt;br /&gt;	&lt;tbody&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			 &lt;br /&gt;			&lt;td&gt; &lt;br /&gt;			&lt;div class=&quot;type&quot; align=&quot;center&quot;&gt;&lt;br /&gt;			&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;em&gt;Strengths&lt;/em&gt;&lt;/font&gt;&lt;br /&gt;			&lt;/div&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;			&lt;td width=&quot;1&quot;&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td&gt; &lt;br /&gt;			&lt;div class=&quot;type&quot; align=&quot;center&quot;&gt;&lt;br /&gt;			&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;em&gt;Weaknesses&lt;/em&gt;&lt;/font&gt;&lt;br /&gt;			&lt;/div&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr valign=&quot;top&quot;&gt;&lt;br /&gt;			 &lt;br /&gt;			&lt;td width=&quot;50%&quot;&gt; &lt;br /&gt;			&lt;ul&gt;&lt;br /&gt;				&lt;li class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;Enables &lt;br /&gt;				customers to refine interface while the architectural structure &lt;br /&gt;				is as planned.&lt;/font&gt;&lt;/li&gt;&lt;br /&gt;			&lt;/ul&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td width=&quot;50%&quot;&gt; &lt;br /&gt;			&lt;ul&gt;&lt;br /&gt;				&lt;li class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;Doesn&#039;t &lt;br /&gt;				work well without careful planning at both management and &lt;br /&gt;				technical levels.&lt;/font&gt;&lt;/li&gt;&lt;br /&gt;			&lt;/ul&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;	&lt;/tbody&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border=&quot;0&quot; width=&quot;100%&quot;&gt;&lt;br /&gt;	&lt;tbody&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			 &lt;br /&gt;			&lt;td width=&quot;95%&quot;&gt; &lt;br /&gt;			&lt;p class=&quot;type&quot;&gt;&lt;br /&gt;			&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;strong class=&quot;H3&quot;&gt;Evolutionary &lt;br /&gt;			Delivery Summary&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;			For evolutionary delivery, the initial emphasis should be &lt;br /&gt;			on the core components of the system. This should consist &lt;br /&gt;			of lower level functions which are unlikely to be changed &lt;br /&gt;			by customer feedback. &lt;/font&gt; &lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;			&lt;td width=&quot;5%&quot;&gt;&lt;em&gt;&lt;!-- #BeginLibraryItem &quot;/Library/Top arrow grey.lbi&quot; --&gt;&lt;em&gt;&lt;a href=&quot;http://www.business-esolutions.com/islm.htm#top&quot;&gt;&lt;font face=&quot;Times New Roman, Times, serif&quot;&gt;&lt;img src=&quot;http://www.business-esolutions.com/toparrowgrey.gif&quot; border=&quot;0&quot; alt=&quot;Return to top&quot; /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/em&gt;&lt;!-- #EndLibraryItem --&gt;&lt;/em&gt;&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;	&lt;/tbody&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;p class=&quot;type&quot;&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=&quot;type&quot;&gt;&lt;br /&gt;&lt;a name=&quot;designtoschedule&quot;&gt;&lt;/a&gt;&lt;font face=&quot;Verdana, Arial, Helvetica, sans-serif&quot;&gt;Design-to-Schedule&lt;/font&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=&quot;type&quot;&gt;&lt;br /&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;Like &lt;br /&gt;staged delivery, design-to-schedule is a staged release model. However, &lt;br /&gt;the number of stages to be accomplished are not known at the outset &lt;br /&gt;of the project.&lt;/font&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;table border=&quot;0&quot; width=&quot;100%&quot;&gt;&lt;br /&gt;	&lt;tbody&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			 &lt;br /&gt;			&lt;td&gt; &lt;br /&gt;			&lt;div class=&quot;type&quot; align=&quot;center&quot;&gt;&lt;br /&gt;			&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;em&gt;Strengths&lt;/em&gt;&lt;/font&gt;&lt;br /&gt;			&lt;/div&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;			&lt;td width=&quot;1&quot;&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td&gt; &lt;br /&gt;			&lt;div class=&quot;type&quot; align=&quot;center&quot;&gt;&lt;br /&gt;			&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;em&gt;Weaknesses&lt;/em&gt;&lt;/font&gt;&lt;br /&gt;			&lt;/div&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr valign=&quot;top&quot;&gt;&lt;br /&gt;			 &lt;br /&gt;			&lt;td width=&quot;50%&quot;&gt; &lt;br /&gt;			&lt;ul&gt;&lt;br /&gt;				&lt;li class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;Produces &lt;br /&gt;				date-driven functionality, ensuring there is a product at &lt;br /&gt;				the critical date.&lt;/font&gt;&lt;/li&gt;&lt;br /&gt;				&lt;li class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;span class=&quot;type&quot;&gt;Covers &lt;br /&gt;				for highly suspect estimates.&lt;/span&gt;&lt;/font&gt;&lt;/li&gt;&lt;br /&gt;			&lt;/ul&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td width=&quot;50%&quot;&gt; &lt;br /&gt;			&lt;ul&gt;&lt;br /&gt;				&lt;li class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;Won&#039;t &lt;br /&gt;				be able to predict the full range of functionality.&lt;/font&gt;&lt;/li&gt;&lt;br /&gt;			&lt;/ul&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;	&lt;/tbody&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border=&quot;0&quot; width=&quot;100%&quot;&gt;&lt;br /&gt;	&lt;tbody&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			 &lt;br /&gt;			&lt;td width=&quot;95%&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;strong class=&quot;H3&quot;&gt;Design-to-Schedule &lt;br /&gt;			Summary&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;			&lt;span class=&quot;type&quot;&gt;In design-to-schedule delivery, it is critical &lt;br /&gt;			to prioritize features and plan stages so that the early stages &lt;br /&gt;			contain the highest-priority features. Leave the lower priority &lt;br /&gt;			features for later.&lt;/span&gt;&lt;/font&gt;&lt;/td&gt;&lt;br /&gt;			&lt;td width=&quot;5%&quot;&gt;&lt;em&gt;&lt;!-- #BeginLibraryItem &quot;/Library/Top arrow grey.lbi&quot; --&gt;&lt;em&gt;&lt;a href=&quot;http://www.business-esolutions.com/islm.htm#top&quot;&gt;&lt;font face=&quot;Times New Roman, Times, serif&quot;&gt;&lt;img src=&quot;http://www.business-esolutions.com/toparrowgrey.gif&quot; border=&quot;0&quot; alt=&quot;Return to top&quot; /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/em&gt;&lt;!-- #EndLibraryItem --&gt;&lt;/em&gt;&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;	&lt;/tbody&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;p class=&quot;type&quot;&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=&quot;type&quot;&gt;&lt;br /&gt;&lt;a name=&quot;designtotools&quot;&gt;&lt;/a&gt;&lt;font face=&quot;Verdana, Arial, Helvetica, sans-serif&quot;&gt;Design-to-Tools&lt;/font&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=&quot;type&quot;&gt;&lt;br /&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;When &lt;br /&gt;using a design-to-tools approach, the capability goes into a product &lt;br /&gt;only if it is directly supported by existing software tools. If &lt;br /&gt;it isn&#039;t supported, it gets left out. Besides architectural and &lt;br /&gt;functional packages, these tools can be code and class libraries, &lt;br /&gt;code generators, rapid-development languages and any other software &lt;br /&gt;tools that dramatically reduce implementation time.&lt;/font&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;table border=&quot;0&quot; width=&quot;100%&quot;&gt;&lt;br /&gt;	&lt;tbody&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			 &lt;br /&gt;			&lt;td&gt; &lt;br /&gt;			&lt;div class=&quot;type&quot; align=&quot;center&quot;&gt;&lt;br /&gt;			&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;em&gt;Strengths&lt;/em&gt;&lt;/font&gt;&lt;br /&gt;			&lt;/div&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;			&lt;td width=&quot;1&quot;&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td&gt; &lt;br /&gt;			&lt;div class=&quot;type&quot; align=&quot;center&quot;&gt;&lt;br /&gt;			&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;em&gt;Weaknesses&lt;/em&gt;&lt;/font&gt;&lt;br /&gt;			&lt;/div&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr valign=&quot;top&quot;&gt;&lt;br /&gt;			 &lt;br /&gt;			&lt;td width=&quot;50%&quot;&gt; &lt;br /&gt;			&lt;ul&gt;&lt;br /&gt;				&lt;li class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;When &lt;br /&gt;				time is a constraint, may be able to implement more total &lt;br /&gt;				functionality than possible when building everything &amp;quot;from &lt;br /&gt;				scratch&amp;quot;.&lt;/font&gt;&lt;/li&gt;&lt;br /&gt;			&lt;/ul&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td width=&quot;50%&quot;&gt; &lt;br /&gt;			&lt;ul&gt;&lt;br /&gt;				&lt;li class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;You &lt;br /&gt;				lose a lot of control over the product.&lt;/font&gt;&lt;/li&gt;&lt;br /&gt;				&lt;li class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;You &lt;br /&gt;				may become &amp;quot;locked in&amp;quot; to a vendor. If it is for &lt;br /&gt;				long-term functionality, vendor lock-in can become a weak &lt;br /&gt;				lin&lt;/font&gt;&lt;span class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;k.&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;				&lt;li class=&quot;type&quot;&gt;&lt;span class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;May &lt;br /&gt;				not be able to implement all features desired or in the &lt;br /&gt;				manner desired.&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;			&lt;/ul&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;	&lt;/tbody&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border=&quot;0&quot; width=&quot;100%&quot;&gt;&lt;br /&gt;	&lt;tbody&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			 &lt;br /&gt;			&lt;td width=&quot;95%&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;strong class=&quot;H3&quot;&gt;Design-to-Tools &lt;br /&gt;			Summary&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;			&lt;span class=&quot;type&quot;&gt;Consider the tradeoffs of time-to-market &lt;br /&gt;			versus lock-in and functionality compromises. This may be an &lt;br /&gt;			appropriate approach for a high-risk element of the overall &lt;br /&gt;			project or architecture. &lt;/span&gt;&lt;/font&gt;&lt;/td&gt;&lt;br /&gt;			&lt;td width=&quot;5%&quot;&gt;&lt;em&gt;&lt;!-- #BeginLibraryItem &quot;/Library/Top arrow grey.lbi&quot; --&gt;&lt;em&gt;&lt;a href=&quot;http://www.business-esolutions.com/islm.htm#top&quot;&gt;&lt;font face=&quot;Times New Roman, Times, serif&quot;&gt;&lt;img src=&quot;http://www.business-esolutions.com/toparrowgrey.gif&quot; border=&quot;0&quot; alt=&quot;Return to top&quot; /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/em&gt;&lt;!-- #EndLibraryItem --&gt;&lt;/em&gt;&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;	&lt;/tbody&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;p class=&quot;type&quot;&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=&quot;type&quot;&gt;&lt;br /&gt;&lt;a name=&quot;offtheshelf&quot;&gt;&lt;/a&gt;&lt;font face=&quot;Verdana, Arial, Helvetica, sans-serif&quot;&gt;Off-the-Shelf&lt;/font&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=&quot;type&quot;&gt;&lt;br /&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;Following &lt;br /&gt;requirements definition, analysis must be done to compare the package &lt;br /&gt;to the business, functional and architectural requirements.&lt;/font&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;table border=&quot;0&quot; width=&quot;100%&quot;&gt;&lt;br /&gt;	&lt;tbody&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			 &lt;br /&gt;			&lt;td&gt; &lt;br /&gt;			&lt;div class=&quot;type&quot; align=&quot;center&quot;&gt;&lt;br /&gt;			&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;em&gt;Strengths&lt;/em&gt;&lt;/font&gt;&lt;br /&gt;			&lt;/div&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;			&lt;td width=&quot;1&quot;&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td&gt; &lt;br /&gt;			&lt;div class=&quot;type&quot; align=&quot;center&quot;&gt;&lt;br /&gt;			&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;em&gt;Weaknesses&lt;/em&gt;&lt;/font&gt;&lt;br /&gt;			&lt;/div&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr valign=&quot;top&quot;&gt;&lt;br /&gt;			 &lt;br /&gt;			&lt;td width=&quot;50%&quot;&gt; &lt;br /&gt;			&lt;ul&gt;&lt;br /&gt;				&lt;li class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;Available &lt;br /&gt;				immediately and usually at far lesser cost.&lt;/font&gt;&lt;/li&gt;&lt;br /&gt;			&lt;/ul&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;			&lt;td&gt; &lt;/td&gt;&lt;br /&gt;			&lt;td width=&quot;50%&quot;&gt; &lt;br /&gt;			&lt;ul&gt;&lt;br /&gt;				&lt;li class=&quot;type&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;Will &lt;br /&gt;				rarely satisfy all system requirements.&lt;/font&gt;&lt;/li&gt;&lt;br /&gt;			&lt;/ul&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;	&lt;/tbody&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border=&quot;0&quot; width=&quot;100%&quot;&gt;&lt;br /&gt;	&lt;tbody&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			 &lt;br /&gt;			&lt;td width=&quot;95%&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;&lt;strong class=&quot;H3&quot;&gt;Off-the-Shelf &lt;br /&gt;			Summary&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;			&lt;span class=&quot;type&quot;&gt;It is critical to know how the desired features &lt;br /&gt;			compare with the packaged set and if the package can be customized.&lt;/span&gt;&lt;/font&gt; &lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;			&lt;td width=&quot;5%&quot;&gt;&lt;em&gt;&lt;!-- #BeginLibraryItem &quot;/Library/Top arrow grey.lbi&quot; --&gt;&lt;em&gt;&lt;a href=&quot;http://www.business-esolutions.com/islm.htm#top&quot;&gt;&lt;font face=&quot;Times New Roman, Times, serif&quot;&gt;&lt;img src=&quot;http://www.business-esolutions.com/toparrowgrey.gif&quot; border=&quot;0&quot; alt=&quot;Return to top&quot; /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/em&gt;&lt;!-- #EndLibraryItem --&gt;&lt;/em&gt;&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;	&lt;/tbody&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;p class=&quot;type&quot;&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=&quot;type&quot;&gt;&lt;br /&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; size=&quot;2&quot;&gt;These &lt;br /&gt;standard models can be adapted to fit the industry issues, corporate &lt;br /&gt;culture, time constraints and team vulnerabilities which comprise &lt;br /&gt;your environment. We can customize a methodology to fit your needs &lt;br /&gt;or help you with a special or problem project.&lt;/font&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;</description>
		<guid>http://sumit-bhasin.talkmeblog.com/Sumit-Bhasin-b1/Project-Lifecycle-Models-b1-p5546.htm</guid>
	</item>
	<item>
		<title>openldap repair tips</title>
		<category>Sumit Bhasin</category>
		<pubDate>2008-12-13T07:08:01Z</pubDate>
		<description>&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;	&lt;li&gt;Make sure the server is running&lt;br /&gt;&lt;br /&gt;	&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Follow these steps carefully:&lt;br /&gt;&lt;br /&gt;	# rm /opt/insight/var/started&lt;br /&gt;&lt;br /&gt;	# /opt/insight/etc/rc/slapd stop&lt;br /&gt;&lt;br /&gt;	# ps -ea | grep slapd&lt;br /&gt;&lt;br /&gt;	/* if the slapd process is still running then... */&lt;br /&gt;&lt;br /&gt;	# killall -9 slapd&lt;br /&gt;&lt;br /&gt;	# cd /opt/insight/var&lt;br /&gt;&lt;br /&gt;	# mv openldap-data/ openldap-data.broken&lt;br /&gt;&lt;br /&gt;	# mkdir openldap-data&lt;br /&gt;&lt;br /&gt;	# cd openldap-data.old/&lt;br /&gt;&lt;br /&gt;	# cp DB_CONFIG ../openldap-data&lt;br /&gt;&lt;br /&gt;	# cd ../openldap-data&lt;br /&gt;&lt;br /&gt;	# /opt/insight/etc/rc/slapd start&lt;br /&gt;&lt;br /&gt;	# cat ../openldap-data.old/slapcat.ldif |/opt/insight/sbin/slapadd -c&lt;br /&gt;&lt;br /&gt;	# /opt/insight/etc/rc/slapd stop&lt;br /&gt;&lt;br /&gt;	# ps -ea | grep slapd&lt;br /&gt;&lt;br /&gt;	/* if the slapd process is still running then... */&lt;br /&gt;&lt;br /&gt;	# killall -9 slapd&lt;br /&gt;&lt;br /&gt;	# /opt/insight/etc/rc/slapd recover&lt;br /&gt;&lt;br /&gt;	# /opt/insight/etc/rc/slapd start&lt;br /&gt;&lt;br /&gt;	# touch /opt/insight/var/started&lt;br /&gt;&lt;br /&gt;	# /opt/insight/sbin/slapindex&lt;br /&gt;&lt;br /&gt;	&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Repair the Insight Service Account password:&lt;br /&gt;&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;	Locate the current service account password:&lt;br /&gt;&lt;br /&gt;	# grep bind_pw /opt/insight/etc/postfix/ldap-recipient.cf&lt;br /&gt;&lt;br /&gt;	bind_pw = mypass&lt;br /&gt;&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;	The service account password in the example above is &amp;quot;mypass&amp;quot;. &lt;br /&gt;&lt;br /&gt;	&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;To set this in the LDAP database:&lt;br /&gt;&lt;br /&gt;	# /opt/insight/bin/ldapmodify -x -D &amp;quot;cn=manager&amp;quot; -w managerpassword&lt;br /&gt;&lt;br /&gt;	dn: cn=Insight Service Account&lt;br /&gt;&lt;br /&gt;	changetype: modify&lt;br /&gt;&lt;br /&gt;	userpassword: mypass&lt;br /&gt;&lt;br /&gt;	(enter blank line)&lt;br /&gt;&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;	modifying entry &amp;quot;dn: cn=Insight Service Account&amp;quot;&lt;br /&gt;&lt;br /&gt;	(hit CTRL-C to exit)&lt;br /&gt;&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;	repair&lt;br /&gt;&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;	-----&lt;br /&gt;&lt;br /&gt;	If you are experiencing LDAP errors (for example, all authentication fails or the oxadmin interface reports &amp;quot;Can not connect to LDAP Server!&amp;quot;) and you have tried restarting the LDAP server by running /etc/init.d/ldap restart, then you should try running the following recovery procedure:&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(1) Stop the LDAP server:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/etc/init.d/ldap stop&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(2) Perform the recovery:&lt;br /&gt;&lt;br /&gt;(a) if you are running Open-Xchange on SLES 9, use the following command:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;db_recover -h /var/lib/ldap&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(b) if you are using Red Hat, use the following command:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/usr/sbin/slapd_db_recover -h /var/lib/ldap&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(3) Reboot the machine.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In the event that the problems persist after running the above procedure, use the following procedure.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(1) Stop the ldap server&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/etc/init.d/ldap stop&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Just to be sure the server is stopped,&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;killall slapd&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(2) Make a backup of your existing directory structure:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;tar -cvzf ldap.tar.gz /var/lib/ldap/*&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Put it someplace safe in case something goes wrong with this procedure.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(3) Perform a recovery:&lt;br /&gt;&lt;br /&gt;(a) if you are using SLES, use the following command:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;db_recover -h /var/lib/ldap -v&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(b) if you are using Red Hat, use the following command:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/usr/sbin/slapd_db_recover -h /var/lib/ldap&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(4) Dump the directory structure to a text file&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;slapcat -l ldap.ldif&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(sometimes it is needed to delete all bdb files, _but_ &amp;quot;dn2id&amp;quot; and &amp;quot;id2entry&amp;quot;, being able to &amp;quot;slapcat&amp;quot; the files)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(5) Verify that the resultant file (ldap.ldif) contains directory entries. If it does not, or if slapcat returned errors in step 4, try running db_recover in catastrophic mode:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;db_recover -h /var/lib/ldap -v -c&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(6) Delete the corrupted LDAP directory with the following command:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;rm -fr /var/lib/ldap/*&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(7) Recreate the DB_CONFIG file, which contains some basic informations for the bdb backend:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;echo -en &amp;quot;set_cachesize 0 15000000 1nset_lg_bsize 2097152n&amp;quot; &amp;gt;/var/lib/ldap/DB_CONFIG&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This file only exists on SLES9 as default.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(8) Reload the LDAP directory from the ldap.ldif file you produced in step 4 with the following command:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;slapadd -l ldap.ldif&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(9) The files have to be owned by the user &amp;quot;ldap&amp;quot;, hence we have to run&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;chown -R ldap: /var/lib/ldap&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(10) Start the LDAP server&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/etc/init.d/ldap start&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Test: If the command &amp;quot;ldapsearch -x uid=mailadmin&amp;quot; returns any results, everything went well.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</description>
		<guid>http://sumit-bhasin.talkmeblog.com/Sumit-Bhasin-b1/openldap-repair-tips-b1-p5545.htm</guid>
	</item>
	<item>
		<title>WAP</title>
		<category>Sumit Bhasin</category>
		<pubDate>2008-12-08T11:12:54Z</pubDate>
		<description>&lt;div id=&quot;story&quot; class=&quot;clearfix&quot;&gt;&lt;br /&gt;&lt;span class=&quot;smdeck&quot;&gt;WML is to WAP what HTML is to HTTP. However,&lt;br /&gt;because of the lack of bandwidth and the minimum capability of WML&lt;br /&gt;browsers embedded in mobile phones, WML has been developed into a much&lt;br /&gt;slimmer language, shedding all the features of HTML that would be&lt;br /&gt;useless for wireless devices. Let&#039;s take a closer look at WML.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;Shuffle the deck&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The WML parallel of an HTML page is termed a deck. So when you try&lt;br /&gt;to access a WAP site using any WAP-enabled device, what is actually&lt;br /&gt;getting to your device is a deck. A deck can be broken down into cards.&lt;br /&gt;In fact, what is visible at a glance is one card and not an entire&lt;br /&gt;deck. These cards can link to other cards, and navigating to other&lt;br /&gt;cards is possible programmatically as well as in response to user&lt;br /&gt;input.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;A deck is the smallest unit that can be sent by the server to a WAP client, and it can contain one or more cards. &lt;strong&gt;Listing A&lt;/strong&gt; contains a sample WML file.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;Listing A&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE wml PUBLIC &amp;quot;-//WAPFORUM//DTD WML 1.1//EN&amp;quot; &amp;quot;http://www.wapforum.org/DTD/wml_1.1.xml&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;wml&amp;gt;&lt;br /&gt;&amp;lt;card title=&amp;quot;Main Page&amp;quot; id=&amp;quot;first&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;p align=&amp;quot;center&amp;quot;&amp;gt;BUILDER.com &amp;lt;br/&amp;gt;&lt;br /&gt;My kind of technology hangout.&lt;br /&gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;p align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;a href=&amp;quot;#second&amp;quot;&amp;gt;Click Here&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;/card&amp;gt;&lt;br /&gt;&amp;lt;card title=&amp;quot;OS Chooser&amp;quot; id=&amp;quot;second&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;p align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;a href=&amp;quot;#first&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;img alt=&amp;quot;Image&amp;quot; src=&amp;quot;MyImage.wbmp&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;p align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;Which is the best OS around?&lt;br /&gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;p align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;select name=&amp;quot;OS&amp;quot; multiple=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;option value=&amp;quot;Windows&amp;quot;&amp;gt;Windows&amp;lt;/option&amp;gt;&lt;br /&gt;&amp;lt;option value=&amp;quot;Unix&amp;quot;&amp;gt;Unix&amp;lt;/option&amp;gt;&lt;br /&gt;&amp;lt;option value=&amp;quot;Linux&amp;quot;&amp;gt;Linux&amp;lt;/option&amp;gt;&lt;br /&gt;&amp;lt;option value=&amp;quot;DOS&amp;quot;&amp;gt;DOS&amp;lt;/option&amp;gt;&lt;br /&gt;&amp;lt;/select&amp;gt;&lt;br /&gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;p align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;a href=&amp;quot;#third&amp;quot;&amp;gt;&lt;br /&gt;Submit&lt;br /&gt;&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;/card&amp;gt;&lt;br /&gt;&amp;lt;card id=&amp;quot;third&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;p&amp;gt;&lt;br /&gt;&amp;lt;u&amp;gt;$(OS)&amp;lt;/u&amp;gt;...I am not so sure!&lt;br /&gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;/card&amp;gt;&lt;br /&gt;&amp;lt;/wml&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;This example is a basic WML deck containing three cards. The&lt;br /&gt;card with the id &amp;quot;first&amp;quot; is, not surprisingly, the one that is&lt;br /&gt;displayed first. Although the other cards also come to the client as&lt;br /&gt;part of the deck, they are not initially visible. On clicking the Click&lt;br /&gt;Here link, the second card is visible. It has an image and an embedded&lt;br /&gt;list box.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;What is interesting is the use of $(OS) in the third card. OS&lt;br /&gt;here refers to the list box name on the second card. Hence, based on&lt;br /&gt;selection made on the second card, the message on the third card can&lt;br /&gt;change.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;The WAP toolbox&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you are wondering how in the world you are going to check out&lt;br /&gt;how this WML content would be displayed on a mobile phone, fret not.&lt;br /&gt;More than a handful of WAP simulators and development tools exist. The&lt;br /&gt;best of the lot seems to be the &lt;a href=&quot;http://www.forum.nokia.com/main.html&quot;&gt;WAP Toolkit provided by Nokia&lt;/a&gt;. Since Nokia is ubiquitous in the mobile market, you surely want your WML pages to be displayed properly on its handset.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;If you are using Macromedia Dreamweaver, a pretty nifty way to&lt;br /&gt;get your WML pages done in no time would be to get hold of the Nokia&lt;br /&gt;WML Studio plug-in for Dreamweaver. It makes WML development with&lt;br /&gt;Dreamweaver a cinch.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Most of the leading handset providers, such as Ericsson and&lt;br /&gt;Motorola, have toolkits that can simulate how your page will look on&lt;br /&gt;their respective handsets. If you are looking for a basic editor that&lt;br /&gt;will quickly get some pages up, Coffee Cup Wireless Web Builder is a&lt;br /&gt;solid product that includes an easy-to-use WML page creator.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;Jazz up your WML&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Pure text pages are boring. To spice up your WML pages, you need&lt;br /&gt;well-placed but sparingly used WBMP images. WBMP is the WAP image&lt;br /&gt;standard format. Creating WBMP images is definitely not a tough task,&lt;br /&gt;but you can get tons of images that suit your purpose from the Net. If&lt;br /&gt;you are still keen on creating your own images, try your hand at the&lt;br /&gt;WBMP image maker included with the &lt;a href=&quot;http://www.coffeecup.com/wireless/&quot;&gt;Coffee Cup Wireless Web Builder&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;Gathering data&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Dynamic pages that send data to the server are pretty much&lt;br /&gt;essential for you to do anything worthwhile on the Net these days, so&lt;br /&gt;WML needs the capability to submit user data.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;There is no direct HTML &lt;br /&gt;&lt;/p&gt;&lt;br /&gt; tag parallel in WML. To&lt;br /&gt;submit data, you use postfields, and you use the $ sign to fetch user&lt;br /&gt;input and pass it on to the specified href. &lt;strong&gt;Listing B&lt;/strong&gt; provides an example. &lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;Listing B&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE wml PUBLIC &amp;quot;-//WAPFORUM//DTD WML 1.1//EN&amp;quot; &amp;quot;http://www.wapforum.org/DTD/wml_1.1.xml&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;wml&amp;gt;&lt;br /&gt;&amp;lt;card title=&amp;quot;Login Page&amp;quot; id=&amp;quot;first&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;p&amp;gt;Login: &amp;lt;input name=&amp;quot;login&amp;quot;/&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;p&amp;gt;Password: &amp;lt;input name=&amp;quot;password&amp;quot;/&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;p&amp;gt;&lt;br /&gt;&amp;lt;anchor&amp;gt;Submit to Servlet&lt;br /&gt;&amp;lt;go href=&amp;quot;http://localhost:8080/AbcServlet&amp;quot; method=&amp;quot;get&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;postfield name=&amp;quot;loginName&amp;quot; value=&amp;quot;$(login)&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;postfield name=&amp;quot;loginPass&amp;quot; value=&amp;quot;$(password)&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;postfield name=&amp;quot;msg&amp;quot; value=&amp;quot;HELLO&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;/go&amp;gt;&lt;br /&gt;&amp;lt;/anchor&amp;gt;&lt;br /&gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;p&amp;gt;&lt;br /&gt;&amp;lt;a href=&amp;quot;#card2&amp;quot;&amp;gt;&lt;br /&gt;Next Card&lt;br /&gt;&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;/card&amp;gt;&lt;br /&gt;&amp;lt;card id=&amp;quot;card2&amp;quot; title=&amp;quot; Builder C2&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;p align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;Welcome &amp;lt;u&amp;gt;$(login)&amp;lt;/u&amp;gt;&lt;br /&gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;/card&amp;gt;&lt;br /&gt;&amp;lt;/wml&amp;gt;&lt;br /&gt;Upon clicking Submit to Servlet, the data that&#039;s been entered in the&lt;br /&gt;Login and Password fields would be passed on to the specified servlet.&lt;br /&gt;So if I enter Harshad in the Login field and Oak as my password, on&lt;br /&gt;submission, my query string should look something like&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;span class=&quot;code&quot;&gt;http://localhost:8080/AbcServlet?&lt;br /&gt;&lt;br /&gt;loginName=Harshad&amp;amp;loginPass=Oak&amp;amp;msg=HELLO&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;WAP yourself into shape&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Get going with WML and make your presence felt in the wireless&lt;br /&gt;world. A significant advantage of having WAP expertise is that although&lt;br /&gt;it is pretty easy to latch on to, it still is rather rare in the&lt;br /&gt;technical marketplace.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;</description>
		<guid>http://sumit-bhasin.talkmeblog.com/Sumit-Bhasin-b1/WAP-b1-p5544.htm</guid>
	</item>
	<item>
		<title>Getting Started with Hibernate</title>
		<category>Sumit Bhasin</category>
		<pubDate>2008-09-29T08:48:38Z</pubDate>
		<description>&lt;h1 class=&quot;title&quot;&gt;Getting Started with Hibernate&lt;/h1&gt;&lt;br /&gt;&lt;br /&gt;http://www.cs.bham.ac.uk/~aps/syllabi/2004_2005/issws/h03/hibernate.html&lt;br /&gt;&lt;br /&gt;</description>
		<guid>http://sumit-bhasin.talkmeblog.com/Sumit-Bhasin-b1/Getting-Started-with-Hibernate-b1-p5543.htm</guid>
	</item>
	<item>
		<title>JAva script</title>
		<category>Sumit Bhasin</category>
		<pubDate>2008-09-25T11:46:18Z</pubDate>
		<description>&lt;strong&gt;Put all of the code examples from the links below between these script tags.&lt;/strong&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;font face=&quot;Courier New&quot; size=&quot;2&quot;&gt;&lt;font color=&quot;#0000ff&quot;&gt;&amp;lt;&lt;/font&gt;&lt;font color=&quot;#800000&quot;&gt;script&lt;/font&gt; &lt;font color=&quot;#ff0000&quot;&gt;language&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;=&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;&amp;quot;JavaScript&amp;quot;&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color=&quot;#c0c0c0&quot;&gt;&amp;lt;!--&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color=&quot;#c0c0c0&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color=&quot;#c0c0c0&quot;&gt;&lt;br /&gt;//--&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color=&quot;#0000ff&quot;&gt;&amp;lt;/&lt;/font&gt;&lt;font color=&quot;#800000&quot;&gt;script&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table border=&quot;0&quot;&gt;&lt;br /&gt;	&lt;tbody&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;&lt;br /&gt;			&lt;strong&gt;E-Mail format checking script.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;			&lt;hr /&gt;&lt;br /&gt;			&lt;pre&gt;&lt;br /&gt;			 if (document.formname.fieldname.value.length &amp;gt;0) {&lt;br /&gt;			i=document.formname.fieldname.value.indexOf(&amp;quot;@&amp;quot;)&lt;br /&gt;			j=document.formname.fieldname.value.indexOf(&amp;quot;.&amp;quot;,i)&lt;br /&gt;			k=document.formname.fieldname.value.indexOf(&amp;quot;,&amp;quot;)&lt;br /&gt;			kk=document.formname.fieldname.value.indexOf(&amp;quot; &amp;quot;)&lt;br /&gt;			jj=document.formname.fieldname.value.lastIndexOf(&amp;quot;.&amp;quot;)+1&lt;br /&gt;			len=document.formname.fieldname.value.length&lt;br /&gt;			if ((i&amp;gt;0) &amp;amp;&amp;amp; (j&amp;gt;(1+1)) &amp;amp;&amp;amp; (k==-1) &amp;amp;&amp;amp; (kk==-1) &amp;amp;&amp;amp; (len-jj &amp;gt;=2) &amp;amp;&amp;amp; (len-jj&amp;lt;=3)) {&lt;br /&gt;			}&lt;br /&gt;			else {&lt;br /&gt;			alert(&amp;quot;Please enter an exact email address.n&amp;quot; +&lt;br /&gt;			document.formname.fieldname.value + &amp;quot; is invalid.&amp;quot;);&lt;br /&gt;			return false;&lt;br /&gt;			}&lt;br /&gt;			}&lt;br /&gt;			&lt;/pre&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;&lt;br /&gt;			&lt;strong&gt;Check if field has special characters.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;			&lt;hr /&gt;&lt;br /&gt;			&lt;pre&gt;&lt;br /&gt;			  var iChars = &amp;quot;!@#$%^&amp;amp;*()+=-[]\&#039;;,./{}|&amp;quot;:&amp;lt;&amp;gt;?&amp;quot;;&lt;br /&gt;			for (var i = 0; i &amp;lt; document.formname.fieldname.value.length; i++) {&lt;br /&gt;			if (iChars.indexOf(document.formname.fieldname.value.charAt(i)) != -1) {&lt;br /&gt;			alert (&amp;quot;Your username has special characters. nThese are not allowed.n Please remove them and try again.&amp;quot;);&lt;br /&gt;			return false;&lt;br /&gt;			}&lt;br /&gt;			}&lt;br /&gt;			&lt;/pre&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;&lt;br /&gt;			&lt;strong&gt;Check if certian radio buttons have not been selected.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;			&lt;hr /&gt;&lt;br /&gt;			&lt;pre&gt;&lt;br /&gt;			    if (!document.formname.fieldname[0].checked &amp;amp;&amp;amp;&lt;br /&gt;			!document.formname.fieldname[1].checked &amp;amp;&amp;amp;&lt;br /&gt;			!document.formname.fieldname[2].checked &amp;amp;&amp;amp;&lt;br /&gt;			!document.formname.fieldname[3].checked) {&lt;br /&gt;			alert(&amp;quot;Please choose a group designation.n&amp;quot;);&lt;br /&gt;			return false;&lt;br /&gt;			}&lt;br /&gt;			&lt;/pre&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;&lt;br /&gt;			&lt;strong&gt;Check if textbox has any characters in it.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;			&lt;hr /&gt;&lt;br /&gt;			&lt;pre&gt;&lt;br /&gt;			     if (document.formname.fieldname.value.length == 0) {&lt;br /&gt;			alert(&amp;quot;Please fill out your name.n&amp;quot;);&lt;br /&gt;			return false;&lt;br /&gt;			}&lt;br /&gt;			&lt;/pre&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;&lt;br /&gt;			&lt;strong&gt;Check if multiple checkboxes have not been selected.Replace false with true to see if all are selected.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;			&lt;hr /&gt;&lt;br /&gt;			&lt;pre&gt;&lt;br /&gt;			     if (document.formname.fieldname.checked == false &amp;amp;&amp;amp;&lt;br /&gt;			document.formname.fieldname.checked == false &amp;amp;&amp;amp;&lt;br /&gt;			document.formname.fieldname.checked == false) {&lt;br /&gt;			alert(&amp;quot;Please select at least one checkbox.n&amp;quot;);&lt;br /&gt;			return false;&lt;br /&gt;			}&lt;br /&gt;			&lt;/pre&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;&lt;br /&gt;			&lt;strong&gt;Check drop down has been selected. Set drop down&#039;s value to Not_Selected for this to work.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;			&lt;hr /&gt;&lt;br /&gt;			&lt;pre&gt;&lt;br /&gt;			     if (document.formname.fieldname.value == &#039;Not_Selected&#039;) {&lt;br /&gt;			alert(&amp;quot;Please provide us with a selection.n&amp;quot;);&lt;br /&gt;			return false;&lt;br /&gt;			}&lt;br /&gt;			&lt;/pre&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;&lt;br /&gt;			&lt;strong&gt;Scan values in a field and if they are all letters then alert. The&lt;br /&gt;			second block of code does the same but for numbers&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;			&lt;hr /&gt;&lt;br /&gt;			&lt;pre&gt;&lt;br /&gt;			//alert on finding all letters&lt;br /&gt;			var noalpha = /^[a-zA-Z]*$/;&lt;br /&gt;			if (noalpha.test(document.formname.fieldname.value)) {&lt;br /&gt;			alert(&amp;quot;Please enter at least one number in the &amp;quot;username&amp;quot; field.&amp;quot;);&lt;br /&gt;			return false;&lt;br /&gt;			}&lt;br /&gt;			//alert on finding all numbers&lt;br /&gt;			var nonums = /^[0-9]*$/;&lt;br /&gt;			if (nonums.test(document.formname.fieldname.value)) {&lt;br /&gt;			alert(&amp;quot;Please enter at least one letter in the &amp;quot;username&amp;quot; field.&amp;quot;);&lt;br /&gt;			return false;&lt;br /&gt;			}&lt;br /&gt;			&lt;/pre&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;&lt;br /&gt;			&lt;strong&gt;Remove special characters from a string.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;			&lt;hr /&gt;&lt;br /&gt;			&lt;pre&gt;&lt;br /&gt;			function clearText() {&lt;br /&gt;			document.formname.fieldname.value=filterNum(document.formname.fieldname.value)&lt;br /&gt;			function filterNum(str) {&lt;br /&gt;			re = /$|,|@|#|~|`|%|*|^|&amp;amp;|(|)|+|=|[|-|_|]|[|}|{|;|:|&#039;|&amp;quot;|&amp;lt;|&amp;gt;|?|||\|!|$|./g;&lt;br /&gt;			// remove special characters like &amp;quot;$&amp;quot; and &amp;quot;,&amp;quot; etc...&lt;br /&gt;			return str.replace(re, &amp;quot;&amp;quot;);&lt;br /&gt;			}&lt;br /&gt;			}&lt;br /&gt;			&lt;/pre&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td&gt;&lt;br /&gt;			&lt;strong&gt;Detect special characters in text box. Or any character you subsitute for the special characters.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;			&lt;hr /&gt;&lt;br /&gt;			&lt;pre&gt;&lt;br /&gt;			     var iChars = &amp;quot;!@#$%^&amp;amp;*()+=-[]\&#039;;,./{}|&amp;quot;:&amp;lt;&amp;gt;?&amp;quot;;&lt;br /&gt;			for (var i = 0; i &amp;lt; document.formname.fieldname.value.length; i++) {&lt;br /&gt;			if (iChars.indexOf(document.formname.fieldname.value.charAt(i)) != -1) {&lt;br /&gt;			alert (&amp;quot;The box has special characters. nThese are not allowed.n&amp;quot;);&lt;br /&gt;			return false;&lt;br /&gt;			}&lt;br /&gt;			}&lt;br /&gt;			&lt;/pre&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;	&lt;/tbody&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;</description>
		<guid>http://sumit-bhasin.talkmeblog.com/Sumit-Bhasin-b1/JAva-script-b1-p5542.htm</guid>
	</item>
	<item>
		<title>Brainbench Question</title>
		<category>Sumit Bhasin</category>
		<pubDate>2008-09-11T08:21:57Z</pubDate>
		<description>http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&amp;amp;f=61&amp;amp;t=001239&lt;br /&gt;http://srkrishnakumar.spaces.live.com/Blog/cns!5F5205D90714FE9D!215.entry&lt;br /&gt;</description>
		<guid>http://sumit-bhasin.talkmeblog.com/Sumit-Bhasin-b1/Brainbench-Question-b1-p5541.htm</guid>
	</item>
	<item>
		<title>H!B</title>
		<category>Sumit Bhasin</category>
		<pubDate>2008-09-10T09:20:34Z</pubDate>
		<description>&lt;h3 class=&quot;smller&quot;&gt;Things to ask a potential US employer&lt;/h3&gt;&lt;br /&gt;&lt;div class=&quot;para&quot;&gt;&lt;br /&gt;1. Has the company filed any H1s in past? What is their success ratio? Why were their H1s denied (if any)?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. Are they asking to sign any bond - while you are outside US or when you enter US?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3.&lt;br /&gt;Are they asking for any security deposit aka H1 filing fees (this is&lt;br /&gt;illegal)? If so, how will the transaction take place? How soon will the&lt;br /&gt;money be refunded? What will happen in case your name is not selected&lt;br /&gt;in lottery or your visa is denied because of company&#039;s credentials?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4. Do they have direct clients or are they non-preferred/middle vendors?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;5. Will they provide company&#039;s tax returns, client letter, project details at the time of visa interview?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6. Will they ask you to fake your resume for marketing?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;7. Do they pay anything while on bench?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;8.&lt;br /&gt;How much is the salary? Consultants/contractors are usually paid in the&lt;br /&gt;range of 55K-65K USD although the client is billed at a very high rate.&lt;br /&gt;So make sure you get a good offer.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;9. What are other benefits like insurance, 401K, holidays?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3 class=&quot;smller&quot;&gt;Tracking your application&lt;/h3&gt;&lt;br /&gt;&lt;div class=&quot;para&quot;&gt;&lt;br /&gt;Assuming there is lottery this year, there is no way to find out&lt;br /&gt;whether your application was selected in lottery or not, but you can&lt;br /&gt;track it once it has been selected. So here is how the process works -&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1.&lt;br /&gt;If &amp;gt; 65K applications reach USCIS on Apr-01, they will do random&lt;br /&gt;selection. If quota is reached on the first day itself, they will also&lt;br /&gt;accept all applications received on Apr-02. Any application received&lt;br /&gt;prior to Apr-01 will not be selected.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. No check will be cashed&lt;br /&gt;by USCIS at this moment. With a computer generated program they will&lt;br /&gt;randomly select 65K applications.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. People who are not selected&lt;br /&gt;will be informed about their non-selection. This usually happens during&lt;br /&gt;next few months. Their checks will be returned to the petitioner (i.e.&lt;br /&gt;the company or the lawyer). NOTE - If your employer says that he cannot&lt;br /&gt;refund money as he is still waiting for the refund from USCIS then he&lt;br /&gt;is a big liar - USCIS doesn&#039;t cash the checks for applications that are&lt;br /&gt;not selected.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4. For applications that are selected, USCIS sends&lt;br /&gt;out 797-C to the employer/attorney. This has a tracking number using&lt;br /&gt;which application status can be tracked. Good employers share this&lt;br /&gt;number with the employee.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;5. If approved, the employer will receive 797-A and 797-B. He will send out 797-A to you for visa stamping.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6.&lt;br /&gt;If rejected, USCIS will issue RFE. Employer/attorney will have few&lt;br /&gt;months to reply to the RFE. If their answer satisfies USCIS, then visa&lt;br /&gt;issued (step 5) else it&#039;s rejected. No money is refunded for rejected&lt;br /&gt;applications. You can track latest information using the receipt number&lt;br /&gt;(step 4).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;7. Premium processing doesn&#039;t improve your chances of&lt;br /&gt;selection. It just means that USCIS is bound to provide the employer a&lt;br /&gt;status on your case within 15 days or it has to refund all the money as&lt;br /&gt;penalty.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Moral of the story - file your H1 through an employer&lt;br /&gt;who you can trust and can be sure that he refunds money in case your&lt;br /&gt;application is not selected in lottery.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3 class=&quot;smller&quot;&gt;Knowing about past H1s&lt;/h3&gt;&lt;br /&gt;&lt;div class=&quot;para&quot;&gt;&lt;br /&gt;To know which company filed how many H1s in past go to the link &lt;a href=&quot;http://www.flcdatacenter.com/CaseH1B.aspx&quot; target=&quot;_blank&quot;&gt;http://www.flcdatacenter.com/CaseH1B.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Note:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. It lists the LCAs filed by the company. It doesn&#039;t say whether the H1 was stamped or not. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2.&lt;br /&gt;It includes both fresh H1s and H1 transfers. You need to know the date&lt;br /&gt;on which quota was filed and compare it with filing date to know if&lt;br /&gt;it&#039;s a H1 transfer or fresh H1.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. It doesn&#039;t differentiate between general quota and advanced degree quota.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4.&lt;br /&gt;For years when lottery happened, it lists even those applications that&lt;br /&gt;were not selected in lottery. That is why 2007 is a huge file.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;5. It doesn&#039;t differentiate between expedited and non-expedited applications.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6. The salary mentioned is the minimum salary employer is bound to pay. The actual salary of the employee can be more than this.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you need a break-up, here it is&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. Filing fee - $185&lt;br /&gt;&lt;br /&gt;2. Training fee - $1,500 (if number of employees &amp;gt; 25), $750 (if number of employees &amp;lt;= 25)&lt;br /&gt;&lt;br /&gt;3. Fraud Prevention Fee - $500&lt;br /&gt;&lt;br /&gt;4. Premium Processing Fee (the expedited process) - $1000&lt;br /&gt;&lt;br /&gt;5. Attorney Fee - variable varies from $300 - $1000 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1-4 need to be paid by the employer, but 5 can be paid either by the employer or the employee.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;</description>
		<guid>http://sumit-bhasin.talkmeblog.com/Sumit-Bhasin-b1/HB-b1-p5540.htm</guid>
	</item>
	<item>
		<title>JDBC VS HIBERNATE</title>
		<category>Sumit Bhasin</category>
		<pubDate>2008-09-09T06:57:25Z</pubDate>
		<description>&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; class=&quot;MsoNormalTable&quot; style=&quot;border: 1pt solid #add2e2&quot;&gt;&lt;br /&gt;	&lt;tbody&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td style=&quot;border: medium none #add2e2; padding: 4.5pt; background-color: transparent&quot;&gt;&lt;br /&gt;			&lt;p style=&quot;margin: 0in 0in 0pt; text-align: center&quot; class=&quot;MsoNormal&quot; align=&quot;center&quot;&gt;&lt;br /&gt;			&lt;strong&gt;&lt;span style=&quot;font-size: 11pt&quot;&gt;JDBC &lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;			&lt;td style=&quot;border: medium none #add2e2; padding: 4.5pt; background-color: transparent&quot;&gt;&lt;br /&gt;			&lt;p style=&quot;margin: 0in 0in 0pt; text-align: center&quot; class=&quot;MsoNormal&quot; align=&quot;center&quot;&gt;&lt;br /&gt;			&lt;strong&gt;&lt;span style=&quot;font-size: 11pt&quot;&gt;Hibernate &lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td width=&quot;50%&quot; style=&quot;border: medium none #add2e2; padding: 4.5pt; width: 50%; background-color: transparent&quot;&gt;&lt;br /&gt;			&lt;p style=&quot;margin: 0in 0in 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;			&lt;span style=&quot;font-size: 11pt&quot;&gt;With JDBC, developer has to write code to map an &lt;br /&gt;			object model&#039;s data representation to a relational data model and its &lt;br /&gt;			corresponding database schema.  &lt;/span&gt;&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;			&lt;td style=&quot;border: medium none #add2e2; padding: 4.5pt; background-color: transparent&quot;&gt;&lt;br /&gt;			&lt;p style=&quot;margin: 0in 0in 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;			&lt;span style=&quot;font-size: 11pt&quot;&gt;Hibernate is flexible and powerful ORM solution to &lt;br /&gt;			map Java classes to database tables. Hibernate itself takes care of this &lt;br /&gt;			mapping using XML files so developer does not need to write code for &lt;br /&gt;			this. &lt;/span&gt;&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td style=&quot;border: medium none #add2e2; padding: 4.5pt; background-color: transparent&quot;&gt;&lt;br /&gt;			&lt;p style=&quot;margin: 0in 0in 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;			&lt;span style=&quot;font-size: 11pt&quot;&gt;With JDBC, the automatic mapping of Java objects &lt;br /&gt;			with database tables and vice versa conversion is to be taken care of by &lt;br /&gt;			the developer manually with lines of code.  &lt;/span&gt;&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;			&lt;td style=&quot;border: medium none #add2e2; padding: 4.5pt; background-color: transparent&quot;&gt;&lt;br /&gt;			&lt;p style=&quot;margin: 0in 0in 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;			&lt;span style=&quot;font-size: 11pt&quot;&gt;Hibernate provides transparent persistence and &lt;br /&gt;			developer does not need to write code explicitly to map database tables &lt;br /&gt;			tuples to application objects during interaction with RDBMS. &lt;br /&gt;			&lt;/span&gt;&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td style=&quot;border: medium none #add2e2; padding: 4.5pt; background-color: transparent&quot;&gt;&lt;br /&gt;			&lt;p style=&quot;margin: 0in 0in 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;			&lt;span style=&quot;font-size: 11pt&quot;&gt;JDBC supports only native Structured Query &lt;br /&gt;			Language (SQL). Developer has to find out the efficient way to access &lt;br /&gt;			database, i.e. to select effective query from a number of queries to &lt;br /&gt;			perform same task.  &lt;/span&gt;&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;			&lt;td style=&quot;border: medium none #add2e2; padding: 4.5pt; background-color: transparent&quot;&gt;&lt;br /&gt;			&lt;p style=&quot;margin: 0in 0in 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;			&lt;span style=&quot;font-size: 11pt&quot;&gt;Hibernate provides a powerful query language &lt;br /&gt;			Hibernate Query Language (independent from type of database) that is &lt;br /&gt;			expressed in a familiar SQL like syntax and includes full support for &lt;br /&gt;			polymorphic queries. Hibernate also supports native SQL statements. It &lt;br /&gt;			also selects an effective way to perform a database manipulation task for &lt;br /&gt;			an application.  &lt;/span&gt;&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td style=&quot;border: medium none #add2e2; padding: 4.5pt; background-color: transparent&quot;&gt;&lt;br /&gt;			&lt;p style=&quot;margin: 0in 0in 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;			&lt;span style=&quot;font-size: 11pt&quot;&gt;Application using JDBC to handle persistent data &lt;br /&gt;			(database tables) having database specific code in large amount. The code &lt;br /&gt;			written to map table data to application objects and vice versa is &lt;br /&gt;			actually to map table fields to object properties. As table changed or &lt;br /&gt;			database changed then it’s essential to change object structure as well as &lt;br /&gt;			to change code written to map &lt;br /&gt;			table-to-object/object-to-table. &lt;/span&gt;&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;			&lt;td style=&quot;border: medium none #add2e2; padding: 4.5pt; background-color: transparent&quot;&gt;&lt;br /&gt;			&lt;p style=&quot;margin: 0in 0in 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;			&lt;span style=&quot;font-size: 11pt&quot;&gt;Hibernate provides this mapping itself. The actual &lt;br /&gt;			mapping between tables and application objects is done in XML files. If &lt;br /&gt;			there is change in Database or in any table then the only need to change &lt;br /&gt;			XML file properties.  &lt;/span&gt;&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td style=&quot;border: medium none #add2e2; padding: 4.5pt; background-color: transparent&quot;&gt;&lt;br /&gt;			&lt;p style=&quot;margin: 0in 0in 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;			&lt;span style=&quot;font-size: 11pt&quot;&gt;With JDBC, it is developer’s responsibility to &lt;br /&gt;			handle JDBC result set and convert it to Java objects through code to use &lt;br /&gt;			this persistent data in application. So with JDBC, mapping between Java &lt;br /&gt;			objects and database tables is done manually. &lt;br /&gt;			&lt;/span&gt;&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;			&lt;td style=&quot;border: medium none #add2e2; padding: 4.5pt; background-color: transparent&quot;&gt;&lt;br /&gt;			&lt;p style=&quot;margin: 0in 0in 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;			&lt;span style=&quot;font-size: 11pt&quot;&gt;Hibernate reduces lines of code by maintaining &lt;br /&gt;			object-table mapping itself and returns result to application in form of &lt;br /&gt;			Java objects. It relieves programmer from manual handling of persistent &lt;br /&gt;			data, hence reducing the development time and maintenance cost. &lt;br /&gt;			&lt;/span&gt;&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td style=&quot;border: medium none #add2e2; padding: 4.5pt; background-color: transparent&quot;&gt;&lt;br /&gt;			&lt;p style=&quot;margin: 0in 0in 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;			&lt;span style=&quot;font-size: 11pt&quot;&gt;With JDBC, caching is maintained by hand-coding. &lt;br /&gt;			&lt;/span&gt;&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;			&lt;td style=&quot;border: medium none #add2e2; padding: 4.5pt; background-color: transparent&quot;&gt;&lt;br /&gt;			&lt;p style=&quot;margin: 0in 0in 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;			&lt;span style=&quot;font-size: 11pt&quot;&gt;Hibernate, with Transparent Persistence, cache is &lt;br /&gt;			set to application work space. Relational tuples are moved to this cache &lt;br /&gt;			as a result of query. It improves performance if client application reads &lt;br /&gt;			same data many times for same write. Automatic Transparent Persistence &lt;br /&gt;			allows the developer to concentrate more on business logic rather than &lt;br /&gt;			this application code.  &lt;/span&gt;&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;		&lt;tr&gt;&lt;br /&gt;			&lt;td style=&quot;border: medium none #add2e2; padding: 4.5pt; background-color: transparent&quot;&gt;&lt;br /&gt;			&lt;p style=&quot;margin: 0in 0in 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;			&lt;span style=&quot;font-size: 11pt&quot;&gt;In JDBC there is no check that always every user &lt;br /&gt;			has updated data. This check has to be added by the developer. &lt;br /&gt;			&lt;/span&gt;&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;			&lt;td style=&quot;border: medium none #add2e2; padding: 4.5pt; background-color: transparent&quot;&gt;&lt;br /&gt;			&lt;p style=&quot;margin: 0in 0in 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;			&lt;span style=&quot;font-size: 11pt&quot;&gt;Hibernate enables developer to define version type &lt;br /&gt;			field to application, due to this defined field Hibernate updates version &lt;br /&gt;			field of database table every time relational tuple is updated in form of &lt;br /&gt;			Java class object to that table. So if two users retrieve same tuple and &lt;br /&gt;			then modify it and one user save this modified tuple to database, version &lt;br /&gt;			is automatically updated for this tuple by Hibernate. When other user &lt;br /&gt;			tries to save updated tuple to database then it does not allow saving it &lt;br /&gt;			because this user does not have updated data. &lt;br /&gt;			&lt;/span&gt;&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;			&lt;/td&gt;&lt;br /&gt;		&lt;/tr&gt;&lt;br /&gt;	&lt;/tbody&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;</description>
		<guid>http://sumit-bhasin.talkmeblog.com/Sumit-Bhasin-b1/JDBC-VS-HIBERNATE-b1-p5539.htm</guid>
	</item>
	<item>
		<title>10 reasons computers crash, and how to fix them</title>
		<category>Sumit Bhasin</category>
		<pubDate>2008-09-06T08:05:29Z</pubDate>
		<description>&lt;h2&gt;&lt;a href=&quot;http://www.bhejacry.com/forums/viewtopic.php?f=89&amp;amp;t=1356&amp;amp;start=0&amp;amp;st=0&amp;amp;sk=t&amp;amp;sd=a&quot;&gt;10 reasons computers crash, and how to fix them&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;quot;Fatal error:&lt;br /&gt;the system has become unstable or is busy,&amp;quot; it says. &amp;quot;Enter to return&lt;br /&gt;to Windows or press Control-Alt-Delete to restart your computer. If you&lt;br /&gt;do this you will lose any unsaved information in all open applications.&amp;quot;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You&lt;br /&gt;have just been struck by the Blue Screen of Death. Anyone who uses&lt;br /&gt;Micr@s@ft Windows will be familiar with this. What can you do? More&lt;br /&gt;importantly, how can you prevent it happening?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;1 Hardware conflict&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The&lt;br /&gt;number one reason why Windows crashes is hardware conflict. Each&lt;br /&gt;hardware device communicates to other devices through an interrupt&lt;br /&gt;request channel (IRQ). These are supposed to be unique for each device.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;For&lt;br /&gt;example, a printer usually connects internally on IRQ 7. The keyboard&lt;br /&gt;usually uses IRQ 1 and the floppy disk drive IRQ 6. Each device will&lt;br /&gt;try to hog a single IRQ for itself.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If there are a lot of&lt;br /&gt;devices, or if they are not installed properly, two of them may end up&lt;br /&gt;sharing the same IRQ number. When the user tries to use both devices at&lt;br /&gt;the same time, a crash can happen. The way to check if your computer&lt;br /&gt;has a hardware conflict is through the following route:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Start-Settings-Control Panel-System-Device Manager.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Often&lt;br /&gt;if a device has a problem a yellow &#039;!&#039; appears next to its description&lt;br /&gt;in the Device Manager. Highlight Computer (in the Device Manager) and&lt;br /&gt;press Properties to see the IRQ numbers used by your computer. If the&lt;br /&gt;IRQ number appears twice, two devices may be using it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sometimes&lt;br /&gt;a device might share an IRQ with something described as &#039;IRQ holder for&lt;br /&gt;PCI steering&#039;. This can be ignored. The best way to fix this problem is&lt;br /&gt;to remove the problem device and reinstall it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sometimes you may have to find more recent drivers on the internet to make the device function properly. A good resource is &lt;!-- w --&gt;&lt;/a&gt;&lt;a href=&quot;http://www.driverguide.com/&quot;&gt;http://www.driverguide.com&lt;/a&gt;&lt;!-- w --&gt;.&lt;br /&gt;If the device is a soundcard, or a modem, it can often be fixed by&lt;br /&gt;moving it to a different slot on the motherboard (be careful about&lt;br /&gt;opening your computer, as you may void the warranty).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;When&lt;br /&gt;working inside a computer you should switch it off, unplug the mains&lt;br /&gt;lead and touch an unpainted metal surface to discharge any static&lt;br /&gt;electricity.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To be fair to Micr@s@ft, the problem with IRQ&lt;br /&gt;numbers is not of its making. It is a legacy problem going back to the&lt;br /&gt;first PC designs using the IBM 8086 chip. Initially there were only&lt;br /&gt;eight IRQs. Today there are 16 IRQs in a PC. It is easy to run out of&lt;br /&gt;them. There are plans to increase the number of IRQs in future designs.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;2 Bad Ram&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ram&lt;br /&gt;(random-access memory) problems might bring on the blue screen of death&lt;br /&gt;with a message saying Fatal Exception Error. A fatal error indicates a&lt;br /&gt;serious hardware problem. Sometimes it may mean a part is damaged and&lt;br /&gt;will need replacing.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;But a fatal error caused by Ram might be&lt;br /&gt;caused by a mismatch of chips. For example, mixing 70-nanosecond (70ns)&lt;br /&gt;Ram with 60ns Ram will usually force the computer to run all the Ram at&lt;br /&gt;the slower speed. This will often crash the machine if the Ram is&lt;br /&gt;overworked.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;One way around this problem is to enter the BIOS&lt;br /&gt;settings and increase the wait state of the Ram. This can make it more&lt;br /&gt;stable. Another way to troubleshoot a suspected Ram problem is to&lt;br /&gt;rearrange the Ram chips on the motherboard, or take some of them out.&lt;br /&gt;Then try to repeat the circumstances that caused the crash. When&lt;br /&gt;handling Ram try not to touch the gold connections, as they can be&lt;br /&gt;easily damaged.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Parity error messages also refer to Ram. Modern&lt;br /&gt;Ram chips are either parity (ECC) or non parity (non-ECC). It is best&lt;br /&gt;not to mix the two types, as this can be a cause of trouble.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;EMM386&lt;br /&gt;error messages refer to memory problems but may not be connected to bad&lt;br /&gt;Ram. This may be due to free memory problems often linked to old&lt;br /&gt;Dos-based programmes.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;3 BIOS settings&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Every&lt;br /&gt;motherboard is supplied with a range of chipset settings that are&lt;br /&gt;decided in the factory. A common way to access these settings is to&lt;br /&gt;press the F2 or delete button during the first few seconds of a boot-up.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Once&lt;br /&gt;inside the BIOS, great care should be taken. It is a good idea to write&lt;br /&gt;down on a piece of paper all the settings that appear on the screen.&lt;br /&gt;That way, if you change something and the computer becomes more&lt;br /&gt;unstable, you will know what settings to revert to.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A common&lt;br /&gt;BIOS error concerns the CAS latency. This refers to the Ram. Older EDO&lt;br /&gt;(extended data out) Ram has a CAS latency of 3. Newer SDRam has a CAS&lt;br /&gt;latency of 2. Setting the wrong figure can cause the Ram to lock up and&lt;br /&gt;freeze the computer&#039;s display.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Micr@s@ft Windows is better at&lt;br /&gt;allocating IRQ numbers than any BIOS. If possible set the IRQ numbers&lt;br /&gt;to Auto in the BIOS. This will allow Windows to allocate the IRQ&lt;br /&gt;numbers (make sure the BIOS setting for Plug and Play OS is switched to&lt;br /&gt;&#039;yes&#039; to allow Windows to do this.).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;4 Hard disk drives&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;After&lt;br /&gt;a few weeks, the information on a hard disk drive starts to become&lt;br /&gt;piecemeal or fragmented. It is a good idea to defragment the hard disk&lt;br /&gt;every week or so, to prevent the disk from causing a screen freeze. Go&lt;br /&gt;to&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Start-Programs-Accessories-System Tools-Disk Defragmenter&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This&lt;br /&gt;will start the procedure. You will be unable to write data to the hard&lt;br /&gt;drive (to save it) while the disk is defragmenting, so it is a good&lt;br /&gt;idea to schedule the procedure for a period of inactivity using the&lt;br /&gt;Task Scheduler.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Task Scheduler should be one of the small icons on the bottom right of the Windows opening page (the desktop).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Some&lt;br /&gt;lockups and screen freezes caused by hard disk problems can be solved&lt;br /&gt;by reducing the read-ahead optimisation. This can be adjusted by going&lt;br /&gt;to&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Start-Settings-Control Panel-System Icon-Performance-File System-Hard Disk.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Hard&lt;br /&gt;disks will slow down and crash if they are too full. Do some&lt;br /&gt;housekeeping on your hard drive every few months and free some space on&lt;br /&gt;it. Open the Windows folder on the C drive and find the Temporary&lt;br /&gt;Internet Files folder. Deleting the contents (not the folder) can free&lt;br /&gt;a lot of space.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Empty the Recycle Bin every week to free more&lt;br /&gt;space. Hard disk drives should be scanned every week for errors or bad&lt;br /&gt;sectors. Go to&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Start-Programs-Accessories-System Tools-ScanDisk&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Otherwise assign the Task Scheduler to perform this operation at night when the computer is not in use.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;5 Fatal OE exceptions and VXD errors&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Fatal OE exception errors and VXD errors are often caused by video card problems.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;These can often be resolved easily by reducing the resolution of the video display. Go to&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Start-Settings-Control Panel-Display-Settings&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here&lt;br /&gt;you should slide the screen area bar to the left. Take a look at the&lt;br /&gt;colour settings on the left of that window. For most desktops, high&lt;br /&gt;colour 16-bit depth is adequate.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If the screen freezes or you&lt;br /&gt;experience system lockups it might be due to the video card. Make sure&lt;br /&gt;it does not have a hardware conflict. Go to&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Start-Settings-Control Panel-System-Device Manager&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here,&lt;br /&gt;select the + beside Display Adapter. A line of text describing your&lt;br /&gt;video card should appear. Select it (make it blue) and press&lt;br /&gt;properties. Then select Resources and select each line in the window.&lt;br /&gt;Look for a message that says No Conflicts.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you have video&lt;br /&gt;card hardware conflict, you will see it here. Be careful at this point&lt;br /&gt;and make a note of everything you do in case you make things worse.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The&lt;br /&gt;way to resolve a hardware conflict is to uncheck the Use Automatic&lt;br /&gt;Settings box and hit the Change Settings button. You are searching for&lt;br /&gt;a setting that will display a No Conflicts message.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Another useful way to resolve video problems is to go to&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Start-Settings-Control Panel-System-Performance-Graphics&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here&lt;br /&gt;you should move the Hardware Acceleration slider to the left. As ever,&lt;br /&gt;the most common cause of problems relating to graphics cards is old or&lt;br /&gt;faulty drivers (a driver is a small piece of software used by a&lt;br /&gt;computer to communicate with a device).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Look up your video card&#039;s manufacturer on the internet and search for the most recent drivers for it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;6 Viruses&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Often&lt;br /&gt;the first sign of a virus infection is instability. Some viruses erase&lt;br /&gt;the boot sector of a hard drive, making it impossible to start. This is&lt;br /&gt;why it is a good idea to create a Windows start-up disk. Go to&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Start-Settings-Control Panel-Add/Remove Programs&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here, look for the Start Up Disk tab. Virus protection requires constant vigilance.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A&lt;br /&gt;virus scanner requires a list of virus signatures in order to be able&lt;br /&gt;to identify viruses. These signatures are stored in a DAT file. DAT&lt;br /&gt;files should be updated weekly from the website of your antivirus&lt;br /&gt;software manufacturer.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;An excellent antivirus programme is Mc@fee VirusScan by Network Associates ( &lt;!-- w --&gt;&lt;a href=&quot;http://www.nai.com/&quot;&gt;http://www.nai.com&lt;/a&gt;&lt;!-- w --&gt;). Another is N0rt0n AntiVirus 2000, made by Symantec ( &lt;!-- w --&gt;&lt;a href=&quot;http://www.symantec.com/&quot;&gt;http://www.symantec.com&lt;/a&gt;&lt;!-- w --&gt;).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;7 Printers&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The action of sending a document to print creates a bigger file, often called a postscript file.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Printers&lt;br /&gt;have only a small amount of memory, called a buffer. This can be easily&lt;br /&gt;overloaded. Printing a document also uses a considerable amount of CPU&lt;br /&gt;power. This will also slow down the computer&#039;s performance.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If&lt;br /&gt;the printer is trying to print unusual characters, these might not be&lt;br /&gt;recognised, and can crash the computer. Sometimes printers will not&lt;br /&gt;recover from a crash because of confusion in the buffer. A good way to&lt;br /&gt;clear the buffer is to unplug the printer for ten seconds. Booting up&lt;br /&gt;from a powerless state, also called a cold boot, will restore the&lt;br /&gt;printer&#039;s default settings and you may be able to carry on.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;&lt;br /&gt;&lt;br /&gt;8 Software&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A&lt;br /&gt;common cause of computer crash is faulty or badly-installed software.&lt;br /&gt;Often the problem can be cured by uninstalling the software and then&lt;br /&gt;reinstalling it. Use N0rt0n Uninstall or Uninstall Shield to remove an&lt;br /&gt;application from your system properly. This will also remove references&lt;br /&gt;to the programme in the System Registry and leaves the way clear for a&lt;br /&gt;completely fresh copy.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The System Registry can be corrupted by&lt;br /&gt;old references to obsolete software that you thought was uninstalled.&lt;br /&gt;Use Reg Cleaner by Jouni Vuorio to clean up the System Registry and&lt;br /&gt;remove obsolete entries. It works on Windows 95, Windows 98, Windows 98&lt;br /&gt;SE (Second Edition), Windows Millennium Edition (ME), NT4 and Windows&lt;br /&gt;2000.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Read the instructions and use it carefully so you don&#039;t do&lt;br /&gt;permanent damage to the Registry. If the Registry is damaged you will&lt;br /&gt;have to reinstall your operating system. Reg Cleaner can be obtained&lt;br /&gt;from&lt;!-- w --&gt; &lt;a href=&quot;http://www.jv16.org/&quot;&gt;http://www.jv16.org&lt;/a&gt;&lt;!-- w --&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Often&lt;br /&gt;a Windows problem can be resolved by entering Safe Mode. This can be&lt;br /&gt;done during start-up. When you see the message &amp;quot;Starting Windows&amp;quot; press&lt;br /&gt;F4. This should take you into Safe Mode.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Safe Mode loads a minimum of drivers. It allows you to find and fix problems that prevent Windows from loading properly.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sometimes&lt;br /&gt;installing Windows is difficult because of unsuitable BIOS settings. If&lt;br /&gt;you keep getting SUWIN error messages (Windows setup) during the&lt;br /&gt;Windows installation, then try entering the BIOS and disabling the CPU&lt;br /&gt;internal cache. Try to disable the Level 2 (L2) cache if that doesn&#039;t&lt;br /&gt;work.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Remember to restore all the BIOS settings back to their former settings following installation.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;&lt;br /&gt;&lt;br /&gt;9 Overheating&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Central&lt;br /&gt;processing units (CPUs) are usually equipped with fans to keep them&lt;br /&gt;cool. If the fan fails or if the CPU gets old it may start to overheat&lt;br /&gt;and generate a particular kind of error called a kernel error. This is&lt;br /&gt;a common problem in chips that have been overclocked to operate at&lt;br /&gt;higher speeds than they are supposed to.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;One remedy is to get a bigger better fan and install it on top of the CPU. Specialist cooling fans/heatsinks are available from &lt;!-- w --&gt;&lt;a href=&quot;http://www.computernerd.com/&quot;&gt;http://www.computernerd.com&lt;/a&gt;&lt;!-- w --&gt; or &lt;!-- w --&gt;&lt;a href=&quot;http://www.coolit.com/&quot;&gt;http://www.coolit.com&lt;/a&gt;&lt;!-- w --&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CPU&lt;br /&gt;problems can often be fixed by disabling the CPU internal cache in the&lt;br /&gt;BIOS. This will make the machine run more slowly, but it should also be&lt;br /&gt;more stable.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;&lt;br /&gt;&lt;br /&gt;10 Power supply problems&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;With&lt;br /&gt;all the new construction going on around the country the steady supply&lt;br /&gt;of electricity has become disrupted. A power surge or spike can crash a&lt;br /&gt;computer as easily as a power cut.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If this has become a nuisance&lt;br /&gt;for you then consider buying a uninterrupted power supply (UPS). This&lt;br /&gt;will give you a clean power supply when there is electricity, and it&lt;br /&gt;will give you a few minutes to perform a controlled shutdown in case of&lt;br /&gt;a power cut.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It is a good investment if your data are critical, because a power cut will cause any unsaved data to be lost&lt;/h2&gt;&lt;br /&gt;</description>
		<guid>http://sumit-bhasin.talkmeblog.com/Sumit-Bhasin-b1/10-reasons-computers-crash-and-how-to-fix-them-b1-p5538.htm</guid>
	</item>
	<item>
		<title>23 Ways To speed up WinXp</title>
		<category>Sumit Bhasin</category>
		<pubDate>2008-09-06T08:03:45Z</pubDate>
		<description>&lt;h2&gt;&lt;a href=&quot;http://www.bhejacry.com/forums/viewtopic.php?f=89&amp;amp;t=1357&amp;amp;start=0&amp;amp;st=0&amp;amp;sk=t&amp;amp;sd=a&quot;&gt;Here are 23 suggestions that will - some require buying and upgrading&lt;br /&gt;stuff. Each can enhance the performance and reliability of your&lt;br /&gt;customers&#039; PCs. Best of all, most of them will cost you nothing.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1.)&lt;br /&gt;To decrease a system&#039;s boot time and increase system performance, use&lt;br /&gt;the money you save by not buying defragmentation software -- the&lt;br /&gt;built-in Windows defragmenter works just fine -- and instead equip the&lt;br /&gt;computer with an Ultra-133 or Serial ATA hard drive with 8-MB cache&lt;br /&gt;buffer.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2.) If a PC has less than 512 MB of RAM, add more&lt;br /&gt;memory. This is a relatively inexpensive and easy upgrade that can&lt;br /&gt;dramatically improve system performance.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3.) Ensure that Windows&lt;br /&gt;XP is utilizing the NTFS file system. If you&#039;re not sure, here&#039;s how to&lt;br /&gt;check: First, double-click the My Computer icon, right-click on the C:&lt;br /&gt;Drive, then select Properties. Next, examine the File System type; if&lt;br /&gt;it says FAT32, then back-up any important data. Next, click Start,&lt;br /&gt;click Run, type CMD, and then click OK. At the prompt, type CONVERT C:&lt;br /&gt;/FS:NTFS and press the Enter key. This process may take a while; it&#039;s&lt;br /&gt;important that the computer be uninterrupted and virus-free. The file&lt;br /&gt;system used by the bootable drive will be either FAT32 or NTFS. I&lt;br /&gt;highly recommend NTFS for its superior security, reliability, and&lt;br /&gt;efficiency with larger disk drives.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4.) Disable file indexing.&lt;br /&gt;The indexing service extracts information from documents and other&lt;br /&gt;files on the hard drive and creates a &amp;quot;searchable keyword index.&amp;quot; As&lt;br /&gt;you can imagine, this process can be quite taxing on any system.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The&lt;br /&gt;idea is that the user can search for a word, phrase, or property inside&lt;br /&gt;a document, should they have hundreds or thousands of documents and not&lt;br /&gt;know the file name of the document they want. Windows XP&#039;s built-in&lt;br /&gt;search functionality can still perform these kinds of searches without&lt;br /&gt;the Indexing service. It just takes longer. The OS has to open each&lt;br /&gt;file at the time of the request to help find what the user is looking&lt;br /&gt;for.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Most people never need this feature of search. Those who do&lt;br /&gt;are typically in a large corporate environment where thousands of&lt;br /&gt;documents are located on at least one server. But if you&#039;re a typical&lt;br /&gt;system builder, most of your clients are small and medium businesses.&lt;br /&gt;And if your clients have no need for this search feature, I recommend&lt;br /&gt;disabling it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here&#039;s how: First, double-click the My Computer&lt;br /&gt;icon. Next, right-click on the C: Drive, then select Properties.&lt;br /&gt;Uncheck &amp;quot;Allow Indexing Service to index this disk for fast file&lt;br /&gt;searching.&amp;quot; Next, apply changes to &amp;quot;C: subfolders and files,&amp;quot; and click&lt;br /&gt;OK. If a warning or error message appears (such as &amp;quot;Access is denied&amp;quot;),&lt;br /&gt;click the Ignore All button.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;5.) Update the PC&#039;s video and&lt;br /&gt;motherboard chipset drivers. Also, update and configure the BIOS. For&lt;br /&gt;more information on how to configure your BIOS properly, see this&lt;br /&gt;article on my site.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6.) Empty the Windows Prefetch folder every&lt;br /&gt;three months or so. Windows XP can &amp;quot;prefetch&amp;quot; portions of data and&lt;br /&gt;applications that are used frequently. This makes processes appear to&lt;br /&gt;load faster when called upon by the user. That&#039;s fine. But over time,&lt;br /&gt;the prefetch folder may become overloaded with references to files and&lt;br /&gt;applications no longer in use. When that happens, Windows XP is wasting&lt;br /&gt;time, and slowing system performance, by pre-loading them. Nothing&lt;br /&gt;critical is in this folder, and the entire contents are safe to delete.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;7.)&lt;br /&gt;Once a month, run a disk cleanup. Here&#039;s how: Double-click the My&lt;br /&gt;Computer icon. Then right-click on the C: drive and select Properties.&lt;br /&gt;Click the Disk Cleanup button -- it&#039;s just to the right of the Capacity&lt;br /&gt;pie graph -- and delete all temporary files.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;8.) In your Device&lt;br /&gt;Manager, double-click on the IDE ATA/ATAPI Controllers device, and&lt;br /&gt;ensure that DMA is enabled for each drive you have connected to the&lt;br /&gt;Primary and Secondary controller. Do this by double-clicking on Primary&lt;br /&gt;IDE Channel. Then click the Advanced Settings tab. Ensure the Transfer&lt;br /&gt;Mode is set to &amp;quot;DMA if available&amp;quot; for both Device 0 and Device 1. Then&lt;br /&gt;repeat this process with the Secondary IDE Channel.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;9.) Upgrade&lt;br /&gt;the cabling. As hard-drive technology improves, the cabling&lt;br /&gt;requirements to achieve these performance boosts have become more&lt;br /&gt;stringent. Be sure to use 80-wire Ultra-133 cables on all of your IDE&lt;br /&gt;devices with the connectors properly assigned to the matching&lt;br /&gt;Master/Slave/Motherboard sockets. A single device must be at the end of&lt;br /&gt;the cable; connecting a single drive to the middle connector on a&lt;br /&gt;ribbon cable will cause signaling problems. With Ultra DMA hard drives,&lt;br /&gt;these signaling problems will prevent the drive from performing at its&lt;br /&gt;maximum potential. Also, because these cables inherently support &amp;quot;cable&lt;br /&gt;select,&amp;quot; the location of each drive on the cable is important. For&lt;br /&gt;these reasons, the cable is designed so drive positioning is explicitly&lt;br /&gt;clear.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;10.) Remove all spyware from the computer. Use free&lt;br /&gt;programs such as AdAware by Lavasoft or SpyBot Search &amp;amp; Destroy.&lt;br /&gt;Once these programs are installed, be sure to check for and download&lt;br /&gt;any updates before starting your search. Anything either program finds&lt;br /&gt;can be safely removed. Any free software that requires spyware to run&lt;br /&gt;will no longer function once the spyware portion has been removed; if&lt;br /&gt;your customer really wants the program even though it contains spyware,&lt;br /&gt;simply reinstall it. For more information on removing Spyware visit&lt;br /&gt;this Web Pro News page.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;11.) Remove any unnecessary programs&lt;br /&gt;and/or items from Windows Startup routine using the MSCONFIG utility.&lt;br /&gt;Here&#039;s how: First, click Start, click Run, type MSCONFIG, and click OK.&lt;br /&gt;Click the StartUp tab, then uncheck any items you don&#039;t want to start&lt;br /&gt;when Windows starts. Unsure what some items are? Visit the WinTasks&lt;br /&gt;Process Library. It contains known system processes, applications, as&lt;br /&gt;well as spyware references and explanations. Or quickly identify them&lt;br /&gt;by searching for the filenames using Google or another Web search&lt;br /&gt;engine.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;12.) Remove any unnecessary or unused programs from the Add/Remove Programs section of the Control Panel.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;13.)&lt;br /&gt;Turn off any and all unnecessary animations, and disable active&lt;br /&gt;desktop. In fact, for optimal performance, turn off all animations.&lt;br /&gt;Windows XP offers many different settings in this area. Here&#039;s how to&lt;br /&gt;do it: First click on the System icon in the Control Panel. Next, click&lt;br /&gt;on the Advanced tab. Select the Settings button located under&lt;br /&gt;Performance. Feel free to play around with the options offered here, as&lt;br /&gt;nothing you can change will alter the reliability of the computer --&lt;br /&gt;only its responsiveness.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;14.) If your customer is an advanced&lt;br /&gt;user who is comfortable editing their registry, try some of the&lt;br /&gt;performance registry tweaks offered at Tweak XP.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;15.) Visit&lt;br /&gt;Microsoft&#039;s Windows update site regularly, and download all updates&lt;br /&gt;labeled Critical. Download any optional updates at your discretion.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;16.)&lt;br /&gt;Update the customer&#039;s anti-virus software on a weekly, even daily,&lt;br /&gt;basis. Make sure they have only one anti-virus software package&lt;br /&gt;installed. Mixing anti-virus software is a sure way to spell disaster&lt;br /&gt;for performance and reliability.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;17.) Make sure the customer has&lt;br /&gt;fewer than 500 type fonts installed on their computer. The more fonts&lt;br /&gt;they have, the slower the system will become. While Windows XP handles&lt;br /&gt;fonts much more efficiently than did the previous versions of Windows,&lt;br /&gt;too many fonts -- that is, anything over 500 -- will noticeably tax the&lt;br /&gt;system.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;18.) Do not partition the hard drive. Windows XP&#039;s NTFS&lt;br /&gt;file system runs more efficiently on one large partition. The data is&lt;br /&gt;no safer on a separate partition, and a reformat is never necessary to&lt;br /&gt;reinstall an operating system. The same excuses people offer for using&lt;br /&gt;partitions apply to using a folder instead. For example, instead of&lt;br /&gt;putting all your data on the D: drive, put it in a folder called &amp;quot;D&lt;br /&gt;drive.&amp;quot; You&#039;ll achieve the same organizational benefits that a separate&lt;br /&gt;partition offers, but without the degradation in system performance.&lt;br /&gt;Also, your free space won&#039;t be limited by the size of the partition;&lt;br /&gt;instead, it will be limited by the size of the entire hard drive. This&lt;br /&gt;means you won&#039;t need to resize any partitions, ever. That task can be&lt;br /&gt;time-consuming and also can result in lost data.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;19.) Check the&lt;br /&gt;system&#039;s RAM to ensure it is operating properly. I recommend using a&lt;br /&gt;free program called MemTest86. The download will make a bootable CD or&lt;br /&gt;diskette (your choice), which will run 10 extensive tests on the PC&#039;s&lt;br /&gt;memory automatically after you boot to the disk you created. Allow all&lt;br /&gt;tests to run until at least three passes of the 10 tests are completed.&lt;br /&gt;If the program encounters any errors, turn off and unplug the computer,&lt;br /&gt;remove a stick of memory (assuming you have more than one), and run the&lt;br /&gt;test again. Remember, bad memory cannot be repaired, but only replaced.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;20.)&lt;br /&gt;If the PC has a CD or DVD recorder, check the drive manufacturer&#039;s Web&lt;br /&gt;site for updated firmware. In some cases you&#039;ll be able to upgrade the&lt;br /&gt;recorder to a faster speed. Best of all, it&#039;s free.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;21.) Disable&lt;br /&gt;unnecessary services. Windows XP loads a lot of services that your&lt;br /&gt;customer most likely does not need. To determine which services you can&lt;br /&gt;disable for your client, visit the Black Viper site for Windows XP&lt;br /&gt;configurations.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;22.) If you&#039;re sick of a single Windows Explorer&lt;br /&gt;window crashing and then taking the rest of your OS down with it, then&lt;br /&gt;follow this tip: open My Computer, click on Tools, then Folder Options.&lt;br /&gt;Now click on the View tab. Scroll down to &amp;quot;Launch folder windows in a&lt;br /&gt;separate process,&amp;quot; and enable this option. You&#039;ll have to reboot your&lt;br /&gt;machine for this option to take effect.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;23.) At least once a&lt;br /&gt;year, open the computer&#039;s cases and blow out all the dust and debris.&lt;br /&gt;While you&#039;re in there, check that all the fans are turning properly.&lt;br /&gt;Also inspect the motherboard capacitors for bulging or leaks. For more&lt;br /&gt;information on this leaking-capacitor phenomena, you can read numerous&lt;br /&gt;articles on my site.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Following any of these suggestions&lt;br /&gt;should result in noticeable improvements to the performance and&lt;br /&gt;reliability of your customers&#039; computers.&lt;/a&gt;&lt;/h2&gt;&lt;br /&gt;</description>
		<guid>http://sumit-bhasin.talkmeblog.com/Sumit-Bhasin-b1/23-Ways-To-speed-up-WinXp-b1-p5537.htm</guid>
	</item>
	</channel>
</rss>