<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-30804833</id><updated>2012-01-12T16:40:12.756+02:00</updated><category term='logging'/><category term='prompt'/><category term='SubSonic'/><category term='youtube videos'/><category term='copy-paste'/><category term='tools'/><category term='arguments'/><category term='tsql'/><category term='China'/><category term='claut'/><category term='helsinki'/><category term='books'/><category term='worth-reading'/><category term='conversion'/><category term='sql_dev'/><category term='apache 2.2'/><category term='windows programs'/><category term='sed'/><category term='sql script'/><category term='duplicates'/><category term='awk'/><category term='поуки'/><category term='configuration'/><category term='Java Web Start'/><category term='mssql 2005'/><category term='metacolumn'/><category term='Solaris'/><category term='Stacks'/><category term='Services'/><category term='programs'/><category term='sort'/><category term='code generation'/><category term='sh'/><category term='table'/><category term='n900'/><category term='fexp'/><category term='java'/><category term='read file'/><category term='example'/><category term='metaphonre'/><category term='putty'/><category term='ideas'/><category term='ctags'/><category term='german'/><category term='google code'/><category term='SIWA'/><category term='exponents'/><category term='meta data mssql'/><category term='Dense plasma focus'/><category term='project'/><category term='non-password'/><category term='svn'/><category term='conf'/><category term='Unix'/><category term='current local time'/><category term='one-to-many'/><category term='generic'/><category term='bin'/><category term='Deployment'/><category term='perl'/><category term='.Net'/><category term='sofware'/><category term='prices'/><category term='template'/><category term='command'/><category term='ppm'/><category term='sqlite3'/><category term='GUI'/><category term='sysinternals'/><category term='electricity'/><category term='PowerShell'/><category term='excel'/><category term='Hosting'/><category term='biology'/><category term='dubai'/><category term='hop or flop'/><category term='mssql 2008'/><category term='Database role'/><category term='firewall'/><category term='london'/><category term='theory'/><category term='sftp'/><category term='parse'/><category term='sqlite'/><category term='warsaw'/><category term='ssh'/><category term='principles'/><category term='freeware'/><category term='utils'/><category term='Google'/><category term='vb'/><category term='tip'/><category term='publishing'/><category term='wikipedia'/><category term='columns'/><category term='fast export'/><category term='energy'/><category term='bubblesort'/><category term='diagram'/><category term='temp table'/><category term='IT general'/><category term='sql'/><category term='morphus'/><category term='abstractions'/><category term='sqlserver 2005'/><category term='qt'/><category term='cool programs'/><category term='cheatsheet'/><category term='debt'/><category term='electric cars'/><category term='TED'/><category term='templates'/><category term='teradata'/><category term='openrowset'/><category term='for loop'/><category term='documentation'/><category term='relationship'/><category term='BSD license'/><category term='avatar'/><category term='registry'/><category term='wisdoms'/><category term='textpad'/><category term='predictions'/><category term='nord pol'/><category term='method'/><category term='Khan Academy'/><category term='settings'/><category term='open source'/><category term='stupidity'/><category term='MIT HYDROGEN VIRUS'/><category term='xp_cmdshell'/><category term='test'/><category term='nuclear'/><category term='code generation sqlserver'/><category term='publish'/><category term='fusion research'/><category term='shortcuts'/><category term='cas_sql_dev'/><category term='scp'/><category term='GoogleCL'/><category term='sql server 2005'/><category term='next big future'/><category term='backup'/><category term='future'/><category term='src'/><category term='mysql'/><category term='nsis'/><category term='security'/><category term='perl modules'/><category term='Cheat Sheet'/><category term='economy'/><category term='release management'/><category term='cmd windows batch'/><category term='Bulgaria'/><category term='sqlserver 2008'/><category term='user'/><category term='chennai'/><category term='movie'/><category term='Solaris Unix'/><category term='permissions'/><category term='html'/><category term='errors'/><category term='architecture'/><category term='Dallas'/><category term='byte'/><category term='thorium'/><category term='sqlcmd'/><category term='silicon'/><category term='Run-time'/><category term='rm'/><category term='GDP'/><category term='biofuels'/><category term='youtube'/><category term='windows reinstall'/><category term='export'/><category term='cas'/><category term='mssql'/><category term='sofware development'/><category term='console'/><category term='sql server 2008'/><category term='browser'/><category term='class'/><category term='script'/><category term='windows'/><category term='dos'/><category term='cmd'/><category term='csv'/><category term='file'/><category term='prediction'/><category term='принципи'/><category term='linux'/><category term='apache'/><category term='ksh'/><category term='vba'/><category term='me'/><category term='proxy account'/><category term='findtag'/><category term='platform'/><category term='IZarc'/><category term='tool'/><category term='stored procedure'/><category term='cygwin'/><category term='level'/><category term='nano'/><category term='php'/><category term='ListBox'/><category term='ERP'/><category term='ExcelToHtml'/><category term='how-to'/><category term='OO'/><category term='sshd'/><category term='ascii'/><category term='Focus Fusion'/><category term='time'/><category term='C#'/><category term='outlook'/><category term='e-cars'/><category term='terminal'/><category term='history'/><category term='application life cycle'/><category term='free programs'/><category term='public private key'/><category term='digital'/><category term='command line'/><category term='model'/><category term='parser'/><category term='fusion'/><category term='data'/><category term='metadata'/><category term='metadata functions'/><category term='password'/><category term='utilities'/><title type='text'>Energy in code ...</title><subtitle type='html'>Perl and C# Code , TSQL , Teradata SQL, cmd batch scripts, Sh and bash scripts , Oracle , MySql some old Java stuff  , Linux  , Sun Solaris , NSIS , VB 6.0 , some old Essbase VB API  in non-user friendly fashion + occasionally strong statements and opinions about energy and even politics ...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default?start-index=101&amp;max-results=100'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>784</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-30804833.post-4870046273240206588</id><published>2012-01-12T15:43:00.000+02:00</published><updated>2012-01-12T16:40:12.770+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='perl modules'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><category scheme='http://www.blogger.com/atom/ns#' term='morphus'/><title type='text'>morphus.1.1.4.dev.ysg.zip out</title><content type='html'>&lt;a href="http://code.google.com/p/morphus/downloads/list"&gt;morphus.1.1.4.dev.ysg.zip out&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-4870046273240206588?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/4870046273240206588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2012/01/morphus114devysgzip-out.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/4870046273240206588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/4870046273240206588'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2012/01/morphus114devysgzip-out.html' title='morphus.1.1.4.dev.ysg.zip out'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-5580416893447289880</id><published>2012-01-12T13:51:00.002+02:00</published><updated>2012-01-12T13:55:55.473+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='apache 2.2'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>how-to start apache on x64 window with a batch script</title><content type='html'>&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: Consolas, "Courier New", Courier, Monospace; background-color: #ffffff; /*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #a31515; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em;}.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;:: next_line_is_templatized&lt;/pre&gt;&lt;pre&gt;::File:StartApache.cmd&lt;/pre&gt;&lt;pre class="alt"&gt;:: disable the echo&lt;/pre&gt;&lt;pre&gt;@echo off&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;:: this &lt;span class="kwrd"&gt;is&lt;/span&gt; part of the name of the file - &lt;span class="kwrd"&gt;not&lt;/span&gt; used&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;set&lt;/span&gt; Action=start&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;:: which component are we going &lt;span class="kwrd"&gt;to&lt;/span&gt; start&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;set&lt;/span&gt; Component=apache&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;:: the name of the Product next_line_is_templatized&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;set&lt;/span&gt; ProductName=morphus&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;:: the version of the current Product next_line_is_templatized&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;set&lt;/span&gt; ProductVersion=1.1.3&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;:: could be dev , test , dev , prod next_line_is_templatized&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;set&lt;/span&gt; ProductType=dev&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;:: who owns this Product / environment next_line_is_templatized&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;set&lt;/span&gt; ProductOwner=ysg&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;:: identifies an instance of the tool ( &lt;span class="kwrd"&gt;new&lt;/span&gt; instance &lt;span class="kwrd"&gt;for&lt;/span&gt; this version could be created by simply changing the owner )     &lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;set&lt;/span&gt; EnvironmentName=%ProductName%.%ProductVersion%.%ProductType%.%ProductOwner%&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;:: where the Apache binaries are installed&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;set&lt;/span&gt; ApacheBinDir=&lt;span class="str"&gt;"C:\Program Files (x86)\Apache Software Foundation\Apache2.2\"&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;:: the full path &lt;span class="kwrd"&gt;to&lt;/span&gt; the Apache binary&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;set&lt;/span&gt; ApacheBin=&lt;span class="str"&gt;"C:\Program Files (x86)\Apache Software Foundation\Apache2.2\bin\httpd.exe"&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;:: the full path &lt;span class="kwrd"&gt;to&lt;/span&gt; the http.conf&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;set&lt;/span&gt; HttpdConf=&lt;span class="str"&gt;"C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\httpd.conf"&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;:: the full path &lt;span class="kwrd"&gt;to&lt;/span&gt; the &lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;set&lt;/span&gt; ApacheWorkingDir=&lt;span class="str"&gt;"C:\Program Files (x86)\Apache Software Foundation\Apache2.2\."&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;:: go the run dir&lt;/pre&gt;&lt;pre&gt;cd %~dp0&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;:: &lt;span class="kwrd"&gt;do&lt;/span&gt; 4 times going up&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;for&lt;/span&gt; /L %%i &lt;span class="kwrd"&gt;in&lt;/span&gt; (1,1,5) &lt;span class="kwrd"&gt;do&lt;/span&gt; pushd ..&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;:: The BaseDir &lt;span class="kwrd"&gt;is&lt;/span&gt; 4 dirs up than the run dir&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;set&lt;/span&gt; ProductBaseDir=%CD%&lt;/pre&gt;&lt;pre class="alt"&gt;:: debug echo BEFORE ProductBaseDir &lt;span class="kwrd"&gt;is&lt;/span&gt; %ProductBaseDir%&lt;/pre&gt;&lt;pre&gt;:: remove the trailing \&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;IF&lt;/span&gt; %ProductBaseDir:~-1%==\ &lt;span class="kwrd"&gt;SET&lt;/span&gt; ProductBaseDir=%ProductBaseDir:~0,-1%&lt;/pre&gt;&lt;pre&gt;:: debug echo AFTER ProductBaseDir &lt;span class="kwrd"&gt;is&lt;/span&gt; %ProductBaseDir%&lt;/pre&gt;&lt;pre class="alt"&gt;:: debug pause&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;:: The version directory of the Product &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;set&lt;/span&gt; ProductVersionDir=%ProductBaseDir%\%ProductName%\%EnvironmentName%&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;:: where the &lt;span class="kwrd"&gt;error&lt;/span&gt; logs of this &lt;span class="kwrd"&gt;call&lt;/span&gt; are situated &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;set&lt;/span&gt; ErrorLog=%ProductVersionDir%\data\log\StartApache.cmd.&lt;span class="kwrd"&gt;Error&lt;/span&gt;.%ProductName%.cmd.log&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;:: where the running of this &lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;set&lt;/span&gt; RunLog=%ProductVersionDir%\data\log\StartApache.cmd.%ProductName%.cmd.log&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;:: define a favorite editor &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;set&lt;/span&gt; MyEditor=textpad&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;ECHO Check the variables &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;:: truncate the run log&lt;/pre&gt;&lt;pre&gt;echo &lt;span class="kwrd"&gt;date&lt;/span&gt; &lt;span class="kwrd"&gt;is&lt;/span&gt; %&lt;span class="kwrd"&gt;date&lt;/span&gt;% time &lt;span class="kwrd"&gt;is&lt;/span&gt; %time% &amp;gt; %RunLog%&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;:: truncate the &lt;span class="kwrd"&gt;error&lt;/span&gt; log&lt;/pre&gt;&lt;pre class="alt"&gt;echo &lt;span class="kwrd"&gt;date&lt;/span&gt; &lt;span class="kwrd"&gt;is&lt;/span&gt; %&lt;span class="kwrd"&gt;date&lt;/span&gt;% time &lt;span class="kwrd"&gt;is&lt;/span&gt; %time% &amp;gt; %ErrorLog%&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;:: uncomment this &lt;span class="kwrd"&gt;to&lt;/span&gt; debug all the vars &lt;/pre&gt;&lt;pre&gt;:: debug &lt;span class="kwrd"&gt;set&lt;/span&gt;  &amp;gt;&amp;gt; %RunLog%&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;:: go &lt;span class="kwrd"&gt;to&lt;/span&gt; the Apache bin dir&lt;/pre&gt;&lt;pre class="alt"&gt;cd %ApacheBinDir%&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;:: now open the run log&lt;/pre&gt;&lt;pre&gt;cmd /c start /max %MyEditor% %RunLog%&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;:: Action !!!&lt;/pre&gt;&lt;pre&gt;echo CFPoint1    OK    The run cmd script %0 &lt;span class="kwrd"&gt;is&lt;/span&gt; executed &amp;gt;&amp;gt; %RunLog%&lt;/pre&gt;&lt;pre class="alt"&gt;echo CFPoint2    OK    The run cmd script %0 starts the apache binary &lt;span class="kwrd"&gt;with&lt;/span&gt; STDOUT &lt;span class="kwrd"&gt;and&lt;/span&gt; STDERR  &lt;span class="kwrd"&gt;to&lt;/span&gt; a &lt;span class="kwrd"&gt;single&lt;/span&gt; RunLog file &amp;gt;&amp;gt; %RunLog%&lt;/pre&gt;&lt;pre&gt;:: perl %PerlScript% %IniFile% &amp;gt;&amp;gt;%RunLog% &lt;/pre&gt;&lt;pre class="alt"&gt;%ApacheBin% -w -f %HttpdConf% -d %ApacheWorkingDir% &amp;gt;&amp;gt;%RunLog% 2&amp;gt;&amp;amp;1&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;:: open the run log&lt;/pre&gt;&lt;pre&gt;cmd /c start /max %MyEditor% %RunLog%&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;:: uncomment this line &lt;span class="kwrd"&gt;to&lt;/span&gt; wait &lt;span class="kwrd"&gt;for&lt;/span&gt; 5 seconds&lt;/pre&gt;&lt;pre class="alt"&gt;:: ping localhost -n 5&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;:: uncomment this line &lt;span class="kwrd"&gt;to&lt;/span&gt; see what &lt;span class="kwrd"&gt;is&lt;/span&gt; happening &lt;/pre&gt;&lt;pre&gt;:: PAUSE&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;:: Requirements: &lt;/pre&gt;&lt;pre class="alt"&gt;:: This script requires perl , text editor supporting &amp;lt;&amp;lt;textEditor&amp;gt;&amp;gt; &amp;lt;&amp;lt;FileNameToOpen&amp;gt;&amp;gt; cmd &lt;span class="kwrd"&gt;call&lt;/span&gt; syntax&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;:: VersionHistory&lt;/pre&gt;&lt;pre class="alt"&gt;:: 0.1.0 --- ysg --- Initial creation copy from run-morphus&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-5580416893447289880?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/5580416893447289880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2012/01/how-to-start-apache-on-x64-window-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/5580416893447289880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/5580416893447289880'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2012/01/how-to-start-apache-on-x64-window-with.html' title='how-to start apache on x64 window with a batch script'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-8121809665290683523</id><published>2012-01-12T13:48:00.000+02:00</published><updated>2012-01-12T13:56:40.871+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sshd'/><category scheme='http://www.blogger.com/atom/ns#' term='password'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='scp'/><category scheme='http://www.blogger.com/atom/ns#' term='non-password'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='cygwin'/><category scheme='http://www.blogger.com/atom/ns#' term='putty'/><category scheme='http://www.blogger.com/atom/ns#' term='sftp'/><title type='text'>how-to setup non-password requiring connection between a win and *nix box with putty ...</title><content type='html'>&lt;br /&gt;1.&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Install Cygwin&lt;br /&gt;2.&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Install separately the ssh-keygen ( or sshd ) on cygwin&lt;br /&gt;3.&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Download the puttycfg , unzip to a dir in your Windows path&lt;br /&gt;4.&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Find out where cygwin1.dll is installed cygcheck -sd &amp;gt;list.txt&lt;br /&gt;5.&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Open the list.txt ( it is quite big ) : notepad list.txt&lt;br /&gt;6.&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Copy all the files from &amp;nbsp; C:\temp\something &amp;nbsp;to the dir where the cygwin1.dll is located&lt;br /&gt;7.&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Start the putty.exe : Start - Run : cmd /c START &amp;nbsp;/max putty&lt;br /&gt;8.&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;In the GUI , check that Session on the Left is selected , click on Cygterm option , for hostName type - , leave port number 22&lt;br /&gt;9.&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Open the puttycfg :&lt;br /&gt;10.&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Generate the public and private key's :&lt;br /&gt;11.&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;ssh-keygen -t rsa&lt;br /&gt;12.&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Type Enter,Enter&lt;br /&gt;13.&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Now here is the tricky part you have to tell also putty that the public and private key files are the one you want to use with you : Copy the /home/&amp;lt;&amp;lt;username&amp;gt;&amp;gt;/id_rsa and ..id_rsa.pub to the dir where your save your putty conf in my case: C:\Temp\ysg\conf\&amp;lt;&amp;lt;computername&amp;gt;&amp;gt;\putty\ssh&lt;br /&gt;14.&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Start - Run - type puttygen&lt;br /&gt;15.&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Load the copied private key file and save it as &amp;lt;&amp;lt;file.pkk&amp;gt;&amp;gt; , save also the public key file&lt;br /&gt;16.&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Copy the id_rsa.pub file to the server's ~ dir&lt;br /&gt;17.&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;cp -vr /home/username/.ssh/ .&lt;br /&gt;18.&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;On the server cat id_rsa.pub &amp;gt;&amp;gt; ~/.ssh/authorized_keys&lt;br /&gt;19.&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Now when started from the windows client :&lt;br /&gt;cmd /c START &amp;nbsp;/max putty &amp;nbsp;username@servername.domain.com no password should be asked&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-8121809665290683523?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/8121809665290683523/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2012/01/how-to-setup-non-password-requiring.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/8121809665290683523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/8121809665290683523'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2012/01/how-to-setup-non-password-requiring.html' title='how-to setup non-password requiring connection between a win and *nix box with putty ...'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-5837532412607508558</id><published>2011-12-26T23:47:00.002+02:00</published><updated>2011-12-26T23:47:23.836+02:00</updated><title type='text'>bad software design sucks !?</title><content type='html'>Why ?&lt;br /&gt;Because it does not reflect the real-world properly.&lt;br /&gt;&lt;br /&gt;Think about the guys having designed the statistical software for USA&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;"A prominent example is President Barack Obama’s decision to not identify his multiracial ancestry on the 2010 Census Survey. Half white, Obama selected the “black” box option."&lt;br /&gt;&lt;br /&gt;, BUT HEY WHAT ARE THE OPTIONS ?&lt;br /&gt;&lt;br /&gt;So they are checking the “white,” “black” or “Asian” boxes.&lt;br /&gt;&lt;br /&gt;Give me a break!!! The most multi-ethnical country in the world, and the db designers did not bother to put some more options ...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-5837532412607508558?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/5837532412607508558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/12/bad-software-design-sucks.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/5837532412607508558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/5837532412607508558'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/12/bad-software-design-sucks.html' title='bad software design sucks !?'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-6791041513259350732</id><published>2011-12-16T22:36:00.001+02:00</published><updated>2011-12-16T22:36:02.405+02:00</updated><title type='text'>Edison vs . Tesla</title><content type='html'>&lt;br /&gt;It is strange that the famous quote from Thomas Edison :&lt;br /&gt;"I have not failed, I've just found ten thousand ways that won't work."&lt;br /&gt;&lt;br /&gt;gets entirely new meaning after the words of his worst non-business competitor Nikola Tesla about him:&lt;br /&gt;&lt;br /&gt;He had no hobby, cared for no sort of amusement of any kind and lived in utter disregard of the most elementary rules of hygiene &amp;nbsp;... His method was inefficient in the extreme, for an immense ground had to be covered to get anything at all unless blind chance intervened and, at first, I was almost a sorry witness of his doings, knowing that just a little theory and calculation would have saved him 90 percent of the labor. But he had a veritable contempt for book learning and mathematical knowledge, trusting himself entirely to his inventor's instinct and practical American sense&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-6791041513259350732?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/6791041513259350732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/12/edison-vs-tesla.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/6791041513259350732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/6791041513259350732'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/12/edison-vs-tesla.html' title='Edison vs . Tesla'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-5731194727975111481</id><published>2011-12-07T21:16:00.001+02:00</published><updated>2011-12-07T21:16:48.986+02:00</updated><title type='text'>how-to get nice file sizes with du and perl</title><content type='html'>du -BK /cygdrive/f/morphus/morphus.1.0.7.dev.ysg/ | perl -ne 'm/(\d{1,9})K(\s+)(.*?)(morphus\.)(.*)/; printf("%9d %3s %-100s \n" ,  $1 , " " , "$4" . "$5") ;' | sort -nr | less&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-5731194727975111481?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/5731194727975111481/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/12/how-to-get-nice-file-sizes-with-du-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/5731194727975111481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/5731194727975111481'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/12/how-to-get-nice-file-sizes-with-du-and.html' title='how-to get nice file sizes with du and perl'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-6473265302723066094</id><published>2011-12-03T10:39:00.001+02:00</published><updated>2011-12-03T18:36:47.074+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cool programs'/><category scheme='http://www.blogger.com/atom/ns#' term='freeware'/><category scheme='http://www.blogger.com/atom/ns#' term='free programs'/><title type='text'></title><content type='html'>&lt;h3 class="post-title entry-title"&gt;Cool programs , utilities and programming environments for Windows, most of which free ( revised )&lt;/h3&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.opera.com/"&gt; Opera - simply the best browser on the planet &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.google.com/chrome?hl=en"&gt; Google Chrome &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.mozilla.com/en-US/firefox/all.html"&gt; Firefox &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://strawberryperl.com/"&gt; strawberry perl for Windows (with dmake for modules ) &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.cygwin.com/"&gt; Cygwin &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb842062"&gt; SysInternals Suite&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.izarc.org/download.html"&gt;izarc - the best zipper &lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx"&gt; Process Explorer - shows resources usage per running process on Windows &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://earth.google.com/intl/en/"&gt; Google Earth &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasa.google.com/"&gt; Picasa - the best free picture viewer , organizer&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.mozilla.com/en-US/thunderbird/all.html"&gt;Mozilla Thunderbird&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.textpad.com/"&gt; Textpad - the best text editor for Windows &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://freemind.sourceforge.net/wiki/index.php/Download"&gt; FreeMind - mind maps freware &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.ssmstoolspack.com/Download.aspx"&gt;smstoolpack - create CRUD for sql server &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://downloads.sourceforge.net/sourceforge/greenshot/Greenshot-0.6.003.zip?use_mirror=mesh"&gt;GreenShot&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.codeplex.com/OpenDBiff"&gt;Open diff - tool for comparing sql server 2005 databases &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.skype.com/intl/en/download/skype/windows/downloading/"&gt; Skype - the best client for Internet and Video Telephony&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://nsis.sourceforge.net/Download"&gt; NSIS - the best open source Windows installer maker &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://nsis.sourceforge.net/Time_plugin"&gt; And the time plugin &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://gears.google.com/download.html?statcb=1"&gt; Gears -- edit online documents offline&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.dvdvideosoft.com/products/dvd/Free-YouTube-to-iPod-Converter.htm"&gt; Free youtube to ipod converter -- get mp4 files easily to your phone &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.filehippo.com/download_defraggler/"&gt; Defragler - Disk Defragment utility &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://draft.blogger.com/post-edit.g?blogID=30804833&amp;amp;postID=7317152296294814188"&gt; DvdDecrypter - the best DVD free ripper &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.imgburn.com/"&gt; ImgBurner - burn ISO images - freeware &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.joejoesoft.com/cms/showpage.php?cid=97"&gt; ArsClip remembers your clibboard stuff - Hint , Ctrl + Shift + Z , 2 &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.iconico.com/colorpic/"&gt; colorpic - Color to hex utility &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.ultrapico.com/ExpressoDownload.htm"&gt; Expresso - a GUI tool for building and verifying Regular Expressions &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.videolan.org/vlc/download-windows.html"&gt; a flv file player &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.python.org/download/"&gt; Python - for cool scripts and programming &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://staruml.sourceforge.net/en/"&gt; STARUML - the best open source UML editor&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://infrarecorder.org/?page_id=5"&gt; Infrarecorder - free CD / DVD burner&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.getpaint.net/download.html"&gt; Paint.Net - freeware image editor &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html"&gt; putty &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://winscp.net/eng/download.php#download2"&gt; winscp &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.nodesoft.com/SearchAndReplace/Default.aspx"&gt; Multiline Search and Replace utility program &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://gears.google.com/"&gt; Google Gears - use Gmail offline &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.google.com/search?client=opera&amp;amp;rls=en&amp;amp;q=HijackThis+download&amp;amp;sourceid=opera&amp;amp;ie=utf-8&amp;amp;oe=utf-8"&gt; HijackThis&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://tortoisesvn.net/downloads"&gt; tortoise svn - a stable gui and command line to subversion for Windows &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.sliksvn.com/en/download"&gt; slik svn - the command line tools for svn for windows &lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://tokiwa.qee.jp/EN/DataRecovery_EN.zip"&gt; Data Recovery - recover Shift + del removed programs &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb897417.aspx"&gt; Windows Sysinternal utilities &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.commandline.co.uk/cmdow/"&gt; Cmdow is a Win32 commandline utility for NT4/2000/XP/2003 that allows windows to be listed, moved, resized, renamed, hidden/unhidden, disabled/enabled, minimized, maximized, restored, activated/inactivated, closed, killed and more.&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://gnuwin32.sourceforge.net/packages/grep.htm"&gt; Grep , FGrep and Egrep for windows (remember the dll's also ) &lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://gnuwin32.sourceforge.net/packages/less.htm"&gt; Less for Windows ( remember the dll's also ) &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.7-zip.org/"&gt; 7-zip&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.risetobloome.com/Page_1_S_NoPadding.aspx?item=530"&gt; Rise Editor - Entity Relationship Diagram tool &lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://get.adobe.com/reader/"&gt; Adobe Acrobat &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.slysoft.com/en/virtual-clonedrive.html"&gt; Virtual Clone Drive - Map ISO files  &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://sliksvn.com/en/download/"&gt; svn client and server &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.stack.nl/~dimitri/doxygen/download.html#latestsrc"&gt; Doxygen - code documentation utility &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://qt.nokia.com/downloads/"&gt; Qt - Nokia's Development Platform &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://dia-installer.de/"&gt; Dia - control flow chars freeware software &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.audiograbber.org/"&gt; AudioGrabber - the best mp3 ripper&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.autohotkey.com/download/"&gt; AutoHotKey - GUI automating &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.fiddler2.com/fiddler2/version.asp"&gt; Fiddler - http sniffer  &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://gnuwin32.sourceforge.net/packages/coreutils.htm"&gt; Windows GNU utils &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.activestate.com/activeperl/downloads" target="a_blank"&gt; Active Perl &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.apple.com/safari/download/"&gt; Safari - &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-6473265302723066094?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/6473265302723066094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/12/cool-programs-utilities-and-programming.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/6473265302723066094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/6473265302723066094'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/12/cool-programs-utilities-and-programming.html' title=''/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-3754803301588586985</id><published>2011-11-15T10:52:00.001+02:00</published><updated>2011-11-15T10:52:44.046+02:00</updated><title type='text'>how-to display human readable file sizes on HP-UX</title><content type='html'># how-to display human readable file sizes on systems with stupid du# of course you would have to have perlfind `pwd` -type f -exec du -k {} \; | perl -ne 'split /\s+/;my $SizesInMegs=$_[0]/1024;printf ( "%10d %10s \n" , "$SizesInMegs" , "MB $_[1]")' | sort -nr | more&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-3754803301588586985?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/3754803301588586985/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/11/how-to-display-human-readable-file.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/3754803301588586985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/3754803301588586985'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/11/how-to-display-human-readable-file.html' title='how-to display human readable file sizes on HP-UX'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-4614782660817083896</id><published>2011-11-06T20:29:00.000+02:00</published><updated>2011-11-06T20:29:46.517+02:00</updated><title type='text'>No can do ! I could only admire my new gmail theme</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-dOqr8hCXVJs/TrbRvwC8P7I/AAAAAAABe7M/WSW8NDbEXYw/s1600/snap.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://4.bp.blogspot.com/-dOqr8hCXVJs/TrbRvwC8P7I/AAAAAAABe7M/WSW8NDbEXYw/s400/snap.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-4614782660817083896?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/4614782660817083896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/11/no-can-do-i-could-only-admire-my-new.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/4614782660817083896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/4614782660817083896'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/11/no-can-do-i-could-only-admire-my-new.html' title='No can do ! I could only admire my new gmail theme'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-dOqr8hCXVJs/TrbRvwC8P7I/AAAAAAABe7M/WSW8NDbEXYw/s72-c/snap.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-8575104691809423987</id><published>2011-11-03T10:39:00.002+02:00</published><updated>2011-11-03T10:39:57.104+02:00</updated><title type='text'>how-to find out who was lately on my server via ssh</title><content type='html'># who the f..k was here find /var/log/ -name secure*  | sort -n | xargs grep -nHP 'session opened for user' | less&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-8575104691809423987?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/8575104691809423987/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/11/how-to-find-out-who-was-lately-on-my.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/8575104691809423987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/8575104691809423987'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/11/how-to-find-out-who-was-lately-on-my.html' title='how-to find out who was lately on my server via ssh'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-2577691086028628557</id><published>2011-10-26T10:02:00.002+03:00</published><updated>2011-10-26T10:02:54.751+03:00</updated><title type='text'>Linux / Unix Cheat Sheet</title><content type='html'>&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: Consolas, "Courier New", Courier, Monospace; background-color: #ffffff; /*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em;}.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# FilF:NixCheatSheet.sh v.1.3.0 docs at the end &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# how-to get a nice prompt on HP-AIX&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;clear;export PS1=$USER&lt;span class="str"&gt;'@'&lt;/span&gt;`hostname`:$PWD:`echo ``date +%Y.%m.%d-%H:%M:%S`` `:`echo  &lt;span class="str"&gt;"\n"&lt;/span&gt; $ &lt;span class="str"&gt;" "&lt;/span&gt;`; clear;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# who , where and when&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;uname -a ;&lt;/pre&gt;&lt;pre class="alt"&gt;id;&lt;/pre&gt;&lt;pre&gt;date +%Y.%m.%d-%H:%M:%S;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# all env vars starting with _&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;env | grep -e &lt;span class="str"&gt;"^_"&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;ls &lt;span class="preproc"&gt;-lt&lt;/span&gt; --time-style=long-iso &lt;/pre&gt;&lt;pre&gt;ls -alt --time-style=long-iso&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# http://www.gnu.org/software/findutils/manual/html_mono/find.html&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# The ultimate "find in files"&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;find /etc/httpd/ -type f -print0 | xargs --null grep -nHP &lt;span class="str"&gt;'StartServers\s+\d'&lt;/span&gt; | less&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;find / -name &lt;span class="str"&gt;'*bash*'&lt;/span&gt; -exec grep -nHP &lt;span class="str"&gt;'*APerlRegex*'&lt;/span&gt; {} \;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#  or even faster , be aware of funny file names xargs -0&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;find / -name &lt;span class="str"&gt;'*bak'&lt;/span&gt; -print0 | xargs --null grep -nPH &lt;span class="str"&gt;'curl'&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# find and replace recursively&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;find . -name &lt;span class="str"&gt;'*.html'&lt;/span&gt; -print0 | xargs -0 perl -pi -e &lt;span class="str"&gt;'s/foo/bar/g'&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# find all the files greather than 100 MB , sort them by the size and print their sizes &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;find / -type f -size +100M -exec du -B M {} \; | sort -r | less &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# disk usage of users under the /home directory in MB&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;clear;du -all -m --max-depth=3 /home | sort -n -r | less&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# where I have been lately ?&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;history | grep cd&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# what I have opening recently &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;history | grep vi&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#send my history &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;history | mailx -s &lt;span class="str"&gt;"my history"&lt;/span&gt; $MyEmail&lt;/pre&gt;&lt;pre&gt;tcpdump dst 10.168.28.22 and tcp port 22&lt;/pre&gt;&lt;pre class="alt"&gt;tcpdump dst 172.21.212.212 &lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# record the current session via script&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;mkdir ~/scriptlogs&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;script&lt;/span&gt; -a /scriptlogs/`date +%Y%m%d%H%M%S`_script.log&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;#/usr/bin is for normal user executables, /usr/sbin is for superuser executables, /usr/sfw is for external software (like gnu one), but provided with bundle of OS, /usr/ccs is for development utilities, usually not need for daily tasks like make, lex, yacc, sccs&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# take the last 5 commands for faster execution to the temp execution script&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;tail -n 5 /root/.bash_history &amp;gt;&amp;gt; /var/run.sh&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# I saw the command cd /to/some/suching/dir/which/was/very/long/to/type&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;echo so I redid it and saved my fingers&lt;/pre&gt;&lt;pre class="alt"&gt;!345&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;history &amp;gt;history.txt ---- &lt;span class="rem"&gt;# the last 1000 commands into a history.txt file&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# send that file to myself&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;cat history.txt | mail -s &lt;span class="str"&gt;"test file sending"&lt;/span&gt; -c mail1@com&lt;/pre&gt;&lt;pre&gt;yordan.georgiev(boom)gmail.com&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# remove all trealing spaces from the history file works for TextPad&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;^([ ]*)([0-9]*)(.*)$&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;\3 --- replace with the pure commands&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;history | gawk -F1 &lt;span class="str"&gt;'BEGIN {FS=" "};{print $2 , $3}'&lt;/span&gt; | less&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# display the history withouth the line numbers ...&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;history | perl -i -pe &lt;span class="str"&gt;'s/^([ ]*)([0-9]*)(.*)$/$3/gi'&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;vi fileName anotherFile&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# how to deal with command outputs&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;command | filtercommand &amp;gt; command_output.txt 2&amp;gt;errors_from_command.txt&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# Hint after the less filter pressing s will prompt you for saving the&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;output to a file ...&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;#  find the files having os somewhere in their names and only those having linux&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;find . -name &lt;span class="str"&gt;'*os*'&lt;/span&gt; | grep linux | less&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# find all xml type of files and display only the rows having wordToFindInRow&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;find . -name &lt;span class="str"&gt;'*.xml'&lt;/span&gt; -exec cat {} \;| grep wordToFindInRow | less&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# putty , bash shortcuts &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;Ctrl + A --- Go to the beginning of the line you are currently typing on&lt;/pre&gt;&lt;pre&gt;Ctrl + E --- Go to the &lt;span class="kwrd"&gt;end&lt;/span&gt; of the line you are currently typing on&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# how-to mount an usb stick&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# remember to change the path other wise you will get the device is busy errror&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;mkdir /mnt/usbflash&lt;/pre&gt;&lt;pre&gt;mount /dev/sdb1 -t vfat /mnt/usbflash&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;umount /mnt/usbflash&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;head -n 20 tooLongFile -- display the first 20 lines of the file&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# change the uggly prompt&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;vi /etc/bashrc&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# get a nice prompt &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;PS1=&lt;span class="str"&gt;"\u@\h \t \w\n\\$ "&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# how to restart a process initiated at startup&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;/etc/rc.d/init.d/sendmail start | stop | status | restart&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# see all the rules associated with the firewall&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;iptables -L -v&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;gunzip *file.zip&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# exctract tar file into cd  &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;tar -xvf file.tar&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;To access the server download winscp.exF:&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# start winscp with a stored session from Win box &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;cmd /c start /max winscp oracle@192.168.255.12&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# To start remote session click on the putty screen , configure putty&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;settings to pull full screen with alt + Enter&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# right click on the title bar , settings , change the font , copy&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;paste from and to the terminal window text&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# how to ensure the sshd daemon is running&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;ps -ef | grep sshd&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# User and group management&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;useradd -p winscppass -r winscp -d /home/winscp --- to add a user with&lt;/pre&gt;&lt;pre class="alt"&gt;specifig home directory name and pass&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;luserdel winscp --- delete the user&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;gpasswd: administer the /etc/group file&lt;/pre&gt;&lt;pre&gt;groupadd: Create a new group&lt;/pre&gt;&lt;pre class="alt"&gt;groupmod: Modify a group&lt;/pre&gt;&lt;pre&gt;groupdel: Delete a new group&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;useradd: Create a new user or update &lt;span class="kwrd"&gt;default&lt;/span&gt; new user information&lt;/pre&gt;&lt;pre class="alt"&gt;usermod: Modify a user account&lt;/pre&gt;&lt;pre&gt;userdel: Delete a user account and related files&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# how to kill process interactively&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;killall -v -i sshd&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# the most efficent way to search your history is to hit Ctrl R and&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;type the start of the command. It will autocomplete as soon as there’s&lt;/pre&gt;&lt;pre class="alt"&gt;a match to a history entry, then you just hit enter. If you want to&lt;/pre&gt;&lt;pre&gt;complete the command (add more stuff to it ) use the right arrow to&lt;/pre&gt;&lt;pre class="alt"&gt;escape from the quick search box ...&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;How to install Perl modules&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;gzip -dc yourmodule.tar.gz | tar -xof -&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;perl Makefile.PL&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;make test&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;make install&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;How to see better which file were opened , which directories were visited&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;type always the fullpath after the vi - use the $PWD env variable to&lt;/pre&gt;&lt;pre class="alt"&gt;open files &lt;span class="kwrd"&gt;in&lt;/span&gt; the current directory , thus after opening the file&lt;/pre&gt;&lt;pre&gt;after:&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;vi /$PWD , press tab to complete the name of the current directory ,&lt;/pre&gt;&lt;pre class="alt"&gt;type the name of the file&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;thus after&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;history | grep vi&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;the full list of opened files is viwed .&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;of course the same could be seen from the /home/username/.viinfo file /files&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;where to set the colors &lt;span class="kwrd"&gt;for&lt;/span&gt; the terminal (&lt;span class="kwrd"&gt;if&lt;/span&gt; you are lucky to have one&lt;/pre&gt;&lt;pre class="alt"&gt;with colors; )&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;/etc/DIR_COLORS&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;open a file containing &lt;span class="str"&gt;"sh"&lt;/span&gt; &lt;span class="kwrd"&gt;in&lt;/span&gt; its name bellow the &lt;span class="str"&gt;"/usr/lib"&lt;/span&gt; directory&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;:r !find /usr/lib -name *sh*&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;go over the file and gf&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;uname -a --- which version of Linux I am using&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;rmp -qa --- show all installed packages&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;passwd [username] --- change the password &lt;span class="kwrd"&gt;for&lt;/span&gt; the specified user (own password)&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;How to copy paste text &lt;span class="kwrd"&gt;in&lt;/span&gt; the putty window from client to server -&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;click the right button of your pointing device&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;How to copy paste text from the putty window from server to client -&lt;/pre&gt;&lt;pre&gt;right-click the window title and select copy all to Clipboard.&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#To restart a service&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;service sshd restart&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#  &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;service --status-all --- show the status of all services&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# change the owneership of the directory&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;chown -R userNamF:GroupName DirPath&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# perform action recursively on a set of files&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;find . -name &lt;span class="str"&gt;'*.pl'&lt;/span&gt; -exec perl -wc {} \;&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;for&lt;/span&gt; file &lt;span class="kwrd"&gt;in&lt;/span&gt; `find . -type f`;do echo cp $file ../backups/; done;&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# make Bash append rather than overwrite the history on disk:&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;shopt -s histappend&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# henever displaying the prompt, write the previous line to disk:&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;PROMPT_COMMAND=&lt;span class="str"&gt;'history -a'&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;gpm -- general &lt;span class="str"&gt;"cut and paste"&lt;/span&gt; server&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;sh ScriptWithALotOfErrorMessages.sh | tee -a whereToSaveIt.log&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# run first the following command&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;$ &lt;span class="kwrd"&gt;script&lt;/span&gt; -a The_Log_File_To_Append_as_well_as_display_diagnostig_messages.log&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# than run the script&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;sh ScriptWithALotOfErrorMessages.sh&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#how-to replace single char in file&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;tr &lt;span class="str"&gt;'\t'&lt;/span&gt; &lt;span class="str"&gt;','&lt;/span&gt; &amp;lt; FileWithTabs &amp;gt; fileWithCommas&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;df -k --- disk usage&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# Allow access to the box from only one ip address&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;IPTables=/sbin/iptables&lt;/pre&gt;&lt;pre&gt;$ IPTables -A INPUT -s &amp;lt;Insert other Origin ip here&amp;gt; -p tcp&lt;/pre&gt;&lt;pre class="alt"&gt;--source-port xxx -j ACCEPT&lt;/pre&gt;&lt;pre&gt;$ IPTables -A OUTPUT -d &amp;lt; Insert other Origin ip here &amp;gt; -p tcp&lt;/pre&gt;&lt;pre class="alt"&gt;--destination-port xxx-j ACCEPT&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# has the root logged in over an unencrypted network ?&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;#  last | grep “^root “ | egrep –v “reboot|console” | more&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# start command in the background&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;command1 &amp;amp;&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# start another one&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;command2 &amp;amp;&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# bring the command in the foreground&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;fg %1&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# create a backup file based on the timestamp on bash&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;cp fileName.ext fileName.ext.`date +%Y%m%d%H%M%S`.bak&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;Unix commands:&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;FIX broken lines:&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;$ cat output.txt&lt;/pre&gt;&lt;pre&gt;a:b:c:1:2:3:2.3:henry&lt;/pre&gt;&lt;pre class="alt"&gt;s:d:f:2:1:4:&lt;/pre&gt;&lt;pre&gt;54:user5&lt;/pre&gt;&lt;pre class="alt"&gt;d:q:w:5:6:&lt;/pre&gt;&lt;pre&gt;3:5.2:alex&lt;/pre&gt;&lt;pre class="alt"&gt;y:m:n:3:4:1:5.6:eiam&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;Output Required:&lt;/pre&gt;&lt;pre&gt;----------------&lt;/pre&gt;&lt;pre class="alt"&gt;a:b:c:1:2:3:2.3:henry&lt;/pre&gt;&lt;pre&gt;s:d:f:2:1:4:54:user5&lt;/pre&gt;&lt;pre class="alt"&gt;d:q:w:5:6:3:5.2:alex&lt;/pre&gt;&lt;pre&gt;y:m:n:3:4:1:5.6:eiam&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;$ awk &lt;span class="str"&gt;'&lt;/pre&gt;&lt;pre&gt;BEGIN {&lt;/pre&gt;&lt;pre class="alt"&gt;FS=":";&lt;/pre&gt;&lt;pre&gt;maxFLD=8;&lt;/pre&gt;&lt;pre class="alt"&gt;}&lt;/pre&gt;&lt;pre&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;while (NF &amp;lt; maxFLD || $0 ~ /\:$/ ) {&lt;/pre&gt;&lt;pre&gt;getline record;&lt;/pre&gt;&lt;pre class="alt"&gt;$0 = $0 record&lt;/pre&gt;&lt;pre&gt;}&lt;/pre&gt;&lt;pre class="alt"&gt;print $0&lt;/pre&gt;&lt;pre&gt;}&lt;/pre&gt;&lt;pre class="alt"&gt;'&lt;/span&gt; file_name&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;Live examplF: &lt;/pre&gt;&lt;pre&gt;2009-07-10 13:51:31.939439|2009-07-10|2|1|004401105514513|0570817|1|-3||production|2.0.0|Series60|V 11.0.021|11.0.021.01.01|11.0.021.C01.01|244|05|862e-d2ac-4f03-9cbb|xmldatabinding 5.0|Xmldatabinding 5.0 &lt;span class="kwrd"&gt;for&lt;/span&gt; N-Gage&lt;/pre&gt;&lt;pre class="alt"&gt;|x-epoc/x-sisx-app|0|4|1|3|0x101f978e|1.0.3|Company|N97|Country_variants_of_UK_Ireland&lt;/pre&gt;&lt;pre&gt;--------------------------------------------------------------------------------------------------------------------------------------&lt;/pre&gt;&lt;pre class="alt"&gt;$ awk &lt;span class="str"&gt;'BEGIN {FS="|";maxFLD=30;}{while (NF &amp;lt; maxFLD || $0 ~ /\:$/ ) {getline record;$0 = $0 record} print $0}'&lt;/span&gt; file_name&lt;/pre&gt;&lt;pre&gt;---------------------------------------------------------------------------------------------------------------------------------------&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;Display lines which starts with “|”:&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;- $ Grep ‘^|’ file_name&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;Paste = shift + insert&lt;/pre&gt;&lt;pre class="alt"&gt;Copy = ctrl + insert&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;df  -h ***&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;id -u&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;ls –lrt&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;ps -ef&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;#unpack a file &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;tar xvf “filename”&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#on hp-ux&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;gzip -cd FileName.tar.gz | tar -xvf -&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;fg  (can be used to &lt;span class="kwrd"&gt;return&lt;/span&gt; to stopped window/&lt;span class="kwrd"&gt;process&lt;/span&gt;)&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;w (logged &lt;span class="kwrd"&gt;in&lt;/span&gt; users, idle or not?)&lt;/pre&gt;&lt;pre class="alt"&gt;who (logged on users, from where)&lt;/pre&gt;&lt;pre&gt;who -r (show runlevel)&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;wc filename (lines, words, characters)&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# print line number 52&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;sed -n &lt;span class="str"&gt;'52p'&lt;/span&gt; &lt;span class="rem"&gt;# method 1&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;sed &lt;span class="str"&gt;'52!d'&lt;/span&gt; &lt;span class="rem"&gt;# method 2&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;sed &lt;span class="str"&gt;'52q;d'&lt;/span&gt; &lt;span class="rem"&gt;# method 3, efficient on large files&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;Remove/replace hex values from a filF:&lt;/pre&gt;&lt;pre class="alt"&gt;perl -i.bak -pe &lt;span class="str"&gt;'s/(\xEF)(\xBF)(\xBD)/???/g'&lt;/span&gt; music_player_track.txt&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;Add user: useradd –u uid (esim. 2600)  –c ‘description’ –d /homedir/ -g group –m –s /bin/bash username&lt;/pre&gt;&lt;pre&gt;Change passwd: passwd username&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;ExamplF:&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;useradd -u 10302011 -c &lt;span class="str"&gt;"Marko Tuomela, CDIP Infra team, ext-marko.m.tuomela@nokia.com"&lt;/span&gt; -m -d /export/home/martuome -s /bin/bash martuome&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;passwd -f login = forces to change password when logging &lt;span class="kwrd"&gt;in&lt;/span&gt; &lt;span class="kwrd"&gt;for&lt;/span&gt; the first time&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;Ei saa näyttää yhtään vastausta:&lt;/pre&gt;&lt;pre&gt;passwd -s -a | grep NP (=No Password)&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;/var/adm/loginlog sisältää kaikki epäonnistuneet loginyritykset…&lt;/pre&gt;&lt;pre class="alt"&gt;Alustus:&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#!/bin/sh&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;log=/var/adm/loginlog&lt;/pre&gt;&lt;pre&gt;test -f &lt;span class="str"&gt;"$log"&lt;/span&gt; &amp;amp;&amp;amp; {&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="rem"&gt;# "Good, $log exists already."&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;        exit 0&lt;/pre&gt;&lt;pre class="alt"&gt;}&lt;/pre&gt;&lt;pre&gt;touch $log || exit 1&lt;/pre&gt;&lt;pre class="alt"&gt;chown root $log || exit 1&lt;/pre&gt;&lt;pre&gt;chgrp sys $log || exit 1&lt;/pre&gt;&lt;pre class="alt"&gt;chmod 600 $log || exit 1&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# "Initialized $log."&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;Use SVCCFG:&lt;/pre&gt;&lt;pre&gt;bash-3.00&lt;span class="rem"&gt;# svccfg&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;svc:&amp;gt; select cde-login&lt;/pre&gt;&lt;pre&gt;svc:/application/graphical-login/cde-login&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;svc:/application/graphical-login/cde-login&amp;gt; setprop dtlogin/args=astring: &lt;span class="str"&gt;"-udpPort 0"&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;svc:/application/graphical-login/cde-login&amp;gt; quit&lt;/pre&gt;&lt;pre class="alt"&gt;bash-3.00&lt;span class="rem"&gt;# svcadm cde-login restart&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;Display lines that contain A or B&lt;/pre&gt;&lt;pre class="alt"&gt;/usr/bin/egrep - i “A|B”&lt;/pre&gt;&lt;pre&gt;Ex. &lt;span class="rem"&gt;# ps -ef | /usr/bin/egrep - i “PID1|PID2”&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;START/ STOP scripts ( /etc/init.d/rc.&lt;span class="kwrd"&gt;script&lt;/span&gt;)&lt;/pre&gt;&lt;pre class="alt"&gt;-    create symbolic links from /etc/rc(0,1,2).d/K99sas --&amp;gt; /etc/init.d/rc.&lt;span class="kwrd"&gt;script&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;-    create symbolic link from /etc/rc3.d/S99sas --&amp;gt; /etc/init.d/rc.&lt;span class="kwrd"&gt;script&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;Startscripts are executed &lt;span class="kwrd"&gt;in&lt;/span&gt; order where smallest number is executed first on each runlevel&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;ln –s source target&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;Normal Case&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;Put SXX &lt;span class="kwrd"&gt;in&lt;/span&gt; rc3.d&lt;/pre&gt;&lt;pre class="alt"&gt;Put KXX &lt;span class="kwrd"&gt;in&lt;/span&gt; rc0.d, rc1.d, rc2.d, rcS.d&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;cd /etc/rc3.d&lt;/pre&gt;&lt;pre&gt;ln –s /etc/init.d/rc.&lt;span class="kwrd"&gt;script&lt;/span&gt; S99rcscript&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;cd /etc/rc0.d&lt;/pre&gt;&lt;pre class="alt"&gt;ln -s /etc/init.d/rc.&lt;span class="kwrd"&gt;script&lt;/span&gt; K99rcscript&lt;/pre&gt;&lt;pre&gt;cd /etc/rc1.d&lt;/pre&gt;&lt;pre class="alt"&gt;ln -s /etc/init.d/rc.&lt;span class="kwrd"&gt;script&lt;/span&gt; K99rcscript&lt;/pre&gt;&lt;pre&gt;cd /etc/rc2.d&lt;/pre&gt;&lt;pre class="alt"&gt;ln -s /etc/init.d/rc.&lt;span class="kwrd"&gt;script&lt;/span&gt; K99rcscript&lt;/pre&gt;&lt;pre&gt;cd /etc/rcS.d&lt;/pre&gt;&lt;pre class="alt"&gt;ln -s /etc/init.d/rc.&lt;span class="kwrd"&gt;script&lt;/span&gt; K99rcscript&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;RC scripts &amp;amp; Run Levels &lt;/pre&gt;&lt;pre&gt;Rc scripts performs the following functions : &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;a) They check and mount the file systems &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;b) Start and stop the various processes like network , nfs etc.&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;c) Perform some of the house keeping jobs.&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;System goes &lt;span class="kwrd"&gt;in&lt;/span&gt; to one of the following run level after booting depending on &lt;span class="kwrd"&gt;default&lt;/span&gt; run level and the commands issued &lt;span class="kwrd"&gt;for&lt;/span&gt; changing the run level to some other one.&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;0 Boot prom level ok&amp;gt; or &amp;gt; prompt &lt;span class="kwrd"&gt;in&lt;/span&gt; Sun.&lt;/pre&gt;&lt;pre class="alt"&gt;1 Administrative run level . Single user mode &lt;/pre&gt;&lt;pre&gt;2 Multiuser mode with no resource sharing .&lt;/pre&gt;&lt;pre class="alt"&gt;3 Multiuser level with nfs resource sharing&lt;/pre&gt;&lt;pre&gt;4 Not used&lt;/pre&gt;&lt;pre class="alt"&gt;5 Shutdown &amp;amp; power off (Sun 4m and 4u architecture )&lt;/pre&gt;&lt;pre&gt;6 Reboot to &lt;span class="kwrd"&gt;default&lt;/span&gt; run level&lt;/pre&gt;&lt;pre class="alt"&gt;S s Single user mode user logins are disabled.&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;Broadly speaking the running system can be &lt;span class="kwrd"&gt;in&lt;/span&gt; any of the folloing state&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;Single user – Minimum processes running , user logins disabled and root password is required to gain access to the shell . &lt;/pre&gt;&lt;pre&gt;Multiuser - All system processes are running and user logins are permitted &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;Run level of a desired state is achieved by a number of scripts executed by the rc program the rc scripts are located &lt;span class="kwrd"&gt;in&lt;/span&gt; /etc/rc0.d , /etc/rc1.d , /etc/rc2.d , /etc/rc3.d &amp;amp; /etc/rcS.d directories . All the files of a particular run level are executed &lt;span class="kwrd"&gt;in&lt;/span&gt; the alphanumeric order .Those files beginning with letter S starts the processes and those beginning with K stops the processes.&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;These files are hard linked to the files &lt;span class="kwrd"&gt;in&lt;/span&gt; /etc/init.d &lt;span class="kwrd"&gt;in&lt;/span&gt; order to provide a central location &lt;span class="kwrd"&gt;for&lt;/span&gt; all these files and eliminating the need to change the run level &lt;span class="kwrd"&gt;in&lt;/span&gt; case these scripts needs to be run separately . The files &lt;span class="kwrd"&gt;in&lt;/span&gt; /etc/init.d directory are without any S , K and numeric prefix instead a stop / start argument has to be supplied whenever these scripts are to be executed .&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;By &lt;span class="kwrd"&gt;default&lt;/span&gt; system has a number of rc scripts needed &lt;span class="kwrd"&gt;for&lt;/span&gt; run level transition but sometimes it becomes necessary to start some custom scripts at the booting time and turn them off at the shutdown . Custom scripts can be put &lt;span class="kwrd"&gt;in&lt;/span&gt; any of the required rc directory but following major considerations has to be kept &lt;span class="kwrd"&gt;in&lt;/span&gt; mind :&lt;/pre&gt;&lt;pre class="alt"&gt;•    The sequence number of the file should not conflict with other files.&lt;/pre&gt;&lt;pre&gt;•    The sevices needed should be available by previously executed scripts. &lt;/pre&gt;&lt;pre class="alt"&gt;•    File should be hard linked to the /etc/init.d directory .&lt;/pre&gt;&lt;pre&gt;•    The system looks &lt;span class="kwrd"&gt;for&lt;/span&gt; only those files beginning with letter K &amp;amp; S , any thing &lt;span class="kwrd"&gt;else&lt;/span&gt; is ignored , therefore, to make a file inactive simply changing uppercase K or S to lower case will cause system to ignore it . &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;The scripts that &lt;span class="kwrd"&gt;begin&lt;/span&gt; with a K are used to kill processes when exiting a specific runlevel. In the listing above, the K scripts would be used when terminating runlevel 3. The scripts that start with an S are used when starting runlevel 3. None of the items &lt;span class="kwrd"&gt;in&lt;/span&gt; rc3.d, however, is really a startup &lt;span class="kwrd"&gt;script&lt;/span&gt;. They are logical links to the real scripts, which are located &lt;span class="kwrd"&gt;in&lt;/span&gt; the /etc/rc.d/init.d directory. For example, S80sendmail is linked to init.d/sendmail. This raises the question of why the scripts are executed from the directory rc3.d instead of directly from init.d where they actually reside. The reasons are simple. The same scripts are needed &lt;span class="kwrd"&gt;for&lt;/span&gt; several different runlevels. Using logical links, the scripts can be stored &lt;span class="kwrd"&gt;in&lt;/span&gt; one place and still be accessed by every runlevel from the directory used by that runlevel. &lt;/pre&gt;&lt;pre&gt;Scripts are executed &lt;span class="kwrd"&gt;in&lt;/span&gt; alphabetical order. Thus S10network is executed before S80sendmail. This allows the system to control the order &lt;span class="kwrd"&gt;in&lt;/span&gt; which scripts are executed through simple naming conventions. Different runlevels can execute the scripts &lt;span class="kwrd"&gt;in&lt;/span&gt; different orders &lt;span class="kwrd"&gt;while&lt;/span&gt; still allowing the real scripts &lt;span class="kwrd"&gt;in&lt;/span&gt; init.d to have simple, descriptive names. A listing of the init.d directory shows these descriptive names: &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;VI COMMANDS &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;Move with cursor: h,j,k,l&lt;/pre&gt;&lt;pre&gt;Beginning of linF: 0&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;Corrections during INSERT:&lt;/pre&gt;&lt;pre class="alt"&gt;-    CTRL+H delete last character&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;Append after cursor: a&lt;/pre&gt;&lt;pre&gt;Append at the &lt;span class="kwrd"&gt;end&lt;/span&gt; of linF: A&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;Yanked: y&lt;/pre&gt;&lt;pre class="alt"&gt;Put: p – puts back yanked or deletet text after cursor&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;#Undo last changF: &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;u&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;#Restore curren linF: &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;U&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#Repeat last changF:&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;.&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;#Repeat last command&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;: n&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#Replace (sed):    &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;:%s/old value/new value/&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;#Copy: CTRL+INSERT&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#PASTF: SHIFT+INSERT&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#EXTRACT *.tar.gz on HP-UX:&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;gzip -dc ieh_datacut-Nielsen-00002-201.0.38.tar.gz | tar xvf –&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;Single filF:&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;gzip -dc fileName.tar.gz | tar -xvf - filename&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;find . -name &lt;span class="str"&gt;'*.log'&lt;/span&gt; -print | zip cipdq`date +%Y%m%d%H%M%S` -@&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;find / -type f | xargs grep -nH &lt;span class="str"&gt;'curl'&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;find . -type f -name &lt;span class="str"&gt;'*.sh'&lt;/span&gt; -print -exec grep -n gpg {} \;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#where am I&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;uname -a ; &lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#who am I &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;id ; &lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# when this is happening &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;date &lt;span class="str"&gt;"+%Y.%m.%d %H:%M:%S"&lt;/span&gt; ; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;useradd -u 12202211 -c &lt;span class="str"&gt;"First Name , LastName, Teamp , firstName.LastName@company.com"&lt;/span&gt; -m -d /export/home/userName -s /bin/bash userName&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#obsolete&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;skill -STOP -u userToKick&lt;/pre&gt;&lt;pre&gt;pkill -STOP -u userToKick&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# reboot ... !!! BOOM BOOM BOOM !!!&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;shutdown -r now &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# check all available commands on my system&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt; echo -n $PATH | xargs -d : -I {} find {} -maxdepth 1  -type f -printf &lt;span class="str"&gt;'%P\n'&lt;/span&gt; | sort -u | less&lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt; &lt;span class="rem"&gt;#how-to kill a process &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;ps aux | grep omniture&lt;/pre&gt;&lt;pre&gt;pidof omniture&lt;/pre&gt;&lt;pre class="alt"&gt;kill -9 omniture&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#what cpu am a running&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;less /proc/cpuinfo&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# which processes are listening on my system&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;netstat --tcp --listening --programs&lt;/pre&gt;&lt;pre class="alt"&gt;netstat --tcp&lt;/pre&gt;&lt;pre&gt;netstat --route&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;#sourcF: http://www.yolinux.com/TUTORIALS/LinuxTutorialSysAdmin.html#MONITOR&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#monitoring commands &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# show the top processes&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;top&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# running processes status &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;ps -auxw | less &lt;/pre&gt;&lt;pre class="alt"&gt;ps -ef | less &lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#List all currently loaded kernel modules&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;lsmod | less &lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#Displays the system's current runlevel.&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;/sbin/runlevel&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# get the Processes attached to open files or open network ports:&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;lsoff | less &lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# monitor the virtual memory &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;vmstat &lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#Display/examine memory map and libraries (so). UsagF: pmap pid&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;ps -aux | grep &amp;lt;&amp;lt;MyProcToPMap&amp;gt;&amp;gt;&lt;/pre&gt;&lt;pre&gt;pmap      &amp;lt;&amp;lt;MyprocToPMapPID&amp;gt;&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;history | gawk -F1 &lt;span class="str"&gt;'BEGIN {FS=" "};{print $2 , $3}'&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;pmap -x 4041 | gawk -F1 &lt;span class="str"&gt;'BEGIN {FS=" "};{print $2  ,"\t" , $5 , "\t" , $6 , "\t", $7 , $8}'&lt;/span&gt; | sort -nr&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#how-to sort output by a delimited by single delimiter column &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# in this example the - char is used for delimiter , the output is &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# by their sending sequence , use proper file naming convention files &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# ls -1 gives us:&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# fileBeginningTillFirstDelimiter-TheColumnToSortBy-TheRestFromTheFileNameDelimiter&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;ls -1 | awk -F1 &lt;span class="str"&gt;'BEGIN {FS="-"};{print $2 "¤" $1 "-" $2 "-" $3 }'&lt;/span&gt; | sort -nr | cut -d ¤ -f 2,5 &lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# the same approach with perl&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;ls -1 | perl -p -i -e &lt;span class="str"&gt;'s/^([^\-]*)(\-)([^\-]*)(\-)([^\-]*)/$3¤$1$2$3$4$5/g'&lt;/span&gt; | sort -nr | cut -d ¤ -f 2,5  &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# how-to use sftp with remoteUserName having publicIdentity of PublicIdentityUserName&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;sftp -v -o &lt;span class="str"&gt;"IdentityFile /var/www/.ssh-id/PublicIdentityUserName"&lt;/span&gt; -o &lt;span class="str"&gt;"UserKnownHostsFile /var/www/.ssh-id/known_hosts"&lt;/span&gt; remoteUserName@ServerHostNameOrIpd&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# ==================================================================&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# START Jobs control &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# start some very long lasting command &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;find / -name &lt;span class="str"&gt;'*.crt'&lt;/span&gt; | less &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# now press Ctrl + Z &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# the terminal says "Jobs stopped"&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# now check the open jobs &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;jobs&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# you should see something like &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# [1]+  Stopped                 find / -name '*.crt' | less&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# now put the job in the background and start working on something else by Ctrl + Z &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;bg 1&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# run the next command &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# how-to copy file via scp by using specificy identity&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;scp -v -o &lt;span class="str"&gt;"IdentityFile /home/userName/.ssh/id_rsa"&lt;/span&gt; /data/path/dir/* userName@ServerHostName.Domain.com:/Server/Target/Dir/&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# now again stop the job first by Ctrl + Z &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# check again the running jobs &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;jobs &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# use should see the both of the jobs started &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# now put the first on in the forground &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;fg 1&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# Repeat that several times untill you get it ; ) !!!&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# END Jobs control &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# ==================================================================&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# VersionHistory&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# 1.3.0 --- Added jobs control &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# 1.2.0 --- Added system monitoring commands &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# 1.1.1 --- refined du , replaced echo's with #'s&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# 1.0.0 --- Initial creation &lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-2577691086028628557?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/2577691086028628557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/10/linux-unix-cheat-sheet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/2577691086028628557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/2577691086028628557'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/10/linux-unix-cheat-sheet.html' title='Linux / Unix Cheat Sheet'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-2753172746865424795</id><published>2011-10-26T09:33:00.000+03:00</published><updated>2011-10-26T09:33:57.350+03:00</updated><title type='text'>how-to start putty from the command line with pre-saved session</title><content type='html'>:: Start - Run - type cmd /c START  /max putty -load userName@ServerHostName.Domain.comNow if you would like to export your putty settings from PC to PC you could use the following cmd for that  :(Hint: I use to Have the following folder structure C:\Temp\&lt;&lt;userName&gt;&gt;\conf\&lt;&lt;HostName&gt;&gt;\conf\putty ) Now &lt;&lt;UserName&gt;&gt; is var and &lt;&lt;HostName&gt;&gt; is var ... thus you could keep all the PC's settings always with you ; ) &lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre{	font-size: small;	color: black;	font-family: Consolas, "Courier New", Courier, Monospace;	background-color: #ffffff;	/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {	background-color: #f4f4f4;	width: 100%;	margin: 0em;}.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;@ECHO OFF&lt;/pre&gt;&lt;pre&gt;ECHO any comments suggestions are welcome at : &lt;/pre&gt;&lt;pre class="alt"&gt;ECHO http:&lt;span class="rem"&gt;//ysgitdiary.blogspot.com/search/label/Putty&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;ECHO This batch file copies some the needed settings of Putty&lt;/pre&gt;&lt;pre class="alt"&gt;ECHO it depends on a simple GetNiceTime_on_%computername%.cmd &lt;/pre&gt;&lt;pre&gt;ECHO batch file producing the %_NICETIME% variable &lt;span class="kwrd"&gt;in&lt;/span&gt; YYYYMMDD_hhmmss &lt;/pre&gt;&lt;pre class="alt"&gt;ECHO format&lt;/pre&gt;&lt;pre&gt;ECHO Tested on Win7 64 -bit Putty &lt;/pre&gt;&lt;pre class="alt"&gt;ECHO you should call &lt;span class="kwrd"&gt;this&lt;/span&gt; batch file from its current directorry&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;:: GET A YYYYMMDD_hhmmss TIMESTAMP&lt;/pre&gt;&lt;pre&gt;call GetNiceTime_on_%computername%.cmd&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;SET _RegFileWithSettings=PuttySettings_Helios_on_%COMPUTERNAME%_%NiceTime%.reg&lt;/pre&gt;&lt;pre class="alt"&gt;SET _RunLog=%0.run.log&lt;/pre&gt;&lt;pre&gt;SET _ErrorLog=%0.error.log&lt;/pre&gt;&lt;pre class="alt"&gt;::SET _PuttySynFilesDirOnWin64=%ProgramFiles(x86)%\Putty 5\system&lt;/pre&gt;&lt;pre&gt;::SET _PortableSynFilesDir=%CD%\system&lt;/pre&gt;&lt;pre class="alt"&gt;SET _RegistryKey=HKEY_CURRENT_USER\Software\SimonTatham&lt;/pre&gt;&lt;pre&gt;SET _RegistryFilesDir=%CD%\reg&lt;/pre&gt;&lt;pre class="alt"&gt;SET _RegistryFileWithSettings=%_RegistryFilesDir%\PuttySettings_on_%computername%_%NiceTime%.reg&lt;/pre&gt;&lt;pre&gt;SET _LogDir=&lt;span class="str"&gt;"%CD%\log"&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;ECHO START REGISTRY SETTINGS EXPORT AT %_NiceTime%&lt;/pre&gt;&lt;pre&gt;ECHO RUN LOG : START REGISTRY SETTINGS EXPORT AT %_NiceTime%  &amp;gt;%_RunLog%&lt;/pre&gt;&lt;pre class="alt"&gt;ECHO ERROR LOG START REGISTRY SETTINGS EXPORT AT %_NiceTime%  &amp;gt;%_ErrorLog%&lt;/pre&gt;&lt;pre&gt;ECHO.1&amp;gt;&amp;gt;%_RunLog% 2&amp;gt;&amp;gt; %_ErrorLog%&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;ECHO create a directory called sysm &lt;span class="kwrd"&gt;in&lt;/span&gt; the current directory &lt;/pre&gt;&lt;pre class="alt"&gt;ECHO create a directory called sysm &lt;span class="kwrd"&gt;in&lt;/span&gt; the current directory 1&amp;gt;&amp;gt;%_RunLog% 2&amp;gt;&amp;gt; %_ErrorLog% &lt;/pre&gt;&lt;pre&gt;ECHO.1&amp;gt;&amp;gt;%_RunLog% 2&amp;gt;&amp;gt; %_ErrorLog%&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;ECHO now copy alls the files from the %Program Files(x86)%\Putty 5\system\ &lt;/pre&gt;&lt;pre class="alt"&gt;ECHO now copy alls the files from the %Program Files(x86)%\Putty 5\system\ 1&amp;gt;&amp;gt;%_RunLog% 2&amp;gt;&amp;gt; %_ErrorLog%&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;ECHO IF NOT EXIST %_PortableSynFilesDir% MKDIR %_PortableSynFilesDir% 1&amp;gt;&amp;gt;%_RunLog% 2&amp;gt;&amp;gt; %_ErrorLog%&lt;/pre&gt;&lt;pre&gt;:: IF NOT EXIST %_PortableSynFilesDir% MKDIR %_PortableSynFilesDir% 1&amp;gt;&amp;gt;%_RunLog% 2&amp;gt;&amp;gt; %_ErrorLog%&lt;/pre&gt;&lt;pre class="alt"&gt;ECHO.1&amp;gt;&amp;gt;%_RunLog% 2&amp;gt;&amp;gt; %_ErrorLog%&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;ECHO COPY EACH syn files &lt;/pre&gt;&lt;pre&gt;:: &lt;span class="kwrd"&gt;for&lt;/span&gt; /f &lt;span class="str"&gt;"tokens=*"&lt;/span&gt; %%i &lt;span class="kwrd"&gt;in&lt;/span&gt; (&lt;span class="str"&gt;' dir "%_PuttySynFilesDirOnWin64%\*.syn" /s /b'&lt;/span&gt;) &lt;span class="kwrd"&gt;do&lt;/span&gt; copy /y &lt;span class="str"&gt;"%%i"&lt;/span&gt; &lt;span class="str"&gt;"%_PortableSynFilesDir%"&lt;/span&gt; 1&amp;gt;&amp;gt;%_RunLog% 2&amp;gt;&amp;gt; %_ErrorLog%&lt;/pre&gt;&lt;pre class="alt"&gt;ECHO.1&amp;gt;&amp;gt;%_RunLog% 2&amp;gt;&amp;gt; %_ErrorLog%&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;:: CREATE THE _RegistryFilesDir &lt;span class="kwrd"&gt;if&lt;/span&gt; it does not exist &lt;/pre&gt;&lt;pre&gt;ECHO IF NOT EXIST %_RegistryFilesDir% MKDIR %_RegistryFilesDir% 1&amp;gt;&amp;gt;%_RunLog% 2&amp;gt;&amp;gt; %_ErrorLog%&lt;/pre&gt;&lt;pre class="alt"&gt;IF NOT EXIST %_RegistryFilesDir% MKDIR %_RegistryFilesDir% 1&amp;gt;&amp;gt;%_RunLog% 2&amp;gt;&amp;gt; %_ErrorLog%&lt;/pre&gt;&lt;pre&gt;ECHO.1&amp;gt;&amp;gt;%_RunLog% 2&amp;gt;&amp;gt; %_ErrorLog%&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;:: NOW PERFORM THE ACTUAL EXPORT OF THE CURRENT SETTINGS&lt;/pre&gt;&lt;pre class="alt"&gt;ECHO REG EXPORT &lt;span class="str"&gt;"%_RegistryKey%"&lt;/span&gt; &lt;span class="str"&gt;"%_RegistryFileWithSettings%"&lt;/span&gt; 1&amp;gt;&amp;gt;%_RunLog% 2&amp;gt;&amp;gt; %_ErrorLog%&lt;/pre&gt;&lt;pre&gt;REG EXPORT &lt;span class="str"&gt;"%_RegistryKey%"&lt;/span&gt; &lt;span class="str"&gt;"%_RegistryFileWithSettings%"&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;ECHO IF NOT EXIST %_LogDir% MKDIR %_LogDir% 1&amp;gt;&amp;gt;%_RunLog% 2&amp;gt;&amp;gt; %_ErrorLog%&lt;/pre&gt;&lt;pre class="alt"&gt;IF NOT EXIST %_LogDir% MKDIR %_LogDir% 1&amp;gt;&amp;gt;%_RunLog% 2&amp;gt;&amp;gt; %_ErrorLog%&lt;/pre&gt;&lt;pre&gt;ECHO.1&amp;gt;&amp;gt;%_RunLog% 2&amp;gt;&amp;gt; %_ErrorLog%&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;ECHO COPY THE LOG FILES TO THE LOG DIRECTOREY FIRST &lt;/pre&gt;&lt;pre class="alt"&gt;FOR /F %%i &lt;span class="kwrd"&gt;in&lt;/span&gt; (&lt;span class="str"&gt;'dir "%CD%\*.log" /b'&lt;/span&gt;) &lt;span class="kwrd"&gt;do&lt;/span&gt; copy /y &lt;span class="str"&gt;"%%i"&lt;/span&gt; &lt;span class="str"&gt;"%_LogDir%\"&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;:: DEBUG PAUSE&lt;/pre&gt;&lt;pre&gt;:: wait for 3 seconds &lt;/pre&gt;&lt;pre class="alt"&gt;ping localhost -n 3&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;ECHO DONE NOW OPEN THE LOG FILES TO SEE THE RESULTS  :&lt;/pre&gt;&lt;pre&gt;:: if you donät have textpad FOR /F %%i in ('dir "&lt;/span&gt;%CD%\log\*.log&lt;span class="str"&gt;" /s /b') do cmd /c start /max notepad "&lt;/span&gt;%%i&lt;span class="str"&gt;"&lt;/pre&gt;&lt;pre class="alt"&gt;FOR /F %%i in ('dir "&lt;/span&gt;%_LogDir%\*.log&lt;span class="str"&gt;" /s /b') do cmd /c start /max textpad "&lt;/span&gt;%%i&lt;span class="str"&gt;"&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;ECHO NOW DELETE THE ALREADY COPIED LOG FILES FROM THE CURRENT DIR&lt;/pre&gt;&lt;pre class="alt"&gt;FOR /F %%i in ('dir "&lt;/span&gt;%CD%\*.log&lt;span class="str"&gt;" /b') do del  /q "&lt;/span&gt;%%i" &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;:: NOW OPEN TO VIEW THE REGISTRY FILE AS WELL&lt;/pre&gt;&lt;pre class="alt"&gt;:: CMD /C START /MAX notepad %_RegistryFileWithSettings%&lt;/pre&gt;&lt;pre&gt;CMD /C START /MAX textpad %_RegistryFileWithSettings%&lt;/pre&gt;&lt;pre class="alt"&gt;:: HINT: you could execute any dos file including &lt;span class="kwrd"&gt;this&lt;/span&gt; one by creating a &lt;span class="kwrd"&gt;new&lt;/span&gt; external tool&lt;/pre&gt;&lt;pre&gt;:: Command: cmd.exe , Parameters: CMD /C $FileName , Check Prompt &lt;span class="kwrd"&gt;for&lt;/span&gt; parameters &lt;/pre&gt;&lt;pre class="alt"&gt;:: Check Save all documents first , Check Capture output , Check Suppress output untill completed&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-2753172746865424795?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/2753172746865424795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/10/how-to-start-putty-from-command-line.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/2753172746865424795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/2753172746865424795'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/10/how-to-start-putty-from-command-line.html' title='how-to start putty from the command line with pre-saved session'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-8526994482796784945</id><published>2011-10-12T21:46:00.000+03:00</published><updated>2011-10-12T21:46:06.216+03:00</updated><title type='text'>Next gen EV ...</title><content type='html'>&lt;iframe frameborder='0' scrolling='no' align='middle' SRC='http://mediasuite.multicastmedia.com/player.php?v=jov5h3s3'  height='258' width='336' allowtransparency='true'&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-8526994482796784945?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/8526994482796784945/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/10/next-gen-ev.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/8526994482796784945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/8526994482796784945'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/10/next-gen-ev.html' title='Next gen EV ...'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-4194551688598947660</id><published>2011-10-11T22:25:00.001+03:00</published><updated>2011-10-11T22:25:52.168+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programs'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='utilities'/><category scheme='http://www.blogger.com/atom/ns#' term='freeware'/><category scheme='http://www.blogger.com/atom/ns#' term='utils'/><title type='text'></title><content type='html'>&lt;h3 class="post-title entry-title"&gt;Cool programs , utilities and programming environments for Windows, most of which free ( revised )&lt;/h3&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.opera.com/"&gt; Opera - simply the best browser on the planet &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.google.com/chrome?hl=en"&gt; Google Chrome &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.mozilla.com/en-US/firefox/all.html"&gt; Firefox &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://strawberryperl.com/"&gt; strawberry perl for Windows (with dmake for modules ) &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.cygwin.com/"&gt; Cygwin &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb842062"&gt; SysInternals Suite&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.izarc.org/download.html"&gt;izarc - the best zipper &lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx"&gt; Process Explorer - shows resources usage per running process on Windows &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://earth.google.com/intl/en/"&gt; Google Earth &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasa.google.com/"&gt; Picasa - the best free picture viewer , organizer&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.mozilla.com/en-US/thunderbird/all.html"&gt;Mozilla Thunderbird&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.textpad.com/"&gt; Textpad - the best text editor for Windows &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.ssmstoolspack.com/Download.aspx"&gt;smstoolpack - create CRUD for sql server &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://downloads.sourceforge.net/sourceforge/greenshot/Greenshot-0.6.003.zip?use_mirror=mesh"&gt;GreenShot&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.codeplex.com/OpenDBiff"&gt;Open diff - tool for comparing sql server 2005 databases &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.skype.com/intl/en/download/skype/windows/downloading/"&gt; Skype - the best client for Internet and Video Telephony&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://nsis.sourceforge.net/Download"&gt; NSIS - the best open source Windows installer maker &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://nsis.sourceforge.net/Time_plugin"&gt; And the time plugin &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://gears.google.com/download.html?statcb=1"&gt; Gears -- edit online documents offline&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.dvdvideosoft.com/products/dvd/Free-YouTube-to-iPod-Converter.htm"&gt; Free youtube to ipod converter -- get mp4 files easily to your phone &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.filehippo.com/download_defraggler/"&gt; Defragler - Disk Defragment utility &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://draft.blogger.com/post-edit.g?blogID=30804833&amp;amp;postID=7317152296294814188"&gt; DvdDecrypter - the best DVD free ripper &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.imgburn.com/"&gt; ImgBurner - burn ISO images - freeware &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.joejoesoft.com/cms/showpage.php?cid=97"&gt; ArsClip remembers your clibboard stuff - Hint , Ctrl + Shift + Z , 2 &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.iconico.com/colorpic/"&gt; colorpic - Color to hex utility &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.ultrapico.com/ExpressoDownload.htm"&gt; Expresso - a GUI tool for building and verifying Regular Expressions &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.videolan.org/vlc/download-windows.html"&gt; a flv file player &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.python.org/download/"&gt; Python - for cool scripts and programming &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://staruml.sourceforge.net/en/"&gt; STARUML - the best open source UML editor&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://infrarecorder.org/?page_id=5"&gt; Infrarecorder - free CD / DVD burner&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.getpaint.net/download.html"&gt; Paint.Net - freeware image editor &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html"&gt; putty &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://winscp.net/eng/download.php#download2"&gt; winscp &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.nodesoft.com/SearchAndReplace/Default.aspx"&gt; Multiline Search and Replace utility program &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://gears.google.com/"&gt; Google Gears - use Gmail offline &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.google.com/search?client=opera&amp;amp;rls=en&amp;amp;q=HijackThis+download&amp;amp;sourceid=opera&amp;amp;ie=utf-8&amp;amp;oe=utf-8"&gt; HijackThis&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://tortoisesvn.net/downloads"&gt; tortoise svn - a stable gui and command line to subversion for Windows &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.sliksvn.com/en/download"&gt; slik svn - the command line tools for svn for windows &lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://tokiwa.qee.jp/EN/DataRecovery_EN.zip"&gt; Data Recovery - recover Shift + del removed programs &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb897417.aspx"&gt; Windows Sysinternal utilities &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.commandline.co.uk/cmdow/"&gt; Cmdow is a Win32 commandline utility for NT4/2000/XP/2003 that allows windows to be listed, moved, resized, renamed, hidden/unhidden, disabled/enabled, minimized, maximized, restored, activated/inactivated, closed, killed and more.&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://gnuwin32.sourceforge.net/packages/grep.htm"&gt; Grep , FGrep and Egrep for windows (remember the dll's also ) &lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://gnuwin32.sourceforge.net/packages/less.htm"&gt; Less for Windows ( remember the dll's also ) &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.7-zip.org/"&gt; 7-zip&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.risetobloome.com/Page_1_S_NoPadding.aspx?item=530"&gt; Rise Editor - Entity Relationship Diagram tool &lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://get.adobe.com/reader/"&gt; Adobe Acrobat &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.slysoft.com/en/virtual-clonedrive.html"&gt; Virtual Clone Drive - Map ISO files  &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://sliksvn.com/en/download/"&gt; svn client and server &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.stack.nl/~dimitri/doxygen/download.html#latestsrc"&gt; Doxygen - code documentation utility &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://qt.nokia.com/downloads/"&gt; Qt - Nokia's Development Platform &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://dia-installer.de/"&gt; Dia - control flow chars freeware software &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.audiograbber.org/"&gt; AudioGrabber - the best mp3 ripper&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.autohotkey.com/download/"&gt; AutoHotKey - GUI automating &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.fiddler2.com/fiddler2/version.asp"&gt; Fiddler - http sniffer  &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://gnuwin32.sourceforge.net/packages/coreutils.htm"&gt; Windows GNU utils &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.activestate.com/activeperl/downloads" target="a_blank"&gt; Active Perl &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.apple.com/safari/download/"&gt; Safari - &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-4194551688598947660?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/4194551688598947660/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/10/cool-programs-utilities-and-programming.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/4194551688598947660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/4194551688598947660'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/10/cool-programs-utilities-and-programming.html' title=''/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-8063742426396236649</id><published>2011-10-01T22:58:00.000+03:00</published><updated>2011-10-01T22:58:22.645+03:00</updated><title type='text'>Some audience stats ... A like the Google's BI diagrams design ...</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Qkr8rh_eA_E/TodwgK0E7XI/AAAAAAABe6c/r1eUckojChM/s1600/audience_stats.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="296" src="http://2.bp.blogspot.com/-Qkr8rh_eA_E/TodwgK0E7XI/AAAAAAABe6c/r1eUckojChM/s400/audience_stats.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-8063742426396236649?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/8063742426396236649/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/10/some-audience-stats-like-googles-bi.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/8063742426396236649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/8063742426396236649'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/10/some-audience-stats-like-googles-bi.html' title='Some audience stats ... A like the Google&apos;s BI diagrams design ...'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-Qkr8rh_eA_E/TodwgK0E7XI/AAAAAAABe6c/r1eUckojChM/s72-c/audience_stats.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-4023959291605570882</id><published>2011-10-01T22:34:00.000+03:00</published><updated>2011-10-01T22:34:45.307+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sh'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><category scheme='http://www.blogger.com/atom/ns#' term='how-to'/><category scheme='http://www.blogger.com/atom/ns#' term='Cheat Sheet'/><category scheme='http://www.blogger.com/atom/ns#' term='cheatsheet'/><title type='text'>Sh Cheat Sheet</title><content type='html'>&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre{	font-size: small;	color: black;	font-family: Consolas, "Courier New", Courier, Monospace;	background-color: #ffffff;	/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {	background-color: #f4f4f4;	width: 100%;	margin: 0em;}.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;#File:ShCheatSheet.sh v.1.1.0 docs at the end &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#source:http://www.dartmouth.edu/~rc/classes/ksh/index.html#for loop example&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;for&lt;/span&gt; file &lt;span class="kwrd"&gt;in&lt;/span&gt; * ; do echo Processing $file ; done ; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;for&lt;/span&gt; file &lt;span class="kwrd"&gt;in&lt;/span&gt;  `ls -1` ; do echo Processing $file ; done ; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;#if example &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; [ -r $myfile ]&lt;/pre&gt;&lt;pre&gt;then&lt;/pre&gt;&lt;pre class="alt"&gt;   cat $myfile&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;   echo $myfile not readable&lt;/pre&gt;&lt;pre&gt;fi&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#case example &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;case $filename &lt;span class="kwrd"&gt;in&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;*.dat)&lt;/pre&gt;&lt;pre&gt;echo Processing a .dat file&lt;/pre&gt;&lt;pre class="alt"&gt;;;&lt;/pre&gt;&lt;pre&gt;*.sas)&lt;/pre&gt;&lt;pre class="alt"&gt;echo Processing a .sas file&lt;/pre&gt;&lt;pre&gt;;;&lt;/pre&gt;&lt;pre class="alt"&gt;*)&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# catch anything else that doesn't match patterns&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;echo &lt;span class="str"&gt;"Don't know how to deal with $filename"&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;;;&lt;/pre&gt;&lt;pre class="alt"&gt;esac&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;*&lt;/pre&gt;&lt;pre class="alt"&gt;Matches any zero or more characters. &lt;/pre&gt;&lt;pre&gt;?&lt;/pre&gt;&lt;pre class="alt"&gt;Matches any one character. &lt;/pre&gt;&lt;pre&gt;[string]&lt;/pre&gt;&lt;pre class="alt"&gt;Matches exactly one character that is a member of the string string. This is called a character class. As a shorthand, string may contain ranges, which consist of two characters with a dash between them. For example, the class ‘[a-z0-9_]’ matches a lowercase letter, a number, or an underscore. You can negate a class by placing a ‘!’ or ‘^’ immediately after the opening bracket. Thus, ‘[^A-Z@]’ matches any character except an uppercase letter or an at sign. &lt;/pre&gt;&lt;pre&gt;\&lt;/pre&gt;&lt;pre class="alt"&gt;Removes the special meaning of the character that follows it. This works even &lt;span class="kwrd"&gt;in&lt;/span&gt; character classes.&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# while example &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;count=0&lt;/pre&gt;&lt;pre class="alt"&gt;max=10&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;while&lt;/span&gt; [[ $count &lt;span class="preproc"&gt;-lt&lt;/span&gt; $max ]] ; do &lt;/pre&gt;&lt;pre class="alt"&gt;  echo $count ; &lt;/pre&gt;&lt;pre&gt;  count=$((count + 1)) ; &lt;/pre&gt;&lt;pre class="alt"&gt;done ; &lt;/pre&gt;&lt;pre&gt;echo &lt;span class="str"&gt;"Value of count after loop is: $count"&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;wlog(){&lt;/pre&gt;&lt;pre class="alt"&gt;        echo &lt;span class="str"&gt;"`date +%Y.%m.%d-%H:%M:%S` [$$] $*"&lt;/span&gt; &amp;gt;&amp;gt; $LOGFILE&lt;/pre&gt;&lt;pre&gt;        test -t 1 &amp;amp;&amp;amp; echo &lt;span class="str"&gt;"$*"&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;}&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;send_mail(){&lt;/pre&gt;&lt;pre&gt;        &lt;span class="rem"&gt;# $1 = subject&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="rem"&gt;# $* = recipients&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="rem"&gt;# - = text&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;        test -z &lt;span class="str"&gt;"$2"&lt;/span&gt; &amp;amp;&amp;amp; {&lt;/pre&gt;&lt;pre&gt;                wlog &lt;span class="str"&gt;"NOTICE: no mail recipients"&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;                &lt;span class="kwrd"&gt;return&lt;/span&gt; 0&lt;/pre&gt;&lt;pre&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;        _sm_s=&lt;span class="str"&gt;"$1"&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;        shift 1&lt;/pre&gt;&lt;pre class="alt"&gt;        mailx -s &lt;span class="str"&gt;"$_sm_s"&lt;/span&gt; $* || {&lt;/pre&gt;&lt;pre&gt;                wlog &lt;span class="str"&gt;"ERROR: Failed to send mail to $*"&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;                &lt;span class="kwrd"&gt;return&lt;/span&gt; 1&lt;/pre&gt;&lt;pre&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; 0&lt;/pre&gt;&lt;pre&gt;}&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#get a nice date&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;`date +%Y%m%d%H%M%S`&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;outgoing_dirs=`find $ROOTDIR -type d -name &lt;span class="str"&gt;'outgoing'&lt;/span&gt;`&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;for&lt;/span&gt; odir &lt;span class="kwrd"&gt;in&lt;/span&gt; $outgoing_dirs&lt;/pre&gt;&lt;pre&gt;do&lt;/pre&gt;&lt;pre class="alt"&gt;        test -d &lt;span class="str"&gt;"$odir"&lt;/span&gt; || &lt;span class="kwrd"&gt;continue&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;        find $odir -type f -mtime $MAXAGE -print0 | xargs --null -r $debug rm&lt;/pre&gt;&lt;pre class="alt"&gt;done&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;#The ultimate find in files &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;DirToSearch=/var/log/&lt;/pre&gt;&lt;pre class="alt"&gt;FilesToSearch=`ls -rt $DirToSearch`&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;for&lt;/span&gt; file &lt;span class="kwrd"&gt;in&lt;/span&gt; $FilesToSearch&lt;/pre&gt;&lt;pre class="alt"&gt;do&lt;/pre&gt;&lt;pre&gt;        file=$DirToSearch/$file&lt;/pre&gt;&lt;pre class="alt"&gt;        test -f &lt;span class="str"&gt;"$file"&lt;/span&gt; || &lt;span class="kwrd"&gt;continue&lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;        grep -nH &lt;span class="str"&gt;'sekauppi'&lt;/span&gt; $file  &lt;/pre&gt;&lt;pre class="alt"&gt;done&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;find $DirToSearch -type f -exec grep -nH &lt;span class="str"&gt;'yogeorgi'&lt;/span&gt; {} \; | less &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;today=`date +%Y%m%d`&lt;/pre&gt;&lt;pre class="alt"&gt;yesterday=`date --date yesterday +%Y%m%d`&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;Help(){&lt;/pre&gt;&lt;pre&gt;        cat&amp;lt;&amp;lt;EOF&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;`basename $0` [-t filetype] [-f srcfile] [-o outfile] [-D outdir]&lt;/pre&gt;&lt;pre class="alt"&gt;        [-u owner] [-g group] [-U srcurl] [-d day -d day2 ...]&lt;/pre&gt;&lt;pre&gt;        [-F] [-b daysback]&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;        filetype:       {userlist | auditlog}&lt;/pre&gt;&lt;pre class="alt"&gt;        user:           $channel_user&lt;/pre&gt;&lt;pre&gt;        srcurl:         $BASE_URL&lt;/pre&gt;&lt;pre class="alt"&gt;        daysback:       $DAYS_BACK&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;        -F to force download even &lt;span class="kwrd"&gt;if&lt;/span&gt; file was downloaded already&lt;/pre&gt;&lt;pre&gt;EOF&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#Purpose: &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# Provide an easy copy paste resource for sh programming&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# VersionHistory: &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# 1.1.0 --- ysg --- Updated docs , published &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;# 1.0.0 --- ysg --- Initial version , see main source &lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-4023959291605570882?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/4023959291605570882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/10/sh-cheat-sheet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/4023959291605570882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/4023959291605570882'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/10/sh-cheat-sheet.html' title='Sh Cheat Sheet'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-1691895298567014581</id><published>2011-10-01T22:25:00.000+03:00</published><updated>2011-10-01T22:25:03.100+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='Cheat Sheet'/><category scheme='http://www.blogger.com/atom/ns#' term='cheatsheet'/><title type='text'>mysql cheat sheet</title><content type='html'>&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre{	font-size: small;	color: black;	font-family: Consolas, "Courier New", Courier, Monospace;	background-color: #ffffff;	/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {	background-color: #f4f4f4;	width: 100%;	margin: 0em;}.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;-- File:MySqlCheatSheet.sql v.1.1.0 docs at the end &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;/* [mysql dir] */&lt;/pre&gt;&lt;pre&gt;/bin/mysql -h hostname -u root -p &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;mysql -u userName -p  -D DbName -B -e "&lt;span class="kwrd"&gt;select&lt;/span&gt; * &lt;span class="kwrd"&gt;from&lt;/span&gt; users;"   &amp;gt; /home/yogeorgi/tmp/list.csv ;&lt;/pre&gt;&lt;pre class="alt"&gt;mysql -u userName -p  -D information_schema -B -e "&lt;span class="kwrd"&gt;select&lt;/span&gt; columns &lt;span class="kwrd"&gt;from&lt;/span&gt; columns;"   &amp;gt; /home/yogeorgi/tmp/list.csv ;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;-- Batch mode (feeding in a script): &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;mysql -u &lt;span class="kwrd"&gt;user&lt;/span&gt; -p &amp;lt; batch_file&lt;/pre&gt;&lt;pre class="alt"&gt;/* (&lt;span class="kwrd"&gt;Use&lt;/span&gt; -t &lt;span class="kwrd"&gt;for&lt;/span&gt; nice &lt;span class="kwrd"&gt;table&lt;/span&gt; layout &lt;span class="kwrd"&gt;and&lt;/span&gt; -vvv &lt;span class="kwrd"&gt;for&lt;/span&gt; command echoing.) */&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;-- Alternatively: &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;source batch_file;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;-- List all databases on the mysql server. &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;show databases;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;/* Switch &lt;span class="kwrd"&gt;to&lt;/span&gt; a &lt;span class="kwrd"&gt;database&lt;/span&gt;. */&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;use&lt;/span&gt; [db name];&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;-- get all the tables in the currently selected database &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;show tables;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;-- get the table's fields format &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;describe&lt;/span&gt; [TableName];&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;-- to remove a db&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;drop&lt;/span&gt; &lt;span class="kwrd"&gt;database&lt;/span&gt; [&lt;span class="kwrd"&gt;database&lt;/span&gt; name];&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;-- to drop a table &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;drop&lt;/span&gt; &lt;span class="kwrd"&gt;table&lt;/span&gt; [TableName];&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;/* Show &lt;span class="kwrd"&gt;all&lt;/span&gt; &lt;span class="kwrd"&gt;data&lt;/span&gt; &lt;span class="kwrd"&gt;in&lt;/span&gt; a &lt;span class="kwrd"&gt;table&lt;/span&gt;. */&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; * &lt;span class="kwrd"&gt;FROM&lt;/span&gt; [TableName];&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;/* &lt;span class="kwrd"&gt;Returns&lt;/span&gt; the columns &lt;span class="kwrd"&gt;and&lt;/span&gt; &lt;span class="kwrd"&gt;column&lt;/span&gt; information pertaining &lt;span class="kwrd"&gt;to&lt;/span&gt; the designated &lt;span class="kwrd"&gt;table&lt;/span&gt;.  */&lt;/pre&gt;&lt;pre&gt;show columns &lt;span class="kwrd"&gt;from&lt;/span&gt; [TableName];&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;/* Show certain selected &lt;span class="kwrd"&gt;rows&lt;/span&gt; &lt;span class="kwrd"&gt;with&lt;/span&gt; the &lt;span class="kwrd"&gt;value&lt;/span&gt; "whatever". */&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; * &lt;span class="kwrd"&gt;FROM&lt;/span&gt; [TableName] &lt;span class="kwrd"&gt;WHERE&lt;/span&gt; [field name] = "whatever";&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;/* Show &lt;span class="kwrd"&gt;all&lt;/span&gt; records containing the name "Bob" &lt;span class="kwrd"&gt;AND&lt;/span&gt; the phone number &lt;span class="str"&gt;'3444444'&lt;/span&gt;.  */&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; * &lt;span class="kwrd"&gt;FROM&lt;/span&gt; [TableName] &lt;span class="kwrd"&gt;WHERE&lt;/span&gt; name = "Bob" &lt;span class="kwrd"&gt;AND&lt;/span&gt; phone_number = &lt;span class="str"&gt;'3444444'&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;/* Show &lt;span class="kwrd"&gt;all&lt;/span&gt; records &lt;span class="kwrd"&gt;not&lt;/span&gt; containing the name "Bob" &lt;span class="kwrd"&gt;AND&lt;/span&gt; the phone number &lt;span class="str"&gt;'3444444'&lt;/span&gt; &lt;span class="kwrd"&gt;order&lt;/span&gt; &lt;span class="kwrd"&gt;by&lt;/span&gt; the phone_number field.  */&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; * &lt;span class="kwrd"&gt;FROM&lt;/span&gt; [TableName] &lt;span class="kwrd"&gt;WHERE&lt;/span&gt; name != "Bob" &lt;span class="kwrd"&gt;AND&lt;/span&gt; phone_number = &lt;span class="str"&gt;'3444444'&lt;/span&gt; &lt;span class="kwrd"&gt;order&lt;/span&gt; &lt;span class="kwrd"&gt;by&lt;/span&gt; phone_number;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;/* Show &lt;span class="kwrd"&gt;all&lt;/span&gt; records starting &lt;span class="kwrd"&gt;with&lt;/span&gt; the letters &lt;span class="str"&gt;'bob'&lt;/span&gt; &lt;span class="kwrd"&gt;AND&lt;/span&gt; the phone number &lt;span class="str"&gt;'3444444'&lt;/span&gt;.  */&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; * &lt;span class="kwrd"&gt;FROM&lt;/span&gt; [TableName] &lt;span class="kwrd"&gt;WHERE&lt;/span&gt; name &lt;span class="kwrd"&gt;like&lt;/span&gt; "Bob%" &lt;span class="kwrd"&gt;AND&lt;/span&gt; phone_number = &lt;span class="str"&gt;'3444444'&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;-- Use a regular expression to find records. Use "REGEXP BINARY" to force case-sensitivity. &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;-- This finds any record beginning with a. &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; * &lt;span class="kwrd"&gt;FROM&lt;/span&gt; [TableName] &lt;span class="kwrd"&gt;WHERE&lt;/span&gt; rec RLIKE "^a$";&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;-- how-to show only unique records. &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; &lt;span class="kwrd"&gt;DISTINCT&lt;/span&gt; [&lt;span class="kwrd"&gt;column&lt;/span&gt; name] &lt;span class="kwrd"&gt;FROM&lt;/span&gt; [TableName];&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;/* Show selected records sorted &lt;span class="kwrd"&gt;in&lt;/span&gt; an ascending (&lt;span class="kwrd"&gt;asc&lt;/span&gt;) &lt;span class="kwrd"&gt;or&lt;/span&gt; descending (&lt;span class="kwrd"&gt;desc&lt;/span&gt;).  */&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; [col1],[col2] &lt;span class="kwrd"&gt;FROM&lt;/span&gt; [TableName] &lt;span class="kwrd"&gt;ORDER&lt;/span&gt; &lt;span class="kwrd"&gt;BY&lt;/span&gt; [col2] &lt;span class="kwrd"&gt;DESC&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;/* &lt;span class="kwrd"&gt;Return&lt;/span&gt; number &lt;span class="kwrd"&gt;of&lt;/span&gt; &lt;span class="kwrd"&gt;rows&lt;/span&gt;. */&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; &lt;span class="kwrd"&gt;COUNT&lt;/span&gt;(*) &lt;span class="kwrd"&gt;FROM&lt;/span&gt; [TableName];&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;/* &lt;span class="kwrd"&gt;Sum&lt;/span&gt; &lt;span class="kwrd"&gt;column&lt;/span&gt;. */&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; &lt;span class="kwrd"&gt;SUM&lt;/span&gt;(*) &lt;span class="kwrd"&gt;FROM&lt;/span&gt; [TableName];&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;/* &lt;span class="kwrd"&gt;Join&lt;/span&gt; tables &lt;span class="kwrd"&gt;on&lt;/span&gt; common columns.  */&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;select&lt;/span&gt; lookup.illustrationid, lookup.personid,person.birthday &lt;span class="kwrd"&gt;from&lt;/span&gt; lookup&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;left&lt;/span&gt; &lt;span class="kwrd"&gt;join&lt;/span&gt; person &lt;span class="kwrd"&gt;on&lt;/span&gt; lookup.personid=person.personid=&lt;span class="kwrd"&gt;statement&lt;/span&gt; &lt;span class="kwrd"&gt;to&lt;/span&gt; &lt;span class="kwrd"&gt;join&lt;/span&gt; birthday &lt;span class="kwrd"&gt;in&lt;/span&gt; person &lt;span class="kwrd"&gt;table&lt;/span&gt; &lt;span class="kwrd"&gt;with&lt;/span&gt; &lt;span class="kwrd"&gt;primary&lt;/span&gt; illustration id;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;/* Switch &lt;span class="kwrd"&gt;to&lt;/span&gt; the mysql db. &lt;span class="kwrd"&gt;Create&lt;/span&gt; a &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;user&lt;/span&gt;.  */&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;INSERT&lt;/span&gt; &lt;span class="kwrd"&gt;INTO&lt;/span&gt; [TableName] (&lt;span class="kwrd"&gt;Host&lt;/span&gt;,&lt;span class="kwrd"&gt;User&lt;/span&gt;,Password) &lt;span class="kwrd"&gt;VALUES&lt;/span&gt;(&lt;span class="str"&gt;'%'&lt;/span&gt;,&lt;span class="str"&gt;'user'&lt;/span&gt;,PASSWORD(&lt;span class="str"&gt;'password'&lt;/span&gt;));&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;-- Change a users password.(from unix shell). &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;[mysql dir]/bin/mysqladmin -u root -h  hostname.blah.org -p password &lt;span class="str"&gt;'new-password'&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;-- Change a users password.(from MySQL prompt).&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;SET&lt;/span&gt; PASSWORD &lt;span class="kwrd"&gt;FOR&lt;/span&gt; &lt;span class="str"&gt;'user'&lt;/span&gt;@&lt;span class="str"&gt;'hostname'&lt;/span&gt; = PASSWORD(&lt;span class="str"&gt;'passwordhere'&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;/* Allow the &lt;span class="kwrd"&gt;user&lt;/span&gt; "bob" &lt;span class="kwrd"&gt;to&lt;/span&gt; &lt;span class="kwrd"&gt;connect&lt;/span&gt; &lt;span class="kwrd"&gt;to&lt;/span&gt; the server &lt;span class="kwrd"&gt;from&lt;/span&gt; localhost &lt;span class="kwrd"&gt;using&lt;/span&gt; the password "passwd"  */&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;grant&lt;/span&gt; &lt;span class="kwrd"&gt;usage&lt;/span&gt; &lt;span class="kwrd"&gt;on&lt;/span&gt; *.* &lt;span class="kwrd"&gt;to&lt;/span&gt; bob@localhost identified &lt;span class="kwrd"&gt;by&lt;/span&gt; &lt;span class="str"&gt;'passwd'&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;/* Switch &lt;span class="kwrd"&gt;to&lt;/span&gt; mysql db.Give &lt;span class="kwrd"&gt;user&lt;/span&gt; privilages &lt;span class="kwrd"&gt;for&lt;/span&gt; a db. */&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;INSERT&lt;/span&gt; &lt;span class="kwrd"&gt;INTO&lt;/span&gt; [TableName] (&lt;span class="kwrd"&gt;Host&lt;/span&gt;,Db,&lt;span class="kwrd"&gt;User&lt;/span&gt;,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv) &lt;span class="kwrd"&gt;VALUES&lt;/span&gt; (&lt;span class="str"&gt;'%'&lt;/span&gt;,&lt;span class="str"&gt;'databasename'&lt;/span&gt;,&lt;span class="str"&gt;'username'&lt;/span&gt;,&lt;span class="str"&gt;'Y'&lt;/span&gt;,&lt;span class="str"&gt;'Y'&lt;/span&gt;,&lt;span class="str"&gt;'Y'&lt;/span&gt;,&lt;span class="str"&gt;'Y'&lt;/span&gt;,&lt;span class="str"&gt;'Y'&lt;/span&gt;,&lt;span class="str"&gt;'N'&lt;/span&gt;); &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;/* &lt;span class="kwrd"&gt;OR&lt;/span&gt;  */&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;grant&lt;/span&gt; &lt;span class="kwrd"&gt;all&lt;/span&gt; &lt;span class="kwrd"&gt;privileges&lt;/span&gt; &lt;span class="kwrd"&gt;on&lt;/span&gt; databasename.* &lt;span class="kwrd"&gt;to&lt;/span&gt; username@localhost;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;/* &lt;span class="kwrd"&gt;To&lt;/span&gt; &lt;span class="kwrd"&gt;update&lt;/span&gt; info already &lt;span class="kwrd"&gt;in&lt;/span&gt; a &lt;span class="kwrd"&gt;table&lt;/span&gt;. */&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;UPDATE&lt;/span&gt; [TableName] &lt;span class="kwrd"&gt;SET&lt;/span&gt; Select_priv = &lt;span class="str"&gt;'Y'&lt;/span&gt;,Insert_priv = &lt;span class="str"&gt;'Y'&lt;/span&gt;,Update_priv = &lt;span class="str"&gt;'Y'&lt;/span&gt; &lt;span class="kwrd"&gt;where&lt;/span&gt; [field name] = &lt;span class="str"&gt;'user'&lt;/span&gt;; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;/* ADelete a &lt;span class="kwrd"&gt;row&lt;/span&gt;(s) &lt;span class="kwrd"&gt;from&lt;/span&gt; a &lt;span class="kwrd"&gt;table&lt;/span&gt;. */&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;DELETE&lt;/span&gt; &lt;span class="kwrd"&gt;from&lt;/span&gt; [TableName] &lt;span class="kwrd"&gt;where&lt;/span&gt; [field name] = &lt;span class="str"&gt;'whatever'&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;-- how-to Update database permissions/privilages. &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;FLUSH &lt;span class="kwrd"&gt;PRIVILEGES&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;-- how-to delete a column&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;alter&lt;/span&gt; &lt;span class="kwrd"&gt;table&lt;/span&gt; [TableName] &lt;span class="kwrd"&gt;drop&lt;/span&gt; &lt;span class="kwrd"&gt;column&lt;/span&gt; [&lt;span class="kwrd"&gt;column&lt;/span&gt; name]; &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;-- how-to add a new column to table &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;alter&lt;/span&gt; &lt;span class="kwrd"&gt;table&lt;/span&gt; [TableName] &lt;span class="kwrd"&gt;add&lt;/span&gt; &lt;span class="kwrd"&gt;column&lt;/span&gt; [&lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;column&lt;/span&gt; name] &lt;span class="kwrd"&gt;varchar&lt;/span&gt; (20);&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;-- how-to change a column name in a table &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;alter&lt;/span&gt; &lt;span class="kwrd"&gt;table&lt;/span&gt; [TableName] change [&lt;span class="kwrd"&gt;old&lt;/span&gt; &lt;span class="kwrd"&gt;column&lt;/span&gt; name] [&lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;column&lt;/span&gt; name] &lt;span class="kwrd"&gt;varchar&lt;/span&gt; (50);&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;-- Make a unique column so you get no dupes.  &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;alter&lt;/span&gt; &lt;span class="kwrd"&gt;table&lt;/span&gt; [TableName] &lt;span class="kwrd"&gt;add&lt;/span&gt; &lt;span class="kwrd"&gt;unique&lt;/span&gt; ([&lt;span class="kwrd"&gt;column&lt;/span&gt; name]); &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;-- Make a column bigger&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;alter&lt;/span&gt; &lt;span class="kwrd"&gt;table&lt;/span&gt; [TableName] &lt;span class="kwrd"&gt;modify&lt;/span&gt; [&lt;span class="kwrd"&gt;column&lt;/span&gt; name] &lt;span class="kwrd"&gt;VARCHAR&lt;/span&gt;(3);&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;-- Delete unique from table. &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;alter&lt;/span&gt; &lt;span class="kwrd"&gt;table&lt;/span&gt; [TableName] &lt;span class="kwrd"&gt;drop&lt;/span&gt; &lt;span class="kwrd"&gt;index&lt;/span&gt; [colmn name]; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;--how-&lt;span class="kwrd"&gt;to&lt;/span&gt; &lt;span class="kwrd"&gt;load&lt;/span&gt; a CSV &lt;span class="kwrd"&gt;file&lt;/span&gt; &lt;span class="kwrd"&gt;into&lt;/span&gt; a &lt;span class="kwrd"&gt;table&lt;/span&gt;.&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;LOAD&lt;/span&gt; &lt;span class="kwrd"&gt;DATA&lt;/span&gt; INFILE &lt;span class="str"&gt;'/tmp/filename.csv'&lt;/span&gt; replace &lt;span class="kwrd"&gt;INTO&lt;/span&gt; &lt;span class="kwrd"&gt;TABLE&lt;/span&gt; [TableName] FIELDS TERMINATED &lt;span class="kwrd"&gt;BY&lt;/span&gt; &lt;span class="str"&gt;','&lt;/span&gt; LINES TERMINATED &lt;span class="kwrd"&gt;BY&lt;/span&gt; &lt;span class="str"&gt;'\n'&lt;/span&gt; (field1,field2,field3);&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;/* &lt;span class="kwrd"&gt;Dump&lt;/span&gt; &lt;span class="kwrd"&gt;all&lt;/span&gt; databases &lt;span class="kwrd"&gt;for&lt;/span&gt; &lt;span class="kwrd"&gt;backup&lt;/span&gt;. &lt;span class="kwrd"&gt;Backup&lt;/span&gt; &lt;span class="kwrd"&gt;file&lt;/span&gt; &lt;span class="kwrd"&gt;is&lt;/span&gt; &lt;span class="kwrd"&gt;sql&lt;/span&gt; commands &lt;span class="kwrd"&gt;to&lt;/span&gt; recreate &lt;span class="kwrd"&gt;all&lt;/span&gt; db&lt;span class="str"&gt;'s.  */&lt;/pre&gt;&lt;pre class="alt"&gt;[mysql dir]/bin/mysqldump -u root -ppassword --opt &amp;gt;/tmp/alldatabases.sql&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;-- Dump one database for backup. &lt;/pre&gt;&lt;pre&gt;[mysql dir]/bin/mysqldump -u username -ppassword --databases databasename &amp;gt;/tmp/databasename.sql &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;-- Dump a table from a database&lt;/pre&gt;&lt;pre class="alt"&gt;[mysql dir]/bin/mysqldump -c -u username -ppassword databasename tablename &amp;gt; /tmp/databasename.tablename.sql&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;-- Restore database (or database table) from backup. &lt;/pre&gt;&lt;pre&gt;[mysql dir]/bin/mysql -u username -ppassword databasename &amp;lt; /tmp/databasename.sql &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;/* Create Table Example 1. */&lt;/pre&gt;&lt;pre class="alt"&gt;CREATE TABLE [TableName] (&lt;/pre&gt;&lt;pre&gt;  FirstName                 VARCHAR(20)&lt;/pre&gt;&lt;pre class="alt"&gt;, MiddleName             VARCHAR(3)&lt;/pre&gt;&lt;pre&gt;, LastName                 VARCHAR(35)&lt;/pre&gt;&lt;pre class="alt"&gt;, Suffix                     VARCHAR(3)&lt;/pre&gt;&lt;pre&gt;, OffficeId                     VARCHAR(10)&lt;/pre&gt;&lt;pre class="alt"&gt;, UserId                     VARCHAR(15)&lt;/pre&gt;&lt;pre&gt;, UserName             VARCHAR(8)&lt;/pre&gt;&lt;pre class="alt"&gt;, Email                     VARCHAR(35)&lt;/pre&gt;&lt;pre&gt;, Phone                     VARCHAR(25)&lt;/pre&gt;&lt;pre class="alt"&gt;, Groups                     VARCHAR(15)&lt;/pre&gt;&lt;pre&gt;, DateStamp             DATE&lt;/pre&gt;&lt;pre class="alt"&gt;, TimeStamp             time&lt;/pre&gt;&lt;pre&gt;, PgpEmail                 VARCHAR(255)&lt;/pre&gt;&lt;pre class="alt"&gt;); &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;-- Create Table Example 2. &lt;/pre&gt;&lt;pre&gt;create table [TableName] (&lt;/pre&gt;&lt;pre class="alt"&gt;   personid int(50) not null auto_increment primary key&lt;/pre&gt;&lt;pre&gt; , firstname varchar(35)&lt;/pre&gt;&lt;pre class="alt"&gt; , middlename varchar(50)&lt;/pre&gt;&lt;pre&gt; , lastnamevarchar(50) default '&lt;/span&gt;bato&lt;span class="str"&gt;'&lt;/pre&gt;&lt;pre class="alt"&gt;);&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;-- Inserting one row at a time: &lt;/pre&gt;&lt;pre class="alt"&gt;INSERT INTO table_name VALUES ('&lt;/span&gt;MyName&lt;span class="str"&gt;', '&lt;/span&gt;MyOwner&lt;span class="str"&gt;', '&lt;/span&gt;2002-08-31&lt;span class="str"&gt;');&lt;/pre&gt;&lt;pre&gt;(Use NULL for NULL)&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;-- Retrieving information (general):&lt;/pre&gt;&lt;pre class="alt"&gt;SELECT from_columns FROM table WHERE conditions;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;-- All values:  &lt;/pre&gt;&lt;pre&gt;SELECT * FROM table;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;-- Some values:  &lt;/pre&gt;&lt;pre class="alt"&gt;SELECT * FROM table WHERE rec_name = "value";&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;-- Multiple critera: &lt;/pre&gt;&lt;pre&gt;SELECT * FROM TABLE WHERE rec1 = "value1" AND rec2 = "value2";&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;-- Reloading a new data set into existing table:&lt;/pre&gt;&lt;pre class="alt"&gt;SET AUTOCOMMIT=1; # used for quick recreation of table&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;DELETE FROM pet;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;LOAD DATA LOCAL INFILE "infile.txt" INTO TABLE table;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;-- Fixing all records with a certain value:&lt;/pre&gt;&lt;pre&gt;UPDATE table SET column_name = "new_value" WHERE record_name = "value";&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;-- Selecting specific columns:&lt;/pre&gt;&lt;pre class="alt"&gt;SELECT column_name FROM table;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;-- Retrieving unique output records:&lt;/pre&gt;&lt;pre&gt;SELECT DISTINCT column_name FROM table;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;-- Sorting:&lt;/pre&gt;&lt;pre class="alt"&gt;SELECT col1, col2 FROM table ORDER BY col2;&lt;/pre&gt;&lt;pre&gt;Backwards: SELECT col1, col2 FROM table ORDER BY col2 DESC;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;--Date calculations:&lt;/pre&gt;&lt;pre class="alt"&gt;SELECT CURRENT_DATE, (YEAR(CURRENT_DATE)-YEAR(date_col)) AS time_diff [FROM table];&lt;/pre&gt;&lt;pre&gt;MONTH(some_date) extracts the month value and DAYOFMONTH() extracts day.&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;-- Pattern Matching:&lt;/pre&gt;&lt;pre class="alt"&gt;SELECT * FROM table WHERE rec LIKE "blah%";&lt;/pre&gt;&lt;pre&gt;(% is wildcard - arbitrary # of chars)&lt;/pre&gt;&lt;pre class="alt"&gt;Find 5-char values: SELECT * FROM table WHERE rec like "_____";&lt;/pre&gt;&lt;pre&gt;(_ is any single character)&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;-- Extended Regular Expression Matching:&lt;/pre&gt;&lt;pre class="alt"&gt;SELECT * FROM table WHERE rec RLIKE "^b$";&lt;/pre&gt;&lt;pre&gt;(. for char, [...] for char class, * for 0 or more instances&lt;/pre&gt;&lt;pre class="alt"&gt;^ for beginning, {n} for repeat n times, and $ for end)&lt;/pre&gt;&lt;pre&gt;(RLIKE or REGEXP)&lt;/pre&gt;&lt;pre class="alt"&gt;To force case-sensitivity, use "REGEXP BINARY"&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;-- Grouping with Counting:&lt;/pre&gt;&lt;pre class="alt"&gt;SELECT owner, COUNT(*) FROM table GROUP BY owner;&lt;/pre&gt;&lt;pre&gt;(GROUP BY groups together all records for each '&lt;/span&gt;owner&lt;span class="str"&gt;')&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;-- Selecting from multiple tables:&lt;/pre&gt;&lt;pre class="alt"&gt;SELECT pet.name, comment FROM pet, event WHERE pet.name = event.name;&lt;/pre&gt;&lt;pre&gt;(You can join a table to itself to compare by using '&lt;/span&gt;&lt;span class="kwrd"&gt;AS&lt;/span&gt;&lt;span class="str"&gt;')&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;-- Currently selected database:&lt;/pre&gt;&lt;pre class="alt"&gt;SELECT DATABASE();&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;-- Maximum value:&lt;/pre&gt;&lt;pre&gt;SELECT MAX(col_name) AS label FROM table;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;-- Auto-incrementing rows:&lt;/pre&gt;&lt;pre class="alt"&gt;CREATE TABLE table (number INT NOT NULL AUTO_INCREMENT, name CHAR(10) NOT NULL);&lt;/pre&gt;&lt;pre&gt;INSERT INTO tabe (name) VALUES ("tom"),("dick"),("harry");&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;-- Adding a column to an already-created table:&lt;/pre&gt;&lt;pre class="alt"&gt;ALTER TABLE tbl ADD COLUMN [column_create syntax] AFTER col_name;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;-- Removing a column:&lt;/pre&gt;&lt;pre&gt;ALTER TABLE tbl DROP COLUMN col;&lt;/pre&gt;&lt;pre class="alt"&gt;(Full ALTER TABLE syntax available at mysql.com.)&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;-- Create a database on the sql server. */&lt;/pre&gt;&lt;pre&gt;create database [databasename];&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;-- Backing up a database with mysqldump:&lt;/pre&gt;&lt;pre class="alt"&gt;# mysqldump --opt -u username -p database &amp;gt; database_backup.sql&lt;/pre&gt;&lt;pre&gt;(Use '&lt;/span&gt;mysqldump --opt --&lt;span class="kwrd"&gt;all&lt;/span&gt;-databases &amp;gt; all_backup.&lt;span class="kwrd"&gt;sql&lt;/span&gt;&lt;span class="str"&gt;' to backup everything.)&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;-- how-to export to csv the db'&lt;/span&gt;s metadata &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;use&lt;/span&gt; information_schema ; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;SELECT&lt;/span&gt;     TABLE_CATALOG  , TABLE_SCHEMA  , TABLE_NAME  , COLUMN_NAME  , ORDINAL_POSITION  , COLUMN_DEFAULT  , IS_NULLABLE  , DATA_TYPE  , CHARACTER_MAXIMUM_LENGTH  , CHARACTER_OCTET_LENGTH  , NUMERIC_PRECISION  , NUMERIC_SCALE  , CHARACTER_SET_NAME  , COLLATION_NAME  , COLUMN_TYPE  , COLUMN_KEY  , EXTRA  , &lt;span class="kwrd"&gt;PRIVILEGES&lt;/span&gt;  , COLUMN_COMMENT&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;INTO&lt;/span&gt; OUTFILE &lt;span class="str"&gt;'/var/lib/mysql/information_schema.csv'&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;FIELDS TERMINATED &lt;span class="kwrd"&gt;BY&lt;/span&gt; &lt;span class="str"&gt;'\t'&lt;/span&gt; OPTIONALLY ENCLOSED &lt;span class="kwrd"&gt;BY&lt;/span&gt; &lt;span class="str"&gt;' '&lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;LINES TERMINATED &lt;span class="kwrd"&gt;BY&lt;/span&gt; &lt;span class="str"&gt;'\n'&lt;/span&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;from&lt;/span&gt; COLUMNS; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;-- Purpose: &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;-- This is a list of handy MySQL commands that I use time and time again. &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;-- At the bottom are statements, clauses, and functions you can use in &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;-- To login (from unix shell) use -h only if needed. &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;-- Shamelessly stolen from Internet and forgot to mention the sources ... &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;-- VersionHistory&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;-- 1.1.0 --- ysg --- docs, formatting &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;-- 1.0.0 --- ysg --- Hard copy paste &lt;span class="kwrd"&gt;from&lt;/span&gt; Internet ... &lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-1691895298567014581?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/1691895298567014581/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/10/mysql-cheat-sheet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/1691895298567014581'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/1691895298567014581'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/10/mysql-cheat-sheet.html' title='mysql cheat sheet'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total><georss:featurename>Helsinki, Finland</georss:featurename><georss:point>60.1698125 24.9382401</georss:point><georss:box>59.9170605 24.306526100000003 60.4225645 25.5699541</georss:box></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-4479434100881374171</id><published>2011-10-01T21:38:00.000+03:00</published><updated>2011-10-01T21:38:42.892+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='registry'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Cheat Sheet'/><title type='text'>win registry cheat sheet</title><content type='html'>&lt;br /&gt;Windows Registry Editor Version 5.00&lt;br /&gt;;File:WinRegistryCheatSheet.reg : v1.1.0 docs at the end&lt;br /&gt;;HOW TO IMPORT SILENTLY A REGISTRY FROM A FILE&lt;br /&gt;&lt;br /&gt;;REMEMBER TO SAVE ALLWAYS YOUR REG FILES IN ANSI&lt;br /&gt;;reg import /s C:\temp\the_name_of_the_file.reg&lt;br /&gt;;HOW TO GO TO SPECIFIC KEY&lt;br /&gt;;DOWNLOAD REGJUMP regjump "[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TypedURLs]"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;;PUT THE NAME OF THE COMMANDS YOU WOULD LIKE NOT TO TYPE&lt;br /&gt;;FROM THE START - RUN&lt;br /&gt;[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TypedURLs]&lt;br /&gt;"url1"="firefox http://www.youtube.com/my_playlists"&lt;br /&gt;"url2"="firefox http://gmail.google.com"&lt;br /&gt;"url3"="C:\\Program Files\\Opera\\opera.exe g toSearch"&lt;br /&gt;"url4"="firefox http://www.google.com/search?hl=en&amp;amp;q= typeHereTheWordToSearch"&lt;br /&gt;;Note the space before typeHereTheWordToSearch if yount to have several words&lt;br /&gt;;ANOTHER CACHE FOR THE RUN MENU&lt;br /&gt;[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU]&lt;br /&gt;"a"="shutdown -f -s -t 00"&lt;br /&gt;"b"="shutdown -f -r -t 00"&lt;br /&gt;"c"="shutdown -f -h -t 00"&lt;br /&gt;"d"="opera g toSearch"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;;THE FOLLOWING ARE HISTORY KEYS, FOR TYPED URLS ,LAST DOCUMENTS ETC&lt;br /&gt;[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TypedURLs]&lt;br /&gt;[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU]&lt;br /&gt;[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs]&lt;br /&gt;[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedMRU]&lt;br /&gt;[HKEY_CURRENT_USER\Software\Microsoft\Search Assistant\ACMru]&lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\*\shell\cmdhere]&lt;br /&gt;@="Cmd&amp;amp;Here"&lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\*\shell\cmdhere\command]&lt;br /&gt;@="cmd.exe /c start cmd.exe /k pushd \"%L\\..\""&lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\Folder\shell\cmdhere]&lt;br /&gt;@="Cmd&amp;amp;Here"&lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\Folder\shell\cmdhere\command]&lt;br /&gt;@="cmd.exe /c start cmd.exe /k pushd \"%L\""&lt;br /&gt;&lt;br /&gt;;add a command line functionality from Start - Run with Opera on Windows&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\opera.exe]&lt;br /&gt;@="C:\\Program Files\\Opera\\opera.exe"&lt;br /&gt;"Path"="C:\\Program Files\\Opera"&lt;br /&gt;&lt;br /&gt;;Purpose: provide a single reg import &amp;lt;&amp;lt;FilePath&amp;gt;&amp;gt; to commonly used registry settings&lt;br /&gt;;VersionHistory&lt;br /&gt;;1.1.0 --- ysg --- refactor added in morphus&lt;br /&gt;;1.0.0 --- ysg --- initial creation&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-4479434100881374171?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/4479434100881374171/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/10/win-registry-cheat-sheet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/4479434100881374171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/4479434100881374171'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/10/win-registry-cheat-sheet.html' title='win registry cheat sheet'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-4779642162182751830</id><published>2011-10-01T21:22:00.003+03:00</published><updated>2011-10-01T21:24:49.254+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cmd'/><category scheme='http://www.blogger.com/atom/ns#' term='Cheat Sheet'/><title type='text'>cmd cheat sheet ( revised )</title><content type='html'>&lt;br /&gt;::File:Cmd_Cheat_Sheet.cmd v.1.2.0&lt;br /&gt;&lt;br /&gt;:: GET A NICE PROMPT&lt;br /&gt;set prompt=$P$S$S$t$_$_$S$S&lt;br /&gt;&lt;br /&gt;:: forcely restart now&lt;br /&gt;shutdown -r -f -t 00&lt;br /&gt;:: forcely shutdown now&lt;br /&gt;shutdown -s -f -t 00&lt;br /&gt;:: forcely hibernate now&lt;br /&gt;shutdown -h -f -t 00&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;RUNAS /profile /user:userName " shutdown.exe -r -f -m \\remoteHost"&lt;br /&gt;&lt;br /&gt;:: execute command remotely not working&lt;br /&gt;LSrunas /user:userName /password:company01 /domain:%computername% /command:"reboot -r -f -m \\remoteHost" /runpath:"C:\Temp\QARunpack\bin"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;psexec -u user001 -p pass "shutdown.exe -r -f -m \\RemoteHostName "&lt;br /&gt;psexec -u user001 -p pass "shutdown.exe -r -f -m \\RemoteHostName"&lt;br /&gt;&lt;br /&gt;LSrunas /user:userName /password:company01 /domain:%computername% /command:" updateTRN.bat \\1USD01011" /runpath:"C:\Temp\QARunpack\bin"&lt;br /&gt;&lt;br /&gt;:: ADDING USER WITH PASS&lt;br /&gt;net user userName company01 /ADD&lt;br /&gt;:: ADDING USER TO THE LOCALGROUP ADMINISTRATORS&lt;br /&gt;net localgroup "Administrators" userName /add&lt;br /&gt;:: ADDING VANTAGE USER IDENTIFIED BY company01 TO THE LOCALGROUP ADMINISTRATORS&lt;br /&gt;net user vantage company01 /add&lt;br /&gt;:: ADDING USER TO THE LOCALGROUP ADMINISTRATORS&lt;br /&gt;net localgroup "Administrators" vantage /add&lt;br /&gt;:: OPENS THE EXPLORER IN THE C:\TEMP FOLDER MAXIMIZED - USE THE /MIN OPTION TO GET&lt;br /&gt;&lt;br /&gt;:: THE WINDOWS STARTED MINIMIZED&lt;br /&gt;cmd /c start /max Explorer /e , "C:\Temp"&lt;br /&gt;:: RUN THE REGEDIT AS A SPECIFIC USER&lt;br /&gt;RUNAS /profile /user:userName regedit | sanur /i C:\utils\psts.txt&lt;br /&gt;:: REboot agent remotely using the runas command - WORKS !!!!&lt;br /&gt;:: START A CMD PROMPT UNDER THE userName user&lt;br /&gt;RUNAS /profile /user:userName cmd.exe | sanur /i C:\utils\psts.txt&lt;br /&gt;RUNAS /profile /user:userName " shutdown.exe -f -r -t 00 -m \\RemoteHostName"&lt;br /&gt;::WORKS ALSO NEEDS SANUR http://www.commandline.co.uk/sanur_unsupported/index.html&lt;br /&gt;RUNAS /profile /user:userName " shutdown.exe /f /r /t 00 /m \\2SGD00070" | sanur /i C:\utils\psts.txt&lt;br /&gt;&lt;br /&gt;runas /u:domain\username program.exe | sanur /i C:\utils\psts.txt&lt;br /&gt;:: GET ALL THE INFORMATION RELATED TO NETWORKING ON A WINDDOWS STATION&lt;br /&gt;ipconfig /all&lt;br /&gt;:: USE OF FOR /F&lt;br /&gt;FOR /F "usebackq delims=\" %i IN (`DIR /AD /B`) DO FIND /I "TEMP"&lt;br /&gt;:: LIST THE RUNNING APPLICATIONS&lt;br /&gt;tasklist /v&lt;br /&gt;:: FIND SOMETHING IN A COMMAND&lt;br /&gt;ipconfig /all | find /i "Address"&lt;br /&gt;:: EXPORT AND PARSE VALUE FROM THE REGISTRY&lt;br /&gt;setlocal&lt;br /&gt;if exist tmp.reg del /q tmp.reg&lt;br /&gt;reg export "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" tmp.reg&lt;br /&gt;for /f "tokens=2 delims==" %%a in ('find /i "username" tmp.reg') do set line=%%a&amp;amp;call :strip&lt;br /&gt;endlocal&lt;br /&gt;goto :EOF&lt;br /&gt;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::&lt;br /&gt;:strip&lt;br /&gt;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::&lt;br /&gt;set usr=%line:"=%&lt;br /&gt;echo/the user is %usr%&amp;gt;&amp;gt;%computername%.txt&lt;br /&gt;del /q tmp.reg&lt;br /&gt;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::&lt;br /&gt;&lt;br /&gt;:: ANOTHER WAY OF EXPORTING KEYS FROM THE REGISTRY&lt;br /&gt;regedit /e c:\zzz\reg.reg "HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer"&lt;br /&gt;&lt;br /&gt;:: COUNT THE NUMBER OF SPECIFIC TYPE OF FILES ARE THEY IN A SPECIFIED DIRECTORY&lt;br /&gt;for /f "tokens=* delims=" %%i in ('dir C:\Temp\scripts\*.* /b /a-d ^| find /i /c "mdb"') do @echo num of scripts is %%i&amp;gt;&amp;gt;"%cd%\%computername%.txt"&lt;br /&gt;&lt;br /&gt;:: LABEL EACH FILE IN A DIRECTORY&lt;br /&gt;for /f "tokens=* delims=" %%i in ('dir /b C:\Temp\scripts\*.mdb') do @echo installed script %%i &amp;gt;&amp;gt;"%cd%\%computername%.txt"&lt;br /&gt;&lt;br /&gt;:: START EXPLORER&lt;br /&gt;for /f "tokens=* delims=" %%i in ('type DrillDownAllNames.txt') do (&lt;br /&gt;)&lt;br /&gt;:: CHANGE DRIVE AND DIRECTORY AT THE SAME TIME.&lt;br /&gt;cd /d %ProgramFiles%&lt;br /&gt;:: COMMAND SEPERATOR. EXECUTES TWO (OR MORE) COMMANDS ON ONE LINE.&lt;br /&gt;dir &amp;amp; path&lt;br /&gt;SAME, BUT THE ECHO COMMAND WILL ONLY BE EXECUTED WHEN THE COPY WAS SUCCESFUL.&lt;br /&gt;copy a b &amp;amp;&amp;amp; echo&lt;br /&gt;SAME, ONLY IF UNSUCCESFUL.&lt;br /&gt;copy a b || goto error&lt;br /&gt;&lt;br /&gt;GOTO THE ERRORLABEL, IF THE PREVIOUS COMMAND EXITTED WITH AN ERRORLEVEL BIGGER THAN ZERO.&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;:: HOW TO IMPORT SILENTLY A REGISTRY FROM A FILE&lt;br /&gt;reg import /s C:\temp\the_name_of_the_file.reg&lt;br /&gt;reg import /s C:\temp\qarunpack\bin\PcAnyStealth.reg&lt;br /&gt;:: ANOTHERWAYS TROUGH the regedit.exe&lt;br /&gt;cmd /c %SystemRoot%\Regedit.exe /s thePaht\TheFile.reg&lt;br /&gt;&lt;br /&gt;:: HOW TO EXPORT VALUES FROM THE REGISTRY INTO A FILE&lt;br /&gt;&lt;br /&gt;:: DELETING KEYS OR VALUES USING A REG FILE&lt;br /&gt;:: IT IS ALSO POSSIBLE TO DELETE KEYS AND VALUES USING REG FILES. TO DELETE A KEY START BY :: USING THE SAME FORMAT AS THE THE REG FILE ABOVE, BUT PLACE A "-" SYMBOL IN FRONT OF THE :: :: KEY NAME YOU WANT TO DELETE. FOR EXAMPLE TO DELETE THE :: :: [HKEY_LOCAL_MACHINE\SYSTEM\SETUP] KEY THE REG FILE WOULD LOOK LIKE THIS:&lt;br /&gt;&lt;br /&gt;:: TO EXPORT A KNOW REGISTRY KEY FROM THE REGISTRY&lt;br /&gt;reg export "HKEY_LOCAL_MACHINE\SYSTEM\SETUP" filename.reg&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;:: IF A FILE OR FOLDER EXISTS (SPELLED WITHOUT THE LETTER S ON THE END). THE PARENTHESES&lt;br /&gt;:: GROUP THE COMMANDS OVER THE LINEBREAK (¶ DENOTES A LINEBREAK).&lt;br /&gt;&lt;br /&gt;if errorlevel 1 goto error&lt;br /&gt;if exist "file.log"&lt;br /&gt;echo Log exists&lt;br /&gt;goto end&lt;br /&gt;:: ESCAPE CHARACTER TO USE REDIRECT/PIPE CHARACTERS IS THE CARET (^)&lt;br /&gt;echo a -^&amp;gt; b&lt;br /&gt;:: REDIRECTS OUTPUT (INCLUDING ERROR MESSAGES) TO FILE.LOG&lt;br /&gt;command &amp;gt; file.log 2&amp;gt;&amp;amp;1&lt;br /&gt;:: COMMAND SAME THING (BUT IT APPENDS). IN THIS WAY, YOUR BATCH FILES LOOK CLEANER.&lt;br /&gt;&amp;gt;&amp;gt; file.log 2&amp;gt;&amp;amp;1&lt;br /&gt;PUT MESSAGES IN STDIN.LOG AND ERROR MESSAGES IN STDERR.LOG.&lt;br /&gt;command 1&amp;gt; stdin.log 2&amp;gt; stderr.log&lt;br /&gt;&lt;br /&gt;start /wait regedit /s file.reg&lt;br /&gt;:: Will ensure when the batch-file continues, the merge operation has completed.&lt;br /&gt;:: regsvr32 /s file.dll Registers a COM DLL without dialog boxes (no report via %errorlevel% of&lt;br /&gt;:: success/failure). Use /s /u for unregistering. :: QUIT'S THE CURRENT BATCH-FILE&lt;br /&gt;:: (ONLY WORKS UNDER NT4 WHEN COMMAND EXTENTIONS ARE ENABLED, WHICH IS NOT THE DEFAULT).&lt;br /&gt;goto :EOF&lt;br /&gt;::THE BATCH FILE'S VERSION OF GOSUB. END THE "SUBROUTINE" WITH GOTO :EOF INSTEAD OF RETURN.&lt;br /&gt;ECHO LOG &amp;gt;&amp;gt; %~N0.LOG IN A BATCH FILE: TRICK TO APPEND A MESSAGE TO A LOG WITH THE SAME NAME AS THE BATCH-FILE, BUT WITH AN OTHER EXTENSION.&lt;br /&gt;call :subroutine&lt;br /&gt;notepad %* In a batch file: replaced by all the arguments in a batch file.&lt;br /&gt;&lt;br /&gt;C:\winnt\system32\drivers\etc\&lt;br /&gt;147.243.4.137 servername&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;:: SEE THE CURRENT STATUS OF THE ACCOUNTS&lt;br /&gt;net accounts&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;:: SET THE PASSWORDS TO NEVER EXPIRE ON THE LOCAL COMPUTER&lt;br /&gt;net accounts /maxpwage:unlimited /%computername%&lt;br /&gt;&lt;br /&gt;:: ADDS LOCAL USER NO PASSWORD NOTHING DO NOT USE&lt;br /&gt;net user userName secretPass /ADD /%computername%&lt;br /&gt;&lt;br /&gt;NET USER userName company01 /ADD /expires: never /times: all /%computername%&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;:: ADDS THE USERS TO THE ADMINISTRATOR GROUP&lt;br /&gt;net localgroup "Administrators" userName /add&lt;br /&gt;net localgroup "Administrators" user001 /add&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;RUNAS /profile /user:user001 REGEDIT&lt;br /&gt;RUNAS /profile /user:userName REGEDIT&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;:: RUN CONSOLE ROOT&lt;br /&gt;RUNAS /profile /user:userName mmc&lt;br /&gt;psexec -u userName -p company01 cmd /c regedit.exe&lt;br /&gt;psexec -u user001 -p secretPass cmd /c regedit.exe&lt;br /&gt;&lt;br /&gt;:: FIND AND REPLACE STRING IN TEXT FILE USING GSAR&lt;br /&gt;gsar "-sIMMIDIATERUN:0611" "-rIMMIDIATERUN:0610" -o "C:\Temp\settings.txt"&lt;br /&gt;&lt;br /&gt;:: ACCESS EACH ROW FROM THE FILE&lt;br /&gt;for /f "tokens=* delims=" %%a in ('more/e +0 ^&amp;lt;"%cd%\%computername%.txt"') do&lt;br /&gt;&lt;br /&gt;:: COMPARING STRINGS&lt;br /&gt;@echo off&lt;br /&gt;set VAR=before&lt;br /&gt;if "%VAR%" == "before" (&lt;br /&gt;echo %var%&lt;br /&gt;set VAR=after&lt;br /&gt;echo %var%&lt;br /&gt;pause&lt;br /&gt;if "!VAR!" == "after" @echo If you see this, it worked&lt;br /&gt;)&lt;br /&gt;echo %var%&lt;br /&gt;pause&lt;br /&gt;:: OPEN THE SERVICES FROM THE COMMAND PROMPT&lt;br /&gt;%SystemRoot%\system32\services.msc /s&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;:: THE USE OF THE SET COMMAND&lt;br /&gt;set agent=something&lt;br /&gt;:: WRONG !!!! AVOID SPACES BEFORE = AFTER IT AND AFTER THE RVALUE IT TAKES THOSE ALSO !!!!!!&lt;br /&gt;&lt;br /&gt;::ALWAYS USE THE NET USE COMMAND IF YOU WANT TO USE NETWORK RESOURCES FROM CMD&lt;br /&gt;net use "\\server\share\"&lt;br /&gt;&lt;br /&gt;::USE REDIRECTING OF ERRORS THIS WAYS&lt;br /&gt;copy file1 file2 2&amp;gt; errors.txt&lt;br /&gt;errors.txt&lt;br /&gt;&lt;br /&gt;:: CHANGE THE SETTINGS IMMIDIATERUN FROM THE COMMAND LINE&lt;br /&gt;gsar "-sIMMIDIATERUN:0611" "-rIMMIDIATERUN:0610" -o "C:\Temp\settings.txt"&lt;br /&gt;:: CHANGE THE REBOOOTEVERYCYCLE FROM 1 TO 0&lt;br /&gt;gsar "-sREBOOTEVERYCYCLE:0611" "-rREBOOTEVERYCYCLE:0610" -o "C:\Temp\settings.txt"&lt;br /&gt;:: CHANGE THE TIMEOUT FROM 30 TO 20&lt;br /&gt;gsar "-sQARUN_TIMEOUT:06130" "-rQARUN_TIMEOUT06120" -o "C:\Temp\settings.txt"&lt;br /&gt;&lt;br /&gt;:: WE DO NOT WANT TO MESS WITH SCRIPTS&lt;br /&gt;IF NOT DEFINED CMDWindow Set CMDWindow=1&amp;amp;Start "GetAndSendInfo" /MIN %0&amp;amp;Goto :EOF&lt;br /&gt;:: PUT THE CODE HERE&lt;br /&gt;exit&lt;br /&gt;:: append a new folder to the path of a&lt;br /&gt;AddPath -s -n -v Path "C:\Program Files\BEA Systems\TUXEDO"&lt;br /&gt;&lt;br /&gt;:: DLL LINKING using the regsvr32 command SILENTLY&lt;br /&gt;regsvr32 /s DIV_ExtMESClient.dll&lt;br /&gt;&lt;br /&gt;:: runthe registry as a different user&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;:: using runas command&lt;br /&gt;LSrunas /user:userName /password:company01 /domain:%computername% /command:"REGEDIT" /runpath:"%cd%"&lt;br /&gt;:: normal&lt;br /&gt;RUNAS /profile /user:userName REGEDIT&lt;br /&gt;&lt;br /&gt;:: PSEXEC&lt;br /&gt;:: In order to get the psexec working the following commands should succeed&lt;br /&gt;net use \\target\Admin$ /user:Administrator&lt;br /&gt;dir \\target\Admin$&lt;br /&gt;net use \\target\Admin$ /delete&lt;br /&gt;:: (only disconnects, does not delete anything.)&lt;br /&gt;&lt;br /&gt;:: reboot fast station with the shutdown utility&lt;br /&gt;C:\Temp\QArunpack\bin\shutdown.exe -s reboot -f -m "The station will reboot in 3 seconds" -l 3 -c&lt;br /&gt;shutdown -f -r -t 00&lt;br /&gt;&lt;br /&gt;::=========================================================&lt;br /&gt;:: using bmail&lt;br /&gt;::=========================================================&lt;br /&gt;:: SETTING TO THE E-MAIL TO WHOM WE ARE GOING TO SEND THE E-MAIL&lt;br /&gt;::=========================================================&lt;br /&gt;set mailadd= yordan.georgiev^@company.com&lt;br /&gt;&lt;br /&gt;::CONTCATENATE ANY ERRORS TO THE END OF THE LOG&lt;br /&gt;echo errors in the logging process are listed bellow: &amp;gt;&amp;gt;"%cd%\%computername%.txt"&lt;br /&gt;for /f "delims=" %%a in ('more/e +0 ^&amp;lt;"%cd%\error_log_%computername%.txt"') do echo/%%a&amp;gt;&amp;gt;"%cd%\%computername%.txt"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;:: WE USE THE BMAIL.EXE UTILITY TO SEND OURSELF AN E-MAIL CONTAINING THE TEXT FILE&lt;br /&gt;:: ALTERNATIVE SMTP MIGHT BE esebe107.NOE.company.com, UNCOMMENT THE NEXT LINE FOR ALTERN&lt;br /&gt;:: cmd /c bmail -s esebe107.NOE.company.com -m %computername%.txt -t %mailadd% -a %computername% -h&lt;br /&gt;bmail -s smtp.company.com -m %computername%.txt -t yordan.georgiev^@company.com -a %computername% -h&lt;br /&gt;&lt;br /&gt;:: eof using bmail&lt;br /&gt;::=========================================================&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;::=========================================================&lt;br /&gt;:: edit the hosts file&lt;br /&gt;::=========================================================&lt;br /&gt;echo 147.243.4.137 serverName &amp;gt;&amp;gt; C:\winnt\system32\drivers\etc\hosts&lt;br /&gt;::=========================================================&lt;br /&gt;&lt;br /&gt;::=======================================================&lt;br /&gt;:: START A MINIMIZED BATCH WINDOW&lt;br /&gt;::=======================================================&lt;br /&gt;@echo off&lt;br /&gt;IF NOT DEFINED CVRestart Set CVRestart=1&amp;amp;Start "Minimized" /MIN %0&amp;amp;Goto :EOF&lt;br /&gt;&lt;br /&gt;exit&lt;br /&gt;::=======================================================&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;::=======================================================&lt;br /&gt;:: USAGE OF THE WHERE COMMAND ::WHERE [/R dir] [/Q] [/F] [/T] pattern...&lt;br /&gt;::=======================================================&lt;br /&gt;WHERE /R "\\server\share\" *spare*&lt;br /&gt;::=======================================================&lt;br /&gt;::get the mac address of an workstatioin&lt;br /&gt;getMac&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;:: Start - Run utils&lt;br /&gt;:: Add or Remove Programs&lt;br /&gt;APPWIZ.CPL&lt;br /&gt;:: COMPUTER MANAGEMENT&lt;br /&gt;COMPMGMT.MSC&lt;br /&gt;:: DEVICE MANAGER&lt;br /&gt;DEVMGMT.MSC&lt;br /&gt;:: DISK DEFRAGMENTER&lt;br /&gt;DFRG.MSC -&lt;br /&gt;:: Disk Management&lt;br /&gt;DISKMGMT.MSC&lt;br /&gt;:: Event Viewer&lt;br /&gt;EVENTVWR.MSC&lt;br /&gt;:: Sound Volume&lt;br /&gt;SNDVOL.EXE&lt;br /&gt;&lt;br /&gt;::Calculator&lt;br /&gt;CALC.EXE&lt;br /&gt;::Character Map&lt;br /&gt;CHARMAP.EXE&lt;br /&gt;::Disk Space Cleanup Manager&lt;br /&gt;CLEANMGR.EXE&lt;br /&gt;::SQL Client Configuration Utility&lt;br /&gt;CLICONFG.EXE&lt;br /&gt;::Clipboard Viewer&lt;br /&gt;CLIPBRD.EXE&lt;br /&gt;::Class Package Export Tool&lt;br /&gt;CLSPACK.EXE&lt;br /&gt;::Command Line&lt;br /&gt;CMD.EXE&lt;br /&gt;::Connection Manager Profile Installer&lt;br /&gt;CMSTP.EXE&lt;br /&gt;::Control Panel&lt;br /&gt;CONTROL.EXE&lt;br /&gt;::Component Services&lt;br /&gt;DCOMCNFG.EXE&lt;br /&gt;::DDE&lt;br /&gt;DDESHARE.EXEShare&lt;br /&gt;:: Doctor Watson v1.00b&lt;br /&gt;DRWATSON.EXE&lt;br /&gt;:: Doctor Watson Settings&lt;br /&gt;DRWTSN32.EXE&lt;br /&gt;:: DVD Player&lt;br /&gt;DVDPLAY.EXE&lt;br /&gt;:: DirectX Diagnostics&lt;br /&gt;DXDIAG.EXE&lt;br /&gt;:: Private Character&lt;br /&gt;EUDCEDIT.EXEEditor&lt;br /&gt;:: Event Viewer&lt;br /&gt;EVENTVWR.EXE&lt;br /&gt;:: Windows Explorer&lt;br /&gt;EXPLORER.EXE&lt;br /&gt;:: System Logoff&lt;br /&gt;LOGOFF.EXE&lt;br /&gt;:: Microsoft Management Console&lt;br /&gt;MMC.EXE&lt;br /&gt;:: Remote Desktop Connection&lt;br /&gt;MSTSC.EXE /v 127.0.0.1:3388&lt;br /&gt;:: Notepad&lt;br /&gt;NOTEPAD.EXE&lt;br /&gt;:: NSLookup Application&lt;br /&gt;NSLOOKUP.EXE&lt;br /&gt;::Symbolic Debugger for Windows 2000&lt;br /&gt;NTSD.EXE&lt;br /&gt;:: ODBC Data Source Administrator&lt;br /&gt;ODBCAD32.EXE&lt;br /&gt;:: On Screen Keyboard&lt;br /&gt;OSK.EXE&lt;br /&gt;:: Windows Uninstall Utility&lt;br /&gt;OSUNINST.EXE&lt;br /&gt;:: Performance Monitor&lt;br /&gt;PERFMON.EXE /RES&lt;br /&gt;:: Program Manager&lt;br /&gt;PROGMAN.EXE&lt;br /&gt;:: Remote Access Phonebook&lt;br /&gt;RASPHONE.EXE&lt;br /&gt;:: Registry Editor&lt;br /&gt;REGEDIT.EXE&lt;br /&gt;:: Resets Session&lt;br /&gt;RESET.EXE&lt;br /&gt;:: System Restore&lt;br /&gt;RSTRUI.EXE&lt;br /&gt;:: RTC Application Sharing&lt;br /&gt;RTCSHARE.EXE&lt;br /&gt;:: System File Checker&lt;br /&gt;SFC.EXE&lt;br /&gt;:: Create Shared Folder&lt;br /&gt;SHRPUBW.EXE&lt;br /&gt;:: System Shutdown&lt;br /&gt;SHUTDOWN.EXE&lt;br /&gt;:: File Signature Verification&lt;br /&gt;SIGVERIF.EXE&lt;br /&gt;:: Sound&lt;br /&gt;SNDREC32.EXERecorder&lt;br /&gt;:: Display Properties&lt;br /&gt;DESK.CPL&lt;br /&gt;:: Add Hardware Wizard&lt;br /&gt;HDWWIZ.CPL&lt;br /&gt;:: Internet Explorer Properties&lt;br /&gt;INETCPL.CPL&lt;br /&gt;:: Regional and Language Options&lt;br /&gt;INTL.CPL&lt;br /&gt;:: Mouse Properties&lt;br /&gt;MAIN.CPL&lt;br /&gt;:: Sounds and Audio Device Properties&lt;br /&gt;MMSYS.CPL&lt;br /&gt;:: Network Connections&lt;br /&gt;NCPA.CPL&lt;br /&gt;:: User Accounts&lt;br /&gt;NUSRMGR.CPL&lt;br /&gt;:: ODBC Data Source Administrator&lt;br /&gt;ODBCAD.CPL&lt;br /&gt;:: Power Options Properties&lt;br /&gt;POWERCFG.CPL&lt;br /&gt;:: System Properties&lt;br /&gt;SYSDM.CPL&lt;br /&gt;:: Phone and Modem Options&lt;br /&gt;TELEPHON.CPL&lt;br /&gt;:: Date and Time Properties&lt;br /&gt;TIMEDATE.CPL&lt;br /&gt;:: Microsoft Management Console (MMC Snap-ins) - Certificates&lt;br /&gt;CERTMGR.MSC&lt;br /&gt;:: Indexing Service&lt;br /&gt;CIADV.MSC&lt;br /&gt;:: Shared Folders&lt;br /&gt;FSMGMT.MSC&lt;br /&gt;:: Local Users and Groups&lt;br /&gt;LUSRMGR.MSC&lt;br /&gt;:: REMOVABLE STORAGE&lt;br /&gt;NTMSMGR.MSC&lt;br /&gt;:: REMOVABLE STORAGE OPERATOR REQUESTS&lt;br /&gt;NTMSOPRQ.MSC&lt;br /&gt;:: PERFORMANCE MONITOR&lt;br /&gt;PERFMON.MSC&lt;br /&gt;:: SERVICES&lt;br /&gt;SERVICES.MSC&lt;br /&gt;:: WINDOWS MANAGEMENT INFRASTRUCTURE&lt;br /&gt;WMIMGMT.MSC&lt;br /&gt;:: CONVENTIONAL USER ACCOUNT INTERFACE&lt;br /&gt;CONTROL USERPASSWORDS2&lt;br /&gt;::START OFFICE APPLICATIONS FROM COMMAND LINE&lt;br /&gt;EXCEL.EXE&lt;br /&gt;MSACCESS.EXE&lt;br /&gt;&lt;br /&gt;MSPUB.EXE&lt;br /&gt;:: Microsoft Office Picture Manager&lt;br /&gt;OIS.EXE&lt;br /&gt;OUTLOOK.EXE&lt;br /&gt;POWERPNT.EXE&lt;br /&gt;WINWORD.EXE&lt;br /&gt;&lt;br /&gt;control keyboard&lt;br /&gt;&lt;br /&gt;RUNAS /profile /user:user001 "COMPMGMT.MSC " | sanur /i C:\utils\psts.txt&lt;br /&gt;RUNAS /profile /user:userName "regedit " | sanur company01&lt;br /&gt;:: STOP A SERVICE&lt;br /&gt;net stop "PCAnywhere Host Service"&lt;br /&gt;&lt;br /&gt;:: STOP AN WINDOWS SERVICE IN MICROSOFTS WAY&lt;br /&gt;sc \\servername stop schedule&lt;br /&gt;:: WITH PSINTERNALS&lt;br /&gt;psservice \\computername -u UserName-p Password stop "PCAnywhere Host Service"&lt;br /&gt;psservice \\RemoteHostName -u userName -p Password company01 stop "PCAnywhere Host Service"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;:: How do I concatenate files into one file overwriting previous existing one?&lt;br /&gt;copy /b /y *.txt APMDeployment.html&lt;br /&gt;&lt;br /&gt;:: If you want separations between the files,&lt;br /&gt;:: try something like this...&lt;br /&gt;&lt;br /&gt;@echo off&lt;br /&gt;if .%1==.Loop goto process&lt;br /&gt;&amp;gt; output.fil rem&lt;br /&gt;for %%a in (*.txt) do call %0 Loop %%a&lt;br /&gt;goto end&lt;br /&gt;:process&lt;br /&gt;&amp;gt;&amp;gt;output.fil echo.&lt;br /&gt;&amp;gt;&amp;gt;output.fil echo ----------- File %2 -----------&lt;br /&gt;&amp;gt;&amp;gt;output.fil type %2&lt;br /&gt;:end&lt;br /&gt;&lt;br /&gt;net use \\hostName\Temp\tmp "secretPass" /USER: " yogeorgi@NOE.company.com"&lt;br /&gt;NET USE W: \\hostName\Temp /Persistent:No&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;:: COPY FILES RECURSIVELY TO THE CURRENT DIRECTORY&lt;br /&gt;:: USES exec.bat by Fred Stluka&lt;br /&gt;exec /s *pdrs*jpg do xcopy /s /m /f&lt;br /&gt;&lt;br /&gt;:: SETTING TITLE AND COLOR AND FOR CMD&lt;br /&gt;cmd.exe /k cd c:\Temp &amp;amp;&amp;amp; color fc &amp;amp;&amp;amp; title ***** Admin console *****&lt;br /&gt;&lt;br /&gt;:: DELETE FILES CONTAINING STRING ON REMOTE COMPUTER&lt;br /&gt;:: uses srp.exe see start remote process&lt;br /&gt;cmd /c srp workstation cmd /c del /q C:\Temp\\*20060*&lt;br /&gt;&lt;br /&gt;:: Fast search the directory for filename&lt;br /&gt;&lt;br /&gt;::Windows fast directory search from WinLogo + R&lt;br /&gt;cmd /c "dir C:\temp\path\*toFind* /s /b&amp;gt;list.txt&amp;amp;list.txt "&lt;br /&gt;&lt;br /&gt;:: open all textpad files in a directory&lt;br /&gt;for /f "tokens=* delims=" %%i in ('dir /b /s c:\TEMP\OXIT\BATTERY\*.txt') do cmd /c start /max textpad %%i&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;:: the syntax of the if command&lt;br /&gt;echo set the variable to 0&lt;br /&gt;set variable=0&lt;br /&gt;pause&lt;br /&gt;IF %variable% == 0 (&lt;br /&gt;:: &amp;nbsp; commands to be executed if the condition is true&lt;br /&gt;echo the variable is %%variable%% = 0&lt;br /&gt;) ELSE (&lt;br /&gt;echo the variable is %%variable%% = 1&lt;br /&gt;:: &amp;nbsp; commands to be executed if the condition is false&lt;br /&gt;)&lt;br /&gt;pause&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;:: PURPOSE&lt;br /&gt;:: TO PROVIDE THE USERS WITH COPY PASTE OF THE MOSTLY USED COMMANDS IN THE PECC TEAM&lt;br /&gt;:: FOLLOW THE SYNTAX TO MAKE COPY PASTE EASIER , USE CAPITAL LETTERS FOR COMMENTS&lt;br /&gt;&lt;br /&gt;::VersionHistory&lt;br /&gt;:: 1.2.0 --- ysg --- formatting cleaning&lt;br /&gt;:: 1.1.0 --- ysg --- removed NDA stuff&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-4779642162182751830?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/4779642162182751830/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/10/cmd-cheat-sheet-revised.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/4779642162182751830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/4779642162182751830'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/10/cmd-cheat-sheet-revised.html' title='cmd cheat sheet ( revised )'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-1154440815030608118</id><published>2011-09-27T18:40:00.001+03:00</published><updated>2011-10-01T21:25:30.255+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='public private key'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='cygwin'/><category scheme='http://www.blogger.com/atom/ns#' term='sftp'/><title type='text'>how-to setup public private key authentication between an Win and Nix box</title><content type='html'>&lt;ol&gt;&lt;li style="margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-indent: 0px;"&gt;Install Cygwin&lt;/li&gt;&lt;li style="margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-indent: 0px;"&gt;Install separately the&amp;nbsp;ssh-keygen ( or sshd )&lt;/li&gt;&lt;li style="margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-indent: 0px;"&gt;Download the puttycfg , unzip to a dir in your Windows path&lt;/li&gt;&lt;li style="margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-indent: 0px;"&gt;Find out where cygwin1.dll is installed cygcheck -sd &amp;gt;list.txt&lt;/li&gt;&lt;li style="margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-indent: 0px;"&gt;Open the list.txt ( it is quite big ) : notepad list.txt&amp;nbsp;&lt;/li&gt;&lt;li style="margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-indent: 0px;"&gt;Copy all the files from &amp;nbsp; C:\temp\something &amp;nbsp;to the dir where the cygwin1.dll is located&amp;nbsp;&lt;/li&gt;&lt;li style="margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-indent: 0px;"&gt;Start the putty.exe : Start - Run :&amp;nbsp;cmd /c START &amp;nbsp;/max putty&lt;/li&gt;&lt;li style="margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-indent: 0px;"&gt;In the GUI , check that Session on the Left is selected , click on Cygterm option , for hostName type - , leave port number 22&lt;/li&gt;&lt;li style="margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-indent: 0px;"&gt;Open the puttycfg :&amp;nbsp;&lt;/li&gt;&lt;li style="margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-indent: 0px;"&gt;Generate the public and private key's :&amp;nbsp;&lt;/li&gt;&lt;li&gt;# ssh-keygen -t rsa&lt;/li&gt;&lt;li&gt;Type Enter,Enter&lt;/li&gt;&lt;li style="margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-indent: 0px;"&gt;&lt;/li&gt;&lt;li&gt;Now here is the tricky part you have to tell also putty that the public and private key files are the one you want to use with you : Copy the /home/&amp;lt;&amp;lt;username&amp;gt;&amp;gt;/id_rsa and ..id_rsa.pub to the dir where your save your putty conf in my case:&amp;nbsp;C:\Temp\ysg\conf\&amp;lt;&amp;lt;computername&amp;gt;&amp;gt;\putty\ssh&lt;/li&gt;&lt;li style="margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-indent: 0px;"&gt;Start - Run - type puttygen&amp;nbsp;&lt;/li&gt;&lt;li style="margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-indent: 0px;"&gt;Load the copied private key file and save it as &amp;lt;&amp;lt;file.pkk&amp;gt;&amp;gt; , save also the public key file&amp;nbsp;&lt;/li&gt;&lt;li style="margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-indent: 0px;"&gt;Copy the id_rsa.pub file to the server's ~ dir&lt;/li&gt;&lt;li style="margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-indent: 0px;"&gt;On the server cat&amp;nbsp;id_rsa.pub &amp;gt;&amp;gt; ~/.ssh/authorized_keys&lt;/li&gt;&lt;li style="margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-indent: 0px;"&gt;Now when started from the windows client &amp;nbsp;:&lt;/li&gt;&lt;li style="margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-indent: 0px;"&gt;cmd /c START &amp;nbsp;/max putty &amp;nbsp;username@servername.domain.com no password should be asked&amp;nbsp;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-1154440815030608118?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/1154440815030608118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/09/how-to-setup-public-private-key.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/1154440815030608118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/1154440815030608118'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/09/how-to-setup-public-private-key.html' title='how-to setup public private key authentication between an Win and Nix box'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-8267209044768448538</id><published>2011-09-22T10:05:00.000+03:00</published><updated>2011-10-01T22:26:12.305+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='outlook'/><category scheme='http://www.blogger.com/atom/ns#' term='tip'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>how-to start outlook with unread e-mails folder selected</title><content type='html'>&lt;br /&gt;ECHO START OUTLOOK with selected Unread Mail folder&lt;br /&gt;cmd /c start /max outlook /select "&amp;lt;outlook:Search Folders\Unread Mail&amp;gt;"&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-8267209044768448538?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/8267209044768448538/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/09/how-to-start-outlook-with-unread-e.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/8267209044768448538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/8267209044768448538'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/09/how-to-start-outlook-with-unread-e.html' title='how-to start outlook with unread e-mails folder selected'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-7206981170653883477</id><published>2011-09-16T15:30:00.002+03:00</published><updated>2011-10-01T22:36:00.111+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='metadata'/><category scheme='http://www.blogger.com/atom/ns#' term='how-to'/><title type='text'>how-to get the column metadata in mysql</title><content type='html'>&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre{	font-size: small;	color: black;	font-family: Consolas, "Courier New", Courier, Monospace;	background-color: #ffffff;	/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {	background-color: #f4f4f4;	width: 100%;	margin: 0em;}.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;/* &lt;span class="kwrd"&gt;when&lt;/span&gt; asked type the password &lt;span class="kwrd"&gt;for&lt;/span&gt; the username */&lt;/pre&gt;&lt;pre class="alt"&gt;mysql -u username -p  -B -e "&lt;span class="kwrd"&gt;use&lt;/span&gt; information_schema; &lt;span class="kwrd"&gt;SELECT&lt;/span&gt;     TABLE_CATALOG  , TABLE_SCHEMA  , TABLE_NAME  , COLUMN_NAME  , ORDINAL_POSITION  , COLUMN_DEFAULT  , IS_NULLABLE  , DATA_TYPE  , CHARACTER_MAXIMUM_LENGTH  , CHARACTER_OCTET_LENGTH  , NUMERIC_PRECISION  , NUMERIC_SCALE  , CHARACTER_SET_NAME  , COLLATION_NAME  , COLUMN_TYPE  , COLUMN_KEY  , EXTRA  , &lt;span class="kwrd"&gt;PRIVILEGES&lt;/span&gt;  , COLUMN_COMMENT&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;INTO&lt;/span&gt; OUTFILE &lt;span class="str"&gt;'/var/lib/mysql/information_schema.csv'&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;FIELDS TERMINATED &lt;span class="kwrd"&gt;BY&lt;/span&gt; &lt;span class="str"&gt;'\t'&lt;/span&gt; OPTIONALLY ENCLOSED &lt;span class="kwrd"&gt;BY&lt;/span&gt; &lt;span class="str"&gt;' '&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;LINES TERMINATED &lt;span class="kwrd"&gt;BY&lt;/span&gt; &lt;span class="str"&gt;'\n'&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;from&lt;/span&gt; COLUMNS; "&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-7206981170653883477?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/7206981170653883477/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/09/how-to-get-column-metadata-in-mysql.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/7206981170653883477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/7206981170653883477'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/09/how-to-get-column-metadata-in-mysql.html' title='how-to get the column metadata in mysql'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-8883551310585110116</id><published>2011-09-03T10:32:00.002+03:00</published><updated>2011-10-01T22:29:24.371+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><category scheme='http://www.blogger.com/atom/ns#' term='history'/><category scheme='http://www.blogger.com/atom/ns#' term='terminal'/><title type='text'>I hate watching at the end of the terminal in Unix ...</title><content type='html'>history | sort -r | less&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-8883551310585110116?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/8883551310585110116/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/09/i-hate-watching-at-end-of-terminal-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/8883551310585110116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/8883551310585110116'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/09/i-hate-watching-at-end-of-terminal-in.html' title='I hate watching at the end of the terminal in Unix ...'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-3909695849269289650</id><published>2011-09-01T10:19:00.000+03:00</published><updated>2011-10-01T22:28:42.127+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='textpad'/><category scheme='http://www.blogger.com/atom/ns#' term='shortcuts'/><title type='text'>my favorite textpad shortcuts</title><content type='html'>Shift F11 - Activate Search Window&lt;br /&gt;F4 , Shift F4 - Next iteam in Find in Files&lt;br /&gt;Alt + 1 , type Letter ( n times ) &amp;nbsp;- activate the Document Selector , go to a file name starting with the letter&lt;br /&gt;Ctrl + Tab , Ctrl + Shift + Tab - &amp;nbsp;switch between tabs&lt;br /&gt;Alt + C , P - get to Preferences&lt;br /&gt;Alt + F3 - open Explorer in the path of the currently opened file&lt;br /&gt;F3 - copy the path of the current opened file&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-3909695849269289650?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/3909695849269289650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/09/my-favorite-textpad-shortcuts.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/3909695849269289650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/3909695849269289650'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/09/my-favorite-textpad-shortcuts.html' title='my favorite textpad shortcuts'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-2366566913142150300</id><published>2011-08-28T19:26:00.001+03:00</published><updated>2011-08-28T19:26:41.836+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='perl modules'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><category scheme='http://www.blogger.com/atom/ns#' term='morphus'/><title type='text'>A class template in Perl</title><content type='html'>&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre{	font-size: small;	color: black;	font-family: Consolas, "Courier New", Courier, Monospace;	background-color: #ffffff;	/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {	background-color: #f4f4f4;	width: 100%;	margin: 0em;}.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;use strict ; use warnings ; &lt;/pre&gt;&lt;pre&gt;package ClassTemplate ; &lt;/pre&gt;&lt;pre class="alt"&gt;my $VERSION=&lt;span class="str"&gt;'0.2.0'&lt;/span&gt; ; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;use lib &lt;span class="str"&gt;'.'&lt;/span&gt; ; use Exporter; &lt;/pre&gt;&lt;pre&gt;my @ISA = qw(AutoLoader Exporter);&lt;/pre&gt;&lt;pre class="alt"&gt;my @EXPORT = qw();&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;BEGIN {     &lt;/pre&gt;&lt;pre class="alt"&gt;    &lt;span class="rem"&gt;#add the module dir in the INC&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;    $0 =~ m/^(.*)(\\|\/)(.*)\.([a-z]*)/; &lt;/pre&gt;&lt;pre class="alt"&gt;    push ( @INC , $1) ;     &lt;/pre&gt;&lt;pre&gt;    &lt;span class="rem"&gt;#debug print join ( ' ' , @INC ) ; &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;} &lt;span class="rem"&gt;#eof BEGIN&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;use Logger ;  &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;### START setting package vars&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;our ( $confHolder , $objLogger , )= () ; &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;### STOP setting package vars &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# ===============================================================&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# START OO&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# -----------------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# the constructor &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# source:http://www.netalive.org/tinkering/serious-perl/#oop_constructors&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# -----------------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;sub new {&lt;/pre&gt;&lt;pre&gt;    &lt;/pre&gt;&lt;pre class="alt"&gt;    my $class = shift ;        &lt;span class="rem"&gt;# Class name is in the first parameter&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;    $confHolder = ${ shift @_ } &lt;span class="kwrd"&gt;if&lt;/span&gt; ( @_ )  ; &lt;/pre&gt;&lt;pre class="alt"&gt;    &lt;/pre&gt;&lt;pre&gt;    my $self = { };  &lt;span class="rem"&gt;# Anonymous hash reference holds instance attributes&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;    &lt;/pre&gt;&lt;pre&gt;    bless($self, $class);          &lt;span class="rem"&gt;# Say: $self is a $class&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;        $self-&amp;gt;Initialize() ;    &lt;/pre&gt;&lt;pre&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; $self;&lt;/pre&gt;&lt;pre class="alt"&gt;} &lt;span class="rem"&gt;#eof const &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# -----------------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# perldoc autoloader &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# -----------------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;sub AUTOLOAD {&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;    my $self = shift ; &lt;/pre&gt;&lt;pre&gt;    no strict &lt;span class="str"&gt;'refs'&lt;/span&gt;; &lt;/pre&gt;&lt;pre class="alt"&gt;    my $name = our $AUTOLOAD;&lt;/pre&gt;&lt;pre&gt;    *$AUTOLOAD = sub { &lt;/pre&gt;&lt;pre class="alt"&gt;    my $msg = &lt;span class="str"&gt;"BOOM! BOOM! BOOM! \n RunTime Error !!!\nUndefined Function $name(@_)\n"&lt;/span&gt; ;&lt;/pre&gt;&lt;pre&gt;    print &lt;span class="str"&gt;"$self , $msg"&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;    };&lt;/pre&gt;&lt;pre&gt;    goto &amp;amp;$AUTOLOAD;    &lt;span class="rem"&gt;# Restart the new routine.&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;}    &lt;span class="rem"&gt;#eof sub AUTOLOAD&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# -----------------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# return a field's value&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# -----------------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;    sub get    {&lt;/pre&gt;&lt;pre&gt;    &lt;/pre&gt;&lt;pre class="alt"&gt;        my $self = shift;&lt;/pre&gt;&lt;pre&gt;        my $name = shift;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; $self-&amp;gt;{$name};&lt;/pre&gt;&lt;pre&gt;    } &lt;span class="rem"&gt;#eof sub get &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# -----------------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# set a field's value &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# -----------------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;    sub set    {&lt;/pre&gt;&lt;pre class="alt"&gt;    &lt;/pre&gt;&lt;pre&gt;        my $self = shift;&lt;/pre&gt;&lt;pre class="alt"&gt;        my $name = shift;&lt;/pre&gt;&lt;pre&gt;        my $value = shift;&lt;/pre&gt;&lt;pre class="alt"&gt;        $self-&amp;gt;{$name}=$value;&lt;/pre&gt;&lt;pre&gt;    } &lt;span class="rem"&gt;#eof sub set &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# -----------------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# return the fields of this obj instance  &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# -----------------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;    sub dumpFields        {&lt;/pre&gt;&lt;pre class="alt"&gt;        my $self = shift ; &lt;/pre&gt;&lt;pre&gt;        my $strFields = () ; &lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;foreach&lt;/span&gt; my $key (keys %$self)        {&lt;/pre&gt;&lt;pre&gt;            $strFields .= &lt;span class="str"&gt;"$key = $self-&amp;gt;{$key}\n"&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;        }&lt;/pre&gt;&lt;pre&gt;        &lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; $strFields ; &lt;/pre&gt;&lt;pre&gt;    } &lt;span class="rem"&gt;#eof sub dumpFields &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# -----------------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# wrap any logic here on clean up for this class &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# -----------------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;sub  RunBeforeExit {&lt;/pre&gt;&lt;pre class="alt"&gt;    print &lt;span class="str"&gt;"RunBeforeExit.\n"&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;}&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# -----------------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# called automatically by perl's garbage collector use to know when &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# -----------------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;sub DESTROY {&lt;/pre&gt;&lt;pre class="alt"&gt;    my $self = shift;&lt;/pre&gt;&lt;pre&gt;    &lt;span class="rem"&gt;#debug print "the DESTRUCTOR is called  \n" ; &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;    $self-&amp;gt;RunBeforeExit() ; &lt;/pre&gt;&lt;pre&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; ; &lt;/pre&gt;&lt;pre class="alt"&gt;} &lt;span class="rem"&gt;#eof sub DESTROY&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# -----------------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# Initialize the object with the minimum data it will need to operate &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# -----------------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;sub Initialize {&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;    my $self = shift ; &lt;/pre&gt;&lt;pre class="alt"&gt;    &lt;/pre&gt;&lt;pre&gt;    $objLogger = new Logger (\$confHolder) ; &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;} &lt;span class="rem"&gt;#eof sub Initialize&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# STOP OO&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# =============================================================================&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;1 ; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;__END__&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;=head1 NAME&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;ClassTemplate&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;=head1 SYNOPSIS&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;use ClassTemplate; &lt;/pre&gt;&lt;pre&gt;  &lt;/pre&gt;&lt;pre class="alt"&gt;=head1 DESCRIPTION&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;A template like class &lt;span class="kwrd"&gt;for&lt;/span&gt; starting new classes &lt;span class="kwrd"&gt;in&lt;/span&gt; the morphus project &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;=head2 EXPORT&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;=head1 SEE ALSO&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;perldoc perlvars&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;No mailing list &lt;span class="kwrd"&gt;for&lt;/span&gt; this module&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;=head1 AUTHOR&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;yordan.georgiev@gmail.com&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;=head1 COPYRIGHT AND LICENSE&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;Copyright (C) 2011 Yordan Georgiev&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;This library is free software; you can redistribute it and/or modify&lt;/pre&gt;&lt;pre&gt;it under the same terms as Perl itself, either Perl version 5.8.1 or,&lt;/pre&gt;&lt;pre class="alt"&gt;at your option, any later version of Perl 5 you may have available.&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;VersionHistory: &lt;/pre&gt;&lt;pre&gt;0.2.0 --- ysg --- Added RunBeforeExit&lt;/pre&gt;&lt;pre class="alt"&gt;0.0.1 --- ysg --- Initial creation from Template class &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;=cut&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-2366566913142150300?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/2366566913142150300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/08/class-template-in-perl.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/2366566913142150300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/2366566913142150300'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/08/class-template-in-perl.html' title='A class template in Perl'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-8018812591606572880</id><published>2011-08-28T12:42:00.000+03:00</published><updated>2011-08-28T12:42:02.225+03:00</updated><title type='text'>The control flow technique for programming</title><content type='html'>&lt;b&gt;&lt;u&gt;The problem:&amp;nbsp;&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;Programs grow larger .. The more code is added the harder the development , requirements tracking etc&lt;br /&gt;&lt;b&gt;&lt;u&gt;The solution:&amp;nbsp;&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;Write human readable pseudo code instructions into a spreadsheet , so that each "Control flow point" is a row in the spreadsheet. Add the row in the code as logging entries. Thus after each run of the program by filtering the entries from the log the real control flow is revealed. The - human readability is helping also customers and specifications providers to understand what actually the programmer is writing and add / update / correct existing specifications. By sending back and forth the Control Flow the actual process of requirements gathering , specs creation is shortened and the whole development process improved.&lt;br /&gt;It is important that the Control Flow points are chosen ,so that each Control Flow Point must be tested and verified ( not only by the&amp;nbsp;existence&amp;nbsp;of the log entry ). By searching recursively in the source code for the Control Flow point description the developer could jump straight into the actual part of the source code to be worked on ...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-8018812591606572880?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/8018812591606572880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/08/control-flow-technique-for-programming.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/8018812591606572880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/8018812591606572880'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/08/control-flow-technique-for-programming.html' title='The control flow technique for programming'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-639824418722613381</id><published>2011-08-21T11:30:00.000+03:00</published><updated>2011-10-01T22:36:48.225+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='class'/><category scheme='http://www.blogger.com/atom/ns#' term='template'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'></title><content type='html'>&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre{	font-size: small;	color: black;	font-family: Consolas, "Courier New", Courier, Monospace;	background-color: #ffffff;	/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {	background-color: #f4f4f4;	width: 100%;	margin: 0em;}.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;use strict ; use warnings ; &lt;/pre&gt;&lt;pre&gt;package ClassTemplate ; &lt;/pre&gt;&lt;pre class="alt"&gt;my $VERSION=&lt;span class="str"&gt;'0.1.0'&lt;/span&gt; ; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;use lib &lt;span class="str"&gt;'.'&lt;/span&gt; ; use Exporter; &lt;/pre&gt;&lt;pre&gt;my @ISA = qw(AutoLoader Exporter);&lt;/pre&gt;&lt;pre class="alt"&gt;my @EXPORT = qw();&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;BEGIN {     &lt;/pre&gt;&lt;pre class="alt"&gt;    &lt;span class="rem"&gt;#add the module dir in the INC&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;    $0 =~ m/^(.*)(\\|\/)(.*)\.([a-z]*)/; &lt;/pre&gt;&lt;pre class="alt"&gt;    push ( @INC , $1) ;     &lt;/pre&gt;&lt;pre&gt;    &lt;span class="rem"&gt;#debug print join ( ' ' , @INC ) ; &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;} &lt;span class="rem"&gt;#eof BEGIN&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;use Logger ;  &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;### START setting package vars&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;our ( $confHolder , $objLogger , )= () ; &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;### STOP setting package vars &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# ===============================================================&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# START OO&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# -----------------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# the constructor &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# source:http://www.netalive.org/tinkering/serious-perl/#oop_constructors&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# -----------------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;sub new {&lt;/pre&gt;&lt;pre&gt;    &lt;/pre&gt;&lt;pre class="alt"&gt;    my $class = shift ;        &lt;span class="rem"&gt;# Class name is in the first parameter&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;    $confHolder = ${ shift @_ } &lt;span class="kwrd"&gt;if&lt;/span&gt; ( @_ )  ; &lt;/pre&gt;&lt;pre class="alt"&gt;    &lt;/pre&gt;&lt;pre&gt;    my $self = { };  &lt;span class="rem"&gt;# Anonymous hash reference holds instance attributes&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;    &lt;/pre&gt;&lt;pre&gt;    bless($self, $class);          &lt;span class="rem"&gt;# Say: $self is a $class&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;        $self-&amp;gt;Initialize() ;    &lt;/pre&gt;&lt;pre&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; $self;&lt;/pre&gt;&lt;pre class="alt"&gt;} &lt;span class="rem"&gt;#eof const &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# -----------------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# perldoc autoloader &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# -----------------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;sub AUTOLOAD {&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;    my $self = shift ; &lt;/pre&gt;&lt;pre&gt;    no strict &lt;span class="str"&gt;'refs'&lt;/span&gt;; &lt;/pre&gt;&lt;pre class="alt"&gt;    my $name = our $AUTOLOAD;&lt;/pre&gt;&lt;pre&gt;    *$AUTOLOAD = sub { &lt;/pre&gt;&lt;pre class="alt"&gt;    my $msg = &lt;span class="str"&gt;"BOOM! BOOM! BOOM! \n RunTime Error !!!\nUndefined Function $name(@_)\n"&lt;/span&gt; ;&lt;/pre&gt;&lt;pre&gt;    print &lt;span class="str"&gt;"$self , $msg"&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;    };&lt;/pre&gt;&lt;pre&gt;    goto &amp;amp;$AUTOLOAD;    &lt;span class="rem"&gt;# Restart the new routine.&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;}    &lt;span class="rem"&gt;#eof sub AUTOLOAD&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# -----------------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# return a field's value&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# -----------------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;    sub get    {&lt;/pre&gt;&lt;pre&gt;    &lt;/pre&gt;&lt;pre class="alt"&gt;        my $self = shift;&lt;/pre&gt;&lt;pre&gt;        my $name = shift;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; $self-&amp;gt;{$name};&lt;/pre&gt;&lt;pre&gt;    } &lt;span class="rem"&gt;#eof sub get &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# -----------------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# set a field's value &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# -----------------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;    sub set    {&lt;/pre&gt;&lt;pre class="alt"&gt;    &lt;/pre&gt;&lt;pre&gt;        my $self = shift;&lt;/pre&gt;&lt;pre class="alt"&gt;        my $name = shift;&lt;/pre&gt;&lt;pre&gt;        my $value = shift;&lt;/pre&gt;&lt;pre class="alt"&gt;        $self-&amp;gt;{$name}=$value;&lt;/pre&gt;&lt;pre&gt;    } &lt;span class="rem"&gt;#eof sub set &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# -----------------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# return the fields of this obj instance  &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# -----------------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;    sub dumpFields        {&lt;/pre&gt;&lt;pre class="alt"&gt;        my $self = shift ; &lt;/pre&gt;&lt;pre&gt;        my $strFields = () ; &lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;foreach&lt;/span&gt; my $key (keys %$self)        {&lt;/pre&gt;&lt;pre&gt;            $strFields .= &lt;span class="str"&gt;"$key = $self-&amp;gt;{$key}\n"&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;        }&lt;/pre&gt;&lt;pre&gt;        &lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; $strFields ; &lt;/pre&gt;&lt;pre&gt;    } &lt;span class="rem"&gt;#eof sub dumpFields &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# -----------------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# called automatically by perl's garbage collector use to know when &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# -----------------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;sub DESTROY {&lt;/pre&gt;&lt;pre&gt;    my $self = shift;&lt;/pre&gt;&lt;pre class="alt"&gt;    &lt;span class="rem"&gt;#debug print "the DESTRUCTOR is called  \n" ; &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; ; &lt;/pre&gt;&lt;pre class="alt"&gt;} &lt;span class="rem"&gt;#eof sub DESTROY&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# -----------------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# Initialize the object with the minimum data it will need to operate &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# -----------------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;sub Initialize {&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;    my $self = shift ; &lt;/pre&gt;&lt;pre&gt;    &lt;/pre&gt;&lt;pre class="alt"&gt;    $objLogger = new Logger (\$confHolder) ; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;} &lt;span class="rem"&gt;#eof sub Initialize&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# STOP OO&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# =============================================================================&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;1 ; &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;__END__&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;=head1 NAME&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;ClassTemplate&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;=head1 SYNOPSIS&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;use ClassTemplate; &lt;/pre&gt;&lt;pre class="alt"&gt;  &lt;/pre&gt;&lt;pre&gt;=head1 DESCRIPTION&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;This class provides handy method &lt;span class="kwrd"&gt;for&lt;/span&gt; object's handling&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;=head2 EXPORT&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;=head1 SEE ALSO&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;perldoc perlvars&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;No mailing list &lt;span class="kwrd"&gt;for&lt;/span&gt; this module&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;=head1 AUTHOR&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;yordan.georgiev@gmail.com&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;=head1 COPYRIGHT AND LICENSE&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;Copyright (C) 2011 Yordan Georgiev&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;This library is free software; you can redistribute it and/or modify&lt;/pre&gt;&lt;pre&gt;it under the same terms as Perl itself, either Perl version 5.8.1 or,&lt;/pre&gt;&lt;pre class="alt"&gt;at your option, any later version of Perl 5 you may have available.&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;VersionHistory: &lt;/pre&gt;&lt;pre&gt;0.0.1 --- ysg --- Initial creation from Template class &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;=cut&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-639824418722613381?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/639824418722613381/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/08/blog-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/639824418722613381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/639824418722613381'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/08/blog-post.html' title=''/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-8035560775104587672</id><published>2011-08-19T23:28:00.002+03:00</published><updated>2011-08-19T23:28:49.311+03:00</updated><title type='text'>my favorite unix command</title><content type='html'>find /path/to/files -name '*.ext' -exec echo command to file {} \;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-8035560775104587672?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/8035560775104587672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/08/my-favorite-unix-command.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/8035560775104587672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/8035560775104587672'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/08/my-favorite-unix-command.html' title='my favorite unix command'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-2832346084765058473</id><published>2011-08-17T22:11:00.002+03:00</published><updated>2011-08-17T22:11:40.424+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bubblesort'/><category scheme='http://www.blogger.com/atom/ns#' term='how-to'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><category scheme='http://www.blogger.com/atom/ns#' term='sort'/><category scheme='http://www.blogger.com/atom/ns#' term='OO'/><title type='text'>how-to bublesort in OO perl</title><content type='html'>&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre{	font-size: small;	color: black;	font-family: Consolas, "Courier New", Courier, Monospace;	background-color: #ffffff;	/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {	background-color: #f4f4f4;	width: 100%;	margin: 0em;}.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;#source:http://blob.perl.org/tpc/1998/Perl_Language_and_Modules/Efficient%20Perl/handout.html&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;sub bubblesort {&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;    my $self = shift ; &lt;/pre&gt;&lt;pre class="alt"&gt;    my ( $array ) = @_;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;    use integer;        &lt;span class="rem"&gt;# More speed.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;    print &lt;span class="str"&gt;"\@_ is @_ \n"&lt;/span&gt; ; &lt;/pre&gt;&lt;pre&gt;    print &lt;span class="str"&gt;"\$array is $array \n"&lt;/span&gt; ; &lt;/pre&gt;&lt;pre class="alt"&gt;    print &lt;span class="str"&gt;"\$#$array is $#$array \n"&lt;/span&gt; ; &lt;/pre&gt;&lt;pre&gt;    &lt;/pre&gt;&lt;pre class="alt"&gt;    my $lastj   = $&lt;span class="rem"&gt;#$array or return $array ; # 0 or 1 element array is sorted already just returned&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;    my $firstj  = 1;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;    my ( $i, $j, $keepj, $big );&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;    &lt;span class="rem"&gt;# return $array  if $firstj &amp;gt; $lastj;     # 0 or 1 element array is sorted.&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;    &lt;span class="kwrd"&gt;while&lt;/span&gt; ( $firstj ) {&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="rem"&gt;# Run from&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="rem"&gt;# ( $firstj - 1, $firstj ) .. ( $lastj - 1 , $lastj ),&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="rem"&gt;# swapping when out of order.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="kwrd"&gt;for&lt;/span&gt; ( $j = $firstj, $i = $j - 1,&lt;/pre&gt;&lt;pre class="alt"&gt;              $keepj = $lastj, $firstj = 0;&lt;/pre&gt;&lt;pre&gt;          $j &amp;lt;= $keepj;&lt;/pre&gt;&lt;pre class="alt"&gt;          $i = $j++ ) {&lt;/pre&gt;&lt;pre&gt;        next unless $array-&amp;gt;[ $i ] gt $array-&amp;gt;[ $j ];&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="rem"&gt;# Remember where we started if this is the first swap&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="rem"&gt;# (but do not try to compare with the predecessor of 0)&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;        $firstj = $firstj || $i || $j;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="rem"&gt;# Something to swap, try for a run of swaps.&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="rem"&gt;# Remove the element that must swap up.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;        $big = splice @$array, $i, 1;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="rem"&gt;# Use $j &amp;lt; $keepj instead of $j &amp;lt;= $keepj&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="rem"&gt;# because the array is one shorter right now.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="rem"&gt;# We already tested the $j entry that has been&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="rem"&gt;# shifted to $j-1.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;        ++$j &lt;span class="kwrd"&gt;while&lt;/span&gt; $j &amp;lt; $keepj &amp;amp;&amp;amp; $array-&amp;gt;[ $j ] lt $big;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="rem"&gt;# Put back the removed element in its new place.&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;        splice @$array, $j, 0, $big;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="rem"&gt;# fix $j for the splice, and revalidate $i.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;        $i = $j++;&lt;/pre&gt;&lt;pre class="alt"&gt;        $lastj = $i;&lt;/pre&gt;&lt;pre&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;    }&lt;/pre&gt;&lt;pre&gt;    &lt;/pre&gt;&lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; $array ; &lt;/pre&gt;&lt;pre&gt;} &lt;span class="rem"&gt;#eof sub &lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-2832346084765058473?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/2832346084765058473/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/08/how-to-bublesort-in-oo-perl.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/2832346084765058473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/2832346084765058473'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/08/how-to-bublesort-in-oo-perl.html' title='how-to bublesort in OO perl'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-7636890401458541308</id><published>2011-08-14T16:55:00.000+03:00</published><updated>2011-08-14T16:56:00.064+03:00</updated><title type='text'>why am I optimist for the future of IT</title><content type='html'>&lt;a href="http://draft.blogger.com/URL"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://draft.blogger.com/URL"&gt;I&lt;/a&gt; remember the September of 2001. I bought my first HP laptop for school with the money I have earned from working at the bar. It's prise was probably some 1200 euros in current prices ... It had Windows XP , it was slow and heavy, but at this time I was the only one in the class having laptop, back than it was more of a business person accessory ... It was a big investment back &amp;nbsp;than ...&lt;br /&gt;&lt;br /&gt;Today we bought a laptop for the kids - for home work, net and CD games ... It has 10 times more RAM , some 10 times more storage , &amp;nbsp;the processor is probably at least 5 times faster ( One should not stare at the processor speed only ... ) Anyway a laptop with much better performance for 1/5 of the price .... Compare again Win7 and Windows XP and the level of the software one could get nowadays ...&lt;br /&gt;&lt;br /&gt;I mean with the price of computing decreasing with such speed ... there will be more and more people affording the digital age ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-7636890401458541308?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/7636890401458541308/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/08/why-am-i-optimist-for-future-of-it.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/7636890401458541308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/7636890401458541308'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/08/why-am-i-optimist-for-future-of-it.html' title='why am I optimist for the future of IT'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-1468024138640781250</id><published>2011-08-12T22:00:00.002+03:00</published><updated>2011-08-12T22:00:43.372+03:00</updated><title type='text'>NASA | X-Class: A Guide to Solar Flares</title><content type='html'>&lt;iframe width="560" height="349" src="http://www.youtube.com/embed/oOXVZo7KikE" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-1468024138640781250?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/1468024138640781250/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/08/nasa-x-class-guide-to-solar-flares.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/1468024138640781250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/1468024138640781250'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/08/nasa-x-class-guide-to-solar-flares.html' title='NASA | X-Class: A Guide to Solar Flares'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/oOXVZo7KikE/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-2730075918533879102</id><published>2011-08-06T00:35:00.002+03:00</published><updated>2011-08-06T00:36:23.123+03:00</updated><title type='text'>how open is android</title><content type='html'>&lt;a href="http://draft.blogger.com/URL"&gt;N&lt;/a&gt;ot very &lt;a href="http://www.wired.com/gadgetlab/2011/08/android-least-open-platform/"&gt;much&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-2730075918533879102?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/2730075918533879102/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/08/how-open-is-android.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/2730075918533879102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/2730075918533879102'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/08/how-open-is-android.html' title='how open is android'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-2561946174556993953</id><published>2011-08-05T19:17:00.003+03:00</published><updated>2011-08-05T19:17:41.311+03:00</updated><title type='text'>Politicians lie often ... what about BI ?</title><content type='html'>&lt;a href="http://www.google.fi/publicdata/explore?ds=d5bncppjof8f9_&amp;amp;met_y=ny_gdp_pcap_cd&amp;amp;idim=country:EST&amp;amp;dl=en&amp;amp;hl=en&amp;amp;q=gdp+per+capita+estonia+bulgaria#ctype=l&amp;amp;strail=false&amp;amp;nselm=h&amp;amp;met_y=ny_gdp_pcap_cd&amp;amp;scale_y=lin&amp;amp;ind_y=false&amp;amp;rdim=country&amp;amp;idim=country:EST:BGR:FIN:RUS:ROM:ALB:CZE:USA:TUR:GRC&amp;amp;ifdim=country&amp;amp;hl=en&amp;amp;dl=en"&gt;never&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-2561946174556993953?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/2561946174556993953/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/08/politicians-lie-often-what-about-bi.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/2561946174556993953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/2561946174556993953'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/08/politicians-lie-often-what-about-bi.html' title='Politicians lie often ... what about BI ?'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-1377712374760696518</id><published>2011-07-10T14:52:00.000+03:00</published><updated>2011-07-10T14:52:02.682+03:00</updated><title type='text'>How-to clear the screen in cygwin on windows</title><content type='html'>&lt;a href="http://draft.blogger.com/URL"&gt;D&lt;/a&gt;o not bother with the default cmd.exe terminal started by default when you start bash ...&lt;br /&gt;Use &lt;a href="http://code.google.com/p/puttycyg/downloads/list"&gt;puttycfg&lt;/a&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;download the puttycfg , unzip to C:\temp\something&lt;/li&gt;&lt;li&gt;Find out where cygwin1.dll is installed cygcheck -sd &amp;gt;list.txt&lt;/li&gt;&lt;li&gt;Open the list.txt ( it is quite big ) : notepad list.txt&amp;nbsp;&lt;/li&gt;&lt;li&gt;Copy all the files from &amp;nbsp;C:\temp\something&amp;nbsp;to the dir where the cygwin1.dll is located&amp;nbsp;&lt;/li&gt;&lt;li&gt;Start the putty.exe&amp;nbsp;&lt;/li&gt;&lt;li&gt;In the GUI , check that Session on the Left is selected , click on Cygterm option , for hostName type - , leave port number 22&lt;/li&gt;&lt;li&gt;Click on open&amp;nbsp;&lt;/li&gt;&lt;li&gt;Run the clear command ... Now you have much better terminal ... &amp;nbsp;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-1377712374760696518?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/1377712374760696518/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/07/how-to-clear-screen-in-cygwin-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/1377712374760696518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/1377712374760696518'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/07/how-to-clear-screen-in-cygwin-on.html' title='How-to clear the screen in cygwin on windows'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-5624915181241498187</id><published>2011-07-10T12:08:00.001+03:00</published><updated>2011-07-10T12:08:15.007+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='parser'/><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><category scheme='http://www.blogger.com/atom/ns#' term='excel'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>how-to parse excel file with perl with Spreadsheet::ParseExcel module</title><content type='html'>&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre{	font-size: small;	color: black;	font-family: Consolas, "Courier New", Courier, Monospace;	background-color: #ffffff;	/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {	background-color: #f4f4f4;	width: 100%;	margin: 0em;}.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;package Excel2003Handler ; &lt;/pre&gt;&lt;pre&gt;my $VERSION=&lt;span class="str"&gt;'0.0.3'&lt;/span&gt; ; &lt;/pre&gt;&lt;pre class="alt"&gt;require Exporter;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;use strict ; use warnings  ; use Carp qw(cluck);&lt;/pre&gt;&lt;pre&gt;use lib &lt;span class="str"&gt;'.'&lt;/span&gt; ; use Spreadsheet::ParseExcel;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;BEGIN {     &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;$0 =~ m/^(.*)(\\|\/)(.*)\.([a-z]*)/; &lt;/pre&gt;&lt;pre class="alt"&gt;push ( @INC , $1) ; &lt;/pre&gt;&lt;pre&gt;}&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;use Logger ; use FileHandler ; &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;my @ISA = qw(AutoLoader Exporter);&lt;/pre&gt;&lt;pre class="alt"&gt;my @EXPORT = qw(DumpExcel ParseExcel GetValue);&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;our ( $confHolder , $FileInputExcel , $objLogger , $objFileHandler ) = () ; &lt;/pre&gt;&lt;pre class="alt"&gt;our ( $DelimiterCsv , $MsgAction ) = () ;  &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;sub Initialize {&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;my $self = shift ; &lt;/pre&gt;&lt;pre&gt;my $FlagSuccess = 0 ; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;$objLogger = new Logger (\$confHolder) ; &lt;/pre&gt;&lt;pre class="alt"&gt;$objFileHandler = new FileHandler ( \$confHolder ) ; &lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;$FileInputExcel = $confHolder-&amp;gt;{&lt;span class="str"&gt;'FileExcelInput'&lt;/span&gt;} ; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;unless( -f $FileInputExcel ) { &lt;/pre&gt;&lt;pre&gt;$MsgAction = &lt;span class="str"&gt;"Cannot find the Excel file $FileInputExcel , exiting !!! \n"&lt;/span&gt; ;                 &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; 1 ; &lt;/pre&gt;&lt;pre&gt;}&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;$DelimiterCsv =&lt;span class="str"&gt;"\t"&lt;/span&gt; ; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;$FlagSuccess = 1 ; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; $FlagSuccess; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;} &lt;span class="rem"&gt;#eof sub Initialize&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# =============================================================================&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# START OO&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;#source:http://www.netalive.org/tinkering/serious-perl/#oop_constructors&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;sub new {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;my $class = shift ;        &lt;span class="rem"&gt;# Class name is in the first parameter&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;$confHolder = ${ shift @_ } &lt;span class="kwrd"&gt;if&lt;/span&gt; ( @_ )  ; &lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;my $self = { };  &lt;span class="rem"&gt;# Anonymous hash reference holds instance attributes&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;bless($self, $class);          &lt;span class="rem"&gt;# Say: $self is a $class&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;$self-&amp;gt;Initialize() ;    &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; $self;&lt;/pre&gt;&lt;pre&gt;} &lt;span class="rem"&gt;#eof const &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;sub AUTOLOAD {&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;my $self = shift ; &lt;/pre&gt;&lt;pre&gt;no strict &lt;span class="str"&gt;'refs'&lt;/span&gt;; &lt;/pre&gt;&lt;pre class="alt"&gt;my $name = our $AUTOLOAD;&lt;/pre&gt;&lt;pre&gt;*$AUTOLOAD = sub { &lt;/pre&gt;&lt;pre class="alt"&gt;my $msg = &lt;span class="str"&gt;"BOOM! BOOM! BOOM! \n RunTime Error !!!\nUndefined Function $name(@_)\n"&lt;/span&gt; ;&lt;/pre&gt;&lt;pre&gt;print &lt;span class="str"&gt;"$self , $msg"&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;};&lt;/pre&gt;&lt;pre&gt;goto &amp;amp;$AUTOLOAD;    &lt;span class="rem"&gt;# Restart the new routine.&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;}    &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;sub get    {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;my $self = shift;&lt;/pre&gt;&lt;pre class="alt"&gt;my $name = shift;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; $self-&amp;gt;{$name};&lt;/pre&gt;&lt;pre class="alt"&gt;} &lt;span class="rem"&gt;#eof sub get &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;sub set    {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;my $self = shift;&lt;/pre&gt;&lt;pre class="alt"&gt;my $name = shift;&lt;/pre&gt;&lt;pre&gt;my $value = shift;&lt;/pre&gt;&lt;pre class="alt"&gt;$self-&amp;gt;{$name}=$value;&lt;/pre&gt;&lt;pre&gt;} &lt;span class="rem"&gt;#eof sub set &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;sub DESTROY {&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;my $self = shift;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#debug print "the DESTRUCTOR is called  \n" ; &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; ; &lt;/pre&gt;&lt;pre&gt;} &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# STOP OO&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# =============================================================================&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;sub ExcelToCsv { &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;my $self = shift ; &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;$FileInputExcel =~ m/^(.*)(\\|\/)(.*)\.([a-z]*)/; &lt;/pre&gt;&lt;pre class="alt"&gt;my $DirOutput = $1 ; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;#Delete first the old csv files &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;my ($RefFilesAndDirs , $RefDirsToProcess , $RefFilesToProcess ) = &lt;/pre&gt;&lt;pre class="alt"&gt;$objFileHandler-&amp;gt;ReadDirRecursivelyReturnArrays ( $DirOutput , &lt;span class="str"&gt;'.csv'&lt;/span&gt;) ; &lt;/pre&gt;&lt;pre&gt;my @FilesToProcess = @$RefFilesToProcess ; &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;foreach&lt;/span&gt; my $FileToProcess ( @FilesToProcess ) { &lt;/pre&gt;&lt;pre class="alt"&gt;unlink ( $FileToProcess ) ; &lt;/pre&gt;&lt;pre&gt;}&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;my ( $RefWorkSheets , $RefWorkSheetNames ) = $self-&amp;gt;ParseExcel () ; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;my @WorkSheetNames = @$RefWorkSheetNames ; &lt;/pre&gt;&lt;pre&gt;my @RefWorkSheets = @$RefWorkSheets ; &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;foreach&lt;/span&gt; my $WorkSheetRef ( @RefWorkSheets ) { &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;my @Rows = @$WorkSheetRef ; &lt;/pre&gt;&lt;pre class="alt"&gt;my $StrToPrint = () ; &lt;/pre&gt;&lt;pre&gt;my $WorkSheetName = shift ( @WorkSheetNames ) ; &lt;/pre&gt;&lt;pre class="alt"&gt;my $FileCsvToPrint = &lt;span class="str"&gt;"$DirOutput/$WorkSheetName"&lt;/span&gt; . &lt;span class="str"&gt;'.csv'&lt;/span&gt; ; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;foreach&lt;/span&gt; my $RowRef ( @Rows ) {&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;my @Cols = @$RowRef ; &lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# from the first till the last number of the array &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;for&lt;/span&gt; ( 0 .. $&lt;span class="rem"&gt;#Cols )    {&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;my $token = &lt;span class="str"&gt;"$Cols[$_]"&lt;/span&gt; ; &lt;/pre&gt;&lt;pre&gt;$StrToPrint .= &lt;span class="str"&gt;"$DelimiterCsv"&lt;/span&gt; . &lt;span class="str"&gt;"$token"&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; $_ ; &lt;/pre&gt;&lt;pre class="alt"&gt;$StrToPrint .= &lt;span class="str"&gt;"$token"&lt;/span&gt; unless $_ ;     &lt;span class="rem"&gt;#the elemen&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;} &lt;span class="rem"&gt;#eof for&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;$StrToPrint .= &lt;span class="str"&gt;"\n"&lt;/span&gt; ; &lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;} &lt;span class="rem"&gt;#eof foreach my $RowRef &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;$objFileHandler-&amp;gt;PrintToFile($FileCsvToPrint , $StrToPrint ) &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; ( defined ( $StrToPrint));&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;} &lt;span class="rem"&gt;#eof foreach foreach my $WorkSheetRef&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;} &lt;span class="rem"&gt;#eof sub &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# --- foreach worksheet create worksheet refs into array &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# --- foreach row in worksheet create refs into array &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# --- foreach column in row create refs into array &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# --- add col refs , to row refs array , to worksheets refs array&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# --- return the whole thingy&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;sub ParseExcel {&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;my $self = shift ; &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#old my $strTemplate = shift ; &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;#old my $FileToPrintTemplated = shift ; &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;my $FileInputExcel = $confHolder-&amp;gt;{&lt;span class="str"&gt;'FileExcelInput'&lt;/span&gt;} ; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;unless ( defined ( $FileInputExcel) or  -f $FileInputExcel ) { &lt;/pre&gt;&lt;pre&gt;$objLogger-&amp;gt;LogInfoErrorMsg ( &lt;span class="str"&gt;" Cannot parse Excel 2003 - No file to read !!! "&lt;/span&gt; ) ; &lt;/pre&gt;&lt;pre class="alt"&gt;$objLogger-&amp;gt;LogInfoErrorMsg ( &lt;span class="str"&gt;" EXIT 1"&lt;/span&gt; ) ; &lt;/pre&gt;&lt;pre&gt;exit(1) ; &lt;/pre&gt;&lt;pre class="alt"&gt;}&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;my $parser   = Spreadsheet::ParseExcel-&amp;gt;new();&lt;/pre&gt;&lt;pre&gt;my $Workbook = $parser-&amp;gt;Parse(&lt;span class="str"&gt;"$FileInputExcel"&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; ( !defined $Workbook ) {&lt;/pre&gt;&lt;pre&gt;print STDERR &lt;span class="str"&gt;"cannot parse \$FileInputExcel $FileInputExcel $! $parser-&amp;gt;error()"&lt;/span&gt; ; &lt;/pre&gt;&lt;pre class="alt"&gt;die $parser-&amp;gt;error(), &lt;span class="str"&gt;".\n"&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;}&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;my @RefWorkSheets = () ; &lt;/pre&gt;&lt;pre&gt;my @WorkSheetNames = () ; &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;foreach&lt;/span&gt; my $worksheet (@{$Workbook-&amp;gt;{Worksheet}}) {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;my $WorkSheetRef = () ; &lt;/pre&gt;&lt;pre class="alt"&gt;my $WorkSheetName = $worksheet-&amp;gt;{&lt;span class="str"&gt;'Name'&lt;/span&gt;} ; &lt;/pre&gt;&lt;pre&gt;push ( @WorkSheetNames , $WorkSheetName ) ; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;my ( $ColMin , $ColMax , $RowMin , $RowMax ) ; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;$ColMin = $worksheet-&amp;gt;{MinCol} ; &lt;/pre&gt;&lt;pre class="alt"&gt;$ColMax = $worksheet-&amp;gt;{MaxCol} ; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;$RowMin = $worksheet-&amp;gt;{MinRow} ; &lt;/pre&gt;&lt;pre&gt;$RowMax= $worksheet-&amp;gt;{MaxRow} ; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#the first row are the column headers &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;my $MinRowWithData= $RowMin +1 ;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;$objLogger-&amp;gt;LogDebugMsg ( &lt;span class="str"&gt;"\$ColMin is $ColMin"&lt;/span&gt;) ; &lt;/pre&gt;&lt;pre&gt;$objLogger-&amp;gt;LogDebugMsg ( &lt;span class="str"&gt;"\$ColMax is $ColMax"&lt;/span&gt;) ; &lt;/pre&gt;&lt;pre class="alt"&gt;$objLogger-&amp;gt;LogDebugMsg ( &lt;span class="str"&gt;"\$RowMin is $RowMin"&lt;/span&gt;) ; &lt;/pre&gt;&lt;pre&gt;$objLogger-&amp;gt;LogDebugMsg ( &lt;span class="str"&gt;"\$RowMax is $RowMax"&lt;/span&gt;) ; &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;my @RowRefs = () ; &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;for&lt;/span&gt; my $row ( $MinRowWithData .. $RowMax) {&lt;/pre&gt;&lt;pre class="alt"&gt;my $RowRef = () ;                 &lt;/pre&gt;&lt;pre&gt;my @Row = () ; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;for&lt;/span&gt; my $col ( $ColMin .. $ColMax ) {&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# get the cell obj not it's value&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;my $cell = $worksheet-&amp;gt;{Cells}[$row][$col]  ; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;#deprec next unless $cell;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;$objLogger-&amp;gt;LogDebugMsg ( &lt;span class="str"&gt;" Row, Col    = ($row, $col)"&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# if the cell as a value it is defined &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; ( $cell ) {&lt;/pre&gt;&lt;pre&gt;$cell-&amp;gt;Value() ;&lt;/pre&gt;&lt;pre class="alt"&gt;push ( @Row , $cell-&amp;gt;Value () ) ; &lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#debug $objLogger-&amp;gt;LogDebugMsg ( " Value = $cell-&amp;gt;Value() ");                #The Value&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;}&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;else&lt;/span&gt; {&lt;/pre&gt;&lt;pre class="alt"&gt;push ( @Row , undef ) ; &lt;/pre&gt;&lt;pre&gt;}&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;} &lt;span class="rem"&gt;#eof for col &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;push ( @RowRefs , \@Row ) ; &lt;/pre&gt;&lt;pre class="alt"&gt;} &lt;span class="rem"&gt;#eof row&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;push ( @RefWorkSheets , \@RowRefs ) ; &lt;/pre&gt;&lt;pre&gt;} &lt;span class="rem"&gt;#eof worksheet&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; ( \@RefWorkSheets , \@WorkSheetNames ) ; &lt;/pre&gt;&lt;pre&gt;} &lt;span class="rem"&gt;#eof sub&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;sub GetValue {&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;my $self = shift ; &lt;/pre&gt;&lt;pre&gt;my $RefWorkSheets = shift ; &lt;/pre&gt;&lt;pre class="alt"&gt;my @RefWorkSheets = @$RefWorkSheets ; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;my $WorkSheetNumber = shift ; &lt;/pre&gt;&lt;pre&gt;my $RowNumber = shift ; &lt;/pre&gt;&lt;pre class="alt"&gt;my $ColNumber = shift ; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;my $RefRows = $RefWorkSheets [$WorkSheetNumber ] ;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; undef unless ( $RefRows ) ; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;my @Rows = @$RefRows ; &lt;/pre&gt;&lt;pre&gt;my $RefCols = $Rows[ $RowNumber ] ; &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; undef unless ( $RefCols ) ; &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;my @Cols = @$RefCols ; &lt;/pre&gt;&lt;pre class="alt"&gt;my $ValueToReturn = $Cols [$ColNumber ] ; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;} &lt;span class="rem"&gt;#eof sub GetValue &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;sub DumpExcel { &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;my $self = shift ; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;my $RefWorkSheets = $self-&amp;gt;ParseExcel () ; &lt;/pre&gt;&lt;pre&gt;my @RefWorkSheets = @$RefWorkSheets ; &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;foreach&lt;/span&gt; my $WorkSheetRef ( @RefWorkSheets ) { &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;my @Rows = @$WorkSheetRef ; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;foreach&lt;/span&gt; my $RowRef ( @Rows ) {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;my @Cols = @$RowRef ; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;foreach&lt;/span&gt; my $Col ( @Cols) {&lt;/pre&gt;&lt;pre class="alt"&gt;$objLogger-&amp;gt;LogDebugMsg ( &lt;span class="str"&gt;"\$Col is $Col "&lt;/span&gt; ); &lt;/pre&gt;&lt;pre&gt;}&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;} &lt;span class="rem"&gt;#eof foreach my $RowRef &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;} &lt;span class="rem"&gt;#eof foreach foreach my $WorkSheetRef&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;} &lt;span class="rem"&gt;#eof sub DumpExcel &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;1;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;__END__&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;=head1 NAME&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;Excel2003Handler&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;=head1 SYNOPSIS&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;use Excel2003Handler  ; &lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;=head1 DESCRIPTION&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;Provide a simple interface &lt;span class="kwrd"&gt;for&lt;/span&gt; handling Excel 2003 and print to csv files, a wrapper build around the Spreadsheet::ParseExcel module. This module has external dependancies on the modules of the morphus tool - google code morhpus&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;=head2 EXPORT&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;=head1 SEE ALSO&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;perldoc perlvars&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;. No mailing list &lt;span class="kwrd"&gt;for&lt;/span&gt; this module&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;=head1 AUTHOR&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;FirstName.LastName@gmail.com&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;=head1 COPYRIGHT AND LICENSE&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;Copyright (C) 2011 Yordan Georgiev&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;This library is free software; you can redistribute it and/or modify&lt;/pre&gt;&lt;pre class="alt"&gt;it under the same terms as Perl itself, either Perl version 5.8.1 or,&lt;/pre&gt;&lt;pre&gt;at your option, any later version of Perl 5 you may have available.&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;VersionHistory: &lt;/pre&gt;&lt;pre class="alt"&gt;0.0.3 --- ysg --- Fixing bug with first char being a \t&lt;/pre&gt;&lt;pre&gt;0.0.2 --- ysg --- Refactoring. Tested. Works. Added documentation&lt;/pre&gt;&lt;pre class="alt"&gt;0.0.1 --- ysg --- Initial version -  OO methods + Initialize , ParseExcel , GetValue , DumpExcel&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;=cut&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-5624915181241498187?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/5624915181241498187/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/07/how-to-parse-excel-file-with-perl-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/5624915181241498187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/5624915181241498187'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/07/how-to-parse-excel-file-with-perl-with.html' title='how-to parse excel file with perl with Spreadsheet::ParseExcel module'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-7953133057985769238</id><published>2011-07-10T11:14:00.002+03:00</published><updated>2011-07-10T11:14:24.970+03:00</updated><title type='text'>Just how good the 3D printing can get ?</title><content type='html'>The sky is the limit ... &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe width="560" height="349" src="http://www.youtube.com/embed/ZboxMsSz5Aw" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-7953133057985769238?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/7953133057985769238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/07/just-how-good-3d-printing-can-get.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/7953133057985769238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/7953133057985769238'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/07/just-how-good-3d-printing-can-get.html' title='Just how good the 3D printing can get ?'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/ZboxMsSz5Aw/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-4537557472248455239</id><published>2011-07-08T23:18:00.001+03:00</published><updated>2011-10-01T22:48:15.002+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dos'/><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><category scheme='http://www.blogger.com/atom/ns#' term='cygwin'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>how-to convert my dos files into unix files with cygwin windows</title><content type='html'>for file in `ls -1` ; do perl -pi -e 's/\r\n/\n/g' $file;done;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-4537557472248455239?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/4537557472248455239/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/07/how-to-convert-my-dos-files-into-unix.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/4537557472248455239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/4537557472248455239'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/07/how-to-convert-my-dos-files-into-unix.html' title='how-to convert my dos files into unix files with cygwin windows'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-7916601411197655490</id><published>2011-05-25T22:08:00.000+03:00</published><updated>2011-05-25T22:08:38.737+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='biofuels'/><category scheme='http://www.blogger.com/atom/ns#' term='Khan Academy'/><title type='text'>ePolishing Math + English skills and preparing for biofuels prime time ...</title><content type='html'>&lt;iframe width="425" height="349" src="http://www.youtube.com/embed/JWfTckls59k" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-7916601411197655490?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/7916601411197655490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/05/epolishing-math-english-skills-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/7916601411197655490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/7916601411197655490'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/05/epolishing-math-english-skills-and.html' title='ePolishing Math + English skills and preparing for biofuels prime time ...'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/JWfTckls59k/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-7615694020657251154</id><published>2011-05-24T23:02:00.002+03:00</published><updated>2011-05-24T23:02:58.712+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google code'/><category scheme='http://www.blogger.com/atom/ns#' term='morphus'/><title type='text'>morphus out now ...</title><content type='html'>&lt;a href="http://code.google.com/p/morphus/"&gt;On Google code Project Hosting  &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-7615694020657251154?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/7615694020657251154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/05/morphus-out-now.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/7615694020657251154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/7615694020657251154'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/05/morphus-out-now.html' title='morphus out now ...'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-7576457302325600588</id><published>2011-05-21T09:19:00.001+03:00</published><updated>2011-05-21T09:19:57.389+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ideas'/><category scheme='http://www.blogger.com/atom/ns#' term='TED'/><title type='text'>Mindblow ... brain hacking</title><content type='html'>&lt;object width="446" height="326"&gt;&lt;param name="movie" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;param name="bgColor" value="#ffffff"&gt;&lt;/param&gt;&lt;param name="flashvars" value="vu=http://video.ted.com/talk/stream/2011/Blank/EdBoyden_2011-320k.mp4&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/EdBoyden-2011.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=1146&amp;lang=&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=ed_boyden;year=2011;theme=how_the_mind_works;theme=new_on_ted_com;theme=a_taste_of_ted2011;event=TED2011;tag=Science;tag=Technology;tag=brain;tag=neurology;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;" /&gt;&lt;embed src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" pluginspace="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="transparent" bgColor="#ffffff" width="446" height="326" allowFullScreen="true" allowScriptAccess="always" flashvars="vu=http://video.ted.com/talk/stream/2011/Blank/EdBoyden_2011-320k.mp4&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/EdBoyden-2011.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=1146&amp;lang=&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=ed_boyden;year=2011;theme=how_the_mind_works;theme=new_on_ted_com;theme=a_taste_of_ted2011;event=TED2011;tag=Science;tag=Technology;tag=brain;tag=neurology;"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-7576457302325600588?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/7576457302325600588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/05/mindblow-brain-hacking.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/7576457302325600588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/7576457302325600588'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/05/mindblow-brain-hacking.html' title='Mindblow ... brain hacking'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-7080186421789246038</id><published>2011-05-20T21:31:00.000+03:00</published><updated>2011-05-20T21:31:14.106+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='textpad'/><category scheme='http://www.blogger.com/atom/ns#' term='cmd windows batch'/><title type='text'>how-to open all your desired source files in your favorite editor on windows</title><content type='html'>&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: Consolas, "Courier New", Courier, Monospace; background-color: #ffffff; /*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em;}.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;@echo off&lt;/pre&gt;&lt;pre&gt;echo docs at the &lt;span class="kwrd"&gt;end&lt;/span&gt; ... &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;set _BaseDir=E:\perl\sfw&lt;/pre&gt;&lt;pre class="alt"&gt;set _ProductName=PerlMinLogger&lt;/pre&gt;&lt;pre&gt;set _ProductVersion=1.1.0&lt;/pre&gt;&lt;pre class="alt"&gt;set _ProductType=dev&lt;/pre&gt;&lt;pre&gt;set _ProductOwner=ysg&lt;/pre&gt;&lt;pre class="alt"&gt;set _EnvironmentName=%_ProductName%.%_ProductVersion%.%_ProductType%.%_ProductOwner%&lt;/pre&gt;&lt;pre&gt;set _ProductVersionDir=%_BaseDir%\%_ProductName%\%_EnvironmentName%&lt;/pre&gt;&lt;pre class="alt"&gt;set _TextEditorName=textpad&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;:: OPEN all the files from the sfw dir&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;for&lt;/span&gt; /f %%i &lt;span class="kwrd"&gt;in&lt;/span&gt; (&lt;span class="str"&gt;'dir %_ProductVersionDir%\sfw\*.sh *.cmd /s /b'&lt;/span&gt;) do start /max  %_TextEditorName%  &lt;span class="str"&gt;"%%i"&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;:: OPEN all the files from the sfw dir&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;for&lt;/span&gt; /f %%i &lt;span class="kwrd"&gt;in&lt;/span&gt; (&lt;span class="str"&gt;'dir %_ProductVersionDir%\sfw\perl\*.pm *.pl /s /b'&lt;/span&gt;) do start /max  %_TextEditorName%  &lt;span class="str"&gt;"%%i"&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;:: open all the files from the conf dir&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;for&lt;/span&gt; /f %%i &lt;span class="kwrd"&gt;in&lt;/span&gt; (&lt;span class="str"&gt;'dir %_ProductVersionDir%\conf\*.ini /s /b'&lt;/span&gt;) do start /max  %_TextEditorName%  &lt;span class="str"&gt;"%%i"&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;:: OPEN all the files from the log dir&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;for&lt;/span&gt; /f %%i &lt;span class="kwrd"&gt;in&lt;/span&gt; (&lt;span class="str"&gt;'dir %_ProductVersionDir%\data\log\*.log /s /b'&lt;/span&gt;) do start /max  %_TextEditorName%  &lt;span class="str"&gt;"%%i"&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;ECHO OPEN THE SearchAndReplace Utility&lt;/pre&gt;&lt;pre class="alt"&gt;:: cmd start /max SearchAndReplace.exe&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;:: File: Open-PerlMinLogger.1.1.0.dev.ysg.hostName.cmd&lt;/pre&gt;&lt;pre&gt;:: Purpose: Single click &lt;span class="kwrd"&gt;for&lt;/span&gt; all desired files of types &lt;span class="kwrd"&gt;in&lt;/span&gt; your favorite text editor&lt;/pre&gt;&lt;pre class="alt"&gt;:: Requirements  &lt;/pre&gt;&lt;pre&gt;:: W2K and bigger. The name of your text editor should be &lt;span class="kwrd"&gt;in&lt;/span&gt; your path &lt;/pre&gt;&lt;pre class="alt"&gt;:: Your texteditor should support TextEditor FileToOpen1 FileToOpen2  call syntax&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-7080186421789246038?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/7080186421789246038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/05/how-to-open-all-your-desired-source.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/7080186421789246038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/7080186421789246038'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/05/how-to-open-all-your-desired-source.html' title='how-to open all your desired source files in your favorite editor on windows'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-6704639121763706787</id><published>2011-05-19T20:07:00.002+03:00</published><updated>2011-05-19T20:07:38.952+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cmd'/><category scheme='http://www.blogger.com/atom/ns#' term='cmd windows batch'/><title type='text'>how-to zip a relative path win winzip by specifying only specific files to include in package</title><content type='html'>&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: Consolas, "Courier New", Courier, Monospace; background-color: #ffffff; /*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em;}.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;@echo off&lt;/pre&gt;&lt;pre&gt;:: VARS SETTING&lt;/pre&gt;&lt;pre class="alt"&gt;set _ProductName=cas&lt;/pre&gt;&lt;pre&gt;set _ProductVersion=0.7.5&lt;/pre&gt;&lt;pre class="alt"&gt;set _ProductType=dev&lt;/pre&gt;&lt;pre&gt;set _ProductOwner=ysg&lt;/pre&gt;&lt;pre class="alt"&gt;set _MasterSourceRootPath=E:&lt;/pre&gt;&lt;pre&gt;set _ProductDir=%_MasterSourceRootPath%\%_ProductName%&lt;/pre&gt;&lt;pre class="alt"&gt;set _EnvironmentName=%_ProductName%.%_ProductVersion%.%_ProductType%.%_ProductOwner%&lt;/pre&gt;&lt;pre&gt;set _ProductVersionDir=%_ProductDir%\%_EnvironmentName%&lt;/pre&gt;&lt;pre class="alt"&gt;set _DeploymentPackageName=%_EnvironmentName%.zip&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;set _DeploymentPackageFilePath=%_MasterSourceRootPath%\%_DeploymentPackageName%&lt;/pre&gt;&lt;pre&gt;::CREATE THE LOG DIR IT WOULD BE NICE TO JUST DELETE IT FROM TIME TO TIME ...&lt;/pre&gt;&lt;pre class="alt"&gt;mkdir %_ProductVersionDir%\log\&lt;/pre&gt;&lt;pre&gt;::SET ERROR LOG FILES AND INSTALL LOG FILES WITH TIMESTAMPING ... SETT&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;set _ERRORLOG=%_ProductVersionDir%\sfw\cmd\zip\%_DeploymentPackageName%_%computerName%_%NICETIME%%username%.error.log&lt;/pre&gt;&lt;pre class="alt"&gt;set _INSTALLLOG=%_ProductVersionDir%\sfw\cmd\zip\%_DeploymentPackageName%_%computerName%_%NICETIME%.%username%.install.log&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;cd %_ProductVersionDir%&lt;/pre&gt;&lt;pre class="alt"&gt;echo delete the _DeploymentPackageFilePath %_DeploymentPackageFilePath%&lt;/pre&gt;&lt;pre&gt;del /q %_DeploymentPackageFilePath%&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;:: GET THE %NICETIME% VARIABLE IN THE YYYYMMDD_HHmmssmm format ...&lt;/pre&gt;&lt;pre class="alt"&gt;call GetNiceTime_on_%COMPUTERNAME%.CMD&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;echo CHECK ONES MORE ALL THE VARIABLES  :&lt;/pre&gt;&lt;pre&gt;ECHO =====================================================================¨&lt;/pre&gt;&lt;pre class="alt"&gt;ECHO.&lt;/pre&gt;&lt;pre&gt;::ECHO ALL THE VARS STARTING WITH _&lt;/pre&gt;&lt;pre class="alt"&gt;set _&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;:: WAIT FOR ONE SECOND &lt;/pre&gt;&lt;pre class="alt"&gt;ping -n 3 127.0.0.1 &amp;gt;NUL&lt;/pre&gt;&lt;pre&gt;ECHO.&lt;/pre&gt;&lt;pre class="alt"&gt;ECHO =====================================================================¨&lt;/pre&gt;&lt;pre&gt;ECHO CTRL + c , y TO ABOUT , PRESS ANYTHING ELSE TO PROCEED&lt;/pre&gt;&lt;pre class="alt"&gt;PAUSE    &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;cd %_ProductDir%&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;for&lt;/span&gt; /f %%i &lt;span class="kwrd"&gt;in&lt;/span&gt; (&lt;span class="str"&gt;'type %_ProductVersionDir%\sfw\cmd\zip\FilesToInclude.%_EnvironmentName%.txt'&lt;/span&gt;) do zip -v -9 %_DeploymentPackageName% %%i &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;:: zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list]&lt;/pre&gt;&lt;pre&gt;:: -9   compress better&lt;/pre&gt;&lt;pre class="alt"&gt;:: -ll CR LF to LF)&lt;/pre&gt;&lt;pre&gt;:: -v   verbose operation/print version info&lt;/pre&gt;&lt;pre class="alt"&gt;:: -i   include only the following names&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;PAUSE&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-6704639121763706787?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/6704639121763706787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/05/how-to-zip-relative-path-win-winzip-by.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/6704639121763706787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/6704639121763706787'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/05/how-to-zip-relative-path-win-winzip-by.html' title='how-to zip a relative path win winzip by specifying only specific files to include in package'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-8964354940018142549</id><published>2011-05-14T15:11:00.000+03:00</published><updated>2011-05-14T15:11:32.422+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>how-to quickly kill a process with PowerShell</title><content type='html'>Start - Run : &lt;br /&gt;powershell Stop-Process -processname textpad&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-8964354940018142549?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/8964354940018142549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/05/how-to-quickly-kill-process-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/8964354940018142549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/8964354940018142549'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/05/how-to-quickly-kill-process-with.html' title='how-to quickly kill a process with PowerShell'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-3267676502020371190</id><published>2011-05-11T17:25:00.000+03:00</published><updated>2011-05-11T17:25:26.956+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firewall'/><category scheme='http://www.blogger.com/atom/ns#' term='cmd'/><category scheme='http://www.blogger.com/atom/ns#' term='how-to'/><title type='text'>how-to trouble shoot FW connections on Windows</title><content type='html'>@echo off&lt;br /&gt;echo This is a simple batch file to troubleshoot a FW connectivity between &lt;br /&gt;echo 2 hosts to be run under Win host , set your own vars &lt;br /&gt;&lt;br /&gt;call GetNiceTime_on_%computername%.cmd&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;set _SourceServerHostName=sourceHostname&lt;br /&gt;set _DestinationServerHostName=target&lt;br /&gt;set _SourceServerIpAddress=101.125.51.140&lt;br /&gt;set _DestinationServerIpAddress=110.135.52.31&lt;br /&gt;set _RunDir=%CD%&lt;br /&gt;set _InConfigLog=%_RunDir%\ifconfig_%NiceTime%.txt&lt;br /&gt;set _PingLog=%_RunDir%\ping_%NiceTime%.txt&lt;br /&gt;set _TracertLog=%_RunDir%\tracert_%NiceTime%.txt&lt;br /&gt;set _SysInfoLog=%_RunDir%\sysinfo_%NiceTime%.txt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;echo who , where , when &gt;%_InConfigLog%&lt;br /&gt;echo %userName% , %computername% , %date% , %time% &gt;&gt; %_InConfigLog%&lt;br /&gt;echo runing: ipconfig /all  &gt;&gt; %_InConfigLog%&lt;br /&gt;ipconfig /all  &gt;&gt; %_InConfigLog%&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;echo who , where , when &gt;%_PingLog%&lt;br /&gt;echo %userName% , %computername% , %date% , %time% &gt;&gt; %_PingLog%&lt;br /&gt;echo running ping %_DestinationServerIpAddress%  &gt;&gt; %_PingLog%&lt;br /&gt;ping %_DestinationServerIpAddress%  &gt;&gt; %_PingLog%&lt;br /&gt;&lt;br /&gt;echo who , where , when &gt;%_TracertLog%&lt;br /&gt;echo %userName% , %computername% , %date% , %time% &gt;&gt; %_TracertLog%&lt;br /&gt;echo running tracert %_DestinationServerIpAddress%  &gt;&gt; %_TracertLog%&lt;br /&gt;tracert %_DestinationServerIpAddress%  &gt;&gt; %_TracertLog%&lt;br /&gt;&lt;br /&gt;echo who , where , when &gt;%_SysInfo%&lt;br /&gt;echo %userName% , %computername% , %date% , %time% &gt;&gt; %_SysInfo%&lt;br /&gt;echo running sysinfo on %computername% &gt;&gt; %_SysInfo%&lt;br /&gt;sysinfo %_DestinationServerIpAddress%  &gt;&gt; %_SysInfo%&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-3267676502020371190?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/3267676502020371190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/05/how-to-trouble-shoot-fw-connections-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/3267676502020371190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/3267676502020371190'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/05/how-to-trouble-shoot-fw-connections-on.html' title='how-to trouble shoot FW connections on Windows'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-3849600005011063636</id><published>2011-05-07T12:35:00.000+03:00</published><updated>2011-05-07T12:35:39.898+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ppm'/><category scheme='http://www.blogger.com/atom/ns#' term='perl modules'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>List of useful Perl modules - ppm query</title><content type='html'>Data-Dumper     [2.126  ] stringified perl data structures, suitable for both&lt;br /&gt;printing and C&amp;lt;eval&amp;gt;&lt;br /&gt;Devel-ptkdb     [1.1092 ] Perl debugger using a Tk GUI&lt;br /&gt;Tk              [804.029] Tk - a Graphical User Interface Toolkit&lt;br /&gt;Tk-JComboBox    [1.14   ] Combo Box similar to the Java Component&lt;br /&gt;Win32-Clipboard [0.56   ] Interaction with the Windows clipboard&lt;br /&gt;pmtools         [1.00   ] [Delphi|VB|Java]-like Perl preprocessor&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-3849600005011063636?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/3849600005011063636/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/05/list-of-useful-perl-modules-ppm-query.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/3849600005011063636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/3849600005011063636'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/05/list-of-useful-perl-modules-ppm-query.html' title='List of useful Perl modules - ppm query'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-8480443188968554098</id><published>2011-05-04T21:58:00.003+03:00</published><updated>2011-05-04T22:13:15.953+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='conf'/><category scheme='http://www.blogger.com/atom/ns#' term='settings'/><category scheme='http://www.blogger.com/atom/ns#' term='export'/><category scheme='http://www.blogger.com/atom/ns#' term='textpad'/><title type='text'>how-to export your texpad settings</title><content type='html'>&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: Consolas, "Courier New", Courier, Monospace; background-color: #ffffff; /*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em;}.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/textpadsettingsexporter/downloads/list"&gt; or download from Google Code the whole thingy &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;@ECHO OFF&lt;/pre&gt;&lt;pre&gt;ECHO any comments suggestions are welcome at : &lt;/pre&gt;&lt;pre class="alt"&gt;ECHO http://ysgitdiary.blogspot.com/search/label/textpad&lt;/pre&gt;&lt;pre&gt;ECHO This batch file copies some the needed settings of textpad&lt;/pre&gt;&lt;pre class="alt"&gt;ECHO it depends on a simple GetNiceTime_on_%computername%.cmd &lt;/pre&gt;&lt;pre&gt;ECHO batch file producing the %_NICETIME% variable &lt;span class="kwrd"&gt;in&lt;/span&gt; YYYYMMDD_hhmmss &lt;/pre&gt;&lt;pre class="alt"&gt;ECHO format&lt;/pre&gt;&lt;pre&gt;ECHO Tested on Win7 64 -bit TextPad v.5.4.2 &lt;/pre&gt;&lt;pre class="alt"&gt;ECHO you should call this batch file from its current directorry&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;:: GET A YYYYMMDD_hhmmss TIMESTAMP&lt;/pre&gt;&lt;pre&gt;call GetNiceTime_on_%computername%.cmd&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;SET _RegFileWithSettings=TextPadSettings_Helios_on_%COMPUTERNAME%_%NiceTime%.reg&lt;/pre&gt;&lt;pre class="alt"&gt;SET _RunLog=%0.run.log&lt;/pre&gt;&lt;pre&gt;SET _ErrorLog=%0.error.log&lt;/pre&gt;&lt;pre class="alt"&gt;SET _TextPadSynFilesDirOnWin64=%ProgramFiles(x86)%\TextPad 5\system&lt;/pre&gt;&lt;pre&gt;SET _PortableSynFilesDir=%CD%\system&lt;/pre&gt;&lt;pre class="alt"&gt;SET _RegistryKey=HKEY_CURRENT_USER\Software\Helios\TextPad 5&lt;/pre&gt;&lt;pre&gt;SET _RegistryFilesDir=%CD%\reg&lt;/pre&gt;&lt;pre class="alt"&gt;SET _RegistryFileWithSettings=%_RegistryFilesDir%\TextPadSettings_HeliosKey_on_%computername%_%NiceTime%.reg&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;ECHO START REGISTRY SETTINGS EXPORT AT %_NiceTime%&lt;/pre&gt;&lt;pre&gt;ECHO RUN LOG : START REGISTRY SETTINGS EXPORT AT %_NiceTime%  &amp;gt;%_RunLog%&lt;/pre&gt;&lt;pre class="alt"&gt;ECHO ERROR LOG START REGISTRY SETTINGS EXPORT AT %_NiceTime%  &amp;gt;%_ErrorLog%&lt;/pre&gt;&lt;pre&gt;ECHO.1&amp;gt;&amp;gt;%_RunLog% 2&amp;gt;&amp;gt; %_ErrorLog%&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;ECHO create a directory called sysm &lt;span class="kwrd"&gt;in&lt;/span&gt; the current directory &lt;/pre&gt;&lt;pre class="alt"&gt;ECHO create a directory called sysm &lt;span class="kwrd"&gt;in&lt;/span&gt; the current directory 1&amp;gt;&amp;gt;%_RunLog% 2&amp;gt;&amp;gt; %_ErrorLog% &lt;/pre&gt;&lt;pre&gt;ECHO.1&amp;gt;&amp;gt;%_RunLog% 2&amp;gt;&amp;gt; %_ErrorLog%&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;ECHO now copy alls the files from the %Program Files(x86)%\TextPad 5\system\ &lt;/pre&gt;&lt;pre class="alt"&gt;ECHO now copy alls the files from the %Program Files(x86)%\TextPad 5\system\ 1&amp;gt;&amp;gt;%_RunLog% 2&amp;gt;&amp;gt; %_ErrorLog%&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;ECHO IF NOT EXIST %_PortableSynFilesDir% MKDIR %_PortableSynFilesDir% 1&amp;gt;&amp;gt;%_RunLog% 2&amp;gt;&amp;gt; %_ErrorLog%&lt;/pre&gt;&lt;pre&gt;IF NOT EXIST %_PortableSynFilesDir% MKDIR %_PortableSynFilesDir% 1&amp;gt;&amp;gt;%_RunLog% 2&amp;gt;&amp;gt; %_ErrorLog%&lt;/pre&gt;&lt;pre class="alt"&gt;ECHO.1&amp;gt;&amp;gt;%_RunLog% 2&amp;gt;&amp;gt; %_ErrorLog%&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;ECHO COPY EACH syn files &lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;for&lt;/span&gt; /f &lt;span class="str"&gt;"tokens=*"&lt;/span&gt; %%i &lt;span class="kwrd"&gt;in&lt;/span&gt; (&lt;span class="str"&gt;' dir "%_TextPadSynFilesDirOnWin64%\*.syn" /s /b'&lt;/span&gt;) do copy /y &lt;span class="str"&gt;"%%i"&lt;/span&gt; &lt;span class="str"&gt;"%_PortableSynFilesDir%"&lt;/span&gt; 1&amp;gt;&amp;gt;%_RunLog% 2&amp;gt;&amp;gt; %_ErrorLog%&lt;/pre&gt;&lt;pre class="alt"&gt;ECHO.1&amp;gt;&amp;gt;%_RunLog% 2&amp;gt;&amp;gt; %_ErrorLog%&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;:: CREATE THE _RegistryFilesDir &lt;span class="kwrd"&gt;if&lt;/span&gt; it does not exist &lt;/pre&gt;&lt;pre&gt;ECHO IF NOT EXIST %_RegistryFilesDir% MKDIR %_RegistryFilesDir% 1&amp;gt;&amp;gt;%_RunLog% 2&amp;gt;&amp;gt; %_ErrorLog%&lt;/pre&gt;&lt;pre class="alt"&gt;IF NOT EXIST %_RegistryFilesDir% MKDIR %_RegistryFilesDir% 1&amp;gt;&amp;gt;%_RunLog% 2&amp;gt;&amp;gt; %_ErrorLog%&lt;/pre&gt;&lt;pre&gt;ECHO.1&amp;gt;&amp;gt;%_RunLog% 2&amp;gt;&amp;gt; %_ErrorLog%&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;:: NOW PERFORM THE ACTUAL EXPORT OF THE CURRENT SETTINGS&lt;/pre&gt;&lt;pre class="alt"&gt;ECHO REG EXPORT &lt;span class="str"&gt;"%_RegistryKey%"&lt;/span&gt; &lt;span class="str"&gt;"%_RegistryFileWithSettings%"&lt;/span&gt; 1&amp;gt;&amp;gt;%_RunLog% 2&amp;gt;&amp;gt; %_ErrorLog%&lt;/pre&gt;&lt;pre&gt;REG EXPORT &lt;span class="str"&gt;"%_RegistryKey%"&lt;/span&gt; &lt;span class="str"&gt;"%_RegistryFileWithSettings%"&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;ECHO DONE NOW OPEN THE LOG FILES TO SEE THE RESULTS  :&lt;/pre&gt;&lt;pre class="alt"&gt;FOR /F %%i &lt;span class="kwrd"&gt;in&lt;/span&gt; (&lt;span class="str"&gt;'dir "%CD%\*.log" /s /b'&lt;/span&gt;) do cmd /c start /max textpad &lt;span class="str"&gt;"%%i"&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;:: NOW OPEN TO VIEW THE REGISTRY FILE AS WELL&lt;/pre&gt;&lt;pre&gt;CMD /C START /MAX textpad %_RegistryFileWithSettings%&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;:: HINT: you could execute any dos file including this one by creating a new external tool&lt;/pre&gt;&lt;pre class="alt"&gt;:: Command: cmd.exe , Parameters: CMD /C $FileName , Check Prompt &lt;span class="kwrd"&gt;for&lt;/span&gt; parameters &lt;/pre&gt;&lt;pre&gt;:: Check Save all documents first , Check Capture output , Check Suppress output untill completed&lt;/pre&gt;&lt;pre class="alt"&gt;:: TODO: Add check &lt;span class="kwrd"&gt;for&lt;/span&gt; 32-bit or 64-bit and copy syn files &lt;span class="kwrd"&gt;for&lt;/span&gt; that &lt;/pre&gt;&lt;pre&gt;:: TODO: Create an NSIS &lt;span class="kwrd"&gt;script&lt;/span&gt; packing all this into single setup.exe&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-8480443188968554098?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/8480443188968554098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/05/how-to-export-your-texpad-settings.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/8480443188968554098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/8480443188968554098'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/05/how-to-export-your-texpad-settings.html' title='how-to export your texpad settings'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-3952788381401805282</id><published>2011-05-01T17:32:00.000+03:00</published><updated>2011-05-01T17:32:13.114+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='e-cars'/><category scheme='http://www.blogger.com/atom/ns#' term='german'/><category scheme='http://www.blogger.com/atom/ns#' term='energy'/><category scheme='http://www.blogger.com/atom/ns#' term='youtube'/><title type='text'>One more reason to be bullish on e-cars</title><content type='html'>&lt;a href="http://www.youtube.com/watch?v=0rL3aA4mMFE"&gt;http://www.youtube.com/watch?v=0rL3aA4mMFE&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-3952788381401805282?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/3952788381401805282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/05/one-more-reason-to-be-bullish-on-e-cars.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/3952788381401805282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/3952788381401805282'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/05/one-more-reason-to-be-bullish-on-e-cars.html' title='One more reason to be bullish on e-cars'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-5873675367787091282</id><published>2011-04-30T17:51:00.002+03:00</published><updated>2011-04-30T17:51:45.908+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ExcelToHtml'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><category scheme='http://www.blogger.com/atom/ns#' term='parse'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><title type='text'>ExcelToHtml 1.3 out now</title><content type='html'>&lt;a href="http://code.google.com/p/exceltohtml/"&gt;http://code.google.com/p/exceltohtml/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-5873675367787091282?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/5873675367787091282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/04/exceltohtml-13-out-now.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/5873675367787091282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/5873675367787091282'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/04/exceltohtml-13-out-now.html' title='ExcelToHtml 1.3 out now'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-1008925118786210003</id><published>2011-04-23T22:59:00.000+03:00</published><updated>2011-04-23T22:59:49.322+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google code'/><category scheme='http://www.blogger.com/atom/ns#' term='tsql'/><category scheme='http://www.blogger.com/atom/ns#' term='excel'/><category scheme='http://www.blogger.com/atom/ns#' term='code generation'/><title type='text'>Happy Eastern ...</title><content type='html'>&lt;a href="exceltomssqlinsert"&gt;http://code.google.com/p/exceltomssqlinsert/&lt;/a&gt;&lt;br /&gt;&lt;a href="perlminlogger"&gt;http://code.google.com/p/perlminlogger/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-1008925118786210003?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/1008925118786210003/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/04/happy-eastern.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/1008925118786210003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/1008925118786210003'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/04/happy-eastern.html' title='Happy Eastern ...'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-6841562133591590136</id><published>2011-04-21T23:27:00.000+03:00</published><updated>2011-04-21T23:27:08.882+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='platform'/><category scheme='http://www.blogger.com/atom/ns#' term='logging'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><category scheme='http://www.blogger.com/atom/ns#' term='BSD license'/><title type='text'>A simple minimalistic perl logger out now ...</title><content type='html'>&lt;a href="http://perlminlogger.googlecode.com/files/logger.zip"&gt;Download from here &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-6841562133591590136?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/6841562133591590136/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/04/simple-minimalistic-perl-logger-out-now.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/6841562133591590136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/6841562133591590136'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/04/simple-minimalistic-perl-logger-out-now.html' title='A simple minimalistic perl logger out now ...'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-8096074770107829850</id><published>2011-04-21T14:15:00.002+03:00</published><updated>2011-04-21T14:15:58.012+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='awk'/><category scheme='http://www.blogger.com/atom/ns#' term='Cheat Sheet'/><category scheme='http://www.blogger.com/atom/ns#' term='Solaris'/><category scheme='http://www.blogger.com/atom/ns#' term='sed'/><title type='text'>Solaris cheat sheet (revised)</title><content type='html'>echo Solaris Cheat Sheet&lt;br /&gt;echo this Cheat Sheet contains quick copy paste stuff for Sun's Solaris OS&lt;br /&gt;echo caveat ... some of the stuff has been copied from my Linux Cheat Sheet&lt;br /&gt;echo and you know Linux is not Unix ; )&lt;br /&gt;&lt;br /&gt;echo the time now is `date +%Y.%m.%d-%H:%M:%S`&lt;br /&gt;id&lt;br /&gt;uname -a&lt;br /&gt;du -ak . | sort -n | grep csv&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;echo record the current session via script&lt;br /&gt;script -a /export/home/userName/SCRIPTSLOGS/`date +%Y%m%d%H%M%S`_script.log&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;echo /usr/bin is for normal user executables, /usr/sbin is for superuser executables, /usr/sfw is for external software (like gnu one), but provided with bundle of OS, /usr/ccs is for development utilities, usually not need for daily tasks like make, lex, yacc, sccs&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;echo where I have been lately ?&lt;br /&gt;history | grep cd&lt;br /&gt;&lt;br /&gt;echo take the last 5 commands for faster execution to the temp execution script&lt;br /&gt;&lt;br /&gt;tail -n 5 /root/.bash_history &amp;gt;&amp;gt; /var/run.sh&lt;br /&gt;&lt;br /&gt;echo I saw the command cd /to/some/suching/dir/which/was/very/long/to/type&lt;br /&gt;so I redid it and saved my fingers&lt;br /&gt;!345&lt;br /&gt;&lt;br /&gt;history &amp;gt;history.txt ---- echo the last 1000 commands into a history.txt file&lt;br /&gt;&lt;br /&gt;echo send that file to myself&lt;br /&gt;&lt;br /&gt;cat history.txt | mail -s "test file sending" -c mail1@com&lt;br /&gt;yordan.georgiev(boom)gmail.com&lt;br /&gt;&lt;br /&gt;echo remove all trealing spaces from the history file works for TextPad&lt;br /&gt;&lt;br /&gt;^([ ]*)([0-9]*)(.*)$&lt;br /&gt;&lt;br /&gt;\3 --- replace with the pure commands&lt;br /&gt;&lt;br /&gt;history | gawk -F1 'BEGIN {FS=" "};{print $2 , $3}' | less&lt;br /&gt;&lt;br /&gt;echo display the history withouth the line numbers ...&lt;br /&gt;&lt;br /&gt;history | perl -i -pe 's/^([ ]*)([0-9]*)(.*)$/$3/gi'&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;vi fileName anotherFile&lt;br /&gt;&lt;br /&gt;echo how to deal with command outputs&lt;br /&gt;command | filtercommand &amp;gt; command_output.txt 2&amp;gt;errors_from_command.txt&lt;br /&gt;&lt;br /&gt;echo Hint after the less filter pressing s will prompt you for saving the&lt;br /&gt;output to a file ...&lt;br /&gt;&lt;br /&gt;echo &amp;nbsp;find all files and folders containing the word toFind and pipe it to the less for easier viewing&lt;br /&gt;find / -name "*toFind*" 2&amp;gt;/dev/null | less&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;echo &amp;nbsp;find the files having os somewhere in their names and only those having linux&lt;br /&gt;find . -name '*os*' | grep linux | less&lt;br /&gt;&lt;br /&gt;echo find all xml type of files and display only the rows having wordToFindInRow&lt;br /&gt;find . -name '*.xml' -exec cat {} \;| grep wordToFindInRow | less&lt;br /&gt;&lt;br /&gt;echo The ultimate "find in files"&lt;br /&gt;find / -name '*bash*' -exec grep -nH tty {} \;&lt;br /&gt;&lt;br /&gt;echo &amp;nbsp;or even faster , be aware of "funny file names xargs -0&lt;br /&gt;find / -name '*bak' | xargs grep -nH tty&lt;br /&gt;&lt;br /&gt;echo find and replace recursively&lt;br /&gt;find . -name '*.html' -print0 | xargs -0 perl -pi -e 's/foo/bar/g'&lt;br /&gt;&lt;br /&gt;echo putty , bash shortcuts&lt;br /&gt;Ctrl + A --- Go to the beginning of the line you are currently typing on&lt;br /&gt;Ctrl + E --- Go to the end of the line you are currently typing on&lt;br /&gt;&lt;br /&gt;echo how-to mount an usb stick&lt;br /&gt;echo remember to change the path other wise you will get the device is busy errror&lt;br /&gt;&lt;br /&gt;mkdir /mnt/usbflash&lt;br /&gt;mount /dev/sdb1 -t vfat /mnt/usbflash&lt;br /&gt;&lt;br /&gt;umount /mnt/usbflash&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;head -n 20 tooLongFile -- display the first 20 lines of the file&lt;br /&gt;&lt;br /&gt;echo change the uggly prompt&lt;br /&gt;&lt;br /&gt;vi /etc/bashrc&lt;br /&gt;&lt;br /&gt;echo get a nice prompt&lt;br /&gt;PS1="\u@\h \t \w\n\\$ "&lt;br /&gt;&lt;br /&gt;echo how to restart a process initiated at startup&lt;br /&gt;/etc/rc.d/init.d/sendmail start | stop | status | restart&lt;br /&gt;&lt;br /&gt;echo see all the rules associated with the firewall&lt;br /&gt;&lt;br /&gt;iptables -L -v&lt;br /&gt;&lt;br /&gt;gunzip *file.zip&lt;br /&gt;&lt;br /&gt;echo decompress a tar achive&lt;br /&gt;tar -xvf file.tar&lt;br /&gt;&lt;br /&gt;echo add all *.bteq type of files into AllBteqs.tar.gz type of file&lt;br /&gt;for file in *.bteq ; do tar cvf AllBteqs.tar.gz $file ;done;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;echo zip all my txt files in the current directory into the zipArchiveName file&lt;br /&gt;for file in *.txt&lt;br /&gt;do &amp;nbsp; zip zipArchiveName $file&lt;br /&gt;done ;&lt;br /&gt;&lt;br /&gt;for file in *.csv ; do rm -f $file ; done ;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To access the server download winscp.exe:&lt;br /&gt;&lt;br /&gt;echo start winscp with a stored session from Win box&lt;br /&gt;cmd /c start /max winscp oracle@192.168.255.12&lt;br /&gt;&lt;br /&gt;echo To start remote session click on the putty screen , configure putty&lt;br /&gt;settings to pull full screen with alt + Enter&lt;br /&gt;&lt;br /&gt;echo right click on the title bar , settings , change the font , copy&lt;br /&gt;paste from and to the terminal window text&lt;br /&gt;&lt;br /&gt;echo how to ensure the sshd daemon is running&lt;br /&gt;&lt;br /&gt;ps -ef | grep sshd&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;echo User and group management&lt;br /&gt;echo add user with specifig home directory name and pass&lt;br /&gt;useradd -p winscppass -r winscp -d /home/winscp --- to add a user with&lt;br /&gt;useradd -u 10226425 -c "Yordan Georgiev, EXT, ext-yordan.1.georgiev@nokia.com" -m -d /export/home/userName -s /bin/bash userName&lt;br /&gt;useradd -u -c"NPM platform OS level user" -m -d /opt/npm/npmobi -s /bin/bash -g npmobi npmobi&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;luserdel winscp --- delete the user&lt;br /&gt;&lt;br /&gt;gpasswd: administer the /etc/group file&lt;br /&gt;groupadd: Create a new group&lt;br /&gt;groupmod: Modify a group&lt;br /&gt;groupdel: Delete a new group&lt;br /&gt;&lt;br /&gt;useradd: Create a new user or update default new user information&lt;br /&gt;usermod: Modify a user account&lt;br /&gt;userdel: Delete a user account and related files&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;echo how to kill process interactively&lt;br /&gt;&lt;br /&gt;killall -v -i sshd&lt;br /&gt;&lt;br /&gt;echo disk usage of users under the /home directory&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;echo on Solaris&lt;br /&gt;du -ak /export/home | sort -n -r &amp;nbsp;| less&lt;br /&gt;du -ak . | sort -n | grep log&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;echo the most efficent way to search your history is to hit Ctrl R and&lt;br /&gt;type the start of the command. It will autocomplete as soon as there’s&lt;br /&gt;a match to a history entry, then you just hit enter. If you want to&lt;br /&gt;complete the command (add more stuff to it ) use the right arrow to&lt;br /&gt;escape from the quick search box ...&lt;br /&gt;&lt;br /&gt;How to install Perl modules&lt;br /&gt;&lt;br /&gt;gzip -dc yourmodule.tar.gz | tar -xof -&lt;br /&gt;&lt;br /&gt;perl Makefile.PL&lt;br /&gt;&lt;br /&gt;make test&lt;br /&gt;&lt;br /&gt;make install&lt;br /&gt;&lt;br /&gt;How to see better which file were opened , which directories were visited&lt;br /&gt;&lt;br /&gt;type always the fullpath after the vi - use the $PWD env variable to&lt;br /&gt;open files in the current directory , thus after opening the file&lt;br /&gt;after:&lt;br /&gt;&lt;br /&gt;vi /$PWD , press tab to complete the name of the current directory ,&lt;br /&gt;type the name of the file&lt;br /&gt;&lt;br /&gt;thus after&lt;br /&gt;&lt;br /&gt;history | grep vi&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;the full list of opened files is viwed .&lt;br /&gt;&lt;br /&gt;of course the same could be seen from the /home/username/.viinfo file /files&lt;br /&gt;&lt;br /&gt;where to set the colors for the terminal (if you are lucky to have one&lt;br /&gt;with colors; )&lt;br /&gt;&lt;br /&gt;/etc/DIR_COLORS&lt;br /&gt;&lt;br /&gt;open a file containing "sh" in its name bellow the "/usr/lib" directory&lt;br /&gt;&lt;br /&gt;:r !find /usr/lib -name *sh*&lt;br /&gt;&lt;br /&gt;go over the file and gf&lt;br /&gt;&lt;br /&gt;uname -a --- which version of Linux I am using&lt;br /&gt;&lt;br /&gt;rmp -qa --- show all installed packages&lt;br /&gt;&lt;br /&gt;passwd [username] --- change the password for the specified user (own password)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;How to copy paste text in the putty window from client to server -&lt;br /&gt;click the right button of your pointing device&lt;br /&gt;&lt;br /&gt;How to copy paste text from the putty window from server to client -&lt;br /&gt;right-click the window title and select copy all to Clipboard.&lt;br /&gt;&lt;br /&gt;To restart a service&lt;br /&gt;&lt;br /&gt;service sshd restart&lt;br /&gt;&lt;br /&gt;service --status-all --- show the status of all services&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;chown -R root:nortel Directory&lt;br /&gt;&lt;br /&gt;echo perform action recursively on a set of files&lt;br /&gt;&lt;br /&gt;find . -name '*.pl' -exec perl -wc -l {} \;&lt;br /&gt;&lt;br /&gt;$ for file in *&lt;br /&gt;&amp;gt; do cp $file $file.bak&lt;br /&gt;&amp;gt; done&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;$ for file in `ls -R` ; do cp $file $file.bak; done&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;echo make Bash append rather than overwrite the history on disk:&lt;br /&gt;shopt -s histappend&lt;br /&gt;&lt;br /&gt;echo henever displaying the prompt, write the previous line to disk:&lt;br /&gt;PROMPT_COMMAND='history -a'&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;gpm -- general "cut and paste" server&lt;br /&gt;&lt;br /&gt;sh ScriptWithALotOfErrorMessages.sh | tee -a whereToSaveIt.log&lt;br /&gt;&lt;br /&gt;echo run first the following command&lt;br /&gt;&lt;br /&gt;$ script -a The_Log_File_To_Append_as_well_as_display_diagnostig_messages.log&lt;br /&gt;&lt;br /&gt;echo than run the script&lt;br /&gt;&lt;br /&gt;sh ScriptWithALotOfErrorMessages.sh&lt;br /&gt;&lt;br /&gt;tr '\t' ',' &amp;lt; FileWithTabs &amp;gt; fileWithCommas&lt;br /&gt;&lt;br /&gt;df -k --- disk usage&lt;br /&gt;&lt;br /&gt;echo Allow access to the box from only one ip address&lt;br /&gt;&lt;br /&gt;IPTables=/sbin/iptables&lt;br /&gt;$ IPTables -A INPUT -s &amp;lt;Insert other Origin ip here&amp;gt; -p tcp&lt;br /&gt;--source-port xxx -j ACCEPT&lt;br /&gt;$ IPTables -A OUTPUT -d &amp;lt; Insert other Origin ip here &amp;gt; -p tcp&lt;br /&gt;--destination-port xxx-j ACCEPT&lt;br /&gt;&lt;br /&gt;echo has the root logged in over an unencrypted network ?&lt;br /&gt;&lt;br /&gt;echo &amp;nbsp;last | grep “^root “ | egrep –v “reboot|console” | more&lt;br /&gt;&lt;br /&gt;echo start command in the background&lt;br /&gt;command1 &amp;amp;&lt;br /&gt;&lt;br /&gt;echo start another one&lt;br /&gt;command2 &amp;amp;&lt;br /&gt;&lt;br /&gt;echo bring the command in the foreground&lt;br /&gt;fg %1&lt;br /&gt;&lt;br /&gt;echo create a backup file based on the timestamp on bash&lt;br /&gt;&lt;br /&gt;cp fileName.ext fileName.ext.`date +%Y%m%d%H%M%S`.bak&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;echo which box I am workign currently&lt;br /&gt;uname -a&lt;br /&gt;echo who am I on this machine&lt;br /&gt;id&lt;br /&gt;echo the current time is( in yyyy.mm.dd HH:MM:SS format ) &lt;br /&gt;echo `date +%Y.%m.%d.%H.%M.%S`&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;find /opt/npm/sfw/oracle/EPM/11.1.1.3 -name "*assembly.dat" | cut -d/ -f9 | sort -u&lt;br /&gt;&lt;br /&gt;echo get my IP address&lt;br /&gt;&amp;nbsp;/sbin/ifconfig -a | less&lt;br /&gt;&lt;br /&gt;telnet -e "^g" 10.176.246.138 1025&lt;br /&gt;telnet -e "^g" xldb-prod 1025&lt;br /&gt;&lt;br /&gt;echo which process the npmobi user is runnig and sort by process name&lt;br /&gt;ps -fu npmobi | sort +7&lt;br /&gt;&lt;br /&gt;echo check whether host in DNS&lt;br /&gt;nslookup hostName&lt;br /&gt;&lt;br /&gt;echo show the ports which npmobi user is using&lt;br /&gt;/usr/local/bin/show-ports -u npmobi&lt;br /&gt;&lt;br /&gt;echo port forwarding with ssh from one host to another via ssh&lt;br /&gt;ssh -L1423:3esituo08lab:1423 2esituo08lab&lt;br /&gt;ssh -L 1528:2esituo08lab:1528 hecop07lab.ntc.nokia.com&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;echo how-to setup port forwarding on Unix&lt;br /&gt;ssh -L22:localhost:22 hostToForwardTo.domain.com&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;echo scp copy from local to remote host a file&lt;br /&gt;scp /local/host/path userName@hostName.domain.com:/remote/host/path/&lt;br /&gt;echo scp copy from remote to loca host files&lt;br /&gt;scp userName@serverName.domain.com:/remote/host/path/* /local/host/path&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;echo ksh nice prompt&lt;br /&gt;export PS1=$host.$LOGNAME:$PWD:`echo ``date +%Y.%m.%d-%H:%M:%S`` `:`echo &amp;nbsp;"\n" $ " "`&lt;br /&gt;&lt;br /&gt;export PS1=$host.$LOGNAME:$PWD:$TIME:$($(id) $&lt;br /&gt;&lt;br /&gt;export PS1=$host.$LOGNAME:$PWD:`echo ``date +%Y.%m.%d-%H:%M:%S`` `:`echo &amp;nbsp;"\n" $ " "`&lt;br /&gt;$host.$LOGNAME:$PWD:$&lt;br /&gt;&lt;br /&gt;copy a file with timestamp&lt;br /&gt;cp file file_`date +%Y%m%d-%H%M%S`&lt;br /&gt;&lt;br /&gt;# tar and compress all csv files&lt;br /&gt;gzip -cd *log | tar -xf - || exit 1&lt;br /&gt;&lt;br /&gt;# tar and compress all log files&lt;br /&gt;gzip -cd *log | tar -xf - || exit 1&lt;br /&gt;&lt;br /&gt;echo "The script you are running has basename `basename $0`, dirname `dirname $0`"&lt;br /&gt;echo "The present working directory is `pwd`"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#The dir where the script runs ( Note no / at the end !!! )&lt;br /&gt;RunFolder=`dirname $0`&lt;br /&gt;case $RunFolder in&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/*);;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*)RunFolder=`pwd`/$RunFolder;;&lt;br /&gt;esac&lt;br /&gt;&lt;br /&gt;#The dir where the logs are stored( Note no / at the end !!! )&lt;br /&gt;LogFolder=`dirname $0`&lt;br /&gt;case $LogFolder in&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/*);;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*)LogFolder=`pwd`/$LogFolder;;&lt;br /&gt;esac&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;find project -type f -print | \&lt;br /&gt;egrep '(\.[ch]|[Mm]akefile)$' &amp;gt; Include&lt;br /&gt;% tar cvf project.tar -I Include&lt;br /&gt;&lt;br /&gt;echo how-to delete entire directory recursively without prompts for confirmation&lt;br /&gt;rm -Rf /path/to/dir/toDelete/Without/Prompt/Recursively&lt;br /&gt;&lt;br /&gt;sh shell shortcuts&lt;br /&gt;Alt + K&lt;br /&gt;&lt;br /&gt;echo two for loops&lt;br /&gt;for i in `echo A B` ; do for j in `echo C D` ;do echo $i$j;done;done ;&lt;br /&gt;&lt;br /&gt;echo mutliple rename of files with sed and regex&lt;br /&gt;for file in *.txt; do mv $file `echo $file | sed 's/\([A-Za-z_]*\)_\([0-9]*\)\([A-Za-z\.]*\)/\1\3/'` ; done ;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-8096074770107829850?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/8096074770107829850/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/04/solaris-cheat-sheet-revised.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/8096074770107829850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/8096074770107829850'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/04/solaris-cheat-sheet-revised.html' title='Solaris cheat sheet (revised)'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-4539664961067130495</id><published>2011-04-13T18:09:00.000+03:00</published><updated>2011-04-13T18:09:59.735+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electric cars'/><title type='text'>My predictions about electric cars coming true ... (revised)</title><content type='html'>My predictions about electric cars coming true ... (revised)&lt;br /&gt;&lt;br /&gt;I predicted in 2009 that electric cars will be in 10 years the dominating type of cars in  ... &lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.greenoptimistic.com/2011/04/13/dbm-energy-battery/"&gt;http://www.greenoptimistic.com/2011/04/13/dbm-energy-battery/&lt;/a&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;a href="http://news.cnet.com/2300-11128_3-10005197.html?tag=mncol;txt"&gt;http://news.cnet.com/2300-11128_3-10005197.html?tag=mncol;txt&lt;/a&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Well , that is coming true ... Believe it or not ; )&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-4539664961067130495?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/4539664961067130495/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/04/my-predictions-about-electric-cars.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/4539664961067130495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/4539664961067130495'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/04/my-predictions-about-electric-cars.html' title='My predictions about electric cars coming true ... (revised)'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-414845288554484490</id><published>2011-04-12T22:13:00.001+03:00</published><updated>2011-04-12T22:13:27.347+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql server 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='meta data mssql'/><category scheme='http://www.blogger.com/atom/ns#' term='metadata'/><category scheme='http://www.blogger.com/atom/ns#' term='sql server 2008'/><title type='text'>how-to get column meta data on sql server 2008</title><content type='html'>&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: Consolas, "Courier New", Courier, Monospace; background-color: #ffffff; /*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em;}.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;/****** &lt;span class="kwrd"&gt;Object&lt;/span&gt;:  &lt;span class="kwrd"&gt;View&lt;/span&gt; [dbo].[viewMeta_TableColumns]    Script &lt;span class="kwrd"&gt;Date&lt;/span&gt;: 05/09/2010 09:13:14 ******/&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;IF&lt;/span&gt;  &lt;span class="kwrd"&gt;EXISTS&lt;/span&gt; (&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; * &lt;span class="kwrd"&gt;FROM&lt;/span&gt; sys.views &lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;WHERE&lt;/span&gt; object_id = OBJECT_ID(N&lt;span class="str"&gt;'[dbo].[viewMeta_TableColumns]'&lt;/span&gt;))&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;DROP&lt;/span&gt; &lt;span class="kwrd"&gt;VIEW&lt;/span&gt; [dbo].[viewMeta_TableColumns]&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;GO&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;/****** &lt;span class="kwrd"&gt;Object&lt;/span&gt;:  &lt;span class="kwrd"&gt;View&lt;/span&gt; [dbo].[viewMeta_TableColumns]    &lt;/pre&gt;&lt;pre class="alt"&gt;Script &lt;span class="kwrd"&gt;Date&lt;/span&gt;: 05/09/2010 09:13:14 ******/&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;SET&lt;/span&gt; ANSI_NULLS &lt;span class="kwrd"&gt;ON&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;GO&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;SET&lt;/span&gt; QUOTED_IDENTIFIER &lt;span class="kwrd"&gt;ON&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;GO&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;CREATE&lt;/span&gt; &lt;span class="kwrd"&gt;VIEW&lt;/span&gt; [dbo].[viewMeta_TableColumns]  &lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;AS&lt;/span&gt;   &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;-- Action !!!&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; &lt;span class="kwrd"&gt;top&lt;/span&gt; 100000&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;db_name()                &lt;span class="kwrd"&gt;AS&lt;/span&gt; &lt;span class="str"&gt;'DataBaseName'&lt;/span&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;,isc.TABLE_SCHEMA        &lt;span class="kwrd"&gt;AS&lt;/span&gt; &lt;span class="str"&gt;'SchemaName'&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;,SysObjects.NAME        &lt;span class="kwrd"&gt;AS&lt;/span&gt; &lt;span class="str"&gt;'TableName'&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;,SC.NAME                &lt;span class="kwrd"&gt;AS&lt;/span&gt; &lt;span class="str"&gt;'ColumnName'&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;,isc.ORDINAL_POSITION    &lt;span class="kwrd"&gt;AS&lt;/span&gt; &lt;span class="str"&gt;'OrdinalPosition'&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;,st.name                &lt;span class="kwrd"&gt;AS&lt;/span&gt; &lt;span class="str"&gt;'DataType'&lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;,sc.is_nullable            &lt;span class="kwrd"&gt;AS&lt;/span&gt; &lt;span class="str"&gt;'IsNullable'&lt;/span&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;,sc.is_identity            &lt;span class="kwrd"&gt;AS&lt;/span&gt; &lt;span class="str"&gt;'IsPrimaryKey'&lt;/span&gt;  &lt;/pre&gt;&lt;pre&gt;,sc.max_length            &lt;span class="kwrd"&gt;AS&lt;/span&gt; &lt;span class="str"&gt;'MaxLength'&lt;/span&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;,SC.is_computed            &lt;span class="kwrd"&gt;AS&lt;/span&gt; &lt;span class="str"&gt;'IsComputed'&lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;,sm.text                &lt;span class="kwrd"&gt;AS&lt;/span&gt; &lt;span class="str"&gt;'DefaultValue'&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;FROM&lt;/span&gt; dbo.sysobjects  &lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;INNER&lt;/span&gt; &lt;span class="kwrd"&gt;JOIN&lt;/span&gt; sys.all_columns SC &lt;span class="kwrd"&gt;ON&lt;/span&gt; SysObjects.id = SC.object_id&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;INNER&lt;/span&gt; &lt;span class="kwrd"&gt;JOIN&lt;/span&gt; sys.types st &lt;span class="kwrd"&gt;on&lt;/span&gt; st.system_type_id = sc.system_type_id&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;LEFT&lt;/span&gt; &lt;span class="kwrd"&gt;JOIN&lt;/span&gt; syscomments sm &lt;span class="kwrd"&gt;on&lt;/span&gt; SysObjects.id = sm.id&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;-- LEFT JOIN sys.tables stb on sc.object_id = SysObjects.parent_obj&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;LEFT&lt;/span&gt; &lt;span class="kwrd"&gt;JOIN&lt;/span&gt; INFORMATION_SCHEMA.COLUMNS  isc &lt;span class="kwrd"&gt;on&lt;/span&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;isc.TABLE_NAME=SysObjects.NAME &lt;span class="kwrd"&gt;and&lt;/span&gt; SC.NAME = isc.COLUMN_NAME&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;--&lt;span class="kwrd"&gt;LEFT&lt;/span&gt; &lt;span class="kwrd"&gt;JOIN&lt;/span&gt; dbo.syscomments SM &lt;span class="kwrd"&gt;ON&lt;/span&gt; SC.cdefault = SM.id  &lt;/pre&gt;&lt;pre&gt;--&lt;span class="kwrd"&gt;inner&lt;/span&gt; &lt;span class="kwrd"&gt;join&lt;/span&gt; sys.types st&lt;/pre&gt;&lt;pre class="alt"&gt;--&lt;span class="kwrd"&gt;on&lt;/span&gt; sc.xtype = st.system_type_id&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;WHERE&lt;/span&gt; SysObjects.xtype = &lt;span class="str"&gt;'U'&lt;/span&gt;  &lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;and&lt;/span&gt; st.name &amp;lt;&amp;gt; &lt;span class="str"&gt;'sysname'&lt;/span&gt; --&lt;span class="kwrd"&gt;to&lt;/span&gt; a bug &lt;span class="kwrd"&gt;with&lt;/span&gt; this one occurs &lt;span class="kwrd"&gt;if&lt;/span&gt; enabled &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;and&lt;/span&gt; sc.is_computed = 0 --todo a bug &lt;span class="kwrd"&gt;with&lt;/span&gt; this one occurs &lt;span class="kwrd"&gt;if&lt;/span&gt; enabled &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;--&lt;span class="kwrd"&gt;and&lt;/span&gt; SysObjects.name = @TableName --uncomment this line &lt;span class="kwrd"&gt;while&lt;/span&gt; debugging&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;ORDER&lt;/span&gt; &lt;span class="kwrd"&gt;BY&lt;/span&gt; DatabaseName , SchemaName , TableName , isc.ORDINAL_POSITION&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;GO&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;--&lt;span class="kwrd"&gt;select&lt;/span&gt; * &lt;span class="kwrd"&gt;from&lt;/span&gt; sys.schemas&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;select&lt;/span&gt; * &lt;span class="kwrd"&gt;from&lt;/span&gt; [viewMeta_TableColumns]&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-414845288554484490?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/414845288554484490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/04/how-to-get-column-meta-data-on-sql.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/414845288554484490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/414845288554484490'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/04/how-to-get-column-meta-data-on-sql.html' title='how-to get column meta data on sql server 2008'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-7703836957970335226</id><published>2011-04-10T22:17:00.000+03:00</published><updated>2011-04-10T22:17:32.059+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='me'/><category scheme='http://www.blogger.com/atom/ns#' term='stupidity'/><title type='text'>How-to define stupidity with BI ?!</title><content type='html'>&lt;a href="http://draft.blogger.com/URL"&gt;L&lt;/a&gt;et's admit it. Everybody has done something stupid in their life ... even the most brightest of us. I read somewhere that the wisdom is to avoid the done mistakes and to restrain from doing more than 5 min stupid things per day ...&lt;br /&gt;I still do think that BI should be applied even to the most personal issues ... to draw some meaningful conclusions ...&lt;br /&gt;So my conclusion for today:&lt;br /&gt;If more than 5 min per day stupidity defines a person as stupid ... today I was I very stupid person ... since I did loose more than a month today ... &lt;br /&gt;I hope I will learn something from today. So if I don't manage to become humble and restrict to those 5 minutes ... I will not pass to where I aim to ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-7703836957970335226?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/7703836957970335226/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/04/how-to-define-stupidity-with-bi.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/7703836957970335226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/7703836957970335226'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/04/how-to-define-stupidity-with-bi.html' title='How-to define stupidity with BI ?!'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-6527353599091051958</id><published>2011-03-22T08:42:00.000+02:00</published><updated>2011-03-22T08:42:23.108+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='поуки'/><category scheme='http://www.blogger.com/atom/ns#' term='principles'/><category scheme='http://www.blogger.com/atom/ns#' term='принципи'/><category scheme='http://www.blogger.com/atom/ns#' term='wisdoms'/><title type='text'>Принципи и поуки ...</title><content type='html'>&lt;tr height="35" style="height: 26.4pt;"&gt;   &lt;td class="xl67" height="35" style="height: 26.4pt; width: 60pt;" width="80"&gt;Пореден   номер&lt;/td&gt;   &lt;td class="xl67" style="width: 711pt;" width="948"&gt;Принцип или поука&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="35" style="height: 26.4pt;"&gt;   &lt;td class="xl66" height="35" style="height: 26.4pt; width: 60pt;" width="80"&gt;1&lt;/td&gt;   &lt;td class="xl65" style="width: 711pt;" width="948"&gt;Едно е да си баеш на себе си и   на другите, второ да знаеш какво искаш , трето наистина да го искаш ,   четвърто е да знаеш как да го направиш , пето да можеш да го направиш , шесто   е наистина да го направиш , седмо да не съжаляваш че си го направил&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="18" style="height: 13.2pt;"&gt;   &lt;td class="xl66" height="18" style="height: 13.2pt; width: 60pt;" width="80"&gt;2&lt;/td&gt;   &lt;td class="xl65" style="width: 711pt;" width="948"&gt;Не си въобгъзявай. Правиж не   само себе си , но и останалите на гъз.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="18" style="height: 13.2pt;"&gt;   &lt;td class="xl66" height="18" style="height: 13.2pt; width: 60pt;" width="80"&gt;3&lt;/td&gt;   &lt;td class="xl65" style="width: 711pt;" width="948"&gt;Не лъжи – така или иначе   истината излиза наяве своевременно.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="18" style="height: 13.2pt;"&gt;   &lt;td class="xl66" height="18" style="height: 13.2pt; width: 60pt;" width="80"&gt;4&lt;/td&gt;   &lt;td class="xl65" style="width: 711pt;" width="948"&gt;Изправи се и горе главата. Не   бъди надменен а горд.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="18" style="height: 13.2pt;"&gt;   &lt;td class="xl66" height="18" style="height: 13.2pt; width: 60pt;" width="80"&gt;5&lt;/td&gt;   &lt;td class="xl65" style="width: 711pt;" width="948"&gt;Мисли тук и сега и действай   според реалността, но знай че успешното бъдеще иска стратегическо   планиране.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="18" style="height: 13.2pt;"&gt;   &lt;td class="xl66" height="18" style="height: 13.2pt; width: 60pt;" width="80"&gt;6&lt;/td&gt;   &lt;td class="xl65" style="width: 711pt;" width="948"&gt;Не кради. Ако крадеш , значи не   го заслужаваш.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="18" style="height: 13.2pt;"&gt;   &lt;td class="xl66" height="18" style="height: 13.2pt; width: 60pt;" width="80"&gt;7&lt;/td&gt;   &lt;td class="xl65" style="width: 711pt;" width="948"&gt;Ако не обичаш и пазиш себе си,   няма да имаш сили да обичаш и пазиш хората които обичаш около себе си.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="18" style="height: 13.2pt;"&gt;   &lt;td class="xl66" height="18" style="height: 13.2pt; width: 60pt;" width="80"&gt;8&lt;/td&gt;   &lt;td class="xl65" style="width: 711pt;" width="948"&gt;Не е важно да спечелиш всяка   една битка. Важното е да си победител във войната на живота&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="18" style="height: 13.2pt;"&gt;   &lt;td class="xl66" height="18" style="height: 13.2pt; width: 60pt;" width="80"&gt;9&lt;/td&gt;   &lt;td class="xl65" style="width: 711pt;" width="948"&gt;Когато бързаш без да мислиш и си   стресиран, малките препъни-камъчета правят големи поражения&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="18" style="height: 13.2pt;"&gt;   &lt;td class="xl66" height="18" style="height: 13.2pt; width: 60pt;" width="80"&gt;10&lt;/td&gt;   &lt;td class="xl65" style="width: 711pt;" width="948"&gt;Виртуалният свят оправлява   физическия, но той е нищо като му дръпнат шалтера&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="18" style="height: 13.2pt;"&gt;   &lt;td class="xl66" height="18" style="height: 13.2pt; width: 60pt;" width="80"&gt;11&lt;/td&gt;   &lt;td class="xl65" style="width: 711pt;" width="948"&gt;Не бъди по-краставичар от   краставичаря. Ако няма какво да кажеш си мълчи като индианец. Като мълчиш не   ги гледай във очите.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="18" style="height: 13.2pt;"&gt;   &lt;td class="xl66" height="18" style="height: 13.2pt; width: 60pt;" width="80"&gt;12&lt;/td&gt;   &lt;td class="xl65" style="width: 711pt;" width="948"&gt;Черната овца никой не я обича   както и да мечи или да се опитва да смени козината&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="18" style="height: 13.2pt;"&gt;   &lt;td class="xl66" height="18" style="height: 13.2pt; width: 60pt;" width="80"&gt;13&lt;/td&gt;   &lt;td class="xl65" style="width: 711pt;" width="948"&gt;Сдраво тяло, здрав дух. Можеш да   разбереш колко е безценно здравето чак като го изгубиш.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="18" style="height: 13.2pt;"&gt;   &lt;td class="xl66" height="18" style="height: 13.2pt; width: 60pt;" width="80"&gt;14&lt;/td&gt;   &lt;td class="xl65" style="width: 711pt;" width="948"&gt;Когато има междуособици във   тима, не говори за личности а за обстоятелства и проблеми&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="18" style="height: 13.2pt;"&gt;   &lt;td class="xl66" height="18" style="height: 13.2pt; width: 60pt;" width="80"&gt;15&lt;/td&gt;   &lt;td class="xl65" style="width: 711pt;" width="948"&gt;Не се критикувай пред   останалите, още по-малко не повдигай темата за твоите грешки …&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="18" style="height: 13.2pt;"&gt;   &lt;td class="xl66" height="18" style="height: 13.2pt; width: 60pt;" width="80"&gt;16&lt;/td&gt;   &lt;td class="xl65" style="width: 711pt;" width="948"&gt;Голмайсторите от чужбина ги   търпят само докато правят голове, когато престанат ги ритат първи извън   терена&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="18" style="height: 13.2pt;"&gt;   &lt;td class="xl66" height="18" style="height: 13.2pt; width: 60pt;" width="80"&gt;17&lt;/td&gt;   &lt;td class="xl65" style="width: 711pt;" width="948"&gt;В живота побеждават тези които   могат и да губят&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="18" style="height: 13.2pt;"&gt;   &lt;td class="xl66" height="18" style="height: 13.2pt; width: 60pt;" width="80"&gt;18&lt;/td&gt;   &lt;td class="xl65" style="width: 711pt;" width="948"&gt;Една злоупотреба с алкохол може   да ти струва от 15 дена до цял живот работа или дори живота. За наркотиците   дори не си струва да се говори&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="18" style="height: 13.2pt;"&gt;   &lt;td class="xl66" height="18" style="height: 13.2pt; width: 60pt;" width="80"&gt;19&lt;/td&gt;   &lt;td class="xl65" style="width: 711pt;" width="948"&gt;Когато много ти се иска да кажеш   нещо и да прекъснеш остананалите изчакай&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="18" style="height: 13.2pt;"&gt;   &lt;td class="xl66" height="18" style="height: 13.2pt; width: 60pt;" width="80"&gt;20&lt;/td&gt;   &lt;td class="xl65" style="width: 711pt;" width="948"&gt;Когато делегираш на някого нещо   гледай да не започне да си прави каквото иска … а каквото трябва.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="18" style="height: 13.2pt;"&gt;   &lt;td class="xl66" height="18" style="height: 13.2pt; width: 60pt;" width="80"&gt;21&lt;/td&gt;   &lt;td class="xl65" style="width: 711pt;" width="948"&gt;Ако казваш на другите :“ Не   прави каквото аз правя а прави каквото аз казвам“ си въобгъзяваш и правиш не   само другите а и себе си на гъз …&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="35" style="height: 26.4pt;"&gt;   &lt;td class="xl66" height="35" style="height: 26.4pt; width: 60pt;" width="80"&gt;22&lt;/td&gt;   &lt;td class="xl65" style="width: 711pt;" width="948"&gt;Защо пък трябва да се харесваш   на останалите след като болшинството от тях така или иначе не те харесва и   няма и да си променти отношението&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="18" style="height: 13.2pt;"&gt;   &lt;td class="xl66" height="18" style="height: 13.2pt; width: 60pt;" width="80"&gt;23&lt;/td&gt;   &lt;td class="xl66" style="width: 711pt;" width="948"&gt;Дойде ли момент когато списъкът   ти от задачи стане много голям, може да започеш да си задаваш въпроси&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="18" style="height: 13.2pt;"&gt;   &lt;td class="xl66" height="18" style="height: 13.2pt; width: 60pt;" width="80"&gt;24&lt;/td&gt;   &lt;td class="xl66" style="width: 711pt;" width="948"&gt;Когато лайната ти стигнат до   устата , горе главата !!!&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="18" style="height: 13.2pt;"&gt;   &lt;td class="xl66" height="18" style="height: 13.2pt; width: 60pt;" width="80"&gt;25&lt;/td&gt;   &lt;td class="xl66" style="width: 711pt;" width="948"&gt;Ако си сигурен че като кажеш   нещо на слушащите те няма да те разберат или ефекта ще бъде 0 въобще има ли   смисъл да си отваряш устата&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="18" style="height: 13.2pt;"&gt;   &lt;td class="xl66" height="18" style="height: 13.2pt; width: 60pt;" width="80"&gt;26&lt;/td&gt;   &lt;td class="xl65" style="width: 711pt;" width="948"&gt;С викане няма да стане. Колкото   повече викаш толкова повече няма да стане !!! Рови се по-дълбоко в окопа и   стискай менгемето …&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="18" style="height: 13.2pt;"&gt;   &lt;td class="xl66" height="36" rowspan="2" style="height: 26.4pt; width: 60pt;" width="80"&gt;27&lt;/td&gt;   &lt;td class="xl65" rowspan="2" style="width: 711pt;" width="948"&gt;Можеш да станеше лидер   на нов успешен бизнес след разбереш възможността и убедиш хората които ще   участват в него и действително го провеждаш така че всички да са доволни&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="18" style="height: 13.2pt;"&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="18" style="height: 13.2pt;"&gt;   &lt;td class="xl66" height="18" style="height: 13.2pt; width: 60pt;" width="80"&gt;28&lt;/td&gt;   &lt;td class="xl65" style="width: 711pt;" width="948"&gt;Преди лайното да се удари във   вентилатора започва да мирише … Помисли си докога има смисъл да стоиш във   стаята на действието&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="18" style="height: 13.2pt;"&gt;   &lt;td class="xl66" height="18" style="height: 13.2pt; width: 60pt;" width="80"&gt;29&lt;/td&gt;   &lt;td class="xl65" style="width: 711pt;" width="948"&gt;Не показвай на другите без   причина колкото си успял – завистта пречи при уреждането на взаимните работи&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="18" style="height: 13.2pt;"&gt;   &lt;td class="xl66" height="18" style="height: 13.2pt; width: 60pt;" width="80"&gt;30&lt;/td&gt;   &lt;td class="xl66" style="width: 711pt;" width="948"&gt;Ако някой ти губи времето   разкарай го учтиво така че да не остане засегнат&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="18" style="height: 13.2pt;"&gt;   &lt;td class="xl66" height="18" style="height: 13.2pt; width: 60pt;" width="80"&gt;31&lt;/td&gt;   &lt;td class="xl65" style="width: 711pt;" width="948"&gt;Многото псувни и простотии и   твърде цветистия език издават лъжеца и блъфьора&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="18" style="height: 13.2pt;"&gt;   &lt;td class="xl66" height="18" style="height: 13.2pt; width: 60pt;" width="80"&gt;32&lt;/td&gt;   &lt;td class="xl65" style="width: 711pt;" width="948"&gt;Когато съотборника ти се   представи добре похвали го на всички и в никакъв случай не си предписвай   неговите заслуги&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="18" style="height: 13.2pt;"&gt;   &lt;td class="xl66" height="18" style="height: 13.2pt; width: 60pt;" width="80"&gt;33&lt;/td&gt;   &lt;td class="xl65" style="width: 711pt;" width="948"&gt;Силата на участващите в   разговора се разбира не по количеството на информацията изказана направо а по   обема на неизказаното&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="18" style="height: 13.2pt;"&gt;   &lt;td class="xl66" height="18" style="height: 13.2pt; width: 60pt;" width="80"&gt;34&lt;/td&gt;   &lt;td class="xl65" style="width: 711pt;" width="948"&gt;Умението да мълчиш и слушаш   когато другите говорят, е по-ценно от умението да говориш&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="18" style="height: 13.2pt;"&gt;   &lt;td class="xl66" height="18" style="height: 13.2pt; width: 60pt;" width="80"&gt;35&lt;/td&gt;   &lt;td class="xl65" style="width: 711pt;" width="948"&gt;If your actions inspire others   to dream more, learn more, do more, and become more, you are a leader&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="18" style="height: 13.2pt;"&gt;   &lt;td class="xl66" height="18" style="height: 13.2pt; width: 60pt;" width="80"&gt;36&lt;/td&gt;   &lt;td class="xl65" style="width: 711pt;" width="948"&gt;Less is more&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="35" style="height: 26.4pt;"&gt;   &lt;td class="xl66" height="35" style="height: 26.4pt; width: 60pt;" width="80"&gt;37&lt;/td&gt;   &lt;td class="xl65" style="width: 711pt;" width="948"&gt;Щастието което човек може да   получи от тялото си е като количеството вода в една чаша. Всички пороци   изразват чашата само по-бързо. Лама Оле&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="18" style="height: 13.2pt;"&gt;   &lt;td class="xl66" height="18" style="height: 13.2pt; width: 60pt;" width="80"&gt;38&lt;/td&gt;   &lt;td class="xl65" style="width: 711pt;" width="948"&gt;Ако не си извадеш резервен ключ   навреме ще изгубиш много нерви и усилия като изгубиш оригинала&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="35" style="height: 26.4pt;"&gt;   &lt;td class="xl66" height="35" style="height: 26.4pt; width: 60pt;" width="80"&gt;39&lt;/td&gt;   &lt;td class="xl65" style="width: 711pt;" width="948"&gt;When you define a task spent   some time to define the deliverable as well. Make sure the person the task is   given understands the deliverable. Make sure you can control it during the   delivering process&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="18" style="height: 13.2pt;"&gt;   &lt;td class="xl66" height="18" style="height: 13.2pt; width: 60pt;" width="80"&gt;40&lt;/td&gt;   &lt;td class="xl65" style="width: 711pt;" width="948"&gt;Редовните тренировки поддържат   добрата форма, но пренапъването поражда мускулна треска&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;tr height="18" style="height: 13.2pt;"&gt;   &lt;td class="xl66" height="18" style="height: 13.2pt; width: 60pt;" width="80"&gt;41&lt;/td&gt;   &lt;td class="xl65" style="width: 711pt;" width="948"&gt;First they ignore you, then they   laugh at you, then they fight you, then you win. Gandhi&lt;/td&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;a href="http://draft.blogger.com/URL"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-6527353599091051958?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/6527353599091051958/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/03/blog-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/6527353599091051958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/6527353599091051958'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/03/blog-post.html' title='Принципи и поуки ...'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-2824852074308983246</id><published>2011-03-22T08:38:00.002+02:00</published><updated>2011-03-22T08:38:42.548+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='worth-reading'/><category scheme='http://www.blogger.com/atom/ns#' term='books'/><category scheme='http://www.blogger.com/atom/ns#' term='publishing'/><category scheme='http://www.blogger.com/atom/ns#' term='digital'/><title type='text'>Worth reading ...</title><content type='html'>&lt;a href="http://www.jakonrath.blogspot.com/2011/03/ebooks-and-self-publishing-dialog.html"&gt;http://www.jakonrath.blogspot.com/2011/03/ebooks-and-self-publishing-dialog.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-2824852074308983246?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/2824852074308983246/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/03/worth-reading.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/2824852074308983246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/2824852074308983246'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/03/worth-reading.html' title='Worth reading ...'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-5321411092062921025</id><published>2011-03-20T17:55:00.001+02:00</published><updated>2011-03-20T18:04:04.699+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='how-to'/><category scheme='http://www.blogger.com/atom/ns#' term='cmd windows batch'/><title type='text'>How-to close all active windows on windows session</title><content type='html'>::How-to close all active windows on windows session&lt;br /&gt;&lt;br /&gt;::PUT THIS TEXT INTO A BATCH FILE WITH FILE EXTENSION CMD OR BAT&lt;br /&gt;::IF YOU DON'T KNOW HOW DON'T PLAY WITH THIS ;) ...&lt;br /&gt;@ECHO OFF&lt;br /&gt;&lt;br /&gt;ECHO CLOSING ALL THE WINDOWS EXCEPT THIS ONE ARE YOU SURE ??!!&lt;br /&gt;ECHO ANY UNSAVED DATA  IN OPEN ED PROGRAMS MIGHT BE LOOSED ??!!&lt;br /&gt;ECHO.&lt;br /&gt;ECHO HIT ENTER TO PROCEED WITH CLOSING , CTRL + C TO CANCEL&lt;br /&gt;ECHO.&lt;br /&gt;ECHO THIS BATCH FILE REQUIRES THE CMDOW COMMAND LINE UTILITY&lt;br /&gt;ECHO DOWNLOAD IT FROM http://www.commandline.co.uk/cmdow/&lt;br /&gt;&lt;br /&gt;ECHO PLACE THIS FILE IN YOUR PATH , CREATE SHORTCUT TO IT&lt;br /&gt;ECHO PUT THE SHORTCUT ON THE DESKTOP , RIGHT CLICK , ASSIGN SHORTCUT TO IT ...&lt;br /&gt;&lt;br /&gt;PAUSE&lt;br /&gt;&lt;br /&gt;:: find the Handle of the window of this batch file &lt;br /&gt;for /f %%l in ('cmdow @') do set c=%%l&lt;br /&gt;&lt;br /&gt;:: FOR EACH OPEN WINDOW IF IT IT IS NOT THE NANDLE &lt;br /&gt;:: OF THE CURRENT ONE CLOSE IT BY KILLING ITS PROCESS&lt;br /&gt;for /f %%i in ('cmdow /b /t') do if not %%i==%c% cmdow %%i /END&lt;br /&gt;&lt;br /&gt;::ENABLE THIS LINE BY REMOVING THE :: IN FRONT IF THE TASKBAR DISAPPEARS&lt;br /&gt;::cmd /c explorer.exe&lt;br /&gt;&lt;br /&gt;::ENABLE THIS LINE BY REMOVING THE :: IN FRONT IF YOU WOULD LIKE TO SHUTDOWN YOUR PC&lt;br /&gt;::shutdown -f -s -t 00&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-5321411092062921025?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/5321411092062921025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/03/how-to-close-all-active-windows-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/5321411092062921025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/5321411092062921025'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/03/how-to-close-all-active-windows-on.html' title='How-to close all active windows on windows session'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-2006819569000835808</id><published>2011-03-18T14:28:00.003+02:00</published><updated>2011-03-18T14:28:47.632+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='findtag'/><category scheme='http://www.blogger.com/atom/ns#' term='settings'/><category scheme='http://www.blogger.com/atom/ns#' term='ctags'/><category scheme='http://www.blogger.com/atom/ns#' term='textpad'/><title type='text'>how-to configure textpad for ctags and findtag</title><content type='html'>The purpose of this “hack” is to provide web-like navigability to the source code, so that with Alt + right arrow and cursor positioned on an meta token instance (the instance name of function, variable, method etc. in a programming language) the cursor will jump on the definition of this meta token instance. For example in Perl if there is an object call of a method ($objectName-&gt;nameOfMethod( $optionalParams) when having the cursor on “nameOfMethod” and pressing Alt + right arrow the file having the definition of this method will be opened and the cursor positioned on that very definition. Respectively with Alt + left arrow one could navigate back from the place he came from. &lt;br /&gt;This functionality is provided the open source ctags.exe executable, written by Darren Hiebert, supporting 33 languages (their meta data and structure) and contained as part of many Linux distributions.   The stand-alone executable should be placed in a folder of the Path environmental variable and the following commands configured:&lt;br /&gt;Command name: Generate ctags database&lt;br /&gt;Command: cmd.exe&lt;br /&gt;Parameters: ctags.exe -R -n --fields=+i+K+S+l+m+a&lt;br /&gt;Initial folder: $FileDir&lt;br /&gt;This command with generate the database for ctags.exe, containing all the meta names  of the current code base , recursively by including selected extension fields of the code base. This command could be assigned with any shortcut in the TextPad interface (herewith Ctrl + 6 used)&lt;br /&gt;Command name: Jump to tag definition&lt;br /&gt;Command: C:\Path\to\findTag.exe&lt;br /&gt;Parameter: -file $AppWnd $File $Line&lt;br /&gt;Initial folder: $FileDir&lt;br /&gt;This command could be configured with the Alt + right arrow as explained above. &lt;br /&gt;The command to return back to the point where this command was issued is:&lt;br /&gt;Command name: Tag Back&lt;br /&gt;Command: C:\Path\to\FindTag.exe&lt;br /&gt;Parameters: -back&lt;br /&gt;Initial folder: $FileDir&lt;br /&gt;This command could be configured with the Alt + left arrow shortcut. &lt;br /&gt;This configuration combined with the Textpad’ s inbuilt “find in files” feature and the “FuncJumper” introduced bellow makes the navigability of even large projects, containing 20 or more source files under different folders with approximately 100 lines per file fast and easy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-2006819569000835808?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/2006819569000835808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/03/how-to-configure-textpad-for-ctags-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/2006819569000835808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/2006819569000835808'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/03/how-to-configure-textpad-for-ctags-and.html' title='how-to configure textpad for ctags and findtag'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-3420078203069998294</id><published>2011-03-18T13:44:00.001+02:00</published><updated>2011-03-18T13:44:48.976+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='textpad'/><category scheme='http://www.blogger.com/atom/ns#' term='shortcuts'/><title type='text'>textpad 5.4.2 keyboard shortcuts</title><content type='html'>source:Straight copy paste from textpad help: &lt;br /&gt;&lt;br /&gt;The Keyboard&lt;br /&gt;These tables list the default command shortcuts for TextPad. If you have chosen to work in compatibility mode with another application, you can view the shortcuts on the Keyboard page of the Preferences dialog box.&lt;br /&gt;&lt;br /&gt;Single Key Shortcuts:&lt;br /&gt;Key Modifier Command &lt;br /&gt;A Ctrl Select All. &lt;br /&gt;B Ctrl Move the cursor back to start of word. &lt;br /&gt;B Ctrl+Shift Select back to start of word. &lt;br /&gt;C Ctrl Copy selection to clipboard. &lt;br /&gt;C Ctrl+Shift Append selection to clipboard. &lt;br /&gt;D Ctrl Move cursor back to end of word. &lt;br /&gt;D Ctrl+Shift Select back to end of word. &lt;br /&gt;E Ctrl Center text. &lt;br /&gt;E Ctrl+Shift Right align text. &lt;br /&gt;F Ctrl Find next instance of search pattern. &lt;br /&gt;F Ctrl+Shift Find previous instance of search pattern. &lt;br /&gt;G Ctrl Go to line. &lt;br /&gt;I Ctrl Increase indentation. &lt;br /&gt;I Ctrl+Shift Reduce indentation. &lt;br /&gt;J Ctrl Join selected lines. &lt;br /&gt;J Ctrl+Shift Reformat selected lines. &lt;br /&gt;J Ctrl+Alt Split word-wrapped lines. &lt;br /&gt;K Ctrl Invert case of selection. &lt;br /&gt;L Ctrl Convert selection to lower case. &lt;br /&gt;L Ctrl+Shift Insert a page break. &lt;br /&gt;M Ctrl Find matching { [ (&lt; or &gt;) ] } &lt;br /&gt;M Ctrl+Shift Select to matching { [ (&lt; or &gt;) ] } &lt;br /&gt;N Ctrl Create a new document. &lt;br /&gt;O Ctrl Open a document using the common Open File dialog box. &lt;br /&gt;O Ctrl+Shift Open a document by typing its name. &lt;br /&gt;P Ctrl Print active document. &lt;br /&gt;P Ctrl+Shift Preview the active document as it will print. &lt;br /&gt;Q Ctrl Prefix key for two key commands (see below). &lt;br /&gt;R Ctrl Playback the scratch macro. &lt;br /&gt;R Ctrl+Shift Record a new macro. &lt;br /&gt;S Ctrl Save the active document. &lt;br /&gt;S Ctrl+Shift Save all documents. &lt;br /&gt;T Ctrl Transpose the lines or characters either side of the cursor. &lt;br /&gt;T Ctrl+Shift Transpose the words either side of the cursor. &lt;br /&gt;U Ctrl Convert selection to upper case. &lt;br /&gt;U Ctrl+Shift Convert first character of selection to uppercase and the rest to lower case. &lt;br /&gt;V Ctrl Paste text from the clipboard. &lt;br /&gt;V Ctrl+Shift Insert the contents of a file at the cursor position. &lt;br /&gt;W Ctrl Move cursor forward to start of word. &lt;br /&gt;W Ctrl+Shift Select forward to start of word. &lt;br /&gt;X Ctrl Cut the selection to the clipboard. &lt;br /&gt;X Ctrl+Shift Cut and append the selection to the clipboard. &lt;br /&gt;Y Ctrl Redo last Undo. &lt;br /&gt;Y Ctrl+Shift Redo all Undos. &lt;br /&gt;Z Ctrl Undo last edit. &lt;br /&gt;Z Ctrl+Shift Undo all edits. &lt;br /&gt;0 Alt Activate the Clip Library. &lt;br /&gt;Break Ctrl Stop the tool running in the command window. &lt;br /&gt;Backspace   Delete selection, or character before the cursor, (replace it with a space in overtype mode). &lt;br /&gt;Backspace Ctrl Delete back to the last start of word. &lt;br /&gt;Delete   Delete selection, or character after the cursor. &lt;br /&gt;Delete Ctrl Delete forward to the next start of word. &lt;br /&gt;Delete Ctrl+Shift Delete to the end of the line. &lt;br /&gt;Delete Alt Delete all lines in the document. &lt;br /&gt;End   Cursor to end of line. &lt;br /&gt;End Shift Select to end of line. &lt;br /&gt;End Ctrl Cursor to end of document. &lt;br /&gt;End Ctrl+Shift Select to end of document. &lt;br /&gt;End Alt Cursor to the last visible line, in the current column, if possible. &lt;br /&gt;Enter   Start a new line in an edit document, or do a hypertext jump in a command or search results window. &lt;br /&gt;Enter Ctrl Insert new line after current line. &lt;br /&gt;Enter Ctrl+Shift Insert new line before current line. &lt;br /&gt;Enter Alt Display in-context properties dialog box. &lt;br /&gt;Escape   Cancel any existing selection. &lt;br /&gt;Home   Cursor to start of line. Press twice to go to the left margin. Reassign this shortcut to "LineLeft" if you always want it to go to the left margin. &lt;br /&gt;Home Shift Select to start of line. Press twice to select to the left margin. Reassign this shortcut to "LineLeftSel" if you always want it to select to the left margin. &lt;br /&gt;Home Ctrl Cursor to start of document. &lt;br /&gt;Home Ctrl+Shift Select to start of document. &lt;br /&gt;Home Alt Cursor to the first visible line, in the current column, if possible. &lt;br /&gt;Insert   Switch between insert and overtype mode. &lt;br /&gt;Scroll Lock   Locks cursor position when scrolling with page up/down keys. &lt;br /&gt;Tab  Indent selected lines, or move cursor to next tab stop. &lt;br /&gt;Tab Ctrl Next window (same as Ctrl+F6). &lt;br /&gt;Tab Ctrl+Shift Previous window (same as Ctrl+Shift+F6). &lt;br /&gt;Tab Shift Reduce indentation of selected lines, or move cursor to previous tab stop. &lt;br /&gt;Left Arrow   Cursor left one character. &lt;br /&gt;Left Arrow Shift Select left one character. &lt;br /&gt;Left Arrow Ctrl Cursor left one word. &lt;br /&gt;Left Arrow Ctrl+Shift Select left one word. &lt;br /&gt;Right Arrow   Cursor right one character. &lt;br /&gt;Right Arrow Shift Select right one character. &lt;br /&gt;Right Arrow Ctrl Cursor right one word. &lt;br /&gt;Right Arrow Ctrl+Shift Select right one word. &lt;br /&gt;Down Arrow   Cursor down one line. &lt;br /&gt;Down Arrow Shift Select down one line. &lt;br /&gt;Down Arrow Alt Cursor down to the start of the next paragraph. &lt;br /&gt;Down Arrow Alt +Shift Select to the start of the next paragraph. &lt;br /&gt;Down Arrow Ctrl Scroll the view up one line, without moving the cursor. &lt;br /&gt;Up Arrow   Cursor up one line. &lt;br /&gt;Up Arrow Shift Select up one line. &lt;br /&gt;Up Arrow Alt Cursor up to the start of the previous paragraph. &lt;br /&gt;Up Arrow Alt+Shift Select to to the start of the previous paragraph. &lt;br /&gt;Up Arrow Ctrl Scroll the view down one line, without moving the cursor. &lt;br /&gt;F1   In-context help. &lt;br /&gt;F1 Ctrl Display document statistics on status bar. &lt;br /&gt;F1 Shift Invoke in-context help cursor. &lt;br /&gt;F2  Go to next bookmark. &lt;br /&gt;F2 Ctrl Set or clear a bookmark on the current line. &lt;br /&gt;F2 Shift Go to previous bookmark. &lt;br /&gt;F2 Ctrl+Shift Clear all bookmarks. &lt;br /&gt;F3   Invoke the Manage Files dialog box. &lt;br /&gt;F3 Ctrl Show or hide the Clip Library. &lt;br /&gt;F3 Alt Invoke Windows File Manager or Explorer. &lt;br /&gt;F4  Hypertext jump to next item in Search or Command Output window. &lt;br /&gt;F4 Shift Hypertext jump to previous item in Search or Command Output window. &lt;br /&gt;F4 Ctrl Close the active window. &lt;br /&gt;F5  Invoke the Find dialog box. &lt;br /&gt;F5 Ctrl Invoke Find in Files dialog box. &lt;br /&gt;F6  Activate next view. &lt;br /&gt;F6 Shift Activate previous view. &lt;br /&gt;F6 Ctrl Activate next window. &lt;br /&gt;F6 Ctrl+Shift Activate previous window. &lt;br /&gt;F7   Check the spelling of the active document. &lt;br /&gt;F7 Ctrl Invoke the Playback Macro dialog box. &lt;br /&gt;F8  Invoke Replace dialog. &lt;br /&gt;F8 Ctrl Replace next instance of search pattern. &lt;br /&gt;F9  Sort. &lt;br /&gt;F9 Ctrl Compare. &lt;br /&gt;F10   Activate the main menu. &lt;br /&gt;F10 Shift Popup the in-context document menu. &lt;br /&gt;F10 Ctrl Popup the insert date/time menu. &lt;br /&gt;F11   Invoke the Document Selector. &lt;br /&gt;F11 Ctrl Activate the Command Results window. &lt;br /&gt;F11 Shift Activate the Search Results window. &lt;br /&gt;F12   Save As. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Two-key Shortcuts:&lt;br /&gt;Keys Command &lt;br /&gt;Ctrl+Q, B Switch in and out of block select mode. &lt;br /&gt;Ctrl+Q, E Switch between read-only and edit modes. &lt;br /&gt;Ctrl+Q, H Display/hide the horizontal scroll bar. &lt;br /&gt;Ctrl+Q, I Display/hide visible spaces, tabs and paragraphs. &lt;br /&gt;Ctrl+Q, L Display/hide line numbers. &lt;br /&gt;Ctrl+Q, P Display the Preferences dialog box. &lt;br /&gt;Ctrl+Q, R Set the right margin at the cursor position. &lt;br /&gt;Ctrl+Q, S Switch in and out of selection mode. &lt;br /&gt;Ctrl+Q, Y Switch in and out of synchronized scrolling mode. &lt;br /&gt;Ctrl+Q, V Display/hide the vertical scroll bar. &lt;br /&gt;Ctrl+Q, W Switch in and out of word-wrap mode. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;See Also:&lt;br /&gt;Typing International Characters&lt;br /&gt;&lt;br /&gt;Typing Control Characters&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-3420078203069998294?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/3420078203069998294/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/03/textpad-542-keyboard-shortcuts.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/3420078203069998294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/3420078203069998294'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/03/textpad-542-keyboard-shortcuts.html' title='textpad 5.4.2 keyboard shortcuts'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-8652663591108937780</id><published>2011-03-17T21:08:00.002+02:00</published><updated>2011-03-20T17:46:11.774+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cool programs'/><category scheme='http://www.blogger.com/atom/ns#' term='utilities'/><category scheme='http://www.blogger.com/atom/ns#' term='windows reinstall'/><title type='text'>Cool programs , utilities and programming environments for Windows, most of which free ( revised )</title><content type='html'>&lt;div class="postBody" style="color: #777777;"&gt;&lt;br /&gt;&lt;h3&gt;Cool programs , utilities and programming environments for Windows, most of which free ( revised )&lt;br /&gt;&lt;/h3&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.opera.com/"&gt; Opera - simply the best browser on the planet &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb842062"&gt; SysInternals Suite&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.mozilla.com/en-US/firefox/all.html"&gt; Firefox &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.apple.com/safari/download/"&gt; Safari - &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.google.com/chrome?hl=en"&gt; Google Chrome &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://strawberryperl.com/"&gt; strawberry perl for Windows (with dmake for modules ) &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.activestate.com/activeperl/downloads" target="a_blank"&gt; Active Perl &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.izarc.org/download.html"&gt;izarc - the best zipper &lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx"&gt; Process Explorer - shows resources usage per running process on Windows &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://earth.google.com/intl/en/"&gt; Google Earth &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasa.google.com/"&gt; Picasa - the best free picture viewer , organizer&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.mozilla.com/en-US/thunderbird/all.html"&gt;Mozilla Thunderbird&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.textpad.com/"&gt; Textpad - the best text editor for Windows &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.ssmstoolspack.com/Download.aspx"&gt;smstoolpack - create CRUD for sql server &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://downloads.sourceforge.net/sourceforge/greenshot/Greenshot-0.6.003.zip?use_mirror=mesh"&gt;GreenShot&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.codeplex.com/OpenDBiff"&gt;Open diff - tool for comparing sql server 2005 databases &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.skype.com/intl/en/download/skype/windows/downloading/"&gt; Skype - the best client for Internet and Video Telephony&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://nsis.sourceforge.net/Download"&gt; NSIS - the best open source Windows installer maker &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://nsis.sourceforge.net/Time_plugin"&gt; And the time plugin &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://gears.google.com/download.html?statcb=1"&gt; Gears -- edit online documents offline&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.dvdvideosoft.com/products/dvd/Free-YouTube-to-iPod-Converter.htm"&gt; Free youtube to ipod converter -- get mp4 files easily to your phone &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.filehippo.com/download_defraggler/"&gt; Defragler - Disk Defragment utility &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.dvddecrypter.org.uk/"&gt; DvdDecrypter - the best DVD free ripper &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.imgburn.com/"&gt; ImgBurner - burn ISO images - freeware &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.joejoesoft.com/cms/showpage.php?cid=97"&gt; ArsClip remembers your clibboard stuff - Hint , Ctrl + Shift + Z , 2 &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.iconico.com/colorpic/"&gt; colorpic - Color to hex utility &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.ultrapico.com/ExpressoDownload.htm"&gt; Expresso - a GUI tool for building and verifying Regular Expressions &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.videolan.org/vlc/download-windows.html"&gt; a flv file player &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.python.org/download/"&gt; Python - for cool scripts and programming &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://staruml.sourceforge.net/en/"&gt; STARUML - the best open source UML editor&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://infrarecorder.org/?page_id=5"&gt; Infrarecorder - free CD / DVD burner&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.getpaint.net/download.html"&gt; Paint.Net - freeware image editor &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html"&gt; putty &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://winscp.net/eng/download.php#download2"&gt; winscp &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.nodesoft.com/SearchAndReplace/Default.aspx"&gt; Multiline Search and Replace utility program &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://gears.google.com/"&gt; Google Gears - use Gmail offline &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.google.com/search?client=opera&amp;amp;rls=en&amp;amp;q=HijackThis+download&amp;amp;sourceid=opera&amp;amp;ie=utf-8&amp;amp;oe=utf-8"&gt; HijackThis&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://tortoisesvn.net/downloads"&gt; tortoise svn - a stable gui and command line to subversion for Windows &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.sliksvn.com/en/download"&gt; slik svn - the command line tools for svn for windows &lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://tokiwa.qee.jp/EN/DataRecovery_EN.zip"&gt; Data Recovery - recover Shift + del removed programs &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb897417.aspx"&gt; Windows Sysinternal utilities &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.commandline.co.uk/cmdow/"&gt; Cmdow is a Win32 commandline utility for NT4/2000/XP/2003 that allows windows to be listed, moved, resized, renamed, hidden/unhidden, disabled/enabled, minimized, maximized, restored, activated/inactivated, closed, killed and more.&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://gnuwin32.sourceforge.net/packages/grep.htm"&gt; Grep , FGrep and Egrep for windows (remember the dll's also ) &lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://gnuwin32.sourceforge.net/packages/less.htm"&gt; Less for Windows ( remember the dll's also ) &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.7-zip.org/"&gt; 7-zip&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.risetobloome.com/Page_1_S_NoPadding.aspx?item=530" &gt; Rise Editor - Entity Relationship Diagram tool &lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://get.adobe.com/reader/"&gt; Adobe Acrobat &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.slysoft.com/en/virtual-clonedrive.html"&gt; Virtual Clone Drive - Map ISO files  &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://sliksvn.com/en/download/"&gt; svn client and server &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.stack.nl/~dimitri/doxygen/download.html#latestsrc"&gt; Doxygen - code documentation utility &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://qt.nokia.com/downloads/"&gt; Qt - Nokia's Development Platform &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://dia-installer.de/"&gt; Dia - control flow chars freeware software &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.audiograbber.org/"&gt; AudioGrabber - the best mp3 ripper&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.autohotkey.com/download/"&gt; AutoHotKey - GUI automating &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.fiddler2.com/fiddler2/version.asp"&gt; Fiddler - http sniffer  &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://gnuwin32.sourceforge.net/packages/coreutils.htm"&gt; Windows GNU utils &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.cygwin.com/"&gt; Cygwin &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://sshwindows.sourceforge.net/download/"&gt; Open SSH for Windows - ssh and sftp &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;p&gt;tags:programs, tools, utilities, windows &lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-8652663591108937780?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/8652663591108937780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/03/cool-programs-utilities-and-programming_17.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/8652663591108937780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/8652663591108937780'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/03/cool-programs-utilities-and-programming_17.html' title='Cool programs , utilities and programming environments for Windows, most of which free ( revised )'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-2262438132267151714</id><published>2011-03-11T17:43:00.000+02:00</published><updated>2011-03-11T17:43:17.402+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GDP'/><category scheme='http://www.blogger.com/atom/ns#' term='debt'/><category scheme='http://www.blogger.com/atom/ns#' term='economy'/><title type='text'>the link of the day</title><content type='html'>&lt;a href="http://en.wikipedia.org/wiki/List_of_sovereign_states_by_public_debt"&gt;List of the countries' national debt to GDP ratio &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-2262438132267151714?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/2262438132267151714/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/03/link-of-day.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/2262438132267151714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/2262438132267151714'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/03/link-of-day.html' title='the link of the day'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-5389470305356835529</id><published>2011-03-07T22:01:00.000+02:00</published><updated>2011-03-07T22:01:04.248+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='how-to'/><category scheme='http://www.blogger.com/atom/ns#' term='mssql'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><category scheme='http://www.blogger.com/atom/ns#' term='code generation'/><title type='text'>how-to generate mssql insert statements from Excel with perl</title><content type='html'>&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: Consolas, "Courier New", Courier, Monospace; background-color: #ffffff; /*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em;}.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;use Spreadsheet::ParseExcel;&lt;/pre&gt;&lt;pre&gt;use strict;&lt;/pre&gt;&lt;pre class="alt"&gt;use warnings ; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;package ExcelToSqlInsert; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;my $VERSION = 0.2.0;&lt;/pre&gt;&lt;pre&gt;my $DebugLevel = 4 ; &lt;/pre&gt;&lt;pre class="alt"&gt;my $ExcelFileToParse = &lt;span class="str"&gt;"$ARGV[0]"&lt;/span&gt; ; &lt;/pre&gt;&lt;pre&gt;my $OutputDir=&lt;span class="str"&gt;"$ARGV[1]"&lt;/span&gt; ;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;sub  main {&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;logMsg ( &lt;span class="str"&gt;"$0 MAIN START "&lt;/span&gt; ) ; &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;my $delimiter = chr($ARGV[2]);&lt;/pre&gt;&lt;pre class="alt"&gt;my $rowEnd = chr($ARGV[3]);&lt;/pre&gt;&lt;pre&gt;my $InputDir = &lt;span class="str"&gt;"$ARGV[4]"&lt;/span&gt; ;&lt;/pre&gt;&lt;pre class="alt"&gt;my $FileToPrint = $OutputDir . &lt;span class="str"&gt;"/"&lt;/span&gt; . &lt;span class="str"&gt;"output.sql"&lt;/span&gt; ; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;logMsg ( &lt;span class="str"&gt;"\$ExcelFileToParse is $ExcelFileToParse"&lt;/span&gt; ) ; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;ParseExcel ( $ExcelFileToParse  , $delimiter ) ; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;logMsg ( &lt;span class="str"&gt;"$0 MAIN STOP "&lt;/span&gt; ) ; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;} &lt;span class="rem"&gt;#eof sub main &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;sub ParseExcel {&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;my $ExcelFileToParse = shift ; &lt;/pre&gt;&lt;pre&gt;my $delimiter = shift ; &lt;/pre&gt;&lt;pre class="alt"&gt;my $rowEnd = &lt;span class="str"&gt;"\n"&lt;/span&gt;; &lt;/pre&gt;&lt;pre&gt;my $strToReturn = &lt;span class="str"&gt;""&lt;/span&gt; ; &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;my $parser   = Spreadsheet::ParseExcel-&amp;gt;new();&lt;/pre&gt;&lt;pre class="alt"&gt;my $workbook = $parser-&amp;gt;Parse(&lt;span class="str"&gt;"$ExcelFileToParse"&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;foreach&lt;/span&gt; my $worksheet (@{$workbook-&amp;gt;{Worksheet}}) {&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;my $workSheetName = $worksheet-&amp;gt;{&lt;span class="str"&gt;'Name'&lt;/span&gt;} ; &lt;/pre&gt;&lt;pre class="alt"&gt;my $FileToPrint = ToUnixDir(&lt;span class="str"&gt;"$OutputDir"&lt;/span&gt; . &lt;span class="str"&gt;'/'&lt;/span&gt; . &lt;span class="str"&gt;"$workSheetName"&lt;/span&gt; . &lt;span class="str"&gt;"\.TableInsert\.sql"&lt;/span&gt;) ; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;$strToReturn .= &lt;span class="str"&gt;"SET NOCOUNT ON;&lt;/pre&gt;&lt;pre&gt;SET XACT_ABORT ON;&lt;/pre&gt;&lt;pre class="alt"&gt;GO&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;TRUNCATE TABLE [dbo].["&lt;/span&gt; . $workSheetName .  &lt;span class="str"&gt;"]  ; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;SET IDENTITY_INSERT [dbo].["&lt;/span&gt; . $workSheetName .  &lt;span class="str"&gt;"] ON;&lt;/pre&gt;&lt;pre&gt;BEGIN TRANSACTION;&lt;/pre&gt;&lt;pre class="alt"&gt;INSERT INTO [dbo].["&lt;/span&gt; . $workSheetName .  &lt;span class="str"&gt;"] ( \n"&lt;/span&gt; ; &lt;/pre&gt;&lt;pre&gt;my $RowMin = $worksheet-&amp;gt;{MinRow} ; &lt;/pre&gt;&lt;pre class="alt"&gt;my $RowMax= $worksheet-&amp;gt;{MaxRow} ; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#    my ( $RowMin, $RowMax) = $worksheet-&amp;gt;row_range();&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;#    my ( $col_min, $col_max ) = $worksheet-&amp;gt;col_range();&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;for&lt;/span&gt; my $row ( ($RowMin ) .. $RowMax) {&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;my $col_min = $worksheet-&amp;gt;{MinCol} ; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;my $col_max = $worksheet-&amp;gt;{MaxCol} ; &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;$strToReturn .= &lt;span class="str"&gt;") \n SELECT "&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; ( $row == 1) ;    &lt;/pre&gt;&lt;pre class="alt"&gt;$strToReturn .= &lt;span class="str"&gt;"\n UNION ALL SELECT "&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; ( $row &amp;gt;1) ; &lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;my $tokenStart = (); &lt;/pre&gt;&lt;pre&gt;$tokenStart = &lt;span class="str"&gt;'\''&lt;/span&gt;  &lt;span class="kwrd"&gt;if&lt;/span&gt; ( $row&amp;gt;0) ; &lt;/pre&gt;&lt;pre class="alt"&gt;$tokenStart = &lt;span class="str"&gt;'['&lt;/span&gt;  &lt;span class="kwrd"&gt;if&lt;/span&gt; ( $row == 0) ; &lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;my $tokenStop = () ; &lt;/pre&gt;&lt;pre&gt;$tokenStop = &lt;span class="str"&gt;'\''&lt;/span&gt;  &lt;span class="kwrd"&gt;if&lt;/span&gt; ( $row&amp;gt;0) ; &lt;/pre&gt;&lt;pre class="alt"&gt;$tokenStop = &lt;span class="str"&gt;']'&lt;/span&gt;  &lt;span class="kwrd"&gt;if&lt;/span&gt; ( $row == 0) ; &lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;for&lt;/span&gt; my $col ( ($col_min ) .. $col_max ) {&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;my $cell = $worksheet-&amp;gt;{Cells}[$row][$col]  ; &lt;/pre&gt;&lt;pre class="alt"&gt;next unless $cell;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;logMsg( &lt;span class="str"&gt;" Row, Col    = ($row, $col)\n"&lt;/span&gt; ) ; &lt;/pre&gt;&lt;pre&gt;logMsg ( &lt;span class="str"&gt;" Value = "&lt;/span&gt;, $cell-&amp;gt;Value() ); &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;my $cellValueToReplace = $worksheet-&amp;gt;{Cells}[$RowMin][$col]  ; &lt;/pre&gt;&lt;pre class="alt"&gt;print &lt;span class="str"&gt;"\$cellValueToReplace is $cellValueToReplace \n"&lt;/span&gt; ; &lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;my $StrValueToReplaceWith = $cell-&amp;gt;Value() ;&lt;/pre&gt;&lt;pre class="alt"&gt;print &lt;span class="str"&gt;" \$StrValueToReplaceWith  is $StrValueToReplaceWith  \n"&lt;/span&gt; ; &lt;/pre&gt;&lt;pre&gt;my $token = $cell-&amp;gt;Value() ; &lt;/pre&gt;&lt;pre class="alt"&gt;$token =~ s/\&lt;span class="str"&gt;'/\'\'/g ;     #replace '&lt;/span&gt; with &lt;span class="str"&gt;''&lt;/span&gt; to escape sql&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#NULL is a key word should not be tokenized in MSSQL sql&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; ( $token eq &lt;span class="str"&gt;'NULL'&lt;/span&gt;)&lt;/pre&gt;&lt;pre&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;$strToReturn .= $token  .  &lt;span class="str"&gt;' , '&lt;/span&gt;; &lt;/pre&gt;&lt;pre&gt;}&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;$strToReturn .= $tokenStart . $token  . $tokenStop . &lt;span class="str"&gt;' , '&lt;/span&gt; ; &lt;/pre&gt;&lt;pre&gt;}&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;#print "\$strToReturn is $strToReturn \n" ; &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;#$strToReturn .=  $cell-&amp;gt;Value() . $delimiter       ;                #The Value&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#print "Unformatted = ", $cell-&amp;gt;Unformatted(), "\n";&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;} &lt;span class="rem"&gt;#eof column&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;chop ($strToReturn) ; &lt;span class="rem"&gt;#remove the latest delimiter&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;chop ($strToReturn) ; &lt;span class="rem"&gt;#remove the latest delimiter&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;$strToReturn .= $rowEnd ;     &lt;span class="rem"&gt;#end the row    &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;print &lt;span class="str"&gt;"\$FileToPrint  is $FileToPrint "&lt;/span&gt; ; &lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;} &lt;span class="rem"&gt;#eof row&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;$strToReturn .= &lt;/pre&gt;&lt;pre&gt;&lt;span class="str"&gt;"\n COMMIT;&lt;/pre&gt;&lt;pre class="alt"&gt;RAISERROR (N\'[dbo].["&lt;/span&gt; . $workSheetName .  &lt;span class="str"&gt;"]: Insert Batch: 1.....Done!\', 10, 1) WITH NOWAIT;&lt;/pre&gt;&lt;pre&gt;GO&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;SET IDENTITY_INSERT [dbo].["&lt;/span&gt; . $workSheetName .  &lt;span class="str"&gt;"] OFF;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;SELECT \'SELECT TOP 5 * FROM [dbo].["&lt;/span&gt; . $workSheetName .  &lt;span class="str"&gt;"]  ORDER BY 1 DESC ; \' &lt;/pre&gt;&lt;pre class="alt"&gt;SELECT TOP 5 * FROM [dbo].["&lt;/span&gt; . $workSheetName .  &lt;span class="str"&gt;"]  ORDER BY 1 DESC ; &lt;/pre&gt;&lt;pre&gt;"&lt;/span&gt; ; &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;printToFile ( $FileToPrint , $strToReturn ) ; &lt;/pre&gt;&lt;pre class="alt"&gt;$strToReturn = &lt;span class="str"&gt;''&lt;/span&gt; ; &lt;/pre&gt;&lt;pre&gt;} &lt;span class="rem"&gt;#eof worksheet&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;} &lt;span class="rem"&gt;#eof sub&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;sub printToFile {&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;my $FileOutput = shift ; &lt;/pre&gt;&lt;pre&gt;my $StringToPrint = shift ; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;#READ ALL ROWS OF A FILE TO ALIST &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;open (FILEOUTPUT, &lt;span class="str"&gt;"&amp;gt;$FileOutput"&lt;/span&gt;) || &lt;/pre&gt;&lt;pre class="alt"&gt;print &lt;span class="str"&gt;"could not open the \$FileOutput $FileOutput!\n"&lt;/span&gt;; &lt;/pre&gt;&lt;pre&gt;print  FILEOUTPUT $StringToPrint ; &lt;/pre&gt;&lt;pre class="alt"&gt;close FILEOUTPUT ;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;#debug $strToReturn .=  $StringToPrint; &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;}&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# =========================================== eof sub printToFile&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;sub trim    &lt;/pre&gt;&lt;pre class="alt"&gt;{&lt;/pre&gt;&lt;pre&gt;$_[0]=~s/^\s+//;&lt;/pre&gt;&lt;pre class="alt"&gt;$_[0]=~s/\s+$//;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; $_[0];&lt;/pre&gt;&lt;pre class="alt"&gt;}&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;sub readFileReturnString {&lt;/pre&gt;&lt;pre class="alt"&gt;my $fileToRead = shift ; &lt;/pre&gt;&lt;pre&gt;print &lt;span class="str"&gt;" readFileReturnString \$fileToRead is $fileToRead \n"&lt;/span&gt; ; &lt;/pre&gt;&lt;pre class="alt"&gt;my $string = (); &lt;/pre&gt;&lt;pre&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;local&lt;/span&gt; $/=undef;&lt;/pre&gt;&lt;pre&gt;open FILE, &lt;span class="str"&gt;"$fileToRead "&lt;/span&gt; or print &lt;span class="str"&gt;"Couldn't open \$fileToRead $fileToRead : $!"&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;$string = &amp;lt;FILE&amp;gt;;&lt;/pre&gt;&lt;pre&gt;close FILE;&lt;/pre&gt;&lt;pre class="alt"&gt;}&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; $string ; &lt;/pre&gt;&lt;pre class="alt"&gt;} &lt;span class="rem"&gt;#eof sub readFileReturnString &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# =========================================== eof sub trim &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#log a message according to the DebugLevel&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# use: logMsg ("msg");&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;sub logMsg &lt;/pre&gt;&lt;pre class="alt"&gt;{&lt;/pre&gt;&lt;pre&gt;my $msg = shift || &lt;span class="str"&gt;"empty msg"&lt;/span&gt; ; &lt;/pre&gt;&lt;pre class="alt"&gt;my $importance =  shift || 0 ; &lt;/pre&gt;&lt;pre&gt;my $CurrentPerlScriptName = ToUnixDir(&lt;span class="str"&gt;"$0"&lt;/span&gt; );&lt;/pre&gt;&lt;pre class="alt"&gt;my $niceMonth = GetANiceMonth (); &lt;/pre&gt;&lt;pre&gt;my $logFile = &lt;span class="str"&gt;"$CurrentPerlScriptName"&lt;/span&gt; . &lt;span class="str"&gt;'_'&lt;/span&gt; . &lt;span class="str"&gt;"$niceMonth"&lt;/span&gt; .  &lt;span class="str"&gt;'.log'&lt;/span&gt; ; &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;$msg = GetANiceTime () .&lt;span class="str"&gt;' --- '&lt;/span&gt; .   $msg . &lt;span class="str"&gt;" \n"&lt;/span&gt; ; &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; (defined  $importance &amp;amp;&amp;amp; $importance == 1 ) &lt;/pre&gt;&lt;pre class="alt"&gt;{&lt;/pre&gt;&lt;pre&gt;$msg = &lt;span class="str"&gt;"\n============================================================ \n"&lt;/span&gt; . $msg ; &lt;/pre&gt;&lt;pre class="alt"&gt;$msg = $msg . &lt;span class="str"&gt;"============================================================ \n"&lt;/span&gt; ;&lt;/pre&gt;&lt;pre&gt;}&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;#debug nothing&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; ( $DebugLevel == 0 ) {     &lt;span class="kwrd"&gt;return&lt;/span&gt; ; } &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;#just print the message&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; ( $DebugLevel == 1 ) { print &lt;span class="str"&gt;"$msg"&lt;/span&gt;; }&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#print the message in &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; ( $DebugLevel == 2 ) &lt;/pre&gt;&lt;pre&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;#READ ALL ROWS OF A FILE TO ALIST &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;open (LOG, &lt;span class="str"&gt;"&amp;gt;&amp;gt; $logFile"&lt;/span&gt;) || print &lt;span class="str"&gt;"could not open the \$logFile $logFile !!!\n"&lt;/span&gt;; &lt;/pre&gt;&lt;pre class="alt"&gt;print LOG $msg  ; &lt;/pre&gt;&lt;pre&gt;close LOG;&lt;/pre&gt;&lt;pre class="alt"&gt;}&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;#print the message in &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; ( $DebugLevel == 3 ) &lt;/pre&gt;&lt;pre class="alt"&gt;{&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#READ ALL ROWS OF A FILE TO ALIST &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;open (LOG, &lt;span class="str"&gt;"&amp;gt;&amp;gt; $logFile"&lt;/span&gt;) || print &lt;span class="str"&gt;"could not open the \$logFile $logFile !!!\n"&lt;/span&gt;; &lt;/pre&gt;&lt;pre&gt;print LOG $msg  ; &lt;/pre&gt;&lt;pre class="alt"&gt;close LOG;&lt;/pre&gt;&lt;pre&gt;print $msg ; &lt;/pre&gt;&lt;pre class="alt"&gt;} &lt;span class="rem"&gt;#eof if ( $DebugLevel == 3 ) &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;} &lt;span class="rem"&gt;#eof sub logMsg &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#log a message according to the DebugLevel&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;sub logErrorMsg &lt;/pre&gt;&lt;pre&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;my $errorMsg = shift ; &lt;/pre&gt;&lt;pre&gt;my $importance  = shift ; &lt;/pre&gt;&lt;pre class="alt"&gt;my $CurrentPerlScriptName = &lt;span class="str"&gt;"$0"&lt;/span&gt; ; &lt;/pre&gt;&lt;pre&gt;my $niceMonth = GetANiceMonth (); &lt;/pre&gt;&lt;pre class="alt"&gt;my $errorLogFile = &lt;span class="str"&gt;"$CurrentPerlScriptName"&lt;/span&gt; . &lt;span class="str"&gt;"_"&lt;/span&gt; .  &lt;span class="str"&gt;"$niceMonth"&lt;/span&gt; . &lt;span class="str"&gt;'.error.log'&lt;/span&gt; ; &lt;/pre&gt;&lt;pre&gt;$errorMsg = GetANiceTime () .&lt;span class="str"&gt;' --- '&lt;/span&gt; .   $errorMsg . &lt;span class="str"&gt;" \n"&lt;/span&gt; ; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; ( $importance == 1 ) &lt;/pre&gt;&lt;pre class="alt"&gt;{&lt;/pre&gt;&lt;pre&gt;$errorMsg = &lt;span class="str"&gt;"\n============================================================ \n"&lt;/span&gt; . $errorMsg ; &lt;/pre&gt;&lt;pre class="alt"&gt;$errorMsg= $errorMsg. &lt;span class="str"&gt;"============================================================ \n"&lt;/span&gt; ;&lt;/pre&gt;&lt;pre&gt;}&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#debug nothing&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; ( $DebugLevel == 0 ) {     &lt;span class="kwrd"&gt;return&lt;/span&gt; ; } &lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#just print the message&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; ( $DebugLevel == 1 )  {         print $errorMsg ;     } &lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;#print the message in a error log file&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; ( $DebugLevel == 2 ) &lt;/pre&gt;&lt;pre class="alt"&gt;{&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#READ ALL ROWS OF A FILE TO ALIST &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;open (ERRLOG, &lt;span class="str"&gt;"&amp;gt;&amp;gt; $errorLogFile"&lt;/span&gt;) || print &lt;span class="str"&gt;"could not open the \$errorLogFile $errorLogFile !!!\n"&lt;/span&gt;; &lt;/pre&gt;&lt;pre&gt;print ERRLOG $errorMsg ; &lt;/pre&gt;&lt;pre class="alt"&gt;close ERRLOG;&lt;/pre&gt;&lt;pre&gt;}&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#print the message in &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; ( $DebugLevel == 3 ) &lt;/pre&gt;&lt;pre&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;#READ ALL ROWS OF A FILE TO ALIST &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;open (ERRLOG, &lt;span class="str"&gt;"&amp;gt;&amp;gt; $errorLogFile"&lt;/span&gt;) || print &lt;span class="str"&gt;"could not open the \$errorLogFile $errorLogFile !!!\n"&lt;/span&gt;; &lt;/pre&gt;&lt;pre class="alt"&gt;print ERRLOG $errorMsg  ; &lt;/pre&gt;&lt;pre&gt;close ERRLOG;&lt;/pre&gt;&lt;pre class="alt"&gt;print $errorMsg ; &lt;/pre&gt;&lt;pre&gt;} &lt;span class="rem"&gt;#eof if ( $DebugLevel == 3 ) &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;} &lt;span class="rem"&gt;#eof sub logErrorMsg &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#GET A NICE TIME &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;sub GetANiceTime {&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# Purpose: returns the time in yyyymmdd-format &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); &lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#---- change 'month'- and 'year'-values to correct format ---- &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;$min = &lt;span class="str"&gt;"0$min"&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; ($min &amp;lt; 10); &lt;/pre&gt;&lt;pre&gt;$hour = &lt;span class="str"&gt;"0$hour"&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; ($hour &amp;lt; 10);&lt;/pre&gt;&lt;pre class="alt"&gt;$mon = $mon + 1;&lt;/pre&gt;&lt;pre&gt;$mon = &lt;span class="str"&gt;"0$mon"&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; ($mon &amp;lt; 10); &lt;/pre&gt;&lt;pre class="alt"&gt;$year = $year + 1900;&lt;/pre&gt;&lt;pre&gt;$mday = &lt;span class="str"&gt;"0$mday"&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; ($mday &amp;lt; 10); &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="str"&gt;"$year\.$mon\.$mday"&lt;/span&gt; . &lt;span class="str"&gt;"-"&lt;/span&gt; . &lt;span class="str"&gt;"$hour\:$min\:$sec"&lt;/span&gt;; &lt;/pre&gt;&lt;pre&gt;} &lt;span class="rem"&gt;#eof sub GetANiceTime&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;sub GetANiceMonth {&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# Purpose: returns the time in yyyymmdd-format &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;#---- change 'month'- and 'year'-values to correct format ---- &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;$mon = $mon + 1;&lt;/pre&gt;&lt;pre class="alt"&gt;$mon = &lt;span class="str"&gt;"0$mon"&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; ($mon &amp;lt; 10); &lt;/pre&gt;&lt;pre&gt;$year = $year + 1900;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="str"&gt;"$year\.$mon"&lt;/span&gt; ; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;} &lt;span class="rem"&gt;#eof sub GetANiceTime&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;sub ToUnixDir {&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;my $dir = shift || &lt;span class="str"&gt;""&lt;/span&gt;; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;#replace all the \ s with / s&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;$dir =~ s/\\/\//g ; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; $dir ; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;} &lt;span class="rem"&gt;#eof sub ToUnixDir&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# =========================================== eof sub trim &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# Action !!!&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;main();&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;1 ; &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;__END__&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;=head1 NAME&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;ExcelToSqlInsert - &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;=head1 DESCRIPTION&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;This &lt;span class="kwrd"&gt;script&lt;/span&gt; generates files based on templates and a simple Excel input file.&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;=head1 README&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;for&lt;/span&gt; how-to use this &lt;span class="kwrd"&gt;script&lt;/span&gt; check the ReadMe.txt &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;=head1 PREREQUISITES&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;SpreadSheet::ParseExcel&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;=head1 COREQUISITES&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;CGI&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;=pod OSNAMES&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;any ( Windows 7 only tested ) &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;=pod SCRIPT CATEGORIES&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;configurations &lt;/pre&gt;&lt;pre&gt;=cut&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-5389470305356835529?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/5389470305356835529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/03/how-to-generate-mssql-insert-statements.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/5389470305356835529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/5389470305356835529'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/03/how-to-generate-mssql-insert-statements.html' title='how-to generate mssql insert statements from Excel with perl'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-833733275603212664</id><published>2011-03-06T20:43:00.002+02:00</published><updated>2011-03-17T20:55:33.105+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='programs'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='utilities'/><title type='text'>Cool programs , utilities and programming environments for Windows, most of which free ( revised )</title><content type='html'>&lt;div class="postBody" style="color: #777777;"&gt;&lt;br /&gt;&lt;h3&gt;Cool programs , utilities and programming environments for Windows, most of which free ( revised )&lt;br /&gt;&lt;/h3&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.opera.com/"&gt; Opera - simply the best browser on the planet &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb842062"&gt; SysInternals Suite&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.mozilla.com/en-US/firefox/all.html"&gt; Firefox &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.apple.com/safari/download/"&gt; Safari - &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.google.com/chrome?hl=en"&gt; Google Chrome &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://strawberryperl.com/"&gt; strawberry perl for Windows (with dmake for modules ) &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.activestate.com/activeperl/downloads" target="a_blank"&gt; Active Perl &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.izarc.org/download.html"&gt;izarc - the best zipper &lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx"&gt; Process Explorer - shows resources usage per running process on Windows &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://earth.google.com/intl/en/"&gt; Google Earth &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasa.google.com/"&gt; Picasa - the best free picture viewer , organizer&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.mozilla.com/en-US/thunderbird/all.html"&gt;Mozilla Thunderbird&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.textpad.com/"&gt; Textpad - the best text editor for Windows &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.ssmstoolspack.com/Download.aspx"&gt;smstoolpack - create CRUD for sql server &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://downloads.sourceforge.net/sourceforge/greenshot/Greenshot-0.6.003.zip?use_mirror=mesh"&gt;GreenShot&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.codeplex.com/OpenDBiff"&gt;Open diff - tool for comparing sql server 2005 databases &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.skype.com/intl/en/download/skype/windows/downloading/"&gt; Skype - the best client for Internet and Video Telephony&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://nsis.sourceforge.net/Download"&gt; NSIS - the best open source Windows installer maker &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://nsis.sourceforge.net/Time_plugin"&gt; And the time plugin &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://gears.google.com/download.html?statcb=1"&gt; Gears -- edit online documents offline&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.dvdvideosoft.com/products/dvd/Free-YouTube-to-iPod-Converter.htm"&gt; Free youtube to ipod converter -- get mp4 files easily to your phone &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.filehippo.com/download_defraggler/"&gt; Defragler - Disk Defragment utility &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://draft.blogger.com/post-edit.g?blogID=30804833&amp;amp;postID=7317152296294814188"&gt; DvdDecrypter - the best DVD free ripper &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.imgburn.com/"&gt; ImgBurner - burn ISO images - freeware &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.joejoesoft.com/cms/showpage.php?cid=97"&gt; ArsClip remembers your clibboard stuff - Hint , Ctrl + Shift + Z , 2 &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.iconico.com/colorpic/"&gt; colorpic - Color to hex utility &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.ultrapico.com/ExpressoDownload.htm"&gt; Expresso - a GUI tool for building and verifying Regular Expressions &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.videolan.org/vlc/download-windows.html"&gt; a flv file player &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.python.org/download/"&gt; Python - for cool scripts and programming &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://staruml.sourceforge.net/en/"&gt; STARUML - the best open source UML editor&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://infrarecorder.org/?page_id=5"&gt; Infrarecorder - free CD / DVD burner&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.getpaint.net/download.html"&gt; Paint.Net - freeware image editor &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html"&gt; putty &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://winscp.net/eng/download.php#download2"&gt; winscp &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.nodesoft.com/SearchAndReplace/Default.aspx"&gt; Multiline Search and Replace utility program &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://gears.google.com/"&gt; Google Gears - use Gmail offline &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.google.com/search?client=opera&amp;amp;rls=en&amp;amp;q=HijackThis+download&amp;amp;sourceid=opera&amp;amp;ie=utf-8&amp;amp;oe=utf-8"&gt; HijackThis&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://tortoisesvn.net/downloads"&gt; tortoise svn - a stable gui and command line to subversion for Windows &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.sliksvn.com/en/download"&gt; slik svn - the command line tools for svn for windows &lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://tokiwa.qee.jp/EN/DataRecovery_EN.zip"&gt; Data Recovery - recover Shift + del removed programs &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb897417.aspx"&gt; Windows Sysinternal utilities &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.commandline.co.uk/cmdow/"&gt; Cmdow is a Win32 commandline utility for NT4/2000/XP/2003 that allows windows to be listed, moved, resized, renamed, hidden/unhidden, disabled/enabled, minimized, maximized, restored, activated/inactivated, closed, killed and more.&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://gnuwin32.sourceforge.net/packages/grep.htm"&gt; Grep , FGrep and Egrep for windows (remember the dll's also ) &lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://gnuwin32.sourceforge.net/packages/less.htm"&gt; Less for Windows ( remember the dll's also ) &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.7-zip.org/"&gt; 7-zip&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.risetobloome.com/Page_1_S_NoPadding.aspx?item=530" &gt; Rise Editor - Entity Relationship Diagram tool &lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://get.adobe.com/reader/"&gt; Adobe Acrobat &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.slysoft.com/en/virtual-clonedrive.html"&gt; Virtual Clone Drive - Map ISO files  &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://sliksvn.com/en/download/"&gt; svn client and server &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.stack.nl/~dimitri/doxygen/download.html#latestsrc"&gt; Doxygen - code documentation utility &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://qt.nokia.com/downloads/"&gt; Qt - Nokia's Development Platform &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://dia-installer.de/"&gt; Dia - control flow chars freeware software &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.audiograbber.org/"&gt; AudioGrabber - the best mp3 ripper&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.autohotkey.com/download/"&gt; AutoHotKey - GUI automating &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.fiddler2.com/fiddler2/version.asp"&gt; Fiddler - http sniffer  &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://gnuwin32.sourceforge.net/packages/coreutils.htm"&gt; Windows GNU utils &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;p&gt;tags:programs, tools, utilities, windows &lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-833733275603212664?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/833733275603212664/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/03/cool-programs-utilities-and-programming.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/833733275603212664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/833733275603212664'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/03/cool-programs-utilities-and-programming.html' title='Cool programs , utilities and programming environments for Windows, most of which free ( revised )'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-7814366935851535063</id><published>2011-03-02T20:11:00.001+02:00</published><updated>2011-03-02T20:11:07.048+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cmd windows batch'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><category scheme='http://www.blogger.com/atom/ns#' term='sysinternals'/><title type='text'>GetDirSizes.cmd</title><content type='html'>@echo off&lt;br /&gt;echo this script needs the du utility from sysinternals - courtesy of Mark Russinovich  &lt;br /&gt;echo google download sysinternals suite&lt;br /&gt;echo get the fileSizes&lt;br /&gt;echo Place this in your path - Start - Run - GetDirSizes c:\temp\&lt;br /&gt;cmd /c du -l 2 -q  %1 ^| sort /r ^&gt; "%cd%\DirSizes.log"&lt;br /&gt;cmd /c du -l 2 -q  %1 | sort /r &gt; "%cd%\DirSizes.log"&lt;br /&gt;echo now view the file sized&lt;br /&gt;&lt;br /&gt;"%cd%\DirSizes.log"&lt;br /&gt;exit&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-7814366935851535063?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/7814366935851535063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/03/getdirsizescmd.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/7814366935851535063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/7814366935851535063'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/03/getdirsizescmd.html' title='GetDirSizes.cmd'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-6339926247731580052</id><published>2011-03-01T22:11:00.000+02:00</published><updated>2011-03-01T22:11:19.543+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='excel'/><category scheme='http://www.blogger.com/atom/ns#' term='template'/><category scheme='http://www.blogger.com/atom/ns#' term='claut'/><category scheme='http://www.blogger.com/atom/ns#' term='code generation'/><title type='text'>Ready for the cloud !!!</title><content type='html'>I just finished the implementation of the Deployment strategy of my current C# , MSSQL 2005 / 2008 project ... Thus one presentation layer to one database a full dev , test , qa , sox  , fb and prod production deployment is fast ... really fast ; ) &lt;br /&gt;&lt;br /&gt;So far the configuration data is in an excel - e.g. the forking of the environments requires the addition of a new Excel row ... &lt;br /&gt;&lt;br /&gt;So this is not too far away from a massive cloud roll-out - at the end all the needed configurations per a worker instance or whatever logical running thing could be retrieved in a tabular format ... This means just an additional template creation , and regeneration of the template ...&lt;br /&gt;&lt;br /&gt;Btw. space matters in templates .. I learned it the hard way ..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-6339926247731580052?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/6339926247731580052/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/03/ready-for-cloud.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/6339926247731580052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/6339926247731580052'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/03/ready-for-cloud.html' title='Ready for the cloud !!!'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-1984784144321245866</id><published>2011-02-18T22:34:00.000+02:00</published><updated>2011-02-18T22:34:33.100+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IZarc'/><category scheme='http://www.blogger.com/atom/ns#' term='nsis'/><category scheme='http://www.blogger.com/atom/ns#' term='publish'/><title type='text'>How-to publish your software with NSIS + IZarc</title><content type='html'>&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: Consolas, "Courier New", Courier, Monospace; background-color: #ffffff; /*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em;}.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;@echo off&lt;/pre&gt;&lt;pre&gt;REM THIS CREATES FOR EACH INSTALLER SCRIPT &lt;/pre&gt;&lt;pre class="alt"&gt;REM AN INSTALLER &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;set _ProjectName=poc&lt;/pre&gt;&lt;pre class="alt"&gt;set _SystemVersion=1.1.8&lt;/pre&gt;&lt;pre&gt;set _EnvironmentType=dev&lt;/pre&gt;&lt;pre class="alt"&gt;set _EnvironmentOwner=yordgeor&lt;/pre&gt;&lt;pre&gt;set _RootPath=E:&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;set _BuildInstallersBaseDir=%_RootPath%\%_ProjectName%\%_ProjectName%.%_SystemVersion%.%_EnvironmentType%.%_EnvironmentOwner%\sfw\nsi\&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;ECHO DELETE ALL THE EXE FILES &lt;/pre&gt;&lt;pre&gt;ECHO.&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;for&lt;/span&gt; /f &lt;span class="str"&gt;"tokens=*"&lt;/span&gt; %%i &lt;span class="kwrd"&gt;in&lt;/span&gt; (&lt;span class="str"&gt;'dir "%_BuildInstallersBaseDir%\*.exe" /s /b'&lt;/span&gt;) do CMD /C start /min cmd /c DEL /S /Q &lt;span class="str"&gt;"%%i"&lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;ECHO.&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;ECHO DELETE FIRST ALL THE EXES&lt;/pre&gt;&lt;pre class="alt"&gt;ECHO.&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;for&lt;/span&gt; /f &lt;span class="str"&gt;"tokens=*"&lt;/span&gt; %%i &lt;span class="kwrd"&gt;in&lt;/span&gt; (&lt;span class="str"&gt;'dir "%_BuildInstallersBaseDir%\*.txt" /s /b'&lt;/span&gt;) do CMD /C start /min cmd /c DEL /S /Q &lt;span class="str"&gt;"%%i"&lt;/span&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;ECHO.&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;echo DELETE  ALL THE zip FILES &lt;/pre&gt;&lt;pre&gt;ECHO.&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;for&lt;/span&gt; /f &lt;span class="str"&gt;"tokens=*"&lt;/span&gt; %%i &lt;span class="kwrd"&gt;in&lt;/span&gt; (&lt;span class="str"&gt;'dir "%_BuildInstallersBaseDir%\*.zip" /s /b'&lt;/span&gt;) do CMD /C start /min cmd /c DEL /S /Q &lt;span class="str"&gt;"%%i"&lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;ECHO.&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;ECHO BUILD ALL THE INSTALL SCRIPTS TO EXE&lt;span class="str"&gt;'S&lt;/pre&gt;&lt;pre class="alt"&gt;ECHO.&lt;/pre&gt;&lt;pre&gt;for /f "tokens=*" %%i in ('&lt;/span&gt;dir &lt;span class="str"&gt;"%_BuildInstallersBaseDir%\*.nsi"&lt;/span&gt; /b /s&lt;span class="str"&gt;') do cmd /c start /min cmd /c echo BUILDING %%i&amp;amp;"%ProgramFiles(x86)%\NSIS\makensis.exe" /V4 %%i&lt;/pre&gt;&lt;pre class="alt"&gt;ECHO.&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;::ZIP THEM ALSO &lt;/pre&gt;&lt;pre&gt;for /f "tokens=*" %%i in ('&lt;/span&gt;dir &lt;span class="str"&gt;"%_BuildInstallersBaseDir%\*.exe"&lt;/span&gt; /s /b&lt;span class="str"&gt;') do "%ProgramFiles(x86)%\IZArc\IZArc.exe" -ad "%%i" &lt;/pre&gt;&lt;pre class="alt"&gt;ECHO.&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;ECHO rename the exes to txt files&lt;/pre&gt;&lt;pre&gt;ECHO.&lt;/pre&gt;&lt;pre class="alt"&gt;for /f "tokens=*" %%i in ('&lt;/span&gt;dir &lt;span class="str"&gt;"%_BuildInstallersBaseDir%\*.zip"&lt;/span&gt; /s /b') do copy /y %%i %%i.txt &lt;/pre&gt;&lt;pre&gt;ECHO.&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;ECHO DONE &lt;/pre&gt;&lt;pre&gt;PAUSE&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;:: FILE:BuildAllinstallersWithOUT_PAUSE.2.0.cmd&lt;/pre&gt;&lt;pre class="alt"&gt;:: PURPOSE: To compile all the nsi scripts recursively, zip them and rename them to *.zip.txt&lt;/pre&gt;&lt;pre&gt;:: REQUIREMENTS: google download nsis , and time module&lt;/pre&gt;&lt;pre class="alt"&gt;:: REQUIREMENTS: google download IZarc + command line add-on&lt;/pre&gt;&lt;pre&gt;:: AUTHOR:Yordan Georiev&lt;/pre&gt;&lt;pre class="alt"&gt;:: HINT: Place a desktop icon , right click assign N as shortcut , call wiht AltGr + N&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-1984784144321245866?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/1984784144321245866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/02/how-to-publish-your-software-with-nsis.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/1984784144321245866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/1984784144321245866'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/02/how-to-publish-your-software-with-nsis.html' title='How-to publish your software with NSIS + IZarc'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-8294361948273239513</id><published>2011-02-14T11:54:00.000+02:00</published><updated>2011-02-14T11:54:08.120+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sqlite3'/><category scheme='http://www.blogger.com/atom/ns#' term='sqlite'/><category scheme='http://www.blogger.com/atom/ns#' term='n900'/><title type='text'>how-to get my SMS's on N900 from sqlite3</title><content type='html'>sqlite3  /home/user/.rtcom-eventlogger/el-v1.db "SELECT service_id,event_type_id,free_text, remote_uid FROM Events order by start_time DESC;" ;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-8294361948273239513?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/8294361948273239513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/02/how-to-get-my-smss-on-n900-from-sqlite3.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/8294361948273239513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/8294361948273239513'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/02/how-to-get-my-smss-on-n900-from-sqlite3.html' title='how-to get my SMS&apos;s on N900 from sqlite3'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-1831366569712762723</id><published>2011-02-10T21:12:00.000+02:00</published><updated>2011-02-10T21:12:35.110+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thorium'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='Java Web Start'/><category scheme='http://www.blogger.com/atom/ns#' term='nuclear'/><title type='text'>One reason more to download a Java Web Start containing java package</title><content type='html'>&lt;a href="http://www.energyfromthorium.com/javaws/DecayChain.jnlp"&gt;Understand how the nuclear "waste" behaves as a function of the time &lt;/a&gt;  &lt;br /&gt;&lt;br /&gt;Dowload the Java Runtime Environment for your Operating System in order to be able to use the Java Web Start ( = start this link ) &lt;br /&gt;&lt;br /&gt;After you see this you will realize that the only way to fight negligence against nuclear is to use smart Business Intelligence&lt;br /&gt;&lt;br /&gt;The full courtesy should go to Mr. Kirk Sorensen !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-1831366569712762723?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/1831366569712762723/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/02/one-reason-more-to-download-java-web.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/1831366569712762723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/1831366569712762723'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/02/one-reason-more-to-download-java-web.html' title='One reason more to download a Java Web Start containing java package'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-5923233345221369396</id><published>2011-02-06T21:20:00.000+02:00</published><updated>2011-02-06T21:20:43.381+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='youtube videos'/><category scheme='http://www.blogger.com/atom/ns#' term='Dense plasma focus'/><category scheme='http://www.blogger.com/atom/ns#' term='fusion research'/><category scheme='http://www.blogger.com/atom/ns#' term='Focus Fusion'/><title type='text'>The latest Focus Fusion videos on You Tube</title><content type='html'>&lt;iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/BT1gogVqCMs" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" width="640" height="390" src="http://www.youtube.com/embed/rbvHlwzLk_o" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/K0U1b-Er03I" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" width="640" height="390" src="http://www.youtube.com/embed/0nR9byH0xpU" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" width="640" height="390" src="http://www.youtube.com/embed/FSYOIayQ7bI" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-5923233345221369396?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/5923233345221369396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/02/latest-focus-fusion-videos-on-you-tube.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/5923233345221369396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/5923233345221369396'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/02/latest-focus-fusion-videos-on-you-tube.html' title='The latest Focus Fusion videos on You Tube'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/BT1gogVqCMs/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-7735969407806258145</id><published>2011-01-28T16:46:00.000+02:00</published><updated>2011-01-28T16:46:03.319+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='data'/><category scheme='http://www.blogger.com/atom/ns#' term='Stacks'/><category scheme='http://www.blogger.com/atom/ns#' term='Run-time'/><category scheme='http://www.blogger.com/atom/ns#' term='configuration'/><category scheme='http://www.blogger.com/atom/ns#' term='documentation'/><category scheme='http://www.blogger.com/atom/ns#' term='bin'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='Services'/><category scheme='http://www.blogger.com/atom/ns#' term='sofware'/><category scheme='http://www.blogger.com/atom/ns#' term='src'/><category scheme='http://www.blogger.com/atom/ns#' term='Hosting'/><category scheme='http://www.blogger.com/atom/ns#' term='sofware development'/><title type='text'>Stacks ..</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_O6caPUXy_9g/TULWZ50k7nI/AAAAAAABc6U/-lfIK3pXaDc/s1600/Stacks.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_O6caPUXy_9g/TULWZ50k7nI/AAAAAAABc6U/-lfIK3pXaDc/s1600/Stacks.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-7735969407806258145?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/7735969407806258145/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/01/stacks.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/7735969407806258145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/7735969407806258145'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/01/stacks.html' title='Stacks ..'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_O6caPUXy_9g/TULWZ50k7nI/AAAAAAABc6U/-lfIK3pXaDc/s72-c/Stacks.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-3843094453307287484</id><published>2011-01-27T11:02:00.000+02:00</published><updated>2011-01-27T11:02:13.245+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='metaphonre'/><category scheme='http://www.blogger.com/atom/ns#' term='China'/><category scheme='http://www.blogger.com/atom/ns#' term='abstractions'/><title type='text'>This video would help you understand the China's EXECUTION MODE</title><content type='html'>&lt;iframe title="YouTube video player" class="youtube-player" type="text/html" width="640" height="390" src="http://www.youtube.com/embed/RnexQyMtaQU" frameborder="0" allowFullScreen&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-3843094453307287484?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/3843094453307287484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/01/this-video-would-help-you-understand.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/3843094453307287484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/3843094453307287484'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/01/this-video-would-help-you-understand.html' title='This video would help you understand the China&apos;s EXECUTION MODE'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/RnexQyMtaQU/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-4055879737599876719</id><published>2011-01-24T23:05:00.000+02:00</published><updated>2011-01-24T23:05:02.076+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='templates'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><category scheme='http://www.blogger.com/atom/ns#' term='code generation'/><title type='text'>I am the king of the universe ... Template Generator ... so f..cking what ...</title><content type='html'>&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: Consolas, "Courier New", Courier, Monospace; background-color: #ffffff; /*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em;}.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;START ===== TemplateGenerator.0.1.0.cmd&lt;/pre&gt;&lt;pre&gt;@echo off  &lt;/pre&gt;&lt;pre class="alt"&gt;ECHO %0 &amp;gt; %0.log&lt;/pre&gt;&lt;pre&gt;ECHO %0.error.log &amp;gt;%0.error.log&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;set BaseDir=%cd%&lt;/pre&gt;&lt;pre class="alt"&gt;echo BaseDir is %BaseDir%  1&amp;gt;&amp;gt;%0.log 2&amp;gt;&amp;gt;%0.error.log&lt;/pre&gt;&lt;pre&gt;ECHO.&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;set ExcelFileToParse=&lt;span class="str"&gt;"%BaseDir%\input\configs.xls"&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;echo ExcelFileToParse is %ExcelFileToParse%  1&amp;gt;&amp;gt;%0.log 2&amp;gt;&amp;gt;%0.error.log&lt;/pre&gt;&lt;pre class="alt"&gt;echo.&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;set InputDir=%BaseDir%\input&lt;/pre&gt;&lt;pre class="alt"&gt;echo InputDir is %InputDir%  1&amp;gt;&amp;gt;%0.log 2&amp;gt;&amp;gt;%0.error.log&lt;/pre&gt;&lt;pre&gt;echo.&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;::CONFIGURE THE CURRENT DIRECTORY AS THE OUTPUT DIR&lt;/pre&gt;&lt;pre&gt;set OutputDir=%BaseDir%\output&lt;/pre&gt;&lt;pre class="alt"&gt;echo OutputDir is %Outputdir%  1&amp;gt;&amp;gt;%0.log 2&amp;gt;&amp;gt;%0.error.log&lt;/pre&gt;&lt;pre&gt;echo.&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;::set PerlScript=parseExcelToCsv.pl&lt;/pre&gt;&lt;pre class="alt"&gt;set PerlScript=&lt;span class="str"&gt;"%BaseDir%\TemplateGenerator.0.1.0.pl"&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;echo PerlScript is %PerlScript%  1&amp;gt;&amp;gt;%0.log 2&amp;gt;&amp;gt;%0.error.log&lt;/pre&gt;&lt;pre class="alt"&gt;ECHO.&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;::This is the ASCII number of the token delimiter to use &lt;span class="kwrd"&gt;in&lt;/span&gt; the csv file&lt;/pre&gt;&lt;pre&gt;set TokenDelimiterAsciiNumber=44&lt;/pre&gt;&lt;pre class="alt"&gt;echo TokenDelimiterAsciiNumber is %TokenDelimiterAsciiNumber%  1&amp;gt;&amp;gt;%0.log 2&amp;gt;&amp;gt;%0.error.log&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;::This is the ASCII number of the token delimiter to use &lt;span class="kwrd"&gt;in&lt;/span&gt; the csv file&lt;/pre&gt;&lt;pre class="alt"&gt;set RowEndAsciiNumber=13&lt;/pre&gt;&lt;pre&gt;echo RowEndAsciiNumber is %RowEndAsciiNumber% %RowEndAsciiNumber% 1&amp;gt;&amp;gt;%0.log 2&amp;gt;&amp;gt;%0.error.log&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;echo Action !!!  1&amp;gt;&amp;gt;%0.log 2&amp;gt;&amp;gt;%0.error.log&lt;/pre&gt;&lt;pre&gt;echo perl %PerlScript% %ExcelFileToParse% %OutputDir% %TokenDelimiterAsciiNumber% %RowEndAsciiNumber% %InputDir% 1&amp;gt;&amp;gt;%0.log 2&amp;gt;&amp;gt;%0.error.log&lt;/pre&gt;&lt;pre class="alt"&gt;perl %PerlScript% %ExcelFileToParse% %OutputDir% %TokenDelimiterAsciiNumber% %RowEndAsciiNumber%   %InputDir% 1&amp;gt;&amp;gt;%0.log 2&amp;gt;&amp;gt;%0.error.log&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;::UNCOMMENT TO OPEN THE ERROR LOG AND THE RUN LOG FILES &lt;/pre&gt;&lt;pre&gt;::%0.error.log&lt;/pre&gt;&lt;pre class="alt"&gt;::%0.log&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;::debug pause&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;::SLEEP FOR 3 SECONDS&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;for&lt;/span&gt; /l %%i &lt;span class="kwrd"&gt;in&lt;/span&gt; (1,-1,0) do CLS&amp;amp;ECHO DONE !!! %%i&amp;amp;ping localhost -n 2 &amp;gt;NUL&amp;amp;CLS&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;END ================== TemplateGenerator.0.1.0.cmd&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;. &lt;/pre&gt;&lt;pre class="alt"&gt;START ===== TemplateGenerator.0.1.0.pl&lt;/pre&gt;&lt;pre&gt;use Spreadsheet::ParseExcel;&lt;/pre&gt;&lt;pre class="alt"&gt;use strict;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;package TemplateGenerator ; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;sub  main {&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;my $ExcelFileToParse = &lt;span class="str"&gt;"$ARGV[0]"&lt;/span&gt; ; &lt;/pre&gt;&lt;pre class="alt"&gt;my $OutputDir=&lt;span class="str"&gt;"$ARGV[1]"&lt;/span&gt; ;&lt;/pre&gt;&lt;pre&gt;my $delimiter = chr($ARGV[2]);&lt;/pre&gt;&lt;pre class="alt"&gt;my $rowEnd = chr($ARGV[3]);&lt;/pre&gt;&lt;pre&gt;my $InputDir = &lt;span class="str"&gt;"$ARGV[4]"&lt;/span&gt; ;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;my @arrayTemplateFiles = () ; &lt;/pre&gt;&lt;pre class="alt"&gt;my $arrayTemplateFiles = readDirGetArrayOfFiles ($InputDir); &lt;/pre&gt;&lt;pre&gt;@arrayTemplateFiles = @$arrayTemplateFiles ; &lt;span class="rem"&gt;#dereference&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# - foreach template file &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;foreach&lt;/span&gt; my $templateFile (@arrayTemplateFiles ) {&lt;/pre&gt;&lt;pre class="alt"&gt;print &lt;span class="str"&gt;"working on  \$templateFile is $templateFile\n"&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;my $FileToPrint = buildFileToPrint ( $templateFile  , $OutputDir ) ; &lt;/pre&gt;&lt;pre class="alt"&gt;my $StrTemplateFile = readFileReturnString ( &lt;span class="str"&gt;"$InputDir/$templateFile"&lt;/span&gt; ) ; &lt;/pre&gt;&lt;pre&gt;ParseExcel ( $ExcelFileToParse  , $delimiter , $rowEnd, $StrTemplateFile , $FileToPrint) ; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# -- parseExcel&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# --- foreach row of the Excel file , read template file into strWork&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# ---- foreach column in row - Find and Replace Col title from strWork&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# ---- writeGeneratedFile with strWork&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;}    &lt;span class="rem"&gt;#eof foreach template file&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;} &lt;span class="rem"&gt;#eof sub main &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;sub readDirGetArrayOfFiles     {&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;my $InputDir = shift ; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# create a list of all *.pl files in&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# the current directory&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;opendir(DIR, &lt;span class="str"&gt;"$InputDir"&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;my @files = grep(/\.tmpl$/,readdir(DIR));&lt;/pre&gt;&lt;pre class="alt"&gt;closedir(DIR);&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# print all the filenames in our array&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;foreach&lt;/span&gt; my $templateFile (@files) {&lt;/pre&gt;&lt;pre class="alt"&gt;print &lt;span class="str"&gt;"\$templateFile is $templateFile\n"&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;}&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; \@files; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;} &lt;span class="rem"&gt;#eof main&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;sub buildFileToPrint &lt;/pre&gt;&lt;pre&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;my $FileToPrint = shift ; &lt;/pre&gt;&lt;pre&gt;my $OutputDir = shift ; &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;$FileToPrint =~m/^.*(\\|\/)(.*)/; &lt;span class="rem"&gt;#  strip the remote path and keep the filename&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;$FileToPrint =~ s/^(.*)(\.)(.*)/$1/ ;     &lt;span class="rem"&gt;#strip the file extension&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;$FileToPrint =~ s/^.*(\\|\/)(.*)/$2/ ;                                 &lt;span class="rem"&gt;# strip the remote path and keep the filename&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;$FileToPrint = &lt;span class="str"&gt;"$OutputDir/$FileToPrint"&lt;/span&gt;  ;        &lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; $FileToPrint ; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;} &lt;span class="rem"&gt;#eof sub BuildFileToPrint &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;sub ParseExcel {&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;my $ExcelFileToParse = shift ; &lt;/pre&gt;&lt;pre&gt;my $delimiter = shift ; &lt;/pre&gt;&lt;pre class="alt"&gt;my $rowEnd = shift ; &lt;/pre&gt;&lt;pre&gt;my $strTemplate = shift ; &lt;/pre&gt;&lt;pre class="alt"&gt;my $FileTemplate = shift ; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;my $parser   = Spreadsheet::ParseExcel-&amp;gt;new();&lt;/pre&gt;&lt;pre&gt;my $workbook = $parser-&amp;gt;Parse(&lt;span class="str"&gt;"$ExcelFileToParse"&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;#foreach my $oWkS (@{$oBook-&amp;gt;{Worksheet}}) {&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;foreach&lt;/span&gt; my $worksheet (@{$workbook-&amp;gt;{Worksheet}}) {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;#for my $worksheet ( $workbook-&amp;gt;worksheets() ) {&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;my $RowMin = $worksheet-&amp;gt;{MinRow} ; &lt;/pre&gt;&lt;pre&gt;my $RowMax= $worksheet-&amp;gt;{MaxRow} ; &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;#    my ( $RowMin, $RowMax) = $worksheet-&amp;gt;row_range();&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#    my ( $col_min, $col_max ) = $worksheet-&amp;gt;col_range();&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;for&lt;/span&gt; my $row ( ($RowMin + 1) .. $RowMax) {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;my $strToReturn = $strTemplate ; &lt;/pre&gt;&lt;pre class="alt"&gt;my $FileToPrint = $FileTemplate ; &lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;my $col_min = $worksheet-&amp;gt;{MinCol} ; &lt;/pre&gt;&lt;pre&gt;my $col_max = $worksheet-&amp;gt;{MaxCol} ; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;for&lt;/span&gt; my $col ( ($col_min + 1) .. $col_max ) {&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;my $cell = $worksheet-&amp;gt;{Cells}[$row][$col]  ; &lt;/pre&gt;&lt;pre class="alt"&gt;next unless $cell;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;print &lt;span class="str"&gt;" Row, Col    = ($row, $col)\n"&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;print &lt;span class="str"&gt;" Value = "&lt;/span&gt;, $cell-&amp;gt;Value() ;                &lt;span class="rem"&gt;#The Value&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;my $cellValueToReplace = $worksheet-&amp;gt;{Cells}[$RowMin][$col]  ; &lt;/pre&gt;&lt;pre class="alt"&gt;print &lt;span class="str"&gt;"\$cellValueToReplace is $cellValueToReplace \n"&lt;/span&gt; ; &lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;my $StrToReplace  = &lt;span class="str"&gt;'¤'&lt;/span&gt; . $cellValueToReplace-&amp;gt;Value() . &lt;span class="str"&gt;'¤'&lt;/span&gt; ;  &lt;/pre&gt;&lt;pre&gt;print &lt;span class="str"&gt;"\$StrToReplace is $StrToReplace  \n"&lt;/span&gt; ; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;my $StrValueToReplaceWith = $cell-&amp;gt;Value() ;&lt;/pre&gt;&lt;pre class="alt"&gt;print &lt;span class="str"&gt;" \$StrValueToReplaceWith  is $StrValueToReplaceWith  \n"&lt;/span&gt; ; &lt;/pre&gt;&lt;pre&gt;$strToReturn =~ s/$StrToReplace/$StrValueToReplaceWith/g ; &lt;/pre&gt;&lt;pre class="alt"&gt;$FileToPrint =~ s/$StrToReplace/$StrValueToReplaceWith/g ; &lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;#print "\$strToReturn is $strToReturn \n" ; &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;#$strToReturn .=  $cell-&amp;gt;Value() . $delimiter       ;                #The Value&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#print "Unformatted = ", $cell-&amp;gt;Unformatted(), "\n";&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;}&lt;/pre&gt;&lt;pre class="alt"&gt;chop ($strToReturn) ; &lt;span class="rem"&gt;#remove the latest delimiter&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;$strToReturn .= $rowEnd ;     &lt;span class="rem"&gt;#end the row    &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;print &lt;span class="str"&gt;"\$FileToPrint  is $FileToPrint "&lt;/span&gt; ; &lt;/pre&gt;&lt;pre class="alt"&gt;printToFile ( $FileToPrint , $strToReturn ) ; &lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;} &lt;span class="rem"&gt;#eof row&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;} &lt;span class="rem"&gt;#eof worksheet&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;} &lt;span class="rem"&gt;#eof sub&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;sub printToFile {&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;my $FileOutput = shift ; &lt;/pre&gt;&lt;pre class="alt"&gt;my $StringToPrint = shift ; &lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#READ ALL ROWS OF A FILE TO ALIST &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;open (FILEOUTPUT, &lt;span class="str"&gt;"&amp;gt;$FileOutput"&lt;/span&gt;) || &lt;/pre&gt;&lt;pre&gt;print &lt;span class="str"&gt;"could not open the \$FileOutput $FileOutput!\n"&lt;/span&gt;; &lt;/pre&gt;&lt;pre class="alt"&gt;print  FILEOUTPUT $StringToPrint ; &lt;/pre&gt;&lt;pre&gt;close FILEOUTPUT ;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;#debug $strToReturn .=  $StringToPrint; &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;}&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# =========================================== eof sub printToFile&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;sub trim    &lt;/pre&gt;&lt;pre&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;$_[0]=~s/^\s+//;&lt;/pre&gt;&lt;pre&gt;$_[0]=~s/\s+$//;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; $_[0];&lt;/pre&gt;&lt;pre&gt;}&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;sub readFileReturnString {&lt;/pre&gt;&lt;pre&gt;my $fileToRead = shift ; &lt;/pre&gt;&lt;pre class="alt"&gt;print &lt;span class="str"&gt;" readFileReturnString \$fileToRead is $fileToRead \n"&lt;/span&gt; ; &lt;/pre&gt;&lt;pre&gt;my $string = (); &lt;/pre&gt;&lt;pre class="alt"&gt;{&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;local&lt;/span&gt; $/=undef;&lt;/pre&gt;&lt;pre class="alt"&gt;open FILE, &lt;span class="str"&gt;"$fileToRead "&lt;/span&gt; or print &lt;span class="str"&gt;"Couldn't open \$fileToRead $fileToRead : $!"&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;$string = &amp;lt;FILE&amp;gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;close FILE;&lt;/pre&gt;&lt;pre&gt;}&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; $string ; &lt;/pre&gt;&lt;pre&gt;} &lt;span class="rem"&gt;#eof sub readFileReturnString &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# =========================================== eof sub trim &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# Action !!!&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;main();&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;1 ; &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;__END__ &lt;/pre&gt;&lt;pre&gt;END ================== TemplateGenerator.0.1.0.pl&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;/pre&gt;&lt;pre&gt;. &lt;/pre&gt;&lt;pre class="alt"&gt;START ===== TemplateGenerator.0.1.0.ReadMe.txt&lt;/pre&gt;&lt;pre&gt;This Instruction assumess  that use the following dir to extract the project &lt;/pre&gt;&lt;pre class="alt"&gt;BaseDir=E:\perl\sfw\csv&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; you do not simply find E:\perl\sfw\csv and replace it with &amp;lt;&amp;lt;YourExtractDir&amp;gt;&amp;gt; &lt;span class="kwrd"&gt;in&lt;/span&gt; this document &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;- Install strawberry perl from here: http://strawberryperl.com/ , add the folder containing the dmake.exe and perl.exe to your path &lt;/pre&gt;&lt;pre&gt;- to install the OLE::Storage_Lite go to E:\Perl\sfw\csv\lib\OLE-Storage_Lite-0.19\OLE-Storage_Lite-0.19&lt;/pre&gt;&lt;pre class="alt"&gt;run the following commands : &lt;/pre&gt;&lt;pre&gt;perl Makefile.PL&lt;/pre&gt;&lt;pre class="alt"&gt;dmake&lt;/pre&gt;&lt;pre&gt;dmake test&lt;/pre&gt;&lt;pre class="alt"&gt;dmake install    &lt;/pre&gt;&lt;pre&gt;dmake clean     &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;- To install the SpreadSheet::ParseExcel module go to : &lt;/pre&gt;&lt;pre class="alt"&gt;cd E:\perl\sfw\csv\lib\Spreadsheet-ParseExcel-0.2603&lt;/pre&gt;&lt;pre&gt;run the following commands: &lt;/pre&gt;&lt;pre class="alt"&gt;perl Makefile.PL&lt;/pre&gt;&lt;pre&gt;dmake&lt;/pre&gt;&lt;pre class="alt"&gt;dmake test&lt;/pre&gt;&lt;pre&gt;dmake install    &lt;/pre&gt;&lt;pre class="alt"&gt;dmake clean     &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;- Now you have all the prerequisites to run the &lt;span class="kwrd"&gt;script&lt;/span&gt; :&lt;/pre&gt;&lt;pre&gt;- double click the E:\Perl\sfw\csv\parseExcelToCsv.2.0.cmd file &lt;span class="kwrd"&gt;if&lt;/span&gt; nothing happens check its contents ... &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;END ================== TemplateGenerator.0.1.0.ReadMe.txt&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-4055879737599876719?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/4055879737599876719/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/01/i-am-king-of-universe-template.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/4055879737599876719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/4055879737599876719'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/01/i-am-king-of-universe-template.html' title='I am the king of the universe ... Template Generator ... so f..cking what ...'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-84980884757333933</id><published>2011-01-24T21:42:00.001+02:00</published><updated>2011-10-01T22:37:16.830+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='how-to'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>how-to read dir into array of files in Perl</title><content type='html'>use strict ; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;sub  main {&lt;br /&gt;my @arrayTemplateFiles = () ; &lt;br /&gt;my $arrayTemplateFiles = readDirGetArrayOfFiles (); &lt;br /&gt;@arrayTemplateFiles = @$arrayTemplateFiles ; #dereference&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; # print all the filenames in our array&lt;br /&gt; foreach my $templateFile (@arrayTemplateFiles ) {&lt;br /&gt;   print "2 \$templateFile is $templateFile\n";&lt;br /&gt; } #foreach&lt;br /&gt;&lt;br /&gt;} #eof main &lt;br /&gt;&lt;br /&gt;sub readDirGetArrayOfFiles  {&lt;br /&gt;&lt;br /&gt; # create a list of all *.pl files in&lt;br /&gt; # the current directory&lt;br /&gt; opendir(DIR, ".");&lt;br /&gt; my @files = grep(/\.pl$/,readdir(DIR));&lt;br /&gt; closedir(DIR);&lt;br /&gt;&lt;br /&gt; # print all the filenames in our array&lt;br /&gt; foreach my $templateFile (@files) {&lt;br /&gt;   print "\$templateFile is $templateFile\n";&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;return \@files; &lt;br /&gt;&lt;br /&gt;} #eof main&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#Action !!!&lt;br /&gt;main();&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-84980884757333933?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/84980884757333933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/01/how-to-read-dir-into-array-of-files-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/84980884757333933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/84980884757333933'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/01/how-to-read-dir-into-array-of-files-in.html' title='how-to read dir into array of files in Perl'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-1915250232936509434</id><published>2011-01-23T13:17:00.001+02:00</published><updated>2011-01-23T13:17:34.888+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cheat Sheet'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>SVN Cheat Sheet</title><content type='html'>echo how-to to get help for svn &lt;br /&gt;svn help &lt;br /&gt;&lt;br /&gt;echo get help for the "import" command of svn &lt;br /&gt;svn help import &lt;br /&gt;&lt;br /&gt;echo checkout a project &lt;br /&gt;svn checkout https://minconsole.svn.codeplex.com/svn YordanGeorgiev pass&lt;br /&gt;&lt;br /&gt;echo import the project&lt;br /&gt;svn import . https://minconsole.svn.codeplex.com/svn -m " Revision log message" &lt;br /&gt;&lt;br /&gt;echo add all the files from the current dir recursively &lt;br /&gt;svn add *&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-1915250232936509434?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/1915250232936509434/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/01/svn-cheat-sheet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/1915250232936509434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/1915250232936509434'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/01/svn-cheat-sheet.html' title='SVN Cheat Sheet'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-7239900729115225599</id><published>2011-01-21T20:51:00.001+02:00</published><updated>2011-01-21T20:51:52.055+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cmd windows batch'/><title type='text'>how-to to determine whether a windows is 32-bit or 64-bit from command line</title><content type='html'>echo %PROCESSOR_ARCHITECTURE%&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-7239900729115225599?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/7239900729115225599/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/01/how-to-to-determine-whether-windows-is.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/7239900729115225599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/7239900729115225599'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/01/how-to-to-determine-whether-windows-is.html' title='how-to to determine whether a windows is 32-bit or 64-bit from command line'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-4503999566447544961</id><published>2011-01-11T08:36:00.002+02:00</published><updated>2011-01-11T08:36:51.594+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='meta data mssql'/><category scheme='http://www.blogger.com/atom/ns#' term='mssql 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='metadata'/><category scheme='http://www.blogger.com/atom/ns#' term='mssql 2005'/><title type='text'>how-to get stored procedure and user defined funtions metadata in MSSQL 2008</title><content type='html'>&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: Consolas, "Courier New", Courier, Monospace; background-color: #ffffff; /*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em;}.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; SCHEMA_NAME(SCHEMA_ID) &lt;span class="kwrd"&gt;AS&lt;/span&gt; [&lt;span class="kwrd"&gt;Schema&lt;/span&gt;], &lt;/pre&gt;&lt;pre&gt;SO.name &lt;span class="kwrd"&gt;AS&lt;/span&gt; [ObjectName],&lt;/pre&gt;&lt;pre class="alt"&gt;SO.Type_Desc &lt;span class="kwrd"&gt;AS&lt;/span&gt; [ObjectType (UDF/SP)],&lt;/pre&gt;&lt;pre&gt;P.parameter_id &lt;span class="kwrd"&gt;AS&lt;/span&gt; [ParameterID],&lt;/pre&gt;&lt;pre class="alt"&gt;P.name &lt;span class="kwrd"&gt;AS&lt;/span&gt; [ParameterName],&lt;/pre&gt;&lt;pre&gt;TYPE_NAME(P.user_type_id) &lt;span class="kwrd"&gt;AS&lt;/span&gt; [ParametDataType],&lt;/pre&gt;&lt;pre class="alt"&gt;P.max_length &lt;span class="kwrd"&gt;AS&lt;/span&gt; [ParameterMaxBytes],&lt;/pre&gt;&lt;pre&gt;P.is_output &lt;span class="kwrd"&gt;AS&lt;/span&gt; [IsOutPutParameter]&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;FROM&lt;/span&gt; sys.objects &lt;span class="kwrd"&gt;AS&lt;/span&gt; SO&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;INNER&lt;/span&gt; &lt;span class="kwrd"&gt;JOIN&lt;/span&gt; sys.&lt;span class="kwrd"&gt;parameters&lt;/span&gt; &lt;span class="kwrd"&gt;AS&lt;/span&gt; P &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;ON&lt;/span&gt; SO.OBJECT_ID = P.OBJECT_ID&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;WHERE&lt;/span&gt; SO.OBJECT_ID &lt;span class="kwrd"&gt;IN&lt;/span&gt; ( &lt;span class="kwrd"&gt;SELECT&lt;/span&gt; OBJECT_ID &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;FROM&lt;/span&gt; sys.objects&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;WHERE&lt;/span&gt; TYPE &lt;span class="kwrd"&gt;IN&lt;/span&gt; (&lt;span class="str"&gt;'P'&lt;/span&gt;,&lt;span class="str"&gt;'FN'&lt;/span&gt;))&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;ORDER&lt;/span&gt; &lt;span class="kwrd"&gt;BY&lt;/span&gt; [&lt;span class="kwrd"&gt;Schema&lt;/span&gt;], SO.name, P.parameter_id&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-4503999566447544961?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/4503999566447544961/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/01/how-to-get-stored-procedure-and-user.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/4503999566447544961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/4503999566447544961'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/01/how-to-get-stored-procedure-and-user.html' title='how-to get stored procedure and user defined funtions metadata in MSSQL 2008'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-8723895025098414903</id><published>2011-01-09T21:11:00.000+02:00</published><updated>2011-01-09T21:11:16.641+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='copy-paste'/><category scheme='http://www.blogger.com/atom/ns#' term='method'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>A nice way to generate a default ini file path from the file path of the executing process in C#</title><content type='html'>&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: Consolas, "Courier New", Courier, Monospace; background-color: #ffffff; /*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em;}.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;/// Creates a default inifile in a format hostName.processName.ini , in the same directory where the &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;the file path to the init file in a string &amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; CreateProcessDefaultIniFile()&lt;/pre&gt;&lt;pre&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;string&lt;/span&gt; strIniFilePath = String.Empty;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;string&lt;/span&gt; strPathToExe = Environment.GetCommandLineArgs()[0];&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;string&lt;/span&gt; extension = Path.GetExtension(strPathToExe);&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;//string filename = Path.GetFileName(strPathToExe);&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;string&lt;/span&gt; strBaseDir = Path.GetDirectoryName(strPathToExe);&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;string&lt;/span&gt; strMachineName = System.Environment.MachineName;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;string&lt;/span&gt; fileNameNoExtension = Path.GetFileNameWithoutExtension(strPathToExe);&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;//now build the default ini file path &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;strIniFilePath = strBaseDir + &lt;span class="str"&gt;@"\" + strMachineName + "&lt;/span&gt;.&lt;span class="str"&gt;" + fileNameNoExtension + "&lt;/span&gt;.ini";&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; strIniFilePath;&lt;/pre&gt;&lt;pre&gt;} &lt;span class="rem"&gt;//eof method &lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-8723895025098414903?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/8723895025098414903/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/01/nice-way-to-generate-default-ini-file.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/8723895025098414903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/8723895025098414903'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/01/nice-way-to-generate-default-ini-file.html' title='A nice way to generate a default ini file path from the file path of the executing process in C#'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-8494974076598485333</id><published>2011-01-08T09:38:00.000+02:00</published><updated>2011-01-08T09:38:29.096+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='biology'/><category scheme='http://www.blogger.com/atom/ns#' term='predictions'/><category scheme='http://www.blogger.com/atom/ns#' term='nano'/><category scheme='http://www.blogger.com/atom/ns#' term='IT general'/><category scheme='http://www.blogger.com/atom/ns#' term='future'/><category scheme='http://www.blogger.com/atom/ns#' term='next big future'/><title type='text'>Everything will be IT in 20 years ...</title><content type='html'>&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/43zo82W7aPI?fs=1&amp;amp;hl=en_US"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/43zo82W7aPI?fs=1&amp;amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30804833-8494974076598485333?l=ysgitdiary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ysgitdiary.blogspot.com/feeds/8494974076598485333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ysgitdiary.blogspot.com/2011/01/everything-will-be-it-in-20-years.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/8494974076598485333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30804833/posts/default/8494974076598485333'/><link rel='alternate' type='text/html' href='http://ysgitdiary.blogspot.com/2011/01/everything-will-be-it-in-20-years.html' title='Everything will be IT in 20 years ...'/><author><name>Yordan Georgiev</name><uri>https://profiles.google.com/113035264903177615519</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-XPZti1Ao6ZY/AAAAAAAAAAI/AAAAAAAAAAA/voSBDkdlMDI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30804833.post-3519252677047591988</id><published>2011-01-04T19:46:00.000+02:00</published><updated>2011-01-04T19:46:56.097+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='release management'/><category scheme='http://ww
