<?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'><id>tag:blogger.com,1999:blog-27947907</id><updated>2009-11-13T22:49:12.041+02:00</updated><title type='text'>LA's Blog</title><subtitle type='html'>A place where Programmers and Christians can come together to see what I have learn't and to give something back to the world which has given me so much. Thanks to God for that. May He Bless you and be with you always!&lt;br /&gt;&lt;br /&gt;

Please read &lt;a href="http://lastattacker.blogspot.com/2006/05/blog-notice.html"&gt;this&lt;/a&gt; before continuing!</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://lastattacker.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default'/><link rel='alternate' type='text/html' href='http://lastattacker.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default?start-index=26&amp;max-results=25'/><author><name>LA</name><uri>http://www.blogger.com/profile/04574047868840250564</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>90</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-27947907.post-1238294480533561026</id><published>2009-09-24T12:54:00.000+02:00</published><updated>2009-09-24T12:54:30.616+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='misc'/><category scheme='http://www.blogger.com/atom/ns#' term='Ideas'/><category scheme='http://www.blogger.com/atom/ns#' term='my projects'/><category scheme='http://www.blogger.com/atom/ns#' term='websites'/><title type='text'>Idea Repository</title><content type='html'>Here is a new blog I made for those looking for ideas or who want to submit ideas for new apps or extending adapting existing software.&lt;br /&gt;&lt;a href="http://idea-repo.blogspot.com/"&gt;http://idea-repo.blogspot.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27947907-1238294480533561026?l=lastattacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lastattacker.blogspot.com/feeds/1238294480533561026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=27947907&amp;postID=1238294480533561026&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/1238294480533561026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/1238294480533561026'/><link rel='alternate' type='text/html' href='http://lastattacker.blogspot.com/2009/09/idea-repository.html' title='Idea Repository'/><author><name>LA</name><uri>http://www.blogger.com/profile/04574047868840250564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16028642828088257718'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27947907.post-3098581046689850016</id><published>2009-03-19T09:33:00.007+02:00</published><updated>2009-03-19T19:54:09.240+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='scripting'/><title type='text'>Ruby class method extensions</title><content type='html'>I have developed a liking to Ruby since I first started using it for automation and now I even started to use it at work for one conversion process. Unfortunately, there are some set backs I've found with Ruby, such as using the Time class. I think my disliking of using it is probably because I've been spoiled with the well developed C# one. It lacks a lot of useful things. However, since Ruby is dynamic, I could make some of the necessary changes myself.&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;I had to do some extensive operations with the Time class and even though it had a lot of features, it lacked the ones I used the most. It got so bad that at a point, I had to start using Ruby's method extension feature which helped to solve my problem to a great extent.&lt;br /&gt;&lt;br /&gt;I would however, like to ask the Ruby developers to clean up their Time class (I am not the only one saying that, just do a google on Ruby's Time class and see what I mean).&lt;br /&gt;&lt;br /&gt;To insert class methods is easy. Let me show you:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;class Time&lt;br /&gt; class &amp;lt;&amp;lt; self&lt;br /&gt;  def some_method()&lt;br /&gt;  end&lt;br /&gt; end&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;So now I can do this: &lt;code&gt;Time.some_method()&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This allows me to insert custom Time creation methods where I can specify a time zone offset along with the time data I want.&lt;br /&gt;&lt;br /&gt;What about some instance methods? How can I add for instance a date() method where I can tell Time.now to just give me the date component? Adding a class method won't help here. This requires a little hack (in my opinion).&lt;br /&gt;&lt;br /&gt;First the Module:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;module TimeInstance&lt;br /&gt; # Converts the time to UTC and converts it&lt;br /&gt; # into epoch in milliseconds&lt;br /&gt; def to_epoch_millis()&lt;br /&gt;  (to_f() * 1000.0).to_i()&lt;br /&gt; end&lt;br /&gt;&lt;br /&gt; # Gets only the Date component of the current&lt;br /&gt; # time instance&lt;br /&gt; def date()&lt;br /&gt;  Time.local(year, month, day, 0, 0, 0, 0)&lt;br /&gt; end&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;And in the Time class:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;class Time&lt;br /&gt; ...&lt;br /&gt; class &amp;lt;&amp;lt; include TimeInstance&lt;br /&gt; end&lt;br /&gt;end&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now I can say: &lt;code&gt;Time.now.date()&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Now whatever you add in the TimeInstance module, will be added to the Time class's instance method list. The only catch is, you can only call public methods from the Time class in your module.&lt;br /&gt;&lt;br /&gt;But this solves my problem greatly.&lt;br /&gt;&lt;br /&gt;Hope this has helped you.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27947907-3098581046689850016?l=lastattacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lastattacker.blogspot.com/feeds/3098581046689850016/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=27947907&amp;postID=3098581046689850016&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/3098581046689850016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/3098581046689850016'/><link rel='alternate' type='text/html' href='http://lastattacker.blogspot.com/2009/03/ruby-class-method-extensions.html' title='Ruby class method extensions'/><author><name>LA</name><uri>http://www.blogger.com/profile/04574047868840250564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16028642828088257718'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27947907.post-6047438239356362486</id><published>2009-01-30T17:37:00.004+02:00</published><updated>2009-01-30T17:44:49.563+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='AutoIT'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='scripting'/><title type='text'>OpenDialog in Ruby</title><content type='html'>I have encountered some issues trying to get Ruby to open up an Open Dialog Box.&lt;br /&gt;I tried doing it the DL route but apparently there is some problem with Ruby properly creating the struct to be passed to the 'GetOpenFileNameA' function (at least, that's what I've encountered). But I have found a different way...&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;Fortunately for me, I have delved into AutoIT scripting which allows me to create an Open Dialog Box. So I then decided to write a simple script to pass all the necessary params to this application from Ruby (i.e. Dialog message and filter) and the AutoIT application returns the filename that is selected or nil if canceled.&lt;br /&gt;&lt;br /&gt;AutoIT code:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;If $CmdLine[0] &lt; 1 Then&lt;br /&gt; ConsoleWriteError("No arguments given")&lt;br /&gt; Exit&lt;br /&gt;EndIf&lt;br /&gt;&lt;br /&gt;$op = $CmdLine[1]&lt;br /&gt;&lt;br /&gt;Switch($op)&lt;br /&gt;Case "open"&lt;br /&gt; If $CmdLine[0] &lt; 3 Then&lt;br /&gt;  ConsoleWriteError("open command requires message and filter arguments.")&lt;br /&gt;  Exit&lt;br /&gt; EndIf&lt;br /&gt;&lt;br /&gt; $msg = $CmdLine[2]&lt;br /&gt; $filter = $CmdLine[3]&lt;br /&gt; $selected = FileOpenDialog($msg, "", $filter, 1)&lt;br /&gt; &lt;br /&gt; If @error Then&lt;br /&gt;  ConsoleWriteError("Open Dialog problem")&lt;br /&gt;  Exit&lt;br /&gt; EndIf&lt;br /&gt; &lt;br /&gt; ConsoleWrite($selected)&lt;br /&gt;EndSwitch&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Ruby code:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;f = IO.popen("controls.exe open \"Select a file\" \"Text File(*.txt)\"")&lt;br /&gt;&lt;br /&gt;puts f.gets&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This seems to work nicely. A bit of a round-trip but allows you to get what you need.&lt;br /&gt;For those who don't know, AutoIT is a Windows-based automation scripting system (console and GUI wise, see some of my AutoIT posts).&lt;br /&gt;&lt;br /&gt;Cheers!&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27947907-6047438239356362486?l=lastattacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lastattacker.blogspot.com/feeds/6047438239356362486/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=27947907&amp;postID=6047438239356362486&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/6047438239356362486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/6047438239356362486'/><link rel='alternate' type='text/html' href='http://lastattacker.blogspot.com/2009/01/opendialog-in-ruby.html' title='OpenDialog in Ruby'/><author><name>LA</name><uri>http://www.blogger.com/profile/04574047868840250564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16028642828088257718'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27947907.post-2098919434011218815</id><published>2008-12-29T17:52:00.008+02:00</published><updated>2008-12-29T18:19:52.582+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='admin'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='line control'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>Line Control</title><content type='html'>Man, ever since working with Open SuSE, I always wanted a solution that could allow remote clients to let a (non SuSE) Linux Gateway dis/connect from/to the internet. Thankfully I found a solution for Ubuntu that works just as well.&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;I don't know how many people who have a Linux Gateway have a need for something like this but I wondered if I would able to find something like this.&lt;br /&gt;Let me first explain what I am blabbering on about.&lt;br /&gt;&lt;br /&gt;I have multiple home PCs and each want internet access. Unfortunately my internet device is a USB one so I can't buy a router and use that, so I needed a PC that was dedicated to be on the internet when I want it. I didn't want the internet to be online 24/7 for security reasons and also connection stability reasons (sometimes the connection quality drops and so a quick disconnect &amp;amp; reconnect sometimes solves this problem).&lt;br /&gt;&lt;br /&gt;OpenSuSE had a SMPPPd solution where you have KInternet clients (where KInternet is so far only a SuSE app) that connects to a SuSE Gateway which is running SMPPPd that handles the internet connection. Once a client has connected to that Gateway, s/he can control the internet connection and see what the traffic looks like in KB/s. The problem with this solution is... It's only for SuSE! So I needed something similar for Ubuntu.&lt;br /&gt;&lt;br /&gt;The solution I found was by accident as one can see in this forum thread: &lt;a href="http://www.linuxquestions.org/questions/linux-software-2/visual-real-time-traffic-monitor-693051/"&gt;Visual Real-time traffic monitor&lt;/a&gt;&lt;br /&gt;I was looking for a realtime traffic monitor and hoped to just write my own app that can deal with the connections but thanks be to God (I have prayed for something like this, where I asked God to help me get this Gateway back up), I stumbled on an client app called &lt;a href="http://metz.gehn.net/projects/qlinecontrol/"&gt;QLineControl&lt;/a&gt; which is a Qt based app for Windows and Linux that acts as a client for Line Control. You can download the Windows version and you can get an "unstable" version from apt-get by adding the repository listed on that website.&lt;br /&gt;From there I was led to &lt;a href="http://linecontrol.sourceforge.net/"&gt;LineControl&lt;/a&gt; (the server is called LineSrv) which is the Linux service which actually controls the internet connection. LineSrv (so far) is listed as an official Ubuntu package which you can get from apt-get.&lt;br /&gt;&lt;br /&gt;It took a while to figure out what to do but thankfully I managed to get it to work.&lt;br /&gt;The config file generated by the apt-get for LineSrv is faulty so you have to override with the default config file and go from there.&lt;br /&gt;Here is what I did:&lt;br /&gt;&lt;br /&gt;I copied the /usr/share/doc/linesrv/linesrv.conf to /etc/linesrv/.&lt;br /&gt;Then I created 2 scripts for dialing up and disconnecting:&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Dialup script&lt;/u&gt;&lt;br /&gt;&lt;code&gt;#!/bin/sh&lt;br /&gt;ifup ib0 2&gt; /dev/null &gt; /dev/null&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Hangup script&lt;/u&gt;&lt;br /&gt;&lt;code&gt;#!/bin/sh&lt;br /&gt;ifdown ib0 2&gt; /dev/null &gt; /dev/null&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I placed them in the /etc/ppp path.&lt;br /&gt;The ib0 is my iBurst (internet device) interface, I have to do it like this otherwise it won't work, I am using the Debain dialer. Also LineSrv has to be root for this to work. Fortunately the init script that is setup via apt-get does that automatically.&lt;br /&gt;I know the script looks funny but this is the script format that was followed in the sample scripts found in the LineSrv source files.&lt;br /&gt;&lt;br /&gt;Then I modified the /etc/linesrv/linesrv.conf file:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;I set user_accounting to no since I don't want ppl to authenticate when dialing up&lt;/li&gt;&lt;br /&gt;&lt;li&gt;I set currency to ZAR (Since I am from South Africa ;-) )&lt;/li&gt;&lt;br /&gt;&lt;li&gt;I uncommented the 'line T-Online' line, you can call it anything you want after the 'line' part&lt;/li&gt;&lt;br /&gt;&lt;li&gt;I uncommented the script_up, script_dn and interface and pointed them to the appropriate dialup, hangup scripts and the interface points to ppp0&lt;/li&gt;&lt;br /&gt;&lt;li&gt;I uncommented 'con_type' and set it to 'netdev'&lt;/li&gt;&lt;br /&gt;&lt;li&gt;I uncommented 'send_throughput' and set it to 'yes' since QLineControl client want this to know at what speed the internet traffic is heading&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;And then I ran the LineSrv service and there you go. I connected with QLineControl just fine without any hassles.&lt;br /&gt;&lt;br /&gt;And now I am writing this post from this very configuration within Linux. I am quite surprised that such a solution even exists as I really thought that I would have to write my own app.&lt;br /&gt;&lt;br /&gt;Well, there you go!&lt;br /&gt;Cheers and God Bless!&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27947907-2098919434011218815?l=lastattacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lastattacker.blogspot.com/feeds/2098919434011218815/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=27947907&amp;postID=2098919434011218815&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/2098919434011218815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/2098919434011218815'/><link rel='alternate' type='text/html' href='http://lastattacker.blogspot.com/2008/12/line-control.html' title='Line Control'/><author><name>LA</name><uri>http://www.blogger.com/profile/04574047868840250564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16028642828088257718'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27947907.post-6188397630008152788</id><published>2008-12-06T21:25:00.003+02:00</published><updated>2008-12-06T21:40:00.434+02:00</updated><title type='text'>How will I go with this?</title><content type='html'>Yeah, how will I go with this blog?&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;Its a difficult time for me to determine how this blog is going to head. The last entry was 8 months ago because I lost interest in blogging.&lt;br /&gt;Sometimes I do have some topics to write about but end up discouraged to do so via lack of time or fatigue. You know how it is, right?&lt;br /&gt;&lt;br /&gt;So just to let everyone know, I am not sure when my next entry is going to be or whether this blog is going to continue to be updated. It will however remain up for people to read.&lt;br /&gt;&lt;br /&gt;I also fixed the tag image issues that I had with the Digg and Delicious tagging.&lt;br /&gt;&lt;br /&gt;All I can say is, check in once a week if you want to or subscribe this blog to your RSS reader to detect new additions. I am sorry folks, I am trying. :)&lt;br /&gt;I am sure God will lead me with this as well. Maybe I might start a new blog, who knows!&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27947907-6188397630008152788?l=lastattacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lastattacker.blogspot.com/feeds/6188397630008152788/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=27947907&amp;postID=6188397630008152788&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/6188397630008152788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/6188397630008152788'/><link rel='alternate' type='text/html' href='http://lastattacker.blogspot.com/2008/12/how-will-i-go-with-this.html' title='How will I go with this?'/><author><name>LA</name><uri>http://www.blogger.com/profile/04574047868840250564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16028642828088257718'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27947907.post-1776910991293136923</id><published>2008-05-09T12:57:00.004+02:00</published><updated>2008-05-09T13:10:23.924+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BATCH'/><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='tasks'/><category scheme='http://www.blogger.com/atom/ns#' term='scripting'/><title type='text'>Batch Scripting Tips</title><content type='html'>Here are some BATCH script tips which I discovered on the web that helped me a lot in Windows.&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;Why did I use BATCH scripts? Why not Ruby or Python, or even JScript? Well, if you're writing some basic automation which should be run on deployment PCs, etc. BATCH files are standard and sufficient enough to work. Installing Ruby, etc. on all the machines first is a pain and an unnecessary step (IMO).&lt;br /&gt;&lt;br /&gt;I am keeping this for future reference. There is a website that is dedicated to this kind of thing: &lt;a href="http://www.robvanderwoude.com/"&gt;http://www.robvanderwoude.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now I assume you have basic BATCH scripting knowledge.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Hiding Commands&lt;/b&gt;&lt;br /&gt;If you want to hide all the ECHO and COPY, etc. commands from being displayed, insert this in the top line of your script file:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;@ECHO OFF&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Printing an Empty line&lt;/b&gt;&lt;br /&gt;Sometimes you want to produce an empty line in the console output. This can be accomplished by:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;ECHO.&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Note: The . (DOT) is directly after the ECHO command and has no spaces in between!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Variables&lt;/b&gt;&lt;br /&gt;If you have a variable to hold certain values, to set it you type:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;SET MYVAR=SOME VALUE&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;You would preferably type the value without quotes, since the quotes will be included in the value.&lt;br /&gt;Using a value:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;ECHO %MYVAR%&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Which should output:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;SOME VALUE&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;User input&lt;/b&gt;&lt;br /&gt;If you would like the user to type in something, you use the /P option of the SET command:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;SET /P CHOICE=Type a letter and ENTER: &lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This will output:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Type a letter and ENTER: &lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Now the user can type in something and press ENTER. This will store the typed in text in the variable CHOICE.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Substring&lt;/b&gt;&lt;br /&gt;If you want to take a substring from a variable, you can do so by:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;%CHOICE:~0,1%&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This will take the 'User Input' sample's CHOICE variable's 1st character. As you have noticed, it starts with the variable's first index (0) and by using length (1), like in Java's substring() method, you will get the first character of the variable.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;If statements&lt;/b&gt;&lt;br /&gt;Now, if you want to do a check by comparing a variable's value by a certain string, you can make use of the IF command.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;IF /I '%CHOICE%'=='A' GOTO CHOICEA&lt;br /&gt;IF /I '%CHOICE%'=='B' GOTO CHOICEB&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;CHOICEA and CHOICEB are just labels to where the batch process should jump to if the given conditions are true. It doesn't have to be GOTO statements, it can be single statements, such as ECHO or SET. The /I option tells the IF statement to do a case-insensitive comparison. If you compare your variable against a string, you have to place it inside quotes, like above.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Labels&lt;/b&gt;&lt;br /&gt;A label is a place to where the batch processor jumps to after executing a GOTO statement. Example:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;:CHOICEA&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Current path variable&lt;/b&gt;&lt;br /&gt;This will output the current directory:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;ECHO "%CD%"&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Path of batch file&lt;/b&gt;&lt;br /&gt;Sometimes you want to work relatively from the path of the batch script file, rather than the current directory.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;ECHO %~dp0&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This will output the path of the batch file that is running.&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27947907-1776910991293136923?l=lastattacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lastattacker.blogspot.com/feeds/1776910991293136923/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=27947907&amp;postID=1776910991293136923&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/1776910991293136923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/1776910991293136923'/><link rel='alternate' type='text/html' href='http://lastattacker.blogspot.com/2008/05/batch-scripting-tips.html' title='Batch Scripting Tips'/><author><name>LA</name><uri>http://www.blogger.com/profile/04574047868840250564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16028642828088257718'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27947907.post-8367146986692114363</id><published>2008-05-01T20:43:00.007+02:00</published><updated>2008-05-02T11:31:44.268+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='productivity'/><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='tasks'/><category scheme='http://www.blogger.com/atom/ns#' term='scripting'/><title type='text'>Ruby and Win32 API</title><content type='html'>If you are using Ruby as an automation process rather than a development tool, you sometimes might want to use some of Windows' GUI controls, such as a message box or folder browser box. In those cases, you might want to try the DL library.&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;Some of you have read &lt;a href="http://lastattacker.blogspot.com/2008/03/ruby-ruby-ruby.html"&gt;this post&lt;/a&gt; about OLE Automation and DL. In a way it is quite simple but it can take a while to get right, especially if you're a beginner like me. However, after some time I have managed to get my folder browser to work and I haven't found Ruby code on the web that does this yet.&lt;br /&gt;However, I feel like it is rather simple to do and to find out how to make your own version, all you need to do is to see how people who wrote VB code do it.&lt;br /&gt;&lt;/span&gt;&lt;span id="fullpost"&gt;Why? Because it is that straight forward, in fact, Ruby reduces the amount of lines of code to do it.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span id="fullpost"&gt;I must warn and say that doing this kind of programming requires excessive use of the Win32API docs (one form or another) and some skilled programming, especially in the C-language area, because you are interfacing to the actual C-functions from Ruby.&lt;br /&gt;&lt;br /&gt;Many VB code snippets that does this, have referenced these 2 c-functions (from the shell32 DLL):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SHGetPathFromIDListA&lt;/li&gt;&lt;br /&gt;&lt;li&gt;SHBrowseForFolderA&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;They also require a structure to send data to the BrowseForFolder function.&lt;br /&gt;Here is a &lt;a href="http://www.freevbcode.com/ShowCode.asp?ID=3064"&gt;site&lt;/a&gt; to get you started.&lt;br /&gt;&lt;br /&gt;Why don't I just paste the code? Well, actually the method I wrote to bring up the dialog box, requires a whole Module and I would like to write my own Ruby module before I publish anything.&lt;br /&gt;Yeah, I might sound like a bugger but hey, I have posted lots of lines of code on this site before so... take it like a man! ;)&lt;br /&gt;The hardest part is creating a Ruby C-like structure from the VB structure, so I think I'll help you out on that one:&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;pre&gt;&lt;br /&gt;ptr = DL.malloc(DL.sizeof('LLSSLLLL'))&lt;br /&gt;ptr.struct!('LLSSLLLL', :br_hOwner, :br_pidRoot, :br_displayName, :br_title,&lt;br /&gt;     :br_flags, :br_fn, :br_lparam, :br_iImage)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now don't say I didn't give you anything! :D&lt;br /&gt;&lt;br /&gt;For those who still don't know what all those L's and S's are for, it is basically saying "This is a Long integer type" or "This is a string type". Its to determine the size of the structure, but you know that there are other data-types so you need to dig in on your own regarding that.&lt;br /&gt;&lt;br /&gt;Now there is one thing I'm having trouble with and it is the Open/Save File Dialog box. Aparently if you take the exact same data-types as the prescribed docs say, Ruby fails to bring it up. After hours of struggling, I decided to skip the VB code and look on the web if someone already did this, and to my "surprise", nobody has posted any code on this. Bummer! So I decided to have a look on the MSDN site, and BAM! I found my answer. The reason why Ruby didn't bring up my dialog box was due to the fact that Ruby created a structure that had a different size than what the function was expecting! So now I am trying to find out where, how and why.&lt;br /&gt;&lt;br /&gt;I might post my code and findings at a later stage, for this is a necessary thing for Windows Ruby Automation Programmers, like me! ;)&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27947907-8367146986692114363?l=lastattacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lastattacker.blogspot.com/feeds/8367146986692114363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=27947907&amp;postID=8367146986692114363&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/8367146986692114363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/8367146986692114363'/><link rel='alternate' type='text/html' href='http://lastattacker.blogspot.com/2008/05/ruby-and-win32-api.html' title='Ruby and Win32 API'/><author><name>LA</name><uri>http://www.blogger.com/profile/04574047868840250564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16028642828088257718'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27947907.post-4874222224000809062</id><published>2008-04-30T17:41:00.001+02:00</published><updated>2008-04-30T17:43:03.718+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='funny'/><title type='text'>My "facial expression"</title><content type='html'>Someone sent me this link which I rather think is funny.&lt;br /&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/tamir/archive/2008/04/28/computer-languages-and-facial-hair-take-two.aspx"&gt;Computer languages and facial hair&lt;/a&gt;&lt;br /&gt;Hmmm... good thing I'm growing mine! :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27947907-4874222224000809062?l=lastattacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lastattacker.blogspot.com/feeds/4874222224000809062/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=27947907&amp;postID=4874222224000809062&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/4874222224000809062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/4874222224000809062'/><link rel='alternate' type='text/html' href='http://lastattacker.blogspot.com/2008/04/my-facial-expression.html' title='My &quot;facial expression&quot;'/><author><name>LA</name><uri>http://www.blogger.com/profile/04574047868840250564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16028642828088257718'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27947907.post-5050075888264392958</id><published>2008-04-30T17:25:00.002+02:00</published><updated>2008-04-30T17:29:10.221+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Netbeans 6.1</title><content type='html'>As if &lt;a href="http://www.netbeans.org"&gt;Netbeans&lt;/a&gt; 6.0 wasn't enough to patiently wait for (not in a bad way), the new 6.1 is ready for download/order!&lt;br /&gt;Check this &lt;a href="http://www.artima.com/forums/flat.jsp?forum=276&amp;thread=229787"&gt;link &lt;/a&gt;out to find out more of what they did in this version.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27947907-5050075888264392958?l=lastattacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lastattacker.blogspot.com/feeds/5050075888264392958/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=27947907&amp;postID=5050075888264392958&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/5050075888264392958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/5050075888264392958'/><link rel='alternate' type='text/html' href='http://lastattacker.blogspot.com/2008/04/netbeans-61.html' title='Netbeans 6.1'/><author><name>LA</name><uri>http://www.blogger.com/profile/04574047868840250564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16028642828088257718'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27947907.post-5987383890614596297</id><published>2008-04-30T16:07:00.012+02:00</published><updated>2008-05-02T11:36:52.518+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='productivity'/><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='AutoIT'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='scripting'/><title type='text'>AutoIT Script for EasyWorship</title><content type='html'>&lt;a href="http://www.easyworship.com/"&gt;EasyWorship&lt;/a&gt; (EW) is a wonderful app for church services and beats Powerpoint in that it can display Powerpoint slides on a different monitor (than your primary for the projectors) and you can view all the slides in advance of what it beholds. This is great unless you want to import some old songs from a Word document or Powerpoint slides into its Song database...&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;Well why not just import the Powerpoint slides and use that? Well in my case (as I've been doing this at my church for over a year now) this can take a long time in preparation and is very error prone. What we usually did was create a Powerpoint slide and create our whole church service presentation in it, which meant opening up the Word or Powerpoint Doc with the original songs inside, search for it and then copy-paste. Sometimes we accidentally took the wrong songs (like Psalm 256 instead of 265) and found out in the Sunday morning service! :D&lt;br /&gt;With the EW Song DB, you can type in the song title and you just drag it into your schedule. Thats it! Save me about ... hmm... 3-8 minutes per song!&lt;br /&gt;Also this means that if we imported the wrong song and found out the Sunday morning, we can correct it in a matter of seconds!&lt;br /&gt;&lt;br /&gt;We already have all our Psalms and Songs on Word Doc and Powerpoint and its not 1 song per doc, its a hundred at least! EW can only import 1 thing at a time and they haven't released a tool that can do convertions and imports for you like we needed so I searched the web to find out that everyone else who has the same problem as I did, import it manually! Man, I can't imagine importing over a 1000 songs manually by copy &amp;amp; paste! 8-0&lt;br /&gt;So I stumbled on &lt;a href="http://www.autoitscript.com/autoit3/"&gt;AutoIT&lt;/a&gt;. This is a wonderful util to automate just about any task. By writing a BASIC script (pun intended) you can tell the mouse pointer to move to a certain window's control and wait for a while and then issue a click action. Now that's what I mean by GUI automation ;-). You can also do basic scripting automation like a BATCH or BASH script can.&lt;br /&gt;&lt;br /&gt;Now back to my scenario... I played around and found how easy it actually was to write a script that can import all my hundreds of songs in minutes (it literally took just over 20 mins to import over 800 songs!) since there wasn't a way for me to to it programatically in EW. This script is tested on EW 2006, so if you want to do the same kind of thing like I did, maybe your fortunate to have Google'd onto this page :D&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;pre&gt;&lt;br /&gt;#cs&lt;br /&gt;A little script to import songs into Easy Worship 2006.&lt;br /&gt;Written by Dandre Jansen van Vuuren&lt;br /&gt;#ce&lt;br /&gt;&lt;br /&gt;;Select the files to import&lt;br /&gt;$var = FileProcessSelectionDialog()&lt;br /&gt;&lt;br /&gt;;Cancelled&lt;br /&gt;If $var == -1 Then&lt;br /&gt;MsgBox(0, "Error", "No files selected, quitting...")&lt;br /&gt;Exit (1)&lt;br /&gt;EndIf&lt;br /&gt;&lt;br /&gt;$selectedSourceFolder = False&lt;br /&gt;$sourceFolder = $var[1]&lt;br /&gt;&lt;br /&gt;StartEasyWorship()&lt;br /&gt;&lt;br /&gt;;Iterate through all the selected files to import&lt;br /&gt;$total = Number($var[0])&lt;br /&gt;&lt;br /&gt;For $i = 2 To $total&lt;br /&gt;$curFile = $var[$i]&lt;br /&gt;SelectNewSong()&lt;br /&gt;OpenFileOpenDialog()&lt;br /&gt;$ext = MapFileTypeToTypeName(GetExtensionFromFile($curFile))&lt;br /&gt;SelectAFileFromOpenDialog($curFile, $ext)&lt;br /&gt;WinWaitActive("New Song")&lt;br /&gt;Send("!o")&lt;br /&gt;WinWaitActive("EasyWorship")&lt;br /&gt;Next&lt;br /&gt;&lt;br /&gt;MsgBox(0, "Progress", "Finished.")&lt;br /&gt;&lt;br /&gt;Func FileProcessSelectionDialog()&lt;br /&gt;$filter = "HTML Files (*.html;*.htm)|Word 97-2002 (*.doc)|Text Files (*.txt)"&lt;br /&gt;$importFiles = FileOpenDialog("Select the files to import into EasyWorship", "", $filter, 1 + 4)&lt;br /&gt;&lt;br /&gt;If @error Then&lt;br /&gt;return -1&lt;br /&gt;Else&lt;br /&gt;If StringInStr($importFiles, "|") Then&lt;br /&gt; return StringSplit($importFiles, "|")&lt;br /&gt;Else&lt;br /&gt; ;A single selected file isn't in the same form as a multiple&lt;br /&gt; ;selection of files.&lt;br /&gt; $pos = StringLastIndexOf($importFiles, "\")&lt;br /&gt; $folder = StringLeft($importFiles, $pos)&lt;br /&gt; $file = StringMid($importFiles, $pos + 1)&lt;br /&gt; $newString = $folder &amp;amp; "|" &amp;amp; $file&lt;br /&gt; return StringSplit($newString, "|")&lt;br /&gt;EndIf&lt;br /&gt;EndIf&lt;br /&gt;EndFunc&lt;br /&gt;&lt;br /&gt;Func StartEasyWorship()&lt;br /&gt;Run("C:\Program Files\Softouch\EasyWorship\EasyWorship.exe")&lt;br /&gt;WinWaitActive("EasyWorship")&lt;br /&gt;EndFunc&lt;br /&gt;&lt;br /&gt;Func SelectNewSong()&lt;br /&gt;Send("!s")&lt;br /&gt;Send("n")&lt;br /&gt;WinWaitActive("New Song")&lt;br /&gt;EndFunc&lt;br /&gt;&lt;br /&gt;Func OpenFileOpenDialog()&lt;br /&gt;;The open button doesn't have a shortcut&lt;br /&gt;;find out where the window is positioned And&lt;br /&gt;;relatively position the mouse onto the open button&lt;br /&gt;$winPos = WinGetPos("New Song")&lt;br /&gt;MouseMove($winPos[0] + 305, $winPos[1] + 45)&lt;br /&gt;MouseClick("left")&lt;br /&gt;WinWaitActive("Open")&lt;br /&gt;EndFunc&lt;br /&gt;&lt;br /&gt;Func SelectAFileFromOpenDialog($file, $type)&lt;br /&gt;Send("!t")&lt;br /&gt;ControlCommand("Open", "", "ComboBox3", "SelectString" , $type)&lt;br /&gt;sleep(10)&lt;br /&gt;Send("!n")&lt;br /&gt;Sleep(10)&lt;br /&gt;&lt;br /&gt;;We only need to specify the folder where all the files&lt;br /&gt;;lie, once. From there on we can import the files one&lt;br /&gt;;at a time.&lt;br /&gt;If $selectedSourceFolder == False Then&lt;br /&gt;Send($sourceFolder)&lt;br /&gt;Send("{Enter}")&lt;br /&gt;Sleep(10)&lt;br /&gt;$selectedSourceFolder = True&lt;br /&gt;EndIf&lt;br /&gt;&lt;br /&gt;Send($file)&lt;br /&gt;Send("!o")&lt;br /&gt;EndFunc&lt;br /&gt;&lt;br /&gt;Func GetExtensionFromFile($filename)&lt;br /&gt;Return StringMid($filename, StringLastIndexOf($filename, ".") + 1)&lt;br /&gt;EndFunc&lt;br /&gt;&lt;br /&gt;Func StringLastIndexOf($string, $char_target)&lt;br /&gt;$strlen = StringLen($string)&lt;br /&gt;For $i = $strlen to 1 Step -1&lt;br /&gt;$char = StringMid($string, $i, 1)&lt;br /&gt;If $char == $char_target Then&lt;br /&gt; return $i&lt;br /&gt;EndIf&lt;br /&gt;Next&lt;br /&gt;EndFunc&lt;br /&gt;&lt;br /&gt;Func MapFileTypeToTypeName($fileType)&lt;br /&gt;Switch StringLower($fileType)&lt;br /&gt;Case "html"&lt;br /&gt;return "HTML Files"&lt;br /&gt;Case "htm"&lt;br /&gt;return "HTML Files"&lt;br /&gt;Case "doc"&lt;br /&gt;return "Word 97-2002"&lt;br /&gt;Case "txt"&lt;br /&gt;return "Recover Text from Any File"&lt;br /&gt;Default&lt;br /&gt;return "Unknown"&lt;br /&gt;EndSwitch&lt;br /&gt;EndFunc&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Here is how the script works (you obviously need AutoIT and EW):&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Run the script&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Choose the files you would like to import, EW only has a limited supported file-base, but includes HTML and Word Docs. I reformatted all my songs to HTML (I'll write a new article on how I automated that process).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;After selecting the files and clicking on Open, leave everything! You'll see your mouse pointer and menu-popping in action. :-)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Once it is done, it will pop up with a "Done" message box. In the mean time don't let anything take control of your keyboard, mouse, etc (including you ;-) ). This script doesn't cater for problematic scenarios!&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;I don't mean to be full of myself (really I don't!) but I am glad that God made me a programmer so that I wouldn't have to do these kind of tasks manually! :D&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27947907-5987383890614596297?l=lastattacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lastattacker.blogspot.com/feeds/5987383890614596297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=27947907&amp;postID=5987383890614596297&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/5987383890614596297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/5987383890614596297'/><link rel='alternate' type='text/html' href='http://lastattacker.blogspot.com/2008/04/autoit-script-for-easyworship.html' title='AutoIT Script for EasyWorship'/><author><name>LA</name><uri>http://www.blogger.com/profile/04574047868840250564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16028642828088257718'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27947907.post-1306596610998396872</id><published>2008-04-28T14:36:00.006+02:00</published><updated>2008-04-28T15:16:11.206+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>New (K/X)Ubuntu 8.04</title><content type='html'>This weekend I've spent some of my soft-cap downloads on getting the latest Ubuntu software (well I didn't get Ubuntu itself as I am not such a fan of Gnome) such as Xubuntu and Kubuntu, version 8.04 of course...&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;After leaving my Linux box overnight I managed to download Xubuntu (i386 - Desktop); Kubuntu (KDE 3.5; i386 - Desktop) and its KDE4 version (also i386 and currently as I'm typing downloading the 64bit version at 6Kbps ;-) ).&lt;br /&gt;&lt;br /&gt;After obtaining Xubuntu, I ran a CD check and saw that 1 file was 'corrupt' (as in MD5 values didn't match). So I downloaded it again only to find the same problem, but when I did a MD5 hash on the ISO file this time and on the Xubuntu website, it was the same, so I guess the guys @ Xubuntu need to do a fix on that file but unfortunately I don't know if it is a text file or binary file (hopefully a non-important one).&lt;br /&gt;&lt;br /&gt;So while I was waiting to download the KDE 4, Kubuntu, I installed the KDE 3 version of Kubuntu and I was quite impressed. I am not such a big fan of KDE 3 either but in Kubuntu 8, it sort of had a slight of change to what I was used to. The speed at which things operated, the fact that it quickly picked up all my hardware was great. All that the Ubuntu Linux OSs need is an official nice looking GRUB loader (but apparently one can get one with Apt-Get). Kubuntu even asked me if it should download the nVidia drivers for my 6200 card (yeah I know but I don't play games so actively anymore plus its sufficient for what I'm doing) and voila!&lt;br /&gt;&lt;br /&gt;I even had a whack at the special desktop effects and its lookin good except for the fact that it is unstable :(&lt;br /&gt;Then when the KDE 4 version was ready I immediately installed it over the KDE 3 version and working and seeing KDE 4 for the first time in action was just WOW! Visuals, speed, configuration, etc. was just great. I downloaded the nVidia driver so that I could have a crack at the desktop visuals and it looked ok'ish, besides the fact that it too was unstable. Like the OpenGL version would crash almost instantly while the RenderX (I think thats what it is called) works pretty well but doing something like pressing Ctrl+10/11 (to have your windows minimize on the screen as on the Mac OSX desktop) would only show 1 window instead of the 3/4 thats open. Other than that I am quite impressed with KDE 4 and the new Kubuntu.&lt;br /&gt;&lt;br /&gt;Xubuntu I haven't had a go at yet because I would like to use its fast desktop as my new Linux Gateway over OpenSuSE and/or (K)Ubuntu (as SuSE 10's repository is outdated and no longer maintained and I need updates plus I am getting a little tired of SuSE, and the latest SuSE versions need higher spec machines to run on), so I am still fiddling around on a proof of concept (POC) before man handling my Gateway box ;-). I would like to still have a Remote desktop option when working on the box so thats why I am not using Ubuntu Server and Xubuntu is nice and light weight (maybe even for VNC sessions) so to update is no problem as opposed to SuSE. The only things I am going to miss is the remote dial-up with smpppd (SuseMetaPPP-Daemon), and a few ease of installation GUI screens (maybe even the preconfigured firewall) but I guess thats it, I'll see how much I can duplicate on my POC version before heading over. Also I really hope the guys @ Ubuntu fixed one routing bug where HTTPS web pages didn't masquerade over the local network. This was a common issue on version 7.10 (as I had Ubuntu Server 7.10), I also tried the fix on the website which didn't work for my situation.&lt;br /&gt;&lt;br /&gt;Well thats all I got for now, didn't spend too much time on this but for those who've waited for the new Ubuntu can be happy at the progress made by the Ubuntu guys for sure.&lt;br /&gt;&lt;br /&gt;Thanks Mark Shuttleworth (and your cool team, also to everyone who contributed) for such great Distros! If I can get this version as a new replacement on my gateway box, then I am a Ubuntu convert! ;-) It is faster to download 700MB than 3.5GB for newer versions! :D&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27947907-1306596610998396872?l=lastattacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lastattacker.blogspot.com/feeds/1306596610998396872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=27947907&amp;postID=1306596610998396872&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/1306596610998396872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/1306596610998396872'/><link rel='alternate' type='text/html' href='http://lastattacker.blogspot.com/2008/04/new-kxubuntu-804.html' title='New (K/X)Ubuntu 8.04'/><author><name>LA</name><uri>http://www.blogger.com/profile/04574047868840250564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16028642828088257718'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27947907.post-1712969561341117986</id><published>2008-04-15T09:01:00.003+02:00</published><updated>2008-04-15T09:19:22.783+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Windows Explorer alternative</title><content type='html'>For those who're tired of Windows Explorer, a very nice free alternative I found does what I want it to and more...&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;There are a wide variety of Explorer replacements (or alternatives) that are "better" than Windows Explorer but this one I believe beats all of them in a lot of categories.&lt;br /&gt;Ever heard of &lt;a href="http://www.mustangpeak.net/"&gt;UltraExplorer&lt;/a&gt;?&lt;br /&gt;Its a Delphi project (free for windows) and most people believe that Delphi GUI apps perform faster (and there is no exception in this case), although sometimes it might just stall for a while but I think it might be more of an IO stall than a "I'm too busy to listen to you" stall. ;-)&lt;br /&gt;Its got a nice appearance, with skinable components (menu and toolbar). It has views that are actually customizable and very useful (except its console, that needs some work but you can get a very nice &lt;a href="http://sourceforge.net/projects/console/"&gt;console app&lt;/a&gt; from Sourceforge as alternative to Windows').&lt;br /&gt;You have tabbed windows support that works just life Firefox's tabs (even with the middle click event). It remembers where it was and has all the Windows Explorer context menus, and so on.&lt;br /&gt;It even picks up my USB drives instantly as soon as Windows activates them and is very responsive except maybe during heavy disk IO.&lt;br /&gt;I am definitely sticking to this handy tool for Windows, I even removed 'My Computer' and 'My Documents' from my desktop to replace it with 'Ultra Explorer'.&lt;br /&gt;&lt;br /&gt;Hope you might like it. :)&lt;br /&gt;&lt;br /&gt;God Bless.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27947907-1712969561341117986?l=lastattacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lastattacker.blogspot.com/feeds/1712969561341117986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=27947907&amp;postID=1712969561341117986&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/1712969561341117986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/1712969561341117986'/><link rel='alternate' type='text/html' href='http://lastattacker.blogspot.com/2008/04/windows-explorer-alternative.html' title='Windows Explorer alternative'/><author><name>LA</name><uri>http://www.blogger.com/profile/04574047868840250564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16028642828088257718'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27947907.post-248678542851680846</id><published>2008-03-31T20:55:00.008+02:00</published><updated>2008-05-02T11:37:24.225+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='productivity'/><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='tasks'/><category scheme='http://www.blogger.com/atom/ns#' term='my projects'/><category scheme='http://www.blogger.com/atom/ns#' term='scripting'/><title type='text'>Ruby, ruby, ruby ...</title><content type='html'>Yeah it's been a while since the last posting. I was lacking some inspiration on what to blog on or I was just too lazy or too busy to actually log in and blog on something that I wanted to, that is until now...&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;You might ask, whats up with the title? Well I remember the song written by a band called Keizer Chiefs (spelling) named: Ruby. Now that reminds me of the Ruby scripting language which lots of people on the web is going on about. A dynamic typed language with multiple ways of saying one thing.&lt;br /&gt;&lt;br /&gt;I was among those who agreed that Ruby was stupid, until I wanted to do a few things in Windows which Python nor other scripting languages could offer (or easily accomplish), except Ruby. Some of us would mock the guy who presented a brief crash course in Ruby, saying that it is too dynamic for our taste and it would make debugging a nightmare, etc. but doing some code delving and with the latest &lt;a href="http://www.netbeans.org/"&gt;Netbeans&lt;/a&gt; language addition, which is Ruby and Ruby on Rails of course, I started to see how cool Ruby actually is.&lt;br /&gt;Usually I despised dynamic typed languages until I saw how it can increase productivity and coding speed for smallish scripts, which is what I wanted for automation.&lt;br /&gt;&lt;br /&gt;"What kind of automation?" you may ask. Well ordinary and OLE automation. Sure &lt;a href="http://www.autoitscript.com/autoit3/"&gt;AutoIT&lt;/a&gt; is great for GUI and other windows automation but the scripting language is very BASIC (pun intended) lacking structure and (as in, I need structures as in C or C++'s structures or atleast...) object orientation. With Ruby we have good OO support and with the 'win32ole' lib, you can kick VBA and do MS Office automation via Ruby instead. A good starting site is &lt;a href="http://rubyonwindows.blogspot.com/"&gt;Ruby on Windows&lt;/a&gt; which covers Ruby automation in MS Office. I managed to convert Powerpoint slides to somewhat formatted Word docs via Ruby, just to give you an idea.&lt;br /&gt;&lt;br /&gt;I think I'll post a couple of script snippets later on, on what I worked on with Ruby and AutoIT for others to see and for future reference.&lt;br /&gt;&lt;br /&gt;Just to go back to Python, some of you might say that Python does have OLE automation... I had a look at it and it looked very nasty! I wouldn't touch it, unless I looked at the wrong files, and you need to download a library for Python to have OLE  automation ability. With Ruby you use the OLE objects exactly as in VBA but within your Ruby context.&lt;br /&gt;&lt;br /&gt;Currently I am trying to implement a few operations in Ruby to have Browse-For-Folder ability, Open-Dialog, and so on functionality by doing Windows API calls via the DL lib in Ruby. You can catch a quick course on &lt;a href="http://www.jbrowse.com/text/rdl_en.html"&gt;DL here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I hope this will help you as much as it helped me.&lt;br /&gt;God Bless!&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27947907-248678542851680846?l=lastattacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lastattacker.blogspot.com/feeds/248678542851680846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=27947907&amp;postID=248678542851680846&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/248678542851680846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/248678542851680846'/><link rel='alternate' type='text/html' href='http://lastattacker.blogspot.com/2008/03/ruby-ruby-ruby.html' title='Ruby, ruby, ruby ...'/><author><name>LA</name><uri>http://www.blogger.com/profile/04574047868840250564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16028642828088257718'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27947907.post-2949306689044713791</id><published>2008-03-01T20:35:00.005+02:00</published><updated>2008-03-01T21:13:54.038+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>Code::Blocks is released!</title><content type='html'>At last! An official release of Code::Blocks and look'in good!&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;I have downloaded the latest release of the Code::Blocks IDE from the &lt;a href="http://www.codeblocks.org/"&gt;site&lt;/a&gt; and so far I am pretty impressed by the features and speed of the application. It now features lots of parsers for script editing and compiler languages.&lt;br /&gt;I wouldn't know about all the other languages and compile projects but I would mainly use C::B for C++ programming.&lt;br /&gt;&lt;br /&gt;The Code Completion is much more responsive than before (you might see it from the second time and onward when opening C::B) and rich in data types (the list box that pops up displays everything from #DEFINEs (except their params) to variables and functions (obviously). Unfortunately it doesn't seem to handle templates. Bummer!&lt;br /&gt;&lt;br /&gt;The wxSmith GUI Editor seems nice enough to use, haven't tried it out completely but it should be sufficient for moderate wxWidgets projects.&lt;br /&gt;&lt;br /&gt;Well thats all that I have seen for now, haven't went through everything but it seems good enough to use though. I have worked with the nightly versions before and even they were pretty good so now I can only image how much better this version is (and how much more stabler).&lt;br /&gt;&lt;br /&gt;Unfortunately I don't know how this IDE compares with others (except VisualStudio but I won't go there) but with those that I have seen so far, it is far better than them (also except Eclipse and Netbeans but they aren't native to C++ development, like you can only do C++ and nothing else, no Gui editors for wxWidgets, no library support, etc. but I could be wrong!), however if I were to compare to wxDevC++, I would say that wxDevC++ has a better Gui editor (but then again I only used C::B's editor for a few seconds, not a few days) but C::B has better coding facilities!&lt;br /&gt;&lt;br /&gt;Cheers and God Bless!&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27947907-2949306689044713791?l=lastattacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lastattacker.blogspot.com/feeds/2949306689044713791/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=27947907&amp;postID=2949306689044713791&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/2949306689044713791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/2949306689044713791'/><link rel='alternate' type='text/html' href='http://lastattacker.blogspot.com/2008/03/codeblocks-is-released.html' title='Code::Blocks is released!'/><author><name>LA</name><uri>http://www.blogger.com/profile/04574047868840250564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16028642828088257718'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27947907.post-451950565031249478</id><published>2008-02-19T22:24:00.003+02:00</published><updated>2008-02-19T22:34:20.082+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>Code::Blocks comming soon</title><content type='html'>The long anticipated IDE for C/C++ and other development tools, is just around the corner...&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;On the &lt;a href="http://www.codeblocks.org/"&gt;Code::Blocks home page&lt;/a&gt; (it even runs on a new server with a new web page design), it is mentioned that the long awaited RC 3 will be released shortly, officially!&lt;br /&gt;I have been waiting on this for a long time now, and can't wait to be able to have a stable and installable version of Code::Blocks.&lt;br /&gt;&lt;br /&gt;Code::Blocks is a multi-purpose (GPL 3) IDE for compiler-driven languages and frameworks. It is backed by wxWidgets as its core GUI library, and is also available for c++ development with a built in GUI Editor for wxWidgets projects. It runs on Windows and Linux (probably MacOS as well), gives you the ability to choose which compiler you want to use, has excellent GDB debugging features and the long awaited full implementation of the c/c++ code completion in the editor. Well, unfortunately I can't say how well any of the above will work or perform until a test-run is made on the official release, but I am sure it won't be disappointing.&lt;br /&gt;&lt;br /&gt;You can look at this page to see more &lt;a href="http://www.codeblocks.org/features"&gt;features&lt;/a&gt; that Code::Blocks brings.&lt;br /&gt;&lt;br /&gt;We just need to be patient for a few more days!&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27947907-451950565031249478?l=lastattacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lastattacker.blogspot.com/feeds/451950565031249478/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=27947907&amp;postID=451950565031249478&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/451950565031249478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/451950565031249478'/><link rel='alternate' type='text/html' href='http://lastattacker.blogspot.com/2008/02/codeblocks-comming-soon.html' title='Code::Blocks comming soon'/><author><name>LA</name><uri>http://www.blogger.com/profile/04574047868840250564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16028642828088257718'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27947907.post-4848532483701653391</id><published>2008-02-13T08:45:00.004+02:00</published><updated>2008-02-13T09:07:57.896+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='testimony'/><category scheme='http://www.blogger.com/atom/ns#' term='prayer'/><category scheme='http://www.blogger.com/atom/ns#' term='christianity'/><title type='text'>Hope of what is yet to come</title><content type='html'>I am too excited to hold this for myself. I have to share what God showed me this morning!&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;I was driving on our South African roads from Johannesburg to Centurion on my way to work when I read about our Scorpion unit (our Anti-Corruption Unit) which is going to be downgraded to our South African Police Services. I do not mean to speak ill of my country but hear me out.&lt;br /&gt;&lt;br /&gt;I spoke to God on how I felt about it: the crime, the injustice, the corruption... I wasn't whining, I asked God that it should stop, you know, it was more of a plea for change. I mentioned to God that if the Scorpion unit was to split, then all those high officials (charged with so many cases of corruption) would be automatically discharged and not prosecuted by the law (since they would now have power over the Scorpions). Then one of them might become our future president, and then you can just imagine what would happen.&lt;br /&gt;&lt;br /&gt;I just said to God (paraphrased): "When will all this stop? Our country is sick and destroyed by all of this. Please raise us up again, Lord! Bring us all back in line with what you had in mind from the beginning of time, let our government and our people be in your line of Grace and Blessing again, Lord! Deliver us!"&lt;br /&gt;&lt;br /&gt;I thought for a moment about it and then a thought occurred telling me: what if God wants to show that we are not supposed to rely on the Scorpion unit for deliverance?&lt;br /&gt;&lt;br /&gt;When I climbed on the highway, a black BMW went passed me, and I saw something weird written on its numberplate (because it was like one of those custom number plates where you can put anything on) it said "PSALM75 GP".&lt;br /&gt;I then immediately knew what God wanted to tell me. I didn't know what it said but I sort of had an idea. It wasn't coincidence that this happened. This morning I had to fill up my car with gas, if I had not, I might have missed it. It was all orchestrated by God!&lt;br /&gt;&lt;br /&gt;I got to the office this morning, raced to my PC and Googled &lt;a href="http://net.bible.org/bible.php?book=psalm&amp;amp;chapter=75"&gt;Psalm 75&lt;/a&gt;.&lt;br /&gt;Read and see for yourself. I wish I could have taken a photo of that car, but I believe that it was God that brought that car passed me!&lt;br /&gt;&lt;br /&gt;GLORY TO HIS WONDERFUL NAME!!!!&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27947907-4848532483701653391?l=lastattacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lastattacker.blogspot.com/feeds/4848532483701653391/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=27947907&amp;postID=4848532483701653391&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/4848532483701653391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/4848532483701653391'/><link rel='alternate' type='text/html' href='http://lastattacker.blogspot.com/2008/02/hope-of-what-is-yet-to-come.html' title='Hope of what is yet to come'/><author><name>LA</name><uri>http://www.blogger.com/profile/04574047868840250564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16028642828088257718'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27947907.post-653019327480029009</id><published>2008-02-08T21:57:00.002+02:00</published><updated>2008-05-02T11:26:00.297+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='productivity'/><category scheme='http://www.blogger.com/atom/ns#' term='tasks'/><title type='text'>Getting Things Done</title><content type='html'>Heard of the GTD term? Not so new anyway but David Allen gave a good seminar on it at Google a while ago...&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;I read an article on another blog that dealt with GTD and had a embedded video of a 45 minute lecture.&lt;br /&gt;&lt;br /&gt;I personally found it very interresting but there are a few things I want to bring out:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Some of the things he taught sounded like Biblical principles being brought up, especially the part where he talked about "letting things control you", people manipulating you through the smallest things (stop trying to control everything they will end up controlling you, thats the bottom line), and being like a "Master and Commander" where you have your eyes on the prize but humble enough to clean a toilet.&lt;/li&gt;&lt;li&gt;I like his view on the "Mind like water" part, it reminded me of Philipeans 4:6-7 where we shouldn't be anxious but always bringing our concerns to God (right now, "in every situation") to be able to receive His Peace.&lt;/li&gt;&lt;li&gt;The only thing I would tell you to bear in mind is to not apply this in your life like another law. The Bible clearly warns us about it.&lt;/li&gt;&lt;li&gt;To apply distributive cognition on all the tasks you still have to do, REALLY DOES lighten the weight your mind has to carry.&lt;/li&gt;&lt;li&gt;We need to exercise our ability to control by "having dominion" (Genesis) over creation and not people (like we used to do, which is like playing God, BTW).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;It was also entertaining to watch as there were some clips of humor here and there and David really has a good talent for doing what he does (I think, IMHO).&lt;br /&gt;&lt;br /&gt;My favorite part was:&lt;br /&gt;"People think that information overload the is problem... actually if information overload was the problem, you'd walk into a library and die!", "It's actually potential overload..."&lt;br /&gt;&lt;br /&gt;Let me know what you thought about it, I would be interrested to know what you thought about and learn't from it.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://linuxhelp.blogspot.com/2008/01/getting-things-done-two-aspects-of-self.html"&gt;http://linuxhelp.blogspot.com/2008/01/getting-things-done-two-aspects-of-self.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;[Edit:] Here is also a Wikipedia entry regarding GTD: &lt;a href="http://en.wikipedia.org/wiki/Getting_Things_Done"&gt;http://en.wikipedia.org/wiki/Getting_Things_Done&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27947907-653019327480029009?l=lastattacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lastattacker.blogspot.com/feeds/653019327480029009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=27947907&amp;postID=653019327480029009&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/653019327480029009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/653019327480029009'/><link rel='alternate' type='text/html' href='http://lastattacker.blogspot.com/2008/02/getting-things-done.html' title='Getting Things Done'/><author><name>LA</name><uri>http://www.blogger.com/profile/04574047868840250564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16028642828088257718'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27947907.post-4381865392626270227</id><published>2008-01-30T13:31:00.001+02:00</published><updated>2008-05-02T11:26:13.504+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wiki'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='websites'/><title type='text'>Super CMS</title><content type='html'>I've been assigned a task by the company that I work for to set up a new wiki since the current one was a bit slow, dull, unorganized and just screaming at its visitors "Help me!" ;-)&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;I was tempted enough to just upgrade to the newer version since that would mean the quickest easiest path without having to manually migrate the content. Fortunately, my boss insisted that I find something where we can start over from scratch that can handle all we want and get the developers back to using the wiki as it currently sits there being idle.&lt;br /&gt;&lt;br /&gt;I was excited to hear that I didn't have to migrate any data to any new wiki, so the search was on to find a newer, faster, better wiki (I won't mention the one we used, could be bad for them ;-) ).&lt;br /&gt;&lt;br /&gt;We tried &lt;a href="http://wiki.mindtouch.com/Deki_Wiki"&gt;Deki-Wiki&lt;/a&gt; but it was such a hassle to install without the VMWare route. Everything had to be done manually, then a setup page had to be completed, then some more manual configuration, only to find that apache didn't want to work anymore, since Deki-Wiki has its own internal 'server'. Look DekiWiki looks fabulous (except I didn't get a chance to see what other functionality it had) and seems great but it wasn't worth the hassle.&lt;br /&gt;&lt;br /&gt;We looked at other wikis like &lt;a href="http://www.mediawiki.org/wiki/MediaWiki"&gt;Media Wiki&lt;/a&gt; but it was too 'open' for our taste, we needed more ACL control, as in be able to set permissions or rights for viewing/editing/etc per person/group and to block content from non-registered viewers.&lt;br /&gt;&lt;br /&gt;Then I thought: "What about CMS solutions"?&lt;br /&gt;I remembered &lt;a href="http://www.joomla.org/"&gt;Joomla&lt;/a&gt;, and tried that. Already things were much better but unfortunately Joomla lacked the following, otherwise I might have considered using it:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Revision control&lt;/li&gt;&lt;li&gt;Group/Role rights managements (can individually set page rights but is totally inadequate)&lt;/li&gt;&lt;li&gt;General discussion boards, ie. Forums&lt;/li&gt;&lt;li&gt;Scripting ability&lt;/li&gt;&lt;li&gt;Can't block non-registered users from viewing content unless you specifically mark each page with a 'registered' right instead of a 'public' one.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;There were some other points but I can't remember what they were.&lt;br /&gt;&lt;br /&gt;It installed VERY EASILY, the admin pages were astounding and the web pages looked so wonderful, especially if you found the right skin (even on default).&lt;br /&gt;I felt sorry because it looked so great, I even went to the module pages to see if some people developed some modules that could fill the gaps but I didn't find any that met the eye.&lt;br /&gt;&lt;br /&gt;So I went to its brother system '&lt;a href="http://drupal.org/"&gt;Drupal&lt;/a&gt;'. It sounds like a german (or something) name for a water drop (as to the Afrikaans term 'druppel') as the logo suggests.&lt;br /&gt;Drupal looked interresting but I thought that I was just going to find some missing features yet again (and I was right... well somewhat).&lt;br /&gt;I downloaded, installed (also VERY EASILY) and so far I was quite impressed. I could choose between MySQL &amp;amp; PostgreSQL (unlike Joomla which featured only MySQL since PHP and MySQL is well coupled).&lt;br /&gt;By default, Drupal doesn't have everything we needed, so I visited the modules page to find:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Desired page ACL control&lt;/li&gt;&lt;li&gt;Good editor (Drupal doesn't come standard with a rich text editor)&lt;/li&gt;&lt;li&gt;Pagination tags (breaking up long articles/stories into pages via a tag)&lt;/li&gt;&lt;li&gt;Page concurrency control via a 'check out' system (not ideal but at least it will prevent 2 people from making changes to a page at the same time, unlike other wikis and CMSs)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;And much more&lt;/li&gt;&lt;/ul&gt;Drupal comes standard with these:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Blogs&lt;/li&gt;&lt;li&gt;Tags&lt;/li&gt;&lt;li&gt;Forums&lt;/li&gt;&lt;li&gt;Page content (custom types too)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Excellent logging and monitoring&lt;/li&gt;&lt;li&gt;Adequate ACL&lt;/li&gt;&lt;li&gt;Skins&lt;/li&gt;&lt;li&gt;Modules&lt;/li&gt;&lt;li&gt;Notification (system or by clicking on a user's contact page to send that person an e-mail from the web interface)&lt;/li&gt;&lt;li&gt;Revision control (need to enable that per page)&lt;/li&gt;&lt;li&gt;Categories&lt;/li&gt;&lt;li&gt;Comments&lt;/li&gt;&lt;li&gt;News aggregation&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Scheduled tasks (using Unix's CRON and Windows's Schedule service)&lt;/li&gt;&lt;li&gt;PHP scripting&lt;/li&gt;&lt;li&gt;Role based assignment to users&lt;/li&gt;&lt;li&gt;And so much more&lt;/li&gt;&lt;/ul&gt;Drupal comes standard with some modules as well that needs to be enabled but you can have a look at them. Since Drupal is PHP based, it already feels much faster than our current wiki and content can be nicely categorized, even in a forum.&lt;br /&gt;&lt;br /&gt;I can't wait to start to implement this on our companies new server and to start setting things up.&lt;br /&gt;I am very impressed with Drupal. If I were to rate it, I would give it 95% (since you need to install some modules that adds missing functionality, so much effort! ;-) ).&lt;br /&gt;&lt;br /&gt;In the end, you need to find something that does what you want it to. I found Drupal and would recommend it to anyone.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27947907-4381865392626270227?l=lastattacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lastattacker.blogspot.com/feeds/4381865392626270227/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=27947907&amp;postID=4381865392626270227&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/4381865392626270227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/4381865392626270227'/><link rel='alternate' type='text/html' href='http://lastattacker.blogspot.com/2008/01/super-cms.html' title='Super CMS'/><author><name>LA</name><uri>http://www.blogger.com/profile/04574047868840250564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16028642828088257718'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27947907.post-2138507727245323276</id><published>2008-01-06T15:55:00.000+02:00</published><updated>2008-01-06T20:05:17.739+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='admin'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>APT-GET for SuSE</title><content type='html'>We all know of Ubuntu-based distros to have apt-get for easy installation but what about SuSE?&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;I recently discovered that OpenSuSE actually has apt-get ability, not just RPM packages.&lt;br /&gt;You can install this with YAST or follow this web page: &lt;a href="http://susewiki.org/index.php?title=Install-apt4suse"&gt;Installing apt4suse&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I installed a few things with it today and it seems to be working the same way Ubuntu's apt-get is working.&lt;br /&gt;&lt;br /&gt;This makes SuSE 'lekker' to work with.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27947907-2138507727245323276?l=lastattacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lastattacker.blogspot.com/feeds/2138507727245323276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=27947907&amp;postID=2138507727245323276&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/2138507727245323276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/2138507727245323276'/><link rel='alternate' type='text/html' href='http://lastattacker.blogspot.com/2008/01/apt-get-for-suse.html' title='APT-GET for SuSE'/><author><name>LA</name><uri>http://www.blogger.com/profile/04574047868840250564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16028642828088257718'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27947907.post-3060128854812007667</id><published>2008-01-02T10:41:00.003+02:00</published><updated>2008-05-02T11:33:57.663+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='admin'/><category scheme='http://www.blogger.com/atom/ns#' term='productivity'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='backup'/><title type='text'>Hard Drive imaging</title><content type='html'>Formatting again maybe? Don't be so hard on yourself any longer. Start imaging!&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;What is that? It is to duplicate every bit on your hard-drive/partition in an image file for backup purposes. Why? Let me give you an example and maybe you'll discover what I mean:&lt;br /&gt;Usually you format your hard drive, reinstall Windows and/or Linux with their software and settings the way you like it. All fine until something goes wrong and you have to go through it again! It can really take a very long time!&lt;br /&gt;Now imagine just formatting once more, installing everything, backup your PC's hard drive (HD) with an image and later if something goes wrong, you just reload that image on your HD and there you go. Everything back to the way you wanted it. Saves you a lot of time and frustration!&lt;br /&gt;&lt;br /&gt;How can one do that? Here is a tutorial containing a link to a downloadable boot CD to get you started: &lt;a href="http://www.howtoforge.org/back_up_restore_harddrives_partitions_with_ghost4linux"&gt;http://www.howtoforge.org/back_up_restore_harddrives_partitions_with_ghost4linux&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ghost4Linux (G4L) makes this imaging process possible. When you want to begin, make sure you have an extra hard drive &lt;span style="font-weight: bold; font-style: italic;"&gt;or&lt;/span&gt; a local FTP Server on a different machine than the one you are imaging. The FTP server has to be on your network otherwise you are going to wait like forever! :(&lt;br /&gt;Just because it contains the word 'Linux' doesn't mean that you have to have a Linux distro on your machine or anything, all it means is that it uses a compact Linux version to run its Ghost application to backup your HD.&lt;br /&gt;&lt;br /&gt;It is really simple to use and make sure when compressing, you use something like GZip and not the other compress options, they compress more but take longer (Bz2 take MUCH, MUCH longer and doesn't necessarily make the image size MUCH smaller than GZip). It is important though that you do compress your image. I imaged my 160GB hard drive to my local FTP server and ended up taking 4 GB of space (because of the compression).&lt;br /&gt;&lt;br /&gt;Now don't think that you'll get the same results, though! I had to do a very good Low Level Format (LLF or filling my HD with 0's). This makes the compression more effective! If you start to image your HD after using it for years, you definitely won't have the same result as I had. Even if you delete files, the data remains on the HD, it is just marked/removed from the File Table of the File System. So when you image your HD, even if you are just using 20% of it, your image file size will be close to your HD's capacity. So do a LLF first. It takes long to do that however (like Seagate's Disk Wizard took 6 hours to fill my 160GB SATA drive with 0's [because it writes 0's on a part of the HD multiple times to make sure the data isn't recoverable]), other software just writes a 0 once and it ends up taking a fraction of the time.&lt;br /&gt;If your HD or FTP server has a lot of space, then it probably won't matter to you.&lt;br /&gt;&lt;br /&gt;I remember having to image multiple machines at university 2 years ago. It sure saved a lot of time doing that because UDP has this broadcasting capability. The server just sends 1 packet and the network medium duplicates that packed and sends them to all PCs. We used something that came with DELL PCs which helped do the job well. We could redo like 30 PCs in 30 minutes. Imagine having to format, reinstall Windows and all its applications on each PC at a time, on top of that, you have to carry them all, set them up, configure them for the network, get them on the Active Directory Domain, etc.&lt;br /&gt;&lt;br /&gt;I always wanted to be able to image my PC and I am glad that I came across that tutorial to do that. Let me know how you found it.&lt;br /&gt;&lt;br /&gt;UPDATE (2008-05-01):&lt;br /&gt;Today I re-imaged my PC because Windows was getting slow (don't we all know) and a bit buggy I reckon. However, after the 30-min re-image session I am back to my backed-up state and my PC a whirling again! Now it takes me about 2 hours to get my PC back the way it was again instead of the whole freekin day! Yay to Imaging! Yay to G4L!&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27947907-3060128854812007667?l=lastattacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lastattacker.blogspot.com/feeds/3060128854812007667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=27947907&amp;postID=3060128854812007667&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/3060128854812007667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/3060128854812007667'/><link rel='alternate' type='text/html' href='http://lastattacker.blogspot.com/2008/01/hard-drive-imaging.html' title='Hard Drive imaging'/><author><name>LA</name><uri>http://www.blogger.com/profile/04574047868840250564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16028642828088257718'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27947907.post-3197148442749930706</id><published>2008-01-02T10:37:00.000+02:00</published><updated>2008-01-02T10:41:52.519+02:00</updated><title type='text'>Happy 2008!</title><content type='html'>May everyone have a Blessed and Prosperous 2008!&lt;br /&gt;God Bless and enjoy your break before going back to work/school !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27947907-3197148442749930706?l=lastattacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lastattacker.blogspot.com/feeds/3197148442749930706/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=27947907&amp;postID=3197148442749930706&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/3197148442749930706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/3197148442749930706'/><link rel='alternate' type='text/html' href='http://lastattacker.blogspot.com/2008/01/happy-2008.html' title='Happy 2008!'/><author><name>LA</name><uri>http://www.blogger.com/profile/04574047868840250564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16028642828088257718'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27947907.post-5571509537725890247</id><published>2007-12-29T19:16:00.000+02:00</published><updated>2007-12-29T19:23:08.847+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>Update Checker</title><content type='html'>I came across this blog post that really lead me to an application that I was looking for.&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;Do you have many applications and you like to have them up to date, etc. but it is such a drag just to go the different sites to see if a newer version is out? Well some apps saves us from this by updating themselves. This is good until you format and put on the older version to update again.&lt;br /&gt;&lt;br /&gt;The blog I came across (&lt;a href="http://googlesystem.blogspot.com/2007/04/filehippos-software-update-checker.html"&gt;http://googlesystem.blogspot.com/2007/04/filehippos-software-update-checker.html&lt;/a&gt;) talks about Update Checker. It is an application that scans your PC really quickly and takes you to a web page with all the applications (in its database) that needs updating. This is really swell. Also when updating, it doesn't take you to the website, it gives you one of File Hippo's links for that file, which could mean faster downloading time because they sometimes have multiple mirrors.&lt;br /&gt;&lt;br /&gt;If you update some software in Windows, I would recommend getting this app and running it manually once in a while. Currently it is in its BETA release.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27947907-5571509537725890247?l=lastattacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lastattacker.blogspot.com/feeds/5571509537725890247/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=27947907&amp;postID=5571509537725890247&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/5571509537725890247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/5571509537725890247'/><link rel='alternate' type='text/html' href='http://lastattacker.blogspot.com/2007/12/update-checker.html' title='Update Checker'/><author><name>LA</name><uri>http://www.blogger.com/profile/04574047868840250564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16028642828088257718'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27947907.post-1956456669086265500</id><published>2007-12-26T23:48:00.001+02:00</published><updated>2008-05-02T11:19:04.148+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='christianity'/><category scheme='http://www.blogger.com/atom/ns#' term='issues'/><title type='text'>A mixed-up matter</title><content type='html'>Some people just rest and relax on vacation but I was too bored to do that :D&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;I like vacations, you have weeks on your hands to do what you have to but you always find it too short to spend. You also sleep after midnight and wake up later in the day. Instead of just relaxing, you work on things at home that you didn't have time to do during the working week-days.&lt;br /&gt;&lt;br /&gt;The problem with vacations (for me) is of a fleshly nature, as in you do what you feel like doing. Now being a Christian who wants to be with God, this holds a problem. So far half of my vacation was spent on my PC. Now I wasn't like programming or playing games or unnecessarily surfing the web (although each element was present) I was mostly focusing on reformatting my PC and getting the right Linux distro to work on my Gateway and Personal PC.&lt;br /&gt;&lt;br /&gt;I had a working router/gateway working months ago until we got a new wireless modem (old one got busted) which is USB based and not Ethernet and/or USB based. Not knowing what I know now, I didn't play on a little longer, I formatted and installed Ubuntu. Now don't get me wrong, I think Ubuntu is great but...&lt;br /&gt;I was working and so doing, didn't have much time to work on the router, was mostly not in the mood or just tired. So it was out of action for months. Now I got the internet working but some pages just didn't want to be forwarded to the client PCs on the network. I can surf the web no problem, until I had to update AVG or visit a web page with the HTTPS protocol. It turned out Ubuntu had a bug. I tried the fix with no avail.&lt;br /&gt;I formatted again with good 'ol Open SuSE (10.0; Love that Distro!) and tried again with roaring success (well I was roaring ;-) ).&lt;br /&gt;It was quick and actually pretty painless. I have my little German app on my windows pc to connect and disconnect from the internet, the firewall is up and ready, samba is waiting for shares and I am smiling.&lt;br /&gt;I also installed Open SuSE 10.2 on my personal PC again, and now since I don't have to be the internet master anymore, I can freely explore my new SuSE distro that I got months ago! ;-)&lt;br /&gt;&lt;br /&gt;Now you are all wondering what the problem is right? Time! It took over a freekin week! A week less of my precious vacation and I don't have a very long one indeed! I have just 1 week left and it is back to the working house.&lt;br /&gt;&lt;br /&gt;I also value the time spent with God but my old nature must have gotten the better of me during my holiday season. I am happy and sad at the same time. Happy that my PC is working with my router but sad that time is almost up and that God was lower on my list. Trust me, the flesh is a bastard! Well I can't give it all the credit since I am the one who make decisions myself, so all I can do is hope and pray that I will be able to force myself to be with God. I love being with God but sometimes things just get weird and it becomes hard to just sit and be still before Him. I am not trying to make excuses but unfortunately I am still weak because the flesh is weak.&lt;br /&gt;&lt;br /&gt;Anyway, I also tried out Gentoo linux and I was dissapointed in it that it didn't want to work when I installed it. It looked promising, being efficient and all but it was hassle after hassle, I downloaded the latest version a day or two ago and it didn't want to install, couldn't even get hold of the log files to find out why. I turned to the 2006.1 version, installed it but Gnome didn't want to start, plus it didn't pick up my sound card (NForce built in sound). It was after Gentoo that I decided to go back to SuSE. SuSE never gave me problems with hardware, in fact I once had a PC that could ONLY run SuSE, I tried just about every other distro on it, and the mouse jumps and the SATA drive just couldn't be found, even with Ubuntu.&lt;br /&gt;I don't care what anyone has to say about SuSE, it rocks! The only thing missing is something like apt-get!&lt;br /&gt;&lt;br /&gt;This is my sad and happy story ;-)&lt;br /&gt;&lt;br /&gt;I hope everyone had a wonderful Christmas! And may you all have a wonderful new year!&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27947907-1956456669086265500?l=lastattacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lastattacker.blogspot.com/feeds/1956456669086265500/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=27947907&amp;postID=1956456669086265500&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/1956456669086265500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/1956456669086265500'/><link rel='alternate' type='text/html' href='http://lastattacker.blogspot.com/2007/12/mixed-up-matter.html' title='A mixed-up matter'/><author><name>LA</name><uri>http://www.blogger.com/profile/04574047868840250564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16028642828088257718'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27947907.post-9087009701259672224</id><published>2007-10-20T23:14:00.000+02:00</published><updated>2007-10-20T23:17:51.358+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='misc'/><title type='text'>Congratulations South-Africa!</title><content type='html'>We won the Rugby World cup in 2007!&lt;br /&gt;&lt;br /&gt;I just want to congratulate my SA team for winning a 2nd world cup in Rugby tonight. A fantastic tournament it has been, not losing 1 match and beating the British in the final. A tough but good game!&lt;br /&gt;&lt;br /&gt;Congrats SA, you deserved it!&lt;br /&gt;&lt;br /&gt;God Bless!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27947907-9087009701259672224?l=lastattacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lastattacker.blogspot.com/feeds/9087009701259672224/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=27947907&amp;postID=9087009701259672224&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/9087009701259672224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/9087009701259672224'/><link rel='alternate' type='text/html' href='http://lastattacker.blogspot.com/2007/10/congratulations-south-africa.html' title='Congratulations South-Africa!'/><author><name>LA</name><uri>http://www.blogger.com/profile/04574047868840250564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16028642828088257718'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27947907.post-4795990983305442461</id><published>2007-10-09T19:58:00.000+02:00</published><updated>2007-10-09T20:15:46.826+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Java String Switch</title><content type='html'>The thing I miss about Java is that it doesn't have string switch functionality like C#. The only way to get close to achieving this in Java is through enums.&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;A lot of people wonder how that can be done but when I read on a forum post about it I decided to do it myself.&lt;br /&gt;Firstly you'll need the strings you want to look out for. Create an enum containing them, just know that it can only be 1 word strings, don't even try multiple words!&lt;br /&gt;&lt;br /&gt;&lt;pre  style="font-family:trebuchet ms;"&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;enum&lt;/span&gt; StrList&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;{&lt;/span&gt;&lt;br /&gt;  car&lt;span style="color: rgb(51, 102, 255);"&gt;,&lt;/span&gt;&lt;br /&gt;  dog&lt;span style="color: rgb(51, 102, 255);"&gt;,&lt;/span&gt;&lt;br /&gt;  human&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Now we can take a whole string and pass it through the switch statement.&lt;br /&gt;&lt;br /&gt;&lt;pre  style="font-family:trebuchet ms;"&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;switch&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;(&lt;/span&gt;StrList&lt;span style="color: rgb(51, 102, 255);"&gt;.&lt;/span&gt;valueOf&lt;span style="color: rgb(51, 102, 255);"&gt;(&lt;/span&gt;incommingStr&lt;span style="color: rgb(51, 102, 255);"&gt;.&lt;/span&gt;toLowerCase&lt;span style="color: rgb(51, 102, 255);"&gt;()))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;case &lt;/span&gt;car&lt;span style="color: rgb(51, 102, 255);"&gt;:&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 153, 0);"&gt;//Do what you want with the 'car'&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(255, 102, 0);"&gt;break&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;case &lt;/span&gt;dog&lt;span style="color: rgb(51, 102, 255);"&gt;:&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 153, 0);"&gt;//Do what you want with the 'dog'&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(255, 102, 0);"&gt;break&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;case &lt;/span&gt;human&lt;span style="color: rgb(51, 102, 255);"&gt;:&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 153, 0);"&gt;//Do what you want with the 'human'&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(255, 102, 0);"&gt;break&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Voila! Ok not the best way of doing it but atleast you would have string switching! ;-)&lt;br /&gt;I would like to look into HashMaps to do this, since Enums perform mappings from string to the actual enum element.&lt;br /&gt;Hope this was interresting or helpful to you. The only reason why you'd want to do this instead of a list of if/else if statements is performance (it is also a bit more readable).&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27947907-4795990983305442461?l=lastattacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lastattacker.blogspot.com/feeds/4795990983305442461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=27947907&amp;postID=4795990983305442461&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/4795990983305442461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27947907/posts/default/4795990983305442461'/><link rel='alternate' type='text/html' href='http://lastattacker.blogspot.com/2007/10/java-string-switch.html' title='Java String Switch'/><author><name>LA</name><uri>http://www.blogger.com/profile/04574047868840250564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16028642828088257718'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>