<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-37100504</id><updated>2011-11-27T15:36:14.208-08:00</updated><category term='ruby'/><category term='javascript'/><category term='google appengine'/><category term='programming'/><category term='perl'/><category term='github'/><category term='django'/><category term='sql server'/><category term='C#'/><category term='lotus notes'/><category term='jquery'/><category term='ruby on rails'/><category term='css'/><category term='sql'/><category term='git'/><category term='python'/><category term='family'/><category term='padre'/><category term='asp.net'/><category term='vim'/><category term='version control'/><category term='ubuntu'/><category term='cmd'/><category term='wala lang'/><category term='perl6'/><category term='rakudo'/><category term='safari'/><category term='google'/><title type='text'>wala lang</title><subtitle type='html'>constant ramblings on whatever...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>72</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-37100504.post-3333633471612176958</id><published>2010-03-24T16:05:00.000-07:00</published><updated>2011-11-09T15:06:36.367-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cmd'/><title type='text'>End RDP Session Remotely</title><content type='html'>&lt;p&gt;
Another note.  I'm sure it happened a lot of times for somebody who has worked on a Windows Server.  You can't log in because the terminal service allows only 2 connections.  Error message is: "Terminal Server has exceeded the maximum number of allowed connections."  This happened to me when my Windows XP crashed while RDP'd to one of our servers.  Problem is I can't log in again to that particular server.  Here's what I did in command line to end my session remotely so I can log back in.
&lt;/p&gt;
&lt;p&gt;Try the following command from your local machine.  If 'query' command isn't working, you can try logging in to another server or machine that has 'query' command enabled, then do the following...&lt;/p&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cf9ZNaFBCrc/S6qieHxPOhI/AAAAAAAAGW0/gVMw9bgg6OY/s1600/rdp01.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 215px;" src="http://4.bp.blogspot.com/_cf9ZNaFBCrc/S6qieHxPOhI/AAAAAAAAGW0/gVMw9bgg6OY/s400/rdp01.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5452348937250748946" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-3333633471612176958?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/3333633471612176958/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=3333633471612176958' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/3333633471612176958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/3333633471612176958'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2010/03/end-rdp-session-remotely.html' title='End RDP Session Remotely'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_cf9ZNaFBCrc/S6qieHxPOhI/AAAAAAAAGW0/gVMw9bgg6OY/s72-c/rdp01.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-1582277611988313375</id><published>2010-01-27T15:10:00.001-08:00</published><updated>2010-01-27T15:21:25.219-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><title type='text'>SSIS Bug – The DataFlow task has no components</title><content type='html'>&lt;p&gt;Have you ever experienced this nasty bug in SSIS.&amp;#160; You create a package in SSIS and after adding all your data flow tasks and making sure you got everything ok, now when you finally run your package, nothing happens.&amp;#160; Then looking at the progress window, you see this warning message: “[DTS.Pipeline] Warning: The DataFlow task has no components. Add components or remove the task.”&amp;#160; What happened?&amp;#160; Then you try to run it again, then nothing happens still.&amp;#160; Now when you close your project and re-open it.&amp;#160; Some of your control flow items no longer can be read or some are missing.&amp;#160; Huh!&amp;#160; Now blood pressure starts to rise.&lt;/p&gt;  &lt;p&gt;What’s going on?&amp;#160; Apparently, something’s gone wrong with the XML serializer.&amp;#160; Remember all packages are saved in XML format.&amp;#160; So somehow when it’s done that, some of the components were not recorded properly.&amp;#160; When I tried to trace which components gone bad, I was able to determine that it was my Flat-file connection.&amp;#160; I got this error message when I tried to edit it:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_cf9ZNaFBCrc/S2DH3SmZ6bI/AAAAAAAAGU8/33vzhIB63Uo/s1600-h/ssis03%5B4%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="ssis03" border="0" alt="ssis03" src="http://lh3.ggpht.com/_cf9ZNaFBCrc/S2DH49Jv8AI/AAAAAAAAGVE/IcdoQdLnbKU/ssis03_thumb%5B2%5D.png?imgmax=800" width="459" height="140" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;As it turned out, the flat file itself has some weird characters in the first line.&amp;#160; Because I’m using the first line to get my column names, this causes the serializer error.&amp;#160; So my solution is to skip the first line and just use the generic Column 0, Column 1 headings.&amp;#160; The downside is I have got ambiguous columns but at least not that nasty error.&lt;/p&gt;  &lt;p&gt;Again, just a note to myself.&amp;#160; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-1582277611988313375?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/1582277611988313375/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=1582277611988313375' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/1582277611988313375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/1582277611988313375'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2010/01/ssis-bug-dataflow-task-has-no.html' title='SSIS Bug – The DataFlow task has no components'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_cf9ZNaFBCrc/S2DH49Jv8AI/AAAAAAAAGVE/IcdoQdLnbKU/s72-c/ssis03_thumb%5B2%5D.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-1145144485138802151</id><published>2009-11-23T18:08:00.001-08:00</published><updated>2009-11-23T18:10:45.867-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><title type='text'>SQL SERVER – Shrinking Truncate Log File – Log Full</title><content type='html'>&lt;p&gt;I always forget how to do this.&amp;#160; Here’s how it is done:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.sqlauthority.com/2006/12/30/sql-server-shrinking-truncate-log-file-log-full/"&gt;SQL SERVER – Shrinking Truncate Log File – Log Full « Journey to SQL Authority with Pinal Dave&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-1145144485138802151?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/1145144485138802151/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=1145144485138802151' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/1145144485138802151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/1145144485138802151'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2009/11/sql-server-shrinking-truncate-log-file.html' title='SQL SERVER – Shrinking Truncate Log File – Log Full'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-6176257973603811564</id><published>2009-10-14T10:27:00.000-07:00</published><updated>2009-10-14T10:31:01.973-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><title type='text'>GridView with ModalPopupExtender - Do not enclose in UpdatePanel</title><content type='html'>&lt;p&gt;
I will write this up later on.  It took me a while to figure this out.  Apparently there's a collision between UpdatePanel and ModalPopupExtender, they don't play nice together.  I'll stub this for a moment and I will explain later.
&lt;/p&gt;
&lt;div id='snippet'&gt;



&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-6176257973603811564?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/6176257973603811564/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=6176257973603811564' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/6176257973603811564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/6176257973603811564'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2009/10/gridview-with-modalpopupextender-do-not.html' title='GridView with ModalPopupExtender - Do not enclose in UpdatePanel'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-5836832642512647619</id><published>2009-10-13T11:16:00.000-07:00</published><updated>2009-10-13T11:39:49.128-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>CSS Code Snippet Green Dark Background</title><content type='html'>&lt;p&gt;
I like this CSS code snippet. I got it from &lt;a href="http://www.labnol.org/internet/google-docs-for-distraction-free-writing/10538/"&gt;here&lt;/a&gt;.  Looks like a very good idea for distraction free writing.
&lt;/p&gt;
&lt;div id='snippet'&gt;
body {
  font: 16px "Courier New";
  color: #00ff00 !important;
  background: #000 !important;
  width: 800px;
  margin: 10px auto;
}
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-5836832642512647619?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/5836832642512647619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=5836832642512647619' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/5836832642512647619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/5836832642512647619'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2009/10/css-code-snippet-green-dark-background.html' title='CSS Code Snippet Green Dark Background'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-6505275214950259182</id><published>2009-09-29T15:34:00.000-07:00</published><updated>2009-09-29T15:35:57.894-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='padre'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><category scheme='http://www.blogger.com/atom/ns#' term='perl6'/><title type='text'>How to Upgrade to the Latest Padre</title><content type='html'>&lt;p&gt;
Very simple!
&lt;/p&gt;
&lt;div id='snippet'&gt;
perl -MCPAN -e "CPAN-&gt;upgrade('/^Padre/')"
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-6505275214950259182?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/6505275214950259182/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=6505275214950259182' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/6505275214950259182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/6505275214950259182'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2009/09/how-to-upgrade-to-latest-padre.html' title='How to Upgrade to the Latest Padre'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-8241328793422596727</id><published>2009-09-24T20:50:00.001-07:00</published><updated>2009-09-24T20:53:45.962-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wala lang'/><title type='text'>Insurance 411</title><content type='html'>&lt;p&gt;
http://www.insurance-411.org/ &lt;br /&gt;&lt;br /&gt;
Fill this out, I will later.  I think this is very important.  From the website...
&lt;/p&gt;
&lt;p&gt;
&lt;i&gt;
Welcome to Insurance 411, a Web tool which allows users to keep personal insurance information at their fingertips in the event of an emergency. By entering important policy and emergency contact information users can print out a credit card-sized information sheet to keep in their wallet.
&lt;/i&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-8241328793422596727?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/8241328793422596727/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=8241328793422596727' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/8241328793422596727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/8241328793422596727'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2009/09/insurance-411.html' title='Insurance 411'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-7659800981222365563</id><published>2009-08-06T20:26:00.000-07:00</published><updated>2009-08-07T11:56:53.162-07:00</updated><title type='text'>How to Install Aranight Color Theme (Style) for Padre</title><content type='html'>&lt;p&gt;
If you liked the Padre color theme from my previous posting.  You can install it now by following this procedure.  As a side note, in Padre lingo, code color theme is called a "Style".  Aranight is still a work in progress and as you know Padre is also a work in progress, so there's a lot of changes that are happening, so be patient and check back for updates.  I will be updating Aranight style here as I go.  Enjoy!
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Locate the local Padre config folder by clicking Help &gt; About.  Create a styles folder in that location.  Here's how the folder looks like in Win32: C:\Documents and Settings\username\Local Settings\Application Data\Perl\Padre\styles\
&lt;/li&gt;
&lt;li&gt;
Download Aranight style from &lt;a href="http://sites.google.com/site/sammydc/files/Aranight.yml"&gt;here&lt;/a&gt;.  Copy to the styles folder created earlier.
&lt;/li&gt;
&lt;li&gt;
Download Monaco font from &lt;a href="http://www.gringod.com/2006/02/24/return-of-monacottf/"&gt;here&lt;/a&gt;.  Install.
&lt;/li&gt;
&lt;li&gt;
Restart Padre.
&lt;/li&gt;
&lt;li&gt;
In Padre, click View &gt; Style, select Aranight.
&lt;/li&gt;
&lt;li&gt;
In Padre, click Edit &gt; Preferences &gt; Appearance.  Now select the Monaco font.  Change the "Editor Current Line Background Color" to R7, G65, B16.  Click Save.
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Here are some screenshots: &lt;br /&gt;
Padre IDE:&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cf9ZNaFBCrc/Snu0p8Y5kHI/AAAAAAAAEgI/ETFva_LbFqE/s1600-h/padre01.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 236px;" src="http://2.bp.blogspot.com/_cf9ZNaFBCrc/Snu0p8Y5kHI/AAAAAAAAEgI/ETFva_LbFqE/s400/padre01.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5367082013620277362" /&gt;&lt;/a&gt;&lt;br /&gt;
Perl file:&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cf9ZNaFBCrc/Snu0qSEvF_I/AAAAAAAAEgQ/PHEeCNYZtvg/s1600-h/padre02.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 316px;" src="http://2.bp.blogspot.com/_cf9ZNaFBCrc/Snu0qSEvF_I/AAAAAAAAEgQ/PHEeCNYZtvg/s400/padre02.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5367082019441285106" /&gt;&lt;/a&gt;&lt;br /&gt;
YAML file:&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cf9ZNaFBCrc/Snu0qmmylFI/AAAAAAAAEgY/ZmdSF71fFCc/s1600-h/padre03.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 245px;" src="http://2.bp.blogspot.com/_cf9ZNaFBCrc/Snu0qmmylFI/AAAAAAAAEgY/ZmdSF71fFCc/s400/padre03.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5367082024952829010" /&gt;&lt;/a&gt;&lt;br /&gt;
CSS file:&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cf9ZNaFBCrc/Snu0rEWsgZI/AAAAAAAAEgg/ObDx8BHr2G0/s1600-h/padre04.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 316px;" src="http://2.bp.blogspot.com/_cf9ZNaFBCrc/Snu0rEWsgZI/AAAAAAAAEgg/ObDx8BHr2G0/s400/padre04.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5367082032938385810" /&gt;&lt;/a&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-7659800981222365563?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/7659800981222365563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=7659800981222365563' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/7659800981222365563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/7659800981222365563'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2009/08/how-to-install-aranight-color-theme.html' title='How to Install Aranight Color Theme (Style) for Padre'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cf9ZNaFBCrc/Snu0p8Y5kHI/AAAAAAAAEgI/ETFva_LbFqE/s72-c/padre01.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-5245083890143418643</id><published>2009-08-04T14:00:00.000-07:00</published><updated>2009-08-06T22:14:50.023-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='padre'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><category scheme='http://www.blogger.com/atom/ns#' term='perl6'/><title type='text'>I discovered Padre, a new Perl IDE</title><content type='html'>&lt;p&gt;
This is really cool.  &lt;a href="http://padre.perlide.org/"&gt;Padre&lt;/a&gt; that is.  I installed it alongside Strawberry Perl in my Win32 box.  It is multi-platform, so I installed it in my Ubuntu box as well.  It supports syntax highlighting for Perl 5 and Perl 6.  There are plugins available now for Perl 6 as well as Catalyst, more to come.  I think there's a lot of potential for Padre.  The cool thing also about this IDE is it's built using no other than Perl language itself.  So if you want to contribute or tweak it, you can.
&lt;/p&gt;
&lt;p&gt;
Btw, I tried to customize the highlighting theme by creating a new style and here's what I came up with.  You can get instructions from &lt;a href="http://samdelacruz.blogspot.com/2009/08/how-to-install-aranight-color-theme.html"&gt;here&lt;/a&gt;.
&lt;br /&gt;&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cf9ZNaFBCrc/SnilQSbSJ6I/AAAAAAAAEfY/k-U-UHnDKhs/s1600-h/padre01.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 236px;" src="http://2.bp.blogspot.com/_cf9ZNaFBCrc/SnilQSbSJ6I/AAAAAAAAEfY/k-U-UHnDKhs/s400/padre01.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5366220655254710178" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cf9ZNaFBCrc/SniltrtAJmI/AAAAAAAAEfg/xWIV_EOoI6U/s1600-h/padre02.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 316px;" src="http://1.bp.blogspot.com/_cf9ZNaFBCrc/SniltrtAJmI/AAAAAAAAEfg/xWIV_EOoI6U/s400/padre02.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5366221160256120418" /&gt;&lt;/a&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-5245083890143418643?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/5245083890143418643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=5245083890143418643' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/5245083890143418643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/5245083890143418643'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2009/08/i-discovered-padre-new-perl-ide.html' title='I discovered Padre, a new Perl IDE'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cf9ZNaFBCrc/SnilQSbSJ6I/AAAAAAAAEfY/k-U-UHnDKhs/s72-c/padre01.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-8892253091806280653</id><published>2009-06-30T15:56:00.000-07:00</published><updated>2009-06-30T17:20:29.207-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>ASP.NET Utility to create SQL Server Database for Membership and Roles Management</title><content type='html'>&lt;p&gt;
Ok, ok.  I always forget so to save me some time, here it is...
&lt;/p&gt;
&lt;div id='snippet'&gt;
Open up command line from Visual Studio, then run...
cmd&gt;aspnet_regsql.exe
&lt;/div&gt;
&lt;p&gt;
Then execute the following...
&lt;/p&gt;
&lt;div id='snippet'&gt;
&lt;font color="#66ff00"&gt;-- Register Application&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff6600"&gt;EXEC&lt;/font&gt; dbo.aspnet_Applications_CreateApplication &lt;font color="#ff80ff"&gt;'AppName'&lt;/font&gt;, &lt;font color="#ffa500"&gt;NULL&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;-- Check if Application was registered&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff6600"&gt;SELECT&lt;/font&gt;&amp;nbsp;* &lt;font color="#ffa500"&gt;FROM&lt;/font&gt;&amp;nbsp;dbo.aspnet_Applications&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;-- Create a Role&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff6600"&gt;EXEC&lt;/font&gt; dbo.aspnet_Roles_CreateRole &lt;font color="#ff80ff"&gt;'AppName'&lt;/font&gt;, &lt;font color="#ff80ff"&gt;'Administrator'&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;-- Check if Role was created&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff6600"&gt;SELECT&lt;/font&gt;&amp;nbsp;* &lt;font color="#ffa500"&gt;from&lt;/font&gt;&amp;nbsp;dbo.aspnet_Roles&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;-- Add myself as Admin&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff6600"&gt;DECLARE&lt;/font&gt; @&lt;font color="#ffff00"&gt;Date&lt;/font&gt;&amp;nbsp;&lt;font color="#ffa500"&gt;AS&lt;/font&gt;&amp;nbsp;DATETIME&lt;br /&gt;
&lt;font color="#ff6600"&gt;SET&lt;/font&gt;&amp;nbsp;@&lt;font color="#ffff00"&gt;Date&lt;/font&gt;&amp;nbsp;= (&lt;font color="#ff6600"&gt;SELECT&lt;/font&gt;&amp;nbsp;GETDATE())&lt;br /&gt;
&lt;font color="#ff6600"&gt;EXEC&lt;/font&gt; aspnet_UsersInRoles_AddUsersToRoles &lt;font color="#ff80ff"&gt;'AppName'&lt;/font&gt;, &lt;font color="#ff80ff"&gt;'DOMAIN\username'&lt;/font&gt;, &lt;font color="#ff80ff"&gt;'Administrator'&lt;/font&gt;, @&lt;font color="#ffff00"&gt;Date&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;-- Check if I got added as Admin&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff6600"&gt;EXEC&lt;/font&gt; dbo.aspnet_UsersInRoles_GetUsersInRoles &lt;font color="#ff80ff"&gt;'AppName'&lt;/font&gt;, &lt;font color="#ff80ff"&gt;'Administrator'&lt;/font&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-8892253091806280653?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/8892253091806280653/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=8892253091806280653' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/8892253091806280653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/8892253091806280653'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2009/06/aspnet-utility-to-create-sql-server.html' title='ASP.NET Utility to create SQL Server Database for Membership and Roles Management'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-39870546128849532</id><published>2009-06-28T02:49:00.000-07:00</published><updated>2009-06-28T02:50:24.518-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google appengine'/><title type='text'>Google App Engine Notes</title><content type='html'>&lt;p&gt;
Development console is here:&lt;br /&gt;
http://localhost:8080/_ah/admin/
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-39870546128849532?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/39870546128849532/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=39870546128849532' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/39870546128849532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/39870546128849532'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2009/06/google-app-engine-notes.html' title='Google App Engine Notes'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-873877584141960883</id><published>2009-06-24T17:27:00.000-07:00</published><updated>2009-06-24T17:42:20.692-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google appengine'/><title type='text'>Google App Engine Steps in Adding New Functionality</title><content type='html'>&lt;p&gt;
I sure want to take note.  Just so that I don't forget.  I got this from this book entitled &lt;a href="http://www.amazon.com/gp/product/059680069X?ie=UTF8&amp;tag=mylifiname-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=059680069X"&gt;Using Google App Engine&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=mylifiname-20&amp;l=as2&amp;o=1&amp;a=059680069X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;.
&lt;/p&gt;

&lt;p&gt;
In order to add a new functionality to our application, take the following steps:&lt;br/&gt;
&lt;ol&gt;
&lt;li&gt;Decide on the URL that you want to use for the new feature.&lt;/li&gt;
&lt;li&gt;Write a new handler—the handler can initially be simple and just handle a GET request that renders a new template.&lt;/li&gt;
&lt;li&gt;Add a routing entry in main() to send the URL to a new handler.&lt;/li&gt;    
&lt;li&gt;Add new templates as needed.&lt;/li&gt;   
&lt;li&gt;Update the _base.htm to add any new navigation that is needed.&lt;/li&gt;
&lt;li&gt;Build the rest of the handler code and test your new functionality.&lt;/li&gt;
&lt;/ol&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-873877584141960883?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/873877584141960883/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=873877584141960883' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/873877584141960883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/873877584141960883'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2009/06/google-app-engine-steps-in-adding-new.html' title='Google App Engine Steps in Adding New Functionality'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-7619985282100788134</id><published>2009-06-04T14:23:00.000-07:00</published><updated>2009-06-04T15:13:06.840-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>CSS Blues</title><content type='html'>&lt;p&gt;
Ok, ok, I'm no designer so I don't know much about CSS.  Whenever I needed to work on CSS, I google.  Well I think working on CSS is both easy and difficult.  Easy because it's mainly just formatting, difficult because it's frustrating at times especially when working on something that works in one browser but not on the other.  Or something that works in one version but not on the other version.
&lt;/p&gt;
&lt;p&gt;
Well, I just want to take note of what my CSS code looks like that works on 3 browsers, IE8, IE6 and Firefox3.
&lt;/p&gt;
&lt;p&gt;
I commented the codes I added to make it work in IE6.  I'm explaining this later on when I have time.
&lt;/p&gt;
&lt;div id='snippet'&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: white; background: #141414;"&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: yellow;"&gt;#container&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;{&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; width: 100%;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; margin-top: 2em;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;}&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: yellow;"&gt;#content&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;{&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; margin-right: 295px;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; overflow: hidden; &lt;span style="color: green;"&gt;/* IE6 cure */&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; height: 100%; &lt;span style="color: green;"&gt;/* IE6 cure */&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;}&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: yellow;"&gt;#nav&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;{&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; float: right;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; width: 250px;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; padding: 1em;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; border: 1px silver solid;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;}&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: yellow;"&gt;table&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;{&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; margin-left: 1px; &lt;span style="color: green;"&gt;/* IE6 cure */&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; width: 99.9%; &lt;span style="color: green;"&gt;/* IE6 cure */&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; border-collapse: collapse;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; border: 1px solid #7bb1db;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;}&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-7619985282100788134?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/7619985282100788134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=7619985282100788134' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/7619985282100788134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/7619985282100788134'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2009/06/css-blues.html' title='CSS Blues'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-8977245932567168494</id><published>2009-03-30T14:06:00.000-07:00</published><updated>2009-03-30T14:18:16.940-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><title type='text'>How to schedule a job that runs an SSIS Package in SQL Server</title><content type='html'>&lt;p&gt;
Again I just want to document how I did it.  It's hard to remember sometimes the steps taken to make things work.  Specially for things that are not done everyday.  In this particular case, it is confusing which user accounts or login to specify to be used by the server agent.  Anyway, here's a recipe on how to make this work, just follow along...
&lt;/p&gt;
&lt;p&gt;
1.  Create a credential.&lt;br /&gt;
2.  Create a proxy under SSIS Package Execution using the above credential.&lt;br /&gt;
3.  Create a job in SQL Server Agent, and this is the important part, specify "sa" as the owner of this job.&lt;br /&gt;
4.  Now add a Step, select SQL Server Integration Services Package type.  Again this is the crucial step:  Go to the Run as dropdown, then select the proxy specified above.&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
Now test your package and let me know if it works for you.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-8977245932567168494?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/8977245932567168494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=8977245932567168494' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/8977245932567168494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/8977245932567168494'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2009/03/how-to-schedule-job-that-runs-ssis.html' title='How to schedule a job that runs an SSIS Package in SQL Server'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-4209374730491055888</id><published>2009-03-30T11:14:00.000-07:00</published><updated>2009-03-30T11:53:10.031-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><title type='text'>How to import SSIS package protected by password to Integration Services</title><content type='html'>&lt;p&gt;
Ok, so that I can remember how to do this again.  When importing SSIS package from development machine to server and the package protection level is "Encrypt sensitive data with password", this is for example, when you have a package that queries from an Oracle database, and you wanted to encrypt your credentials.  I always forget to specify the package protection level.  I don't know if it's because of me or the UI, the Protection level textbox is grayed out so one would normally assume that it's not needed.  Then one would think that everything is ok until the package is executed, and you wonder why it errors out.  So anyway, so I don't forget and to save me time in finding errors that traces back to not specifying passwords properly, I'm taking these notes on how to specify package protection level...
&lt;/p&gt;
&lt;p&gt;
1.  In Stored Packages, right click in MSDB then select Import Package...&lt;br /&gt;
2.  For Package Location, select File System.&lt;br /&gt;
3.  Specify Package path and Package name.&lt;br /&gt;
4.  Then click the ellipsis button next to the Protection level textbox...&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cf9ZNaFBCrc/SdESsWQgjUI/AAAAAAAAEZU/TkAiUIA300k/s1600-h/ssis01.PNG"&gt;&lt;img style="margin:0px auto 10px;cursor:pointer; cursor:hand;width: 400px; height: 328px;" src="http://1.bp.blogspot.com/_cf9ZNaFBCrc/SdESsWQgjUI/AAAAAAAAEZU/TkAiUIA300k/s400/ssis01.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5319053187999632706" /&gt;&lt;/a&gt;&lt;br /&gt;
5.  Now select "Encrypt sensitive data with password", then enter password...&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_cf9ZNaFBCrc/SdETJMtjKFI/AAAAAAAAEZc/wXdHdFDJWVI/s1600-h/ssis02.PNG"&gt;&lt;img style="margin:0px auto 10px;cursor:pointer; cursor:hand;width: 386px; height: 198px;" src="http://3.bp.blogspot.com/_cf9ZNaFBCrc/SdETJMtjKFI/AAAAAAAAEZc/wXdHdFDJWVI/s400/ssis02.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5319053683653290066" /&gt;&lt;/a&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-4209374730491055888?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/4209374730491055888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=4209374730491055888' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/4209374730491055888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/4209374730491055888'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2009/03/how-to-import-ssis-package-protected-by.html' title='How to import SSIS package protected by password to Integration Services'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_cf9ZNaFBCrc/SdESsWQgjUI/AAAAAAAAEZU/TkAiUIA300k/s72-c/ssis01.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-8789949045532821524</id><published>2009-03-24T17:59:00.000-07:00</published><updated>2009-03-30T12:30:00.866-07:00</updated><title type='text'>The breakpoint will not currently be hit</title><content type='html'>&lt;p&gt;
This is so annoying.  I'm using Visual Studio 2005, and for some reason I cannot set breakpoints to do my debugging.  I tried several suggestions I can find from the net but still it doesn't work.  Since I don't know the solution yet, but will expand this writeup once I figure out.  But for me to debug on my ASP.NET Project right now, I added the following in my code.  Important thing for me now is to debug my project. 
&lt;/p&gt;
&lt;div id='snippet'&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: white; background: #141414;"&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: #e5e5e5;"&gt;System&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;Diagnostics&lt;/span&gt;.&lt;span style="color: yellow;"&gt;Debugger&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;Break&lt;/span&gt;(); &lt;span style="color: lime;"&gt;// DEBUG&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-8789949045532821524?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/8789949045532821524/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=8789949045532821524' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/8789949045532821524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/8789949045532821524'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2009/03/breakpoint-will-not-currently-be-hit.html' title='The breakpoint will not currently be hit'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-8069729717216608326</id><published>2009-03-18T19:41:00.000-07:00</published><updated>2009-03-18T20:04:57.133-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Constructor Dependency Injection Design Pattern</title><content type='html'>&lt;p&gt;
Note on Constructor Dependency Injection design pattern.  This is how it is in C#.
&lt;/p&gt;
&lt;div id='snippet'&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: white; background: #141414;"&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: #ff8000;"&gt;private&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;IContactManagerRepository&lt;/span&gt; &lt;span style="color: #e5e5e5;"&gt;_repository&lt;/span&gt;;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: #ff8000;"&gt;public&lt;/span&gt; &lt;span style="color: #e5e5e5;"&gt;ContactController&lt;/span&gt;()&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; : &lt;span style="color: #ff8000;"&gt;this&lt;/span&gt;(&lt;span style="color: #ff8000;"&gt;new&lt;/span&gt; &lt;span style="color: yellow;"&gt;EntityContactManagerRepository&lt;/span&gt;())&lt;/p&gt;&lt;p style="margin: 0px;"&gt;{ }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: #ff8000;"&gt;public&lt;/span&gt; &lt;span style="color: #e5e5e5;"&gt;ContactController&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;IContactManagerRepository&lt;/span&gt; &lt;span style="color: #e5e5e5;"&gt;repository&lt;/span&gt;)&lt;/p&gt;&lt;p style="margin: 0px;"&gt;{&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #e5e5e5;"&gt;_repository&lt;/span&gt; = &lt;span style="color: #e5e5e5;"&gt;repository&lt;/span&gt;;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;}&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-8069729717216608326?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/8069729717216608326/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=8069729717216608326' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/8069729717216608326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/8069729717216608326'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2009/03/constructor-dependency-injection-design.html' title='Constructor Dependency Injection Design Pattern'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-2391493179469264273</id><published>2009-03-17T17:51:00.000-07:00</published><updated>2009-03-17T17:53:31.710-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Perl Design Patterns</title><content type='html'>&lt;p&gt;
Lookin' at Design Patterns for Perl.  Here's the &lt;a href="http://perldesignpatterns.com/perldesignpatterns.html"&gt;link&lt;/a&gt;.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-2391493179469264273?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/2391493179469264273/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=2391493179469264273' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/2391493179469264273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/2391493179469264273'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2009/03/perl-design-patterns.html' title='Perl Design Patterns'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-574382949394663146</id><published>2009-03-03T15:49:00.000-08:00</published><updated>2009-03-03T16:02:30.165-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><title type='text'>Configuring Job Property Notifications for Sql Server 2005</title><content type='html'>&lt;p&gt;
I spent so much time figuring out how to configure Notifications in SQL Server 2005 job.  One of the properties that can be enabled in a Job is "Notifications", when the job succeeds or fails or completes.  I wanted to know when the Job I setup fails and so I set it to my E-mail as well as "When the job fails".  But one thing about SQL Server Management Studio is that it doesn't tell you if you're lacking some more configurations.  I wished it prompted me that I needed to do some other settings for it to work.  Anyways, below I just wanted to outline what I did to make this work.
&lt;/p&gt;
&lt;p&gt;
1.  Setup Database Mail.  Follow &lt;a href="http://www.mssqltips.com/tip.asp?tip=1100"&gt;this&lt;/a&gt;. &lt;br /&gt;
2.  Setup a Sql Server Agent Operator.  Follow &lt;a href="http://www.ideaexcursion.com/2009/01/05/configuring-sql-server-agent-operators/"&gt;this&lt;/a&gt;. &lt;br /&gt;
3.  Now Restart SQL Server Agent.
&lt;/p&gt;
&lt;p&gt;
Thank you for those who wrote the posts I followed above.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-574382949394663146?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/574382949394663146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=574382949394663146' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/574382949394663146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/574382949394663146'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2009/03/configuring-job-property-notifications.html' title='Configuring Job Property Notifications for Sql Server 2005'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-2808511976467294292</id><published>2009-02-10T14:50:00.000-08:00</published><updated>2009-08-21T14:28:09.229-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><title type='text'>Update table with data from another table in SQL Server</title><content type='html'>&lt;p&gt;
Ok, pretty much self explanatory
&lt;/p&gt;
&lt;div id="snippet"&gt;
&lt;font color="#ffcc00"&gt;UPDATE&lt;/font&gt;&amp;nbsp;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;table1&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ffcc00"&gt;SET&lt;/font&gt;&amp;nbsp;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;table1&lt;/font&gt;&lt;/span&gt;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;.&lt;/font&gt;&lt;/span&gt;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;col1&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;font color="#ff6600"&gt;=&lt;/font&gt;&amp;nbsp;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;table2&lt;/font&gt;&lt;/span&gt;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;.&lt;/font&gt;&lt;/span&gt;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;col1&lt;/font&gt;&lt;/span&gt;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;,&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;table1&lt;/font&gt;&lt;/span&gt;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;.&lt;/font&gt;&lt;/span&gt;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;col2&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;font color="#ff6600"&gt;=&lt;/font&gt;&amp;nbsp;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;table2&lt;/font&gt;&lt;/span&gt;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;.&lt;/font&gt;&lt;/span&gt;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;col2&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;
&lt;font color="#ffcc00"&gt;FROM&lt;/font&gt;&amp;nbsp;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;table1&lt;/font&gt;&lt;/span&gt;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;,&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;table2&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;
&lt;font color="#ffcc00"&gt;WHERE&lt;/font&gt;&amp;nbsp;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;table2&lt;/font&gt;&lt;/span&gt;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;.&lt;/font&gt;&lt;/span&gt;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;col&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;font color="#ff6600"&gt;=&lt;/font&gt;&amp;nbsp;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;table1&lt;/font&gt;&lt;/span&gt;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;.&lt;/font&gt;&lt;/span&gt;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;col&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;

&lt;/div&gt;
Or using alias:
&lt;div id="snippet"&gt;

&lt;font color="#ffcc00"&gt;UPDATE&lt;/font&gt;&amp;nbsp;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;A1&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ffcc00"&gt;SET&lt;/font&gt;&amp;nbsp;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;A1&lt;/font&gt;&lt;/span&gt;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;.&lt;/font&gt;&lt;/span&gt;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;col1&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;font color="#ff6600"&gt;=&lt;/font&gt;&amp;nbsp;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;A2&lt;/font&gt;&lt;/span&gt;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;.&lt;/font&gt;&lt;/span&gt;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;col1&lt;/font&gt;&lt;/span&gt;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;,&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;A1&lt;/font&gt;&lt;/span&gt;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;.&lt;/font&gt;&lt;/span&gt;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;col2&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;font color="#ff6600"&gt;=&lt;/font&gt;&amp;nbsp;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;A2&lt;/font&gt;&lt;/span&gt;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;.&lt;/font&gt;&lt;/span&gt;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;col2&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;
&lt;font color="#ffcc00"&gt;FROM&lt;/font&gt;&amp;nbsp;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;table1&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;A1&lt;/font&gt;&lt;/span&gt;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;,&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;table2&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;A2&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;
&lt;font color="#ffcc00"&gt;WHERE&lt;/font&gt;&amp;nbsp;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;A2&lt;/font&gt;&lt;/span&gt;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;.&lt;/font&gt;&lt;/span&gt;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;col&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;font color="#ff6600"&gt;=&lt;/font&gt;&amp;nbsp;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;A1&lt;/font&gt;&lt;/span&gt;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;.&lt;/font&gt;&lt;/span&gt;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;col&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;


&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-2808511976467294292?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/2808511976467294292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=2808511976467294292' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/2808511976467294292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/2808511976467294292'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2009/02/update-table-with-data-from-another.html' title='Update table with data from another table in SQL Server'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-8487754886830923871</id><published>2009-02-06T13:37:00.000-08:00</published><updated>2009-02-06T13:40:44.808-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><title type='text'>Best Practices for Query Optimization</title><content type='html'>&lt;p&gt;
I'd like to take note of few tips from &lt;a href="http://blog.sqlauthority.com/2009/01/20/sql-server-rules-for-optimizining-any-query-best-practices-for-query-optimization/"&gt;Pinal Dave&lt;/a&gt;.  Certainly good reminders when creating queries.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-8487754886830923871?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/8487754886830923871/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=8487754886830923871' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/8487754886830923871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/8487754886830923871'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2009/02/best-practices-for-query-optimization.html' title='Best Practices for Query Optimization'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-4485413628143119753</id><published>2009-02-05T14:47:00.000-08:00</published><updated>2009-02-05T15:23:42.548-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Configure Module::Starter::PBP in Windows XP</title><content type='html'>&lt;p&gt;
I decided to use Module::Starter::PBP when creating modules.  But I got this error the first time:
&lt;div id='snippet'&gt;
C:\dev\perl\modules&gt;module-starter --module=Dir::Walk&lt;br /&gt;
The Module::Starter::PBP template: t/C:./Documents
isn't in the template directory (C:\Documents and Settings\user\.module-starter\PBP)
&lt;/div&gt;
Some quirky stuffs in Windows when using this module.  The initial configuration as outlined in &lt;a href="http://search.cpan.org/~dconway/Module-Starter-PBP-v0.0.3/lib/Module/Starter/PBP.pm"&gt;cpan&lt;/a&gt; doesn't work.  You need to tweak your config a little bit to accomodate this.  It's not really the module's fault, but more on the way Windows handles directories, you know, spaces and backslashes, which is really a constant annoyance when you are programming perl in Windows.  Anyway, here's what I did to make it work.
&lt;br /&gt;&lt;br /&gt;
1.  Move &lt;span style="font-weight:bold;"&gt;C:\Documents and Settings\user\.module-starter\PBP&lt;/span&gt; to another directory, in my case I moved it to &lt;span style="font-weight:bold;"&gt;C:\dev\perl\modules\templates\PBP&lt;/span&gt;.&lt;br /&gt;
(It's the spaces in 'Documents and Settings' that's causing the issue).
&lt;br /&gt;&lt;br /&gt;
2.  Modify &lt;span style="font-weight:bold;"&gt;C:\Documents and Settings\user\.module-starter\config&lt;/span&gt; as follows: (Note that I changed the backslashes to forwardslashes).
&lt;/p&gt;
&lt;div id='snippet'&gt;
author:  Sam Dela Cruz&lt;br /&gt;
email:   myemail@address.com&lt;br /&gt;
builder: ExtUtils::MakeMaker Module::Build&lt;br /&gt;
plugins: Module::Starter::PBP&lt;br /&gt;
template_dir: C:/dev/perl/modules/templates/PBP&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-4485413628143119753?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/4485413628143119753/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=4485413628143119753' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/4485413628143119753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/4485413628143119753'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2009/02/configure-modulestarterpbp-in-windows.html' title='Configure Module::Starter::PBP in Windows XP'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-877064220742602864</id><published>2009-01-27T17:58:00.001-08:00</published><updated>2009-01-28T16:01:38.068-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wala lang'/><title type='text'>Plugin to Bookmark a Page in Your PDF files</title><content type='html'>&lt;p&gt;
Books in PDF formats are very popular nowadays.  But annoying thing is that the Adobe Reader which is the standard PDF reader at work doesn't come with a bookmark functionality.  I just need a simple bookmark like those good old paper bookmarks.  Well I found one that does the job, a plugin from this &lt;a href="http://www.aldenta.com/2006/09/15/plugin-bookmark-a-page-in-your-pdf/"&gt;post&lt;/a&gt;.  Thank you very much.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-877064220742602864?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/877064220742602864/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=877064220742602864' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/877064220742602864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/877064220742602864'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2009/01/plugin-to-bookmark-page-in-your-pdf.html' title='Plugin to Bookmark a Page in Your PDF files'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-5209125162241609682</id><published>2009-01-23T16:29:00.000-08:00</published><updated>2009-01-23T16:41:15.635-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><title type='text'>How to make a quick copy of SQL Server database table</title><content type='html'>&lt;p&gt;
Here's how to create a quick copy of a database table including the data in SQL Server.
&lt;/p&gt;
&lt;div id='snippet'&gt;
&lt;font face="monospace"&gt;
&lt;font color="#ff6600"&gt;select&lt;/font&gt;&amp;nbsp;* &lt;font color="#ffa500"&gt;into&lt;/font&gt;&amp;nbsp;[dbo].[TableName_Bak] &lt;font color="#ffa500"&gt;from&lt;/font&gt;&amp;nbsp;[dbo].[TableName]
&lt;/font&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-5209125162241609682?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/5209125162241609682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=5209125162241609682' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/5209125162241609682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/5209125162241609682'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2009/01/how-to-make-quick-copy-of-sql-server.html' title='How to make a quick copy of SQL Server database table'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-5430374616759407673</id><published>2009-01-07T23:41:00.000-08:00</published><updated>2009-01-08T00:39:19.975-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='perl6'/><title type='text'>My very first perl6 program</title><content type='html'>&lt;p&gt;
I know, I know, I promised to do some perl6 hacking over the holidays, but as it turned out, I didn't have the time to do it.  Having 2 kids in the family and tons of activities lined up over the holidays didn't really gave me much room to doing other things like hacking with my computer.  Anyways, another thing I did over the holidays was... tada I got a G1.  And I really, really love it!  Absolutely amazing piece of work.  The downside is, it's going to hurt on our monthly utility bills.  So my wife and I were thinking cutting down our cost.  We are thinking of giving up our landline, since we both have wireless anyway.  But of course wireless minutes aren't cheap either, so we gotta figure out who are actually calling us and who do we call from our landline. 
&lt;/p&gt;
&lt;p&gt;
Well, that can be done very easily.  Since we are subscribed to comcast, incoming and outgoing phone calls are easily downloadable from their website.  And so, this is a good opportunity for me to use the perfect tool for the job.  Perl.  But this time, I want to use Perl6.  And here's what I came up with.
&lt;/p&gt;
&lt;div id='snippet'&gt;
&lt;font color="#ff80ff"&gt;#!/usr/bin/perl6&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;%number_of&lt;/font&gt;;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$file&lt;/font&gt;&amp;nbsp;= &lt;font color="#ff80ff"&gt;&amp;quot;CallRecords.txt&amp;quot;&lt;/font&gt;;&lt;br /&gt;
&lt;font color="#ff6600"&gt;if&lt;/font&gt;&amp;nbsp;(&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$fh&lt;/font&gt;&amp;nbsp;= &lt;font color="#ff6600"&gt;open&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$file&lt;/font&gt;, :&lt;font color="#ff80ff"&gt;r&lt;/font&gt;) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;for&lt;/font&gt;&amp;nbsp;=&lt;font color="#00ffff"&gt;$fh&lt;/font&gt;&amp;nbsp;-&amp;gt; &lt;font color="#00ffff"&gt;$line&lt;/font&gt;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;next&lt;/font&gt;&amp;nbsp;&lt;font color="#ff6600"&gt;if&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$line&lt;/font&gt;&amp;nbsp;!~~ &lt;font color="#ff6600"&gt;/&lt;/font&gt;&lt;font color="#ff80ff"&gt;Answered&lt;/font&gt;&lt;font color="#ff6600"&gt;/&lt;/font&gt;&amp;nbsp;&lt;font color="#ff6600"&gt;or&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$line&lt;/font&gt;&amp;nbsp;~~ &lt;font color="#ff6600"&gt;/&lt;/font&gt;&lt;font color="#ff80ff"&gt;Private&lt;/font&gt;&lt;font color="#ff6600"&gt;/&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;$name&lt;/font&gt;, &lt;font color="#00ffff"&gt;$phone&lt;/font&gt;) = &lt;font color="#00ffff"&gt;$line&lt;/font&gt;.&lt;font color="#ff6600"&gt;split&lt;/font&gt;(&lt;font color="#ff80ff"&gt;&amp;quot;\t&amp;quot;&lt;/font&gt;)&lt;font color="#ff80ff"&gt;&amp;lt;2, 3&amp;gt;&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;%number_of&lt;/font&gt;{&lt;font color="#00ffff"&gt;$name&lt;/font&gt;.&lt;font color="#ff6600"&gt;uc&lt;/font&gt;} = &lt;font color="#00ffff"&gt;$phone&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
}&amp;nbsp;&lt;font color="#ff6600"&gt;else&lt;/font&gt;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;say&lt;/font&gt;&amp;nbsp;&lt;font color="#ff80ff"&gt;&amp;quot;Could not open &lt;/font&gt;&lt;font color="#00ffff"&gt;$file&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;for&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;%number_of&lt;/font&gt;.&lt;font color="#ff6600"&gt;sort&lt;/font&gt;.&lt;font color="#ff6600"&gt;kv&lt;/font&gt;&amp;nbsp;-&amp;gt; &lt;font color="#00ffff"&gt;$name&lt;/font&gt;, &lt;font color="#00ffff"&gt;$phone&lt;/font&gt;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;say&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$name&lt;/font&gt;&amp;nbsp;~ &lt;font color="#ff80ff"&gt;' '&lt;/font&gt;&amp;nbsp;~ &lt;font color="#00ffff"&gt;$phone&lt;/font&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;/div&gt;
&lt;p&gt;
Here's the output:
&lt;/p&gt;
&lt;pre&gt;
0 ABXXON ROLLY  (408) 386-XXXX
1 AGUXXAR R &amp; J (408) 251-XXXX
2 AGUXXAR RONNIE        (408) 768-XXXX
3 ALMXXEN FAMILY        (408) 997-XXXX
4 XXER FRATERNAL        (408) 984-XXXX
5 AQXXNO GREG   (408) 297-XXXX
6 AQXXNO GREG R (408) 297-XXXX
7 ARGONCXXLO S  (408) 937-XXXX
8 ARGONCXXLO SUSA       (408) 937-XXXX
9 ASXXAS DAISY  (831) 240-XXXX
10 BALIXXIT VENTUR      (408) 251-XXXX
11 XXNK OF AMERICA      (866) 512-XXXX
12 BEXXER LIVING I      (408) 561-XXXX
13 BOUXXER      CO      (303) 786-XXXX
14 CALIFOXXIA EAR       (650) 494-XXXX
15 CAMXXHO GEMMA        (408) 849-XXXX
...
&lt;/pre&gt;
&lt;p&gt;
&lt;span style="font-style:italic;"&gt;(I replaced some letters and numbers with X's in this post for security purposes.)&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Oh my goodness!  What an elegant piece of code that is.  And it didn't take me a while to figure it out.  I simply read tutorials from &lt;a href="http://www.szabgab.com/talks/perl6/index.html"&gt;Gabor&lt;/a&gt; and &lt;a href="http://www.programmersheaven.com/2/Perl6-FAQ"&gt;Jonathan&lt;/a&gt;.  I tell you, I can't believe the expressiveness of the latest and greatest perl.  I have barely scratched the surface, it's got tons of other amazing stuffs! Try it for yourself.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-5430374616759407673?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/5430374616759407673/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=5430374616759407673' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/5430374616759407673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/5430374616759407673'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2009/01/my-very-first-perl6-program.html' title='My very first perl6 program'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-8687127644959397282</id><published>2009-01-05T12:04:00.000-08:00</published><updated>2009-02-03T18:25:25.541-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='safari'/><title type='text'>Safari Login</title><content type='html'>&lt;p&gt;
My little secret Safari &lt;a href="https://mill1.sjlibrary.org/validate/http%3A%2F%2F0-proquest.safaribooksonline.com.mill1.sjlibrary.org%3A80%2F%3Fuicode%3Dcalifa"&gt;Login&lt;/a&gt;.  Just for me to see if I can access Safari from my 
&lt;a href="http://www.amazon.com/gp/product/B001JT1U1E?ie=UTF8&amp;tag=mylifiname-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B001JT1U1E"&gt;T-Mobile G1 with Google Phone, Black (T-Mobile)&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=mylifiname-20&amp;l=as2&amp;o=1&amp;a=B001JT1U1E" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;.
&lt;/p&gt;
&lt;p&gt;Yey! It's working, now I can read books from my G1.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-8687127644959397282?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/8687127644959397282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=8687127644959397282' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/8687127644959397282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/8687127644959397282'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2009/01/safari-login.html' title='Safari Login'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-4461703118064063454</id><published>2009-01-04T16:41:00.000-08:00</published><updated>2010-03-12T17:11:03.375-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='version control'/><category scheme='http://www.blogger.com/atom/ns#' term='git'/><category scheme='http://www.blogger.com/atom/ns#' term='github'/><title type='text'>Project setup using GitHub</title><content type='html'>&lt;p&gt;Just taking notes on how to setup project in &lt;a href="http://github.com"&gt;GitHub&lt;/a&gt;.  These notes are from &lt;a href="http://www.gitcasts.com/"&gt;GitCasts&lt;/a&gt; and &lt;a href="http://github.com/guides/home"&gt;GitHub Guides&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-weight:bold;"&gt;1.  Setup, Initialization and Cloning&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Global setup, these apply to all projects on the system:
&lt;/p&gt;
&lt;pre&gt;
git config --global user.name 'User Name'
git config --global user.email username@gmail.com
git config --global color.status auto
git config --global color.branch auto
git config --global core.autocrlf true
&lt;/pre&gt;
&lt;p&gt;
To save project in git repository:&lt;br /&gt;
1.  First, create the project.&lt;br /&gt;
2.  cd to the project, then do the following:&lt;br /&gt;
&lt;/p&gt;
&lt;pre&gt;
git init
git add .
git ls-files --cache
git commit -m "Initial Commit"
git status
git log
&lt;/pre&gt;
&lt;p&gt;To clone existing code in the git repo:&lt;/p&gt;
&lt;pre&gt;
git clone git://github.com/sammydc/publictalkscheduler.git
&lt;/pre&gt;
&lt;p&gt;If it's your own repo, use this instead:&lt;/p&gt;
&lt;pre&gt;
git clone git@github.com:sammydc/publictalkscheduler.git 
&lt;/pre&gt;
&lt;p&gt;&lt;span style="font-weight:bold;"&gt;2.  Normal Workflow&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
Create .gitignore file, this is to specify which files we don't want to add to git, like as follows:
&lt;/p&gt;
&lt;pre&gt;
log/*.log
tmp/**/*
&lt;/pre&gt;
&lt;p&gt;Editing files and commiting to repo:&lt;/p&gt;
&lt;pre&gt;
git status
git add [filename]
git commit
OR:
git commit -a -m 'My Next Commit' #automatically add and commit all changed files
git ls-files --stage
git rm public/robots.txt #remove a file, git not to track the file anymore
git status
git commit -m 'robots file removed'
&lt;/pre&gt;
&lt;p&gt;Now push to remote repo:&lt;/p&gt;
&lt;pre&gt;
git remote add origin git@github.com:sammydc/publictalkscheduler.git
git push origin master
&lt;/pre&gt;
&lt;p&gt;
Take note that if you get the error message:
&lt;/p&gt;
&lt;pre&gt;
fatal: protocol error: expected sha/ref
&lt;/pre&gt;
&lt;p&gt;
You need to make sure that .git/config [remote "origin"] url entry is in the form of
&lt;/p&gt;
&lt;pre&gt;
git@github.com:sammydc/publictalkscheduler.git
&lt;/pre&gt;
&lt;p&gt;When working on another machine, to get latest changes:&lt;/p&gt;
&lt;pre&gt;
git pull
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-4461703118064063454?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/4461703118064063454/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=4461703118064063454' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/4461703118064063454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/4461703118064063454'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2009/01/project-setup-using-github.html' title='Project setup using GitHub'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-3759882047976515554</id><published>2008-12-17T18:22:00.000-08:00</published><updated>2008-12-17T18:30:22.096-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><category scheme='http://www.blogger.com/atom/ns#' term='perl6'/><title type='text'>VIM syntax highlighting for Perl6</title><content type='html'>&lt;p&gt;
Just want to take note on what I did to enable syntax highlighting in VIM for Perl6.  I followed this excellent &lt;a href="http://use.perl.org/~Ovid/journal/37698"&gt;procedure&lt;/a&gt;.  Thanks Ovid.
&lt;/p&gt;
&lt;p&gt;
Then if you are using &lt;a href="http://www.vim.org/scripts/script.php?script_id=1218"&gt;NERD_commenter.vim&lt;/a&gt; plugin like I do.  This is the best commenter for me by the way.  You need to add another file type for perl6, as follows:
&lt;/p&gt;
&lt;pre&gt;
elseif a:filetype == "perl6"
    call s:MapDelimiters('#', '')
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-3759882047976515554?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/3759882047976515554/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=3759882047976515554' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/3759882047976515554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/3759882047976515554'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2008/12/vim-syntax-highlighting-for-perl6.html' title='VIM syntax highlighting for Perl6'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-2740569260875753377</id><published>2008-12-17T13:44:00.000-08:00</published><updated>2009-02-20T11:12:22.586-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rakudo'/><category scheme='http://www.blogger.com/atom/ns#' term='perl6'/><title type='text'>Want to try Perl6?  Here's how to get started in Windows.</title><content type='html'>&lt;p&gt;
02/19/2009: UPDATED for Parrot-0.9.1
&lt;/p&gt;
&lt;p&gt;
I have my eyes on the next version of Perl.  Perl6.  I always wanted to somehow try it but never get the chance.  Now that I'm preparing for a long holiday due to company shutdown, I want to play with it.  I choose &lt;a href="http://www.rakudo.org/"&gt;Rakudo Perl&lt;/a&gt;, which is an implementation of Perl6 targetting the &lt;a href="http://www.parrot.org/"&gt;Parrot virtual machine&lt;/a&gt;.  As you already know, Perl6 is a set of specifications on this language.  One of it's implementations is Rakudo.
&lt;/p&gt;

&lt;p&gt;
Anyway, here's a procedure on how to install Perl6 on Windows XP.  Rakudo Perl (Perl6 on Parrot), that is...&lt;br /&gt;
&lt;span style="font-weight:bold;"&gt;1.&lt;/span&gt;  Download latest Windows build of Parrot and parrot-rakudo addon from &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=211372"&gt;here&lt;/a&gt;.  Total of 2 executables.&lt;br /&gt;
&lt;span style="font-weight:bold;"&gt;2.&lt;/span&gt;  Install and take all defaults.&lt;br /&gt;
&lt;span style="font-weight:bold;"&gt;3.&lt;/span&gt;  Now do a smoke testing of the install:&lt;br /&gt;
&lt;pre&gt;
C:\parrot-0.9.1&gt;perl smoke_languages.pl
&lt;/pre&gt;
&lt;p&gt;
If returns ok, then congratulations, your rakudo install is successful.  If not, then proceed with the rest of this procedure.
&lt;/p&gt;
&lt;span style="font-weight:bold;"&gt;4.&lt;/span&gt;  Go to C:\parrot-0.9.1\bin, create a file and call it perl6.cmd. Have it contain the following:
&lt;/p&gt;

&lt;div id='snippet'&gt;
&lt;font color="#ffcc00"&gt;@echo&lt;/font&gt;&lt;font color="#ff6600"&gt;&amp;nbsp;off&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ffcc00"&gt;rem&lt;/font&gt;&lt;font color="#66ff00"&gt;&amp;nbsp;adjust the path below to suit your environment&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ffcc00"&gt;set&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;nbsp;PARROT_ROOTDIR&lt;/font&gt;&lt;font color="#ff6600"&gt;=&lt;/font&gt;c:\parrot-0.9.1&lt;br /&gt;
&lt;font color="#00ffff"&gt;%PARROT_ROOTDIR%&lt;/font&gt;\bin\parrot.exe &lt;font color="#00ffff"&gt;%PARROT_ROOTDIR%&lt;/font&gt;\lib\parrot\languages\rakudo\perl6.pbc &lt;font color="#00ffff"&gt;%*&lt;/font&gt;&lt;br /&gt;
&lt;/div&gt;

&lt;p&gt;
&lt;span style="font-weight:bold;"&gt;5.&lt;/span&gt;  Rename C:\parrot-0.9.1\bin\perl6.exe to perl6.ex_.  Just to prevent .exe from running.
&lt;/p&gt;

&lt;p&gt;
Update 02/19/2009, I'm still using the workaround above because when I attempted to use the perl6.exe that came with the rakudo addon, I got this error message:
&lt;/p&gt;
&lt;pre&gt;
C:\dev\perl6&gt;perl6 hello.pl
"load_bytecode" couldn't find file 'PCT.pbc'
current instr.: '' pc 405 (src\classes\Object.pir:20)
called from Sub 'parrot;Perl6;Compiler;main' pc -1 ((unknown file):-1)
&lt;/pre&gt;
&lt;p&gt;
Since this is a work in progress, I assume that these will all be fixed in the next release.
&lt;/p&gt;

&lt;p&gt;
Now the moment of truth...
&lt;/p&gt;
&lt;pre&gt;
C:\dev\perl6&gt;perl6 hello.pl
Hello World!
&lt;/pre&gt;
&lt;p&gt;
Hurray!  Success.  Now I can play with perl6.  I plan on looking and writing some test that I can probably contribute back.  Thank you so much to you all perl6 team.
&lt;/p&gt;
&lt;p&gt;
By the way, just so you know, this is just a workaround.  In the &lt;a href="http://www.perlmonks.net/?node_id=659584"&gt;procedure&lt;/a&gt; that I found, perl6.exe can be built using a utility called pbc_to_exe, but it didn't work for me.  So instead I followed &lt;a href="http://rt.perl.org/rt3//Public/Bug/Display.html?id=60098"&gt;this&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
In the future, my wish is to have a one-click-installer for Windows of everything Rakudo.  Meaning, an installer that will install Parrot, then perl6.exe or create perl6.cmd and set the environment variable.  Which also can handle upgrading to latest build.  That would make it easier for people to install and use it.  Thanks.
&lt;/p&gt;
&lt;p&gt;
Update 02/19/2009, in parrot-0.9.1, path environment variable is automatically set during install.  Then about the issue above, I logged a new ticket in &lt;a href="https://trac.parrot.org/parrot/ticket/360"&gt;parrot&lt;/a&gt; regarding this.
&lt;/p&gt;
&lt;p&gt;
Update 02/20/2009, speedy answer from the parrot team, ticket resolved.  So for V.0.9.1, you don't need the workaround outlined above.  Thanks a lot parrot guys!
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-2740569260875753377?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/2740569260875753377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=2740569260875753377' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/2740569260875753377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/2740569260875753377'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2008/12/want-to-try-perl6-heres-how-to-get.html' title='Want to try Perl6?  Here&apos;s how to get started in Windows.'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-2498117513474183599</id><published>2008-12-09T13:41:00.000-08:00</published><updated>2009-02-03T18:24:31.955-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Free book:  Higher Order Perl</title><content type='html'>&lt;p&gt;
This is one book I always wanted to have.  Now, the author, Mark-Jason Dominus is giving it for free.  Fantastic.  Here's where you can download: &lt;a href="http://hop.perl.plover.com/book/"&gt;http://hop.perl.plover.com/book/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Thank you very much, Mark-Jason.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-2498117513474183599?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/2498117513474183599/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=2498117513474183599' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/2498117513474183599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/2498117513474183599'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2008/12/free-book-higher-order-perl.html' title='Free book:  Higher Order Perl'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-1715189082285420508</id><published>2008-11-26T18:57:00.000-08:00</published><updated>2008-11-26T19:09:25.508-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='ruby on rails'/><title type='text'>Install sqlite3-ruby for Rails on Windows XP</title><content type='html'>&lt;p&gt;
A little bit of trouble when installing sqlite3-ruby on Windows.  I get this error message:
&lt;/p&gt;
&lt;pre&gt;
C:\ruby\bin&gt;gem install sqlite3-ruby
Building native extensions.  This could take a while...
ERROR:  Error installing sqlite3-ruby:
        ERROR: Failed to build gem native extension.

C:/ruby/bin/ruby.exe extconf.rb install sqlite3-ruby
checking for fdatasync() in rt.lib... no
checking for sqlite3.h... no

nmake

Microsoft (R) Program Maintenance Utility   Version 1.50
Copyright (c) Microsoft Corp 1988-94. All rights reserved.

NMAKE : fatal error U1073: don't know how to make 'ruby.h'
Stop.


Gem files will remain installed in C:/ruby/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4 for inspection.

Results logged to C:/ruby/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4/ext/sqlite3_api/gem_make.out
&lt;/pre&gt;
&lt;p&gt;
Here are the steps I followed to install it:&lt;br /&gt;
1.  Download sqlite-3 and sqlitedll-3 from &lt;a href="http://www.sqlite.org/download.html"&gt;sqlite download&lt;/a&gt;.&lt;br /&gt;
2.  Unzip the files to c:\ruby\bin.  Total of 3 files, sqlite3.exe, sqlite3.dll, sqlite3.def.&lt;br /&gt;
3.  In command line: gem install --version 1.2.3 sqlite3-ruby&lt;br /&gt;
&lt;pre&gt;
C:\ruby\bin&gt;gem install --version 1.2.3 sqlite3-ruby
Successfully installed sqlite3-ruby-1.2.3-x86-mswin32
1 gem installed
Installing ri documentation for sqlite3-ruby-1.2.3-x86-mswin32...
Installing RDoc documentation for sqlite3-ruby-1.2.3-x86-mswin32...
&lt;/pre&gt;

Enjoy...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-1715189082285420508?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/1715189082285420508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=1715189082285420508' title='19 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/1715189082285420508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/1715189082285420508'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2008/11/install-sqlite3-ruby-for-rails-on.html' title='Install sqlite3-ruby for Rails on Windows XP'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>19</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-3086391447067914137</id><published>2008-11-26T12:21:00.000-08:00</published><updated>2008-11-26T12:27:14.318-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Nice Introduction to REST</title><content type='html'>&lt;p&gt;
I'd like to take note of this &lt;a href="http://bitworking.org/news/373/An-Introduction-to-REST"&gt;link&lt;/a&gt; to a video by &lt;a href="http://bitworking.org/news/archives/"&gt;Joe Gregorio&lt;/a&gt;.  It's a nice introduction to REST architectural style.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-3086391447067914137?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/3086391447067914137/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=3086391447067914137' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/3086391447067914137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/3086391447067914137'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2008/11/nice-introduction-to-rest.html' title='Nice Introduction to REST'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-6162224023863932553</id><published>2008-11-26T11:42:00.000-08:00</published><updated>2008-11-26T11:57:35.113-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><title type='text'>jQuery notes</title><content type='html'>&lt;p&gt;
Looking into jQuery.  Some of my notes as I go...
&lt;/p&gt;
&lt;p&gt;
It is interesting to note that for the $() function, it removes the need to do a for loop to access a group of elements since whatever put inside the parentheses will be looped through automatically and stored as a jQuery object.
&lt;/p&gt;
&lt;p&gt;
Common examples on using the $() factory function:
&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
 &lt;tr&gt;
  &lt;th&gt;Element&lt;/th&gt;
  &lt;th&gt;Sample jQuery&lt;/th&gt;
  &lt;th&gt;Meaning&lt;/th&gt;
 &lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
 &lt;tr&gt;
  &lt;td&gt;tag name&lt;/td&gt;
  &lt;td&gt;$('p')&lt;/td&gt;
  &lt;td&gt;gets all paragraphs in the document.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;id&lt;/td&gt;
  &lt;td&gt;$('#some-id')&lt;/td&gt;
  &lt;td&gt;gets the single element in the document that has the corresponding some-id ID.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;class&lt;/td&gt;
  &lt;td&gt;$('.some-class')&lt;/td&gt;
  &lt;td&gt;gets all elements in the document that have a class of some-class.&lt;/td&gt;
 &lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-6162224023863932553?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/6162224023863932553/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=6162224023863932553' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/6162224023863932553'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/6162224023863932553'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2008/11/jquery-notes.html' title='jQuery notes'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-812407899663143413</id><published>2008-11-20T10:31:00.000-08:00</published><updated>2008-11-20T11:11:55.737-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wala lang'/><title type='text'>In search of... Latin Phrases</title><content type='html'>&lt;p&gt;
We use common phrases that are really not english but are well understood.  Where do those come from really?  And what do they actually mean?  Next time if you encounter "et al.", "e.g.", "carpe diem", "alter ego", "alma mater", "de facto", "pro bono", they are what's called 'Latin Phrases'.  Some of them are really very interesting.  I listed some phrases that are very common.
&lt;/p&gt;
&lt;p&gt;
If you want to access more, look at &lt;a href="http://en.wikipedia.org/wiki/List_of_Latin_phrases_(full)"&gt;wikipedia&lt;/a&gt;.
&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
 &lt;tr&gt;
  &lt;th&gt;Latin Phrase&lt;/th&gt;
  &lt;th&gt;Literal Translation&lt;/th&gt;
  &lt;th&gt;Meaning&lt;/th&gt;
 &lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
 &lt;tr&gt;
  &lt;td&gt;ad hoc&lt;/td&gt;
  &lt;td&gt;to this&lt;/td&gt;
  &lt;td&gt;Generally means "for this", in the sense of improvised on the spot or designed for only a specific, immediate purpose.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;ad interim&lt;/td&gt;
  &lt;td&gt;for the meantime&lt;/td&gt;
  &lt;td&gt;As in the term "chargé d'affaires ad interim" for a diplomatic officer who acts in place of an ambassador.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;affidavit&lt;/td&gt;
  &lt;td&gt;he asserted&lt;/td&gt;
  &lt;td&gt;A legal term from Medieval Latin referring to a sworn statement. From fides, "faith".&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;alma mater&lt;/td&gt;
  &lt;td&gt;nourishing mother&lt;/td&gt;
  &lt;td&gt;Term used for the university one attends or has attended. Another university term, matriculation, is also derived from mater. The term suggests that the students are "fed" knowledge and taken care of by the university. The term is also used for a university's traditional school anthem.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;bona fide&lt;/td&gt;
  &lt;td&gt;in good faith&lt;/td&gt;
  &lt;td&gt;In other words, "well-intentioned", "fairly". In modern contexts, often has connotations of "genuinely" or "sincerely". Bona fides is not the plural (which would be bonis fidebus), but the nominative, and means simply "good faith". Opposite of mala fide.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;carpe diem&lt;/td&gt;
  &lt;td&gt;seize the day&lt;/td&gt;
  &lt;td&gt;An exhortation to live for today. From Horace, Odes I, 11.8. By far the most common translation is "seize the day," though carpere normally means something more like "pluck," and the allusion here is to picking flowers. The phrase collige virgo rosas has a similar sense.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;caveat emptor&lt;/td&gt;
  &lt;td&gt;let the buyer beware&lt;/td&gt;
  &lt;td&gt;The purchaser is responsible for checking whether the goods suit his need.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;circa&lt;/td&gt;
  &lt;td&gt;around&lt;/td&gt;
  &lt;td&gt;In the sense of "approximately" or "about". Usually used of a date.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;de facto&lt;/td&gt;
  &lt;td&gt;in fact&lt;/td&gt;
  &lt;td&gt;Said of something that is the actual state of affairs, in contrast to something's legal or official standing, which is described as de jure. De facto refers to the "way things really are" rather than what is "officially" presented as the fact.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;e.g.&lt;/td&gt;
  &lt;td&gt;'for the sake of example'&lt;/td&gt;
  &lt;td&gt;Abbreviation for exempli gratia, below.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;et al.&lt;/td&gt;
  &lt;td&gt;'and others'&lt;/td&gt;
  &lt;td&gt;Used similarly to et cetera ('and the rest'), to stand for a list of names. Alii is actually masculine, so it can be used for men, or groups of men and women; the feminine, et aliae (or et aliæ), is appropriate when the 'others' are all female. Et alia is neuter plural and thus properly used only for inanimate, genderless objects, but some use it as a gender-neutral alternative.[4] APA style uses et al. if the work cited was written by more than two authors; MLA style uses et al. for more than three authors.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;habeas corpus&lt;/td&gt;
  &lt;td&gt;having the body&lt;/td&gt;
  &lt;td&gt;A legal term from the 14th century or earlier. Refers to a number of legal writs to bring a person before a court or judge, most commonly habeas corpus ad subjiciendum (you may have the body to bring up). Commonly used as the general term for a prisoner's legal right to challenge the legality of their detention.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;in absentia&lt;/td&gt;
  &lt;td&gt;in the absence&lt;/td&gt;
  &lt;td&gt;Used in a number of situations, such as in a trial carried out in the absence of the accused.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;modus operandi&lt;/td&gt;
  &lt;td&gt;method of operating&lt;/td&gt;
  &lt;td&gt;Usually used to describe a criminal's methods.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;per annum&lt;/td&gt;
  &lt;td&gt;"through a year"&lt;/td&gt;
  &lt;td&gt;Thus, "yearly"â€”occurring every year.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;per capita&lt;/td&gt;
  &lt;td&gt;"through the heads"&lt;/td&gt;
  &lt;td&gt;"Per head", i.e., "per person". The singular is per caput ("through a head").&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;per diem &lt;/td&gt;
  &lt;td&gt;"through a day"&lt;/td&gt;
  &lt;td&gt;Thus, "per day". A specific amount of money an organization allows an individual to spend per day, typically for travel expenses.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;persona non grata&lt;/td&gt;
  &lt;td&gt;"person not pleasing"&lt;/td&gt;
  &lt;td&gt;An unwelcome, unwanted or undesirable person. In diplomatic contexts, a person rejected by the host government. The reverse, persona grata ("pleasing person"), is less common, and refers to a diplomat acceptable to the government of the country to which he is sent.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;prima facie&lt;/td&gt;
  &lt;td&gt;"at first sight"&lt;/td&gt;
  &lt;td&gt;Used to designate evidence in a trial which is suggestive, but not conclusive, of something (e.g., a person's guilt).&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;pro bono&lt;/td&gt;
  &lt;td&gt;"for the good"&lt;/td&gt;
  &lt;td&gt;The full phrase is pro bono publico ("for the public good"). Said of work undertaken voluntarily at no expense, such as public services. Often used of a lawyer's work that is not charged for.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;qui pro quo&lt;/td&gt;
  &lt;td&gt;literally qui instead of quo&lt;/td&gt;
  &lt;td&gt;Unused in English, but common in other modern languages (for instance Italian, Polish and French). Used as a noun, indicates a misunderstanding.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;quorum&lt;/td&gt;
  &lt;td&gt;"of whom"&lt;/td&gt;
  &lt;td&gt;The number of members whose presence is required under the rules to make any given meeting constitutional.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;re&lt;/td&gt;
  &lt;td&gt;"[in] the matter of"&lt;/td&gt;
  &lt;td&gt;More literally, "by the thing". From the ablative of res ("thing" or "circumstance"). Often used in e-mail replies. It is a common misconception that the "Re:" in correspondence is an abbreviation for regarding or reply; this is not the case. The use of Latin re, in the sense of "about, concerning", is English usage.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;semper fidelis&lt;/td&gt;
  &lt;td&gt;"always faithful"&lt;/td&gt;
  &lt;td&gt;Motto of Exeter and several other cities; more recently has become the motto of United States Marine Corps and the Swiss Grenadiers. Also the motto of the Rot-Weiss Oberhausen and Plymouth Argyle football clubs. The US Marines often abbreviate it to Semper Fi.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;sic&lt;/td&gt;
  &lt;td&gt;"thus"&lt;/td&gt;
  &lt;td&gt;Or "just so". States that the preceding quoted material appears exactly that way in the source, despite any errors of spelling, grammar, usage, or fact that may be present. Used only for previous quoted text; ita or similar must be used to mean "thus" when referring to something about to be stated.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;status quo&lt;/td&gt;
  &lt;td&gt;"the situation in which"&lt;/td&gt;
  &lt;td&gt;The current condition or situation. Also status quo ante ("the situation in which [things were] before"), referring to the state of affairs prior to some upsetting event (cf. reset button technique).&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;sub poena&lt;/td&gt;
  &lt;td&gt;"under penalty"&lt;/td&gt;
  &lt;td&gt;Commonly rendered subpoena. Said of a request, usually by a court, that must be complied with on pain of punishment. Examples include subpoena duces tecum ("take with you under penalty"), a court summons to appear and produce tangible evidence, and subpoena ad testificandum ("under penalty to testify"), a summons to appear and give oral testimony.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;verbatim&lt;/td&gt;
  &lt;td&gt;"word for word"&lt;/td&gt;
  &lt;td&gt;Refers to perfect transcription or quotation.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;veto&lt;/td&gt;
  &lt;td&gt;"I forbid"&lt;/td&gt;
  &lt;td&gt;The right to unilaterally stop a certain piece of legislation. Derived from ancient Roman voting practices.&lt;/td&gt;
 &lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-812407899663143413?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/812407899663143413/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=812407899663143413' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/812407899663143413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/812407899663143413'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2008/11/in-search-of-latin-phrases.html' title='In search of... Latin Phrases'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-5462243832867600982</id><published>2008-11-12T10:50:00.000-08:00</published><updated>2008-11-12T13:35:26.329-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><title type='text'>Lock request time out period exceeded</title><content type='html'>&lt;p&gt;
Got this error today from one of my databases I'm working on.  Last night I added an index to one of my tables not realizing that it may result to slow inserts.  Well, as my SSIS package ran early in the morning, it's taking time for it to finish.  So I had to resort to brute force to stop it.  Problem is when I did that, lock for that particular table wasn't automatically released, so how do I release it?  Here's how...
&lt;/p&gt;
&lt;div id='snippet'&gt;
&lt;font color="#66ff00"&gt;-- list processes which are locked&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff6600"&gt;exec&lt;/font&gt;&amp;nbsp;sp_lock&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;-- find out dbid of database&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;-- try each of the dbids to find out&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;-- in this case '9' is the dbid of my database&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff6600"&gt;select&lt;/font&gt;&amp;nbsp;db_name(&lt;font color="#00ffff"&gt;9&lt;/font&gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;-- look for the 'TAB' (table) type&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;-- then kill that process&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;-- to find the table, try ObjId's&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff6600"&gt;USE&lt;/font&gt;&amp;nbsp;&amp;lt;YourDb&amp;gt;&lt;br /&gt;
&lt;font color="#ff6600"&gt;SELECT&lt;/font&gt;&amp;nbsp;OBJECT_NAME(&amp;lt;ObjId&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;-- now kill&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff6600"&gt;kill&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;57&lt;/font&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-5462243832867600982?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/5462243832867600982/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=5462243832867600982' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/5462243832867600982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/5462243832867600982'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2008/11/lock-request-time-out-period-exceeded.html' title='Lock request time out period exceeded'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-1143088219510854388</id><published>2008-10-31T11:02:00.000-07:00</published><updated>2010-03-24T11:23:11.528-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><title type='text'>My List of VIM Commands And Shortcuts</title><content type='html'>&lt;p&gt;
I would like to start compiling a list of common commands and shortcuts I'm using for VIM.  Sometimes I forget what I have specified in my _vimrc file.  This list is going to remind me and will build up in time.
&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
 &lt;tr&gt;
  &lt;th&gt;Shortcut/Command&lt;/th&gt;
  &lt;th&gt;Meaning&lt;/th&gt;
 &lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
 &lt;tr&gt;
  &lt;td&gt;:TOhtml&lt;/td&gt;
  &lt;td&gt;Convert code to html&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;&amp;lt;F3&amp;gt; for :TlistToggle&lt;/td&gt;
  &lt;td&gt;Open up tag list (code browser plugin)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;&amp;lt;F4&amp;gt; for :NERDTreeToggle&lt;/td&gt;
  &lt;td&gt;Open up NERD Tree Explorer (file and directory explorer plugin)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;&amp;lt;F5&amp;gt;&lt;/td&gt;
  &lt;td&gt;Run programs&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;,pt&lt;/td&gt;
  &lt;td&gt;Perl Tidy&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;Alt + C&lt;/td&gt;
  &lt;td&gt;Block comment/uncomment using EnhancedCommentify&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;,cl&lt;/td&gt;
  &lt;td&gt;Block comment using NERD Commenter&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;,cu&lt;/td&gt;
  &lt;td&gt;Block uncomment using NERD Commenter&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;,c&amp;lt;spacebar&amp;gt;&lt;/td&gt;
  &lt;td&gt;Toggle comment/uncomment using NERD Commenter&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;zf&lt;span style="font-style:italic;"&gt;m&lt;/span&gt;&lt;/td&gt;
  &lt;td&gt;Create fold of movement &lt;span style="font-style:italic;"&gt;m&lt;/span&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;zo, zc, zd&lt;/td&gt;
  &lt;td&gt;open, close, delete fold&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;:PrettyXML&lt;/td&gt;
  &lt;td&gt;XML nice formatting&lt;/td&gt;
 &lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-1143088219510854388?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/1143088219510854388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=1143088219510854388' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/1143088219510854388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/1143088219510854388'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2008/10/my-list-of-vim-commands-and-shortcuts.html' title='My List of VIM Commands And Shortcuts'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-6084947334364220243</id><published>2008-10-31T10:05:00.000-07:00</published><updated>2008-10-31T11:02:22.512-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>PIVOT Is Elegant Solution In Summarizing Data</title><content type='html'>&lt;p&gt;
Project I'm working on has to do with counting how many machines are being used in our environment.  In our database, I'm able to list data like the following:
&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
 &lt;tr&gt;
  &lt;th&gt;LocationCode&lt;/th&gt;
  &lt;th&gt;MachineType&lt;/th&gt;
  &lt;th&gt;MachineStatus&lt;/th&gt;
 &lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
 &lt;tr&gt;
  &lt;td&gt;SJO&lt;/td&gt;
  &lt;td&gt;Desktop&lt;/td&gt;
  &lt;td&gt;Production&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;SJO&lt;/td&gt;
  &lt;td&gt;Notebook&lt;/td&gt;
  &lt;td&gt;Production&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;FSK&lt;/td&gt;
  &lt;td&gt;Desktop&lt;/td&gt;
  &lt;td&gt;Factory&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;TMP&lt;/td&gt;
  &lt;td&gt;Desktop&lt;/td&gt;
  &lt;td&gt;Production&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;AUS&lt;/td&gt;
  &lt;td&gt;Notebook&lt;/td&gt;
  &lt;td&gt;Production&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;TMP&lt;/td&gt;
  &lt;td&gt;Desktop&lt;/td&gt;
  &lt;td&gt;Factory&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;FSK&lt;/td&gt;
  &lt;td&gt;Notebook&lt;/td&gt;
  &lt;td&gt;Production&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;SJO&lt;/td&gt;
  &lt;td&gt;Desktop&lt;/td&gt;
  &lt;td&gt;Production&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;FSK&lt;/td&gt;
  &lt;td&gt;Desktop&lt;/td&gt;
  &lt;td&gt;Production&lt;/td&gt;
 &lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;
Now I need to provide a summary like as follows:
&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
 &lt;tr&gt;
  &lt;th&gt;Category&lt;/th&gt;
  &lt;th&gt;San Jose&lt;/th&gt;
  &lt;th&gt;Fishkill&lt;/th&gt;
  &lt;th&gt;Tempe&lt;/th&gt;
  &lt;th&gt;Austin&lt;/th&gt;
 &lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
 &lt;tr&gt;
  &lt;td&gt;Qualified Desktop&lt;/td&gt;
  &lt;td&gt;2&lt;/td&gt;
  &lt;td&gt;1&lt;/td&gt;
  &lt;td&gt;1&lt;/td&gt;
  &lt;td&gt;0&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;Qualified Notebook&lt;/td&gt;
  &lt;td&gt;1&lt;/td&gt;
  &lt;td&gt;1&lt;/td&gt;
  &lt;td&gt;0&lt;/td&gt;
  &lt;td&gt;1&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;Factory Desktop&lt;/td&gt;
  &lt;td&gt;0&lt;/td&gt;
  &lt;td&gt;1&lt;/td&gt;
  &lt;td&gt;1&lt;/td&gt;
  &lt;td&gt;0&lt;/td&gt;
 &lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;
Here's the solution using &lt;a href="http://msdn.microsoft.com/en-us/library/ms177410.aspx"&gt;PIVOT&lt;/a&gt;:
&lt;/p&gt;
&lt;div id='snippet'&gt;
&lt;font color="#ff6600"&gt;SELECT&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Category &lt;font color="#ff6600"&gt;AS&lt;/font&gt;&amp;nbsp;[Category],&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[AUS] &lt;font color="#ff6600"&gt;AS&lt;/font&gt;&amp;nbsp;[Austin],&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[FSK] &lt;font color="#ff6600"&gt;AS&lt;/font&gt;&amp;nbsp;[Fishkill],&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[SJO] &lt;font color="#ff6600"&gt;AS&lt;/font&gt;&amp;nbsp;[San Jose],&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[TMP] &lt;font color="#ff6600"&gt;AS&lt;/font&gt;&amp;nbsp;[Tempe],&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[AUS]+[FSK]+[SJO]+[TMP] &lt;font color="#ff6600"&gt;AS&lt;/font&gt;&amp;nbsp;[Total]&lt;br /&gt;
&lt;font color="#ff6600"&gt;FROM&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;( &lt;font color="#ff6600"&gt;SELECT&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LocationCode,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(&lt;font color="#ff6600"&gt;CASE&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;WHEN&lt;/font&gt;&amp;nbsp;MachineStatus = &lt;font color="#ff80ff"&gt;'Production'&lt;/font&gt;&amp;nbsp;&lt;font color="#ff6600"&gt;AND&lt;/font&gt;&amp;nbsp;MachineType = &lt;font color="#ff80ff"&gt;'Desktop'&lt;/font&gt;&amp;nbsp;&lt;font color="#ff6600"&gt;THEN&lt;/font&gt;&amp;nbsp;&lt;font color="#ff80ff"&gt;'Qualified Desktop'&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;WHEN&lt;/font&gt;&amp;nbsp;MachineStatus = &lt;font color="#ff80ff"&gt;'Production'&lt;/font&gt;&amp;nbsp;&lt;font color="#ff6600"&gt;AND&lt;/font&gt;&amp;nbsp;MachineType = &lt;font color="#ff80ff"&gt;'Notebook'&lt;/font&gt;&amp;nbsp;&lt;font color="#ff6600"&gt;THEN&lt;/font&gt;&amp;nbsp;&lt;font color="#ff80ff"&gt;'Qualified Notebook'&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;WHEN&lt;/font&gt;&amp;nbsp;MachineStatus = &lt;font color="#ff80ff"&gt;'Factory'&lt;/font&gt;&amp;nbsp;&lt;font color="#ff6600"&gt;THEN&lt;/font&gt;&amp;nbsp;&lt;font color="#ff80ff"&gt;'Factory Desktop'&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;END&lt;/font&gt;) &lt;font color="#ff6600"&gt;AS&lt;/font&gt;&amp;nbsp;[Category]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;FROM&lt;/font&gt;&amp;nbsp;V_PcCount_Hardware) &lt;font color="#ff6600"&gt;AS&lt;/font&gt;&amp;nbsp;SourceTable&lt;br /&gt;
PIVOT&lt;br /&gt;
(&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ffcc00"&gt;COUNT(LocationCode)&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;FOR&lt;/font&gt;&amp;nbsp;LocationCode &lt;font color="#ff6600"&gt;IN&lt;/font&gt;([AUS], [FSK], [SJO], [TMP])&lt;br /&gt;
) &lt;font color="#ff6600"&gt;AS&lt;/font&gt;&amp;nbsp;PivotTable&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-6084947334364220243?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/6084947334364220243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=6084947334364220243' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/6084947334364220243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/6084947334364220243'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2008/10/pivo.html' title='PIVOT Is Elegant Solution In Summarizing Data'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-3520345854170617948</id><published>2008-10-21T14:33:00.000-07:00</published><updated>2008-10-21T14:40:30.445-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Lesson on Multiplicity</title><content type='html'>&lt;p&gt;
One concept in relationships is what is called &lt;span style="font-weight:bold;"&gt;Multiplicity&lt;/span&gt;.  It shows the number of objects that can participate in a relationship.
&lt;/p&gt;
&lt;p&gt;
To illustrate, here are some examples:
&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
 &lt;tr&gt;
  &lt;th&gt;Relationship&lt;/th&gt;
  &lt;th&gt;Example&lt;/th&gt;
 &lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
 &lt;tr&gt;
  &lt;td&gt;One To One&lt;/td&gt;
  &lt;td&gt;One class occupies one classroom&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;One To Many&lt;/td&gt;
  &lt;td&gt;One teacher teaches many classes&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;Many To Many&lt;/td&gt;
  &lt;td&gt;One teacher teaches many students.  One student learns from many teacher.  So in short, it's 2 One To Many relationships combined.&lt;/td&gt;
 &lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-3520345854170617948?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/3520345854170617948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=3520345854170617948' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/3520345854170617948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/3520345854170617948'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2008/10/lesson-on-multiplicity.html' title='Lesson on Multiplicity'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-3242716501247374119</id><published>2008-10-14T11:36:00.000-07:00</published><updated>2008-10-17T11:27:06.979-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Practical Django Projects - TinyMCE Integration Issue</title><content type='html'>&lt;p&gt;Following James Bennett's book, I got stalled in Chapter 3 (Customizing The Simple CMS) when I tried to integrate TinyMCE.  The solution is rather simple, just move the tiny_mce entry in the urlpatterns one line up.&lt;/p&gt;

Here's my urls.py:
&lt;div id='snippet'&gt;
&lt;font color="#ff80ff"&gt;from&lt;/font&gt;&amp;nbsp;django.conf.urls.defaults &lt;font color="#ff80ff"&gt;import&lt;/font&gt;&amp;nbsp;*&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;# Uncomment the next two lines to enable the admin:&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;from&lt;/font&gt;&amp;nbsp;django.contrib &lt;font color="#ff80ff"&gt;import&lt;/font&gt;&amp;nbsp;admin&lt;br /&gt;
admin.autodiscover()&lt;br /&gt;
&lt;br /&gt;
urlpatterns = patterns(&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;''&lt;/font&gt;&lt;/span&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#66ff00"&gt;# Example:&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#66ff00"&gt;# (r'^cms/', include('cms.foo.urls')),&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#66ff00"&gt;# Uncomment the admin/doc line below and add 'django.contrib.admindocs' &lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#66ff00"&gt;# to INSTALLED_APPS to enable admin documentation:&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#66ff00"&gt;# (r'^admin/doc/', include('django.contrib.admindocs.urls')),&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#66ff00"&gt;# Uncomment the next line to enable the admin:&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;r'&lt;/font&gt;&lt;/span&gt;&lt;font color="#ff80ff"&gt;^admin/(.*)&lt;/font&gt;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;'&lt;/font&gt;&lt;/span&gt;, admin.site.root),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;r'&lt;/font&gt;&lt;/span&gt;&lt;font color="#ff80ff"&gt;^tiny_mce/(?P&amp;lt;path&amp;gt;.*)$&lt;/font&gt;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;'&lt;/font&gt;&lt;/span&gt;, &lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;'&lt;/font&gt;&lt;/span&gt;&lt;font color="#ff80ff"&gt;django.views.static.serve&lt;/font&gt;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;'&lt;/font&gt;&lt;/span&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;'&lt;/font&gt;&lt;/span&gt;&lt;font color="#ff80ff"&gt;document_root&lt;/font&gt;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;'&lt;/font&gt;&lt;/span&gt;:&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;'&lt;/font&gt;&lt;/span&gt;&lt;font color="#ff80ff"&gt;C:&lt;/font&gt;&lt;font color="#ffa500"&gt;\\&lt;/font&gt;&lt;font color="#ff80ff"&gt;dev&lt;/font&gt;&lt;font color="#ffa500"&gt;\\&lt;/font&gt;&lt;font color="#ff80ff"&gt;python&lt;/font&gt;&lt;font color="#ffa500"&gt;\\&lt;/font&gt;&lt;font color="#ff80ff"&gt;django&lt;/font&gt;&lt;font color="#ffa500"&gt;\\&lt;/font&gt;&lt;font color="#ff80ff"&gt;media&lt;/font&gt;&lt;font color="#ffa500"&gt;\\&lt;/font&gt;&lt;font color="#ff80ff"&gt;tinymce&lt;/font&gt;&lt;font color="#ffa500"&gt;\\&lt;/font&gt;&lt;font color="#ff80ff"&gt;jscripts&lt;/font&gt;&lt;font color="#ffa500"&gt;\\&lt;/font&gt;&lt;font color="#ff80ff"&gt;tiny_mce&lt;/font&gt;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;'&lt;/font&gt;&lt;/span&gt;&amp;nbsp;},),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;r''&lt;/font&gt;&lt;/span&gt;, include(&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;'&lt;/font&gt;&lt;/span&gt;&lt;font color="#ff80ff"&gt;django.contrib.flatpages.urls&lt;/font&gt;&lt;span style="background-color: #202020"&gt;&lt;font color="#ffffff"&gt;'&lt;/font&gt;&lt;/span&gt;)),&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
)
&lt;/div&gt;

&lt;p&gt;By the way, &lt;a href="http://blog.haydon.id.au/2008/08/notes-on-practical-django-projects.html"&gt;this&lt;/a&gt;, &lt;a href="http://nefariousdesigns.co.uk/archive/2008/09/practical-django-projects-and-django-10/"&gt;this&lt;/a&gt; and &lt;a href="http://jasonism.org/weblog/2008/aug/04/adding-inlinemodeladmin-djangocontrib-application/"&gt;this&lt;/a&gt; are excellent in outlining the code changes from Django 0.96 to 1.0, which should coincide with the book.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-3242716501247374119?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/3242716501247374119/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=3242716501247374119' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/3242716501247374119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/3242716501247374119'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2008/10/practical-django-projects-tinymce.html' title='Practical Django Projects - TinyMCE Integration Issue'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-6325886340558293803</id><published>2008-09-23T10:10:00.000-07:00</published><updated>2008-10-16T11:16:45.225-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><title type='text'>The right combination: SSIS, Oracle and Microsoft OLE DB Provider for Oracle</title><content type='html'>&lt;p&gt;It's been a while since I posted anything.  I have been busy with so many things in my life.  Work and family.&lt;/p&gt;

&lt;p&gt;I would like to take note of this issue with SSIS.  It took me a long time to figure this out.  Thanks to &lt;a href="http://forums.microsoft.com/msdn/showpost.aspx?postid=2923505&amp;siteid=1&amp;sb=0&amp;d=1&amp;at=7&amp;ft=11&amp;tf=0&amp;pageid=0"&gt;this&lt;/a&gt; post.  It gave me a clue on what's going on.  In SSIS, it's very typical that when you are working on your development box, everything works fine, but the moment you deploy it to another machine, it doesn't run.  Adding to complexities is when you try to schedule it via SQL Server Agent.  I will probably discuss this complexity on another post, but for now, I would like to take note of the right combination when dealing with Oracle.&lt;/p&gt;

&lt;p&gt;When I configure a new OLE DB Connection Manager, there are 2 different providers that I can choose from:&lt;/p&gt;
1.  "Oracle Provider for OLE DB"&lt;br /&gt;
2.  "Microsoft OLE DB Provider for Oracle".&lt;br /&gt;&lt;br /&gt;
&lt;p&gt;At least in my case, one could have been probably installed when I installed Oracle client, the other one is a MS default.  I think what happened initially is I assumed that either one of them should work ok, and in fact it worked ok in my dev.  But deploying to the staging server, causes this error:&lt;/p&gt;

&lt;p&gt;&lt;span style="font-style:italic;"&gt;"SSIS Error Code DTS_E_OLEDBERROR.  An OLE DB error has occurred "Microsoft OLE DB Service Components".&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;The reason is because I chose "Oracle Provider for OLE DB".  So eventhough the Oracle installed in my dev box is exactly the same as in the staging server, it's still possible that there is a difference.  But anyway, what solved my problem?  I created another OLE DB Connection Manager using the other one, "Microsoft OLE DB Provider for Oracle", issue fixed!&lt;/p&gt;

&lt;p&gt;What gives?  Anybody has an idea what the difference between the two?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-6325886340558293803?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/6325886340558293803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=6325886340558293803' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/6325886340558293803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/6325886340558293803'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2008/09/right-combination-ssis-and-oracle-and.html' title='The right combination: SSIS, Oracle and Microsoft OLE DB Provider for Oracle'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-677839853366554767</id><published>2008-06-22T23:57:00.000-07:00</published><updated>2008-10-16T11:17:29.498-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Django notes</title><content type='html'>&lt;p&gt;I'm learning Django framework.  Here are notes that I want to remember as I go...&lt;/p&gt;

Create a project:
&lt;pre&gt;
django-admin.py startproject projectname
&lt;/pre&gt;

Start development server:
&lt;pre&gt;
python manage.py runserver
&lt;/pre&gt;

Invoke python shell:
&lt;pre&gt;
python manage.py dbshell
&lt;/pre&gt;

Create or update database:
&lt;pre&gt;
python manage.py syncdb
&lt;/pre&gt;

Create a new application within a project:
&lt;pre&gt;
python manage.py startapp appname
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-677839853366554767?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/677839853366554767/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=677839853366554767' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/677839853366554767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/677839853366554767'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2008/06/django-notes.html' title='Django notes'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-6115970465365804905</id><published>2008-05-23T16:12:00.000-07:00</published><updated>2008-10-16T11:18:49.796-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wala lang'/><title type='text'>When talking on the phone, how do you spell?</title><content type='html'>&lt;p&gt;It's hard sometimes to convey your message over the phone, at times you want to spell what you mean.  Most of the time, it's hard to remember what spelling words to say.  I remember before that a friend of mine who was a telephone operator then had to memorize a list of spelling words, ok so searching thru the web, I came across a page in wikipedia entitled &lt;a href="http://en.wikipedia.org/wiki/NATO_phonetic_alphabet"&gt;NATO phonetic alphabet&lt;/a&gt;.  Hey that's what I need.  Oh how I love &lt;a href="http://www.wikipedia.org/"&gt;wikipedia&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;NATO Phonetic Alphabet:&lt;/h4&gt;

&lt;table title="NATO Phonetic Alphabet" &gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Letter&lt;/th&gt;
&lt;th&gt;Code Word&lt;/th&gt;
&lt;th&gt;Letter&lt;/th&gt;
&lt;th&gt;Code Word&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;Alpha&lt;/td&gt;
&lt;td&gt;N&lt;/td&gt;
&lt;td&gt;November&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B&lt;/td&gt;
&lt;td&gt;Bravo&lt;/td&gt;
&lt;td&gt;O&lt;/td&gt;
&lt;td&gt;Oscar&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;C&lt;/td&gt;
&lt;td&gt;Charlie&lt;/td&gt;
&lt;td&gt;P&lt;/td&gt;
&lt;td&gt;Papa&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;D&lt;/td&gt;
&lt;td&gt;Delta&lt;/td&gt;
&lt;td&gt;Q&lt;/td&gt;
&lt;td&gt;Quebec&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;E&lt;/td&gt;
&lt;td&gt;Echo&lt;/td&gt;
&lt;td&gt;R&lt;/td&gt;
&lt;td&gt;Romeo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;F&lt;/td&gt;
&lt;td&gt;Foxtrot&lt;/td&gt;
&lt;td&gt;S&lt;/td&gt;
&lt;td&gt;Sierra&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;G&lt;/td&gt;
&lt;td&gt;Golf&lt;/td&gt;
&lt;td&gt;T&lt;/td&gt;
&lt;td&gt;Tango&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;H&lt;/td&gt;
&lt;td&gt;Hotel&lt;/td&gt;
&lt;td&gt;U&lt;/td&gt;
&lt;td&gt;Uniform&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;I&lt;/td&gt;
&lt;td&gt;India&lt;/td&gt;
&lt;td&gt;V&lt;/td&gt;
&lt;td&gt;Victor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;J&lt;/td&gt;
&lt;td&gt;Juliet&lt;/td&gt;
&lt;td&gt;W&lt;/td&gt;
&lt;td&gt;Whiskey&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;K&lt;/td&gt;
&lt;td&gt;Kilo&lt;/td&gt;
&lt;td&gt;X&lt;/td&gt;
&lt;td&gt;X-ray&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;L&lt;/td&gt;
&lt;td&gt;Lima&lt;/td&gt;
&lt;td&gt;Y&lt;/td&gt;
&lt;td&gt;Yankee&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;M&lt;/td&gt;
&lt;td&gt;Mike&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;td&gt;Zulu&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-6115970465365804905?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/6115970465365804905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=6115970465365804905' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/6115970465365804905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/6115970465365804905'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2008/05/when-talking-on-phone-how-do-you-spell.html' title='When talking on the phone, how do you spell?'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-8974816476397068922</id><published>2008-04-18T12:22:00.000-07:00</published><updated>2008-10-16T11:20:29.049-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Intranet Applications with Role-based Security using Windows Authentication and SQL Server</title><content type='html'>&lt;p&gt;First of all, I would like to thank &lt;a href="http://weblogs.asp.net/scottgu/default.aspx"&gt;ScottGu&lt;/a&gt;, again for a job well done on this tutorial on &lt;a href="http://weblogs.asp.net/scottgu/pages/Recipe_3A00_-Implementing-Role_2D00_Based-Security-with-ASP.NET-2.0-using-Windows-Authentication-and-SQL-Server.aspx"&gt;how to implement Windows authentication for an INTRANET website that works against a sql server database&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I recently added authentication scheme for an intranet website that I developed.  There are some reports and tools that are supposed to be accessed only by some priviledged people within the organization.  No login is required since this is an intranet application.  But I needed a way to restrict access to some pages.  The easiest way to maintain such a website is by adding a role-based security that is tied-in to Active Directory user account.  Anyways, following &lt;a href="http://weblogs.asp.net/scottgu/pages/Recipe_3A00_-Implementing-Role_2D00_Based-Security-with-ASP.NET-2.0-using-Windows-Authentication-and-SQL-Server.aspx"&gt;this&lt;/a&gt; recipe that Scott Gu concocted, I got up and running quickly.  Thank you Scott!&lt;/p&gt;

Btw, I translated the Visual Basic code to C# below... 

&lt;div id='snippet'&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: #ff8000;"&gt;private&lt;/span&gt; &lt;span style="color: #ff8000;"&gt;void&lt;/span&gt; &lt;span style="color: #e5e5e5;"&gt;PopulateRoleList&lt;/span&gt;(&lt;span style="color: #ff8000;"&gt;string&lt;/span&gt; &lt;span style="color: #e5e5e5;"&gt;userName&lt;/span&gt;)&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #ff8000;"&gt;if&lt;/span&gt; (!&lt;span style="color: yellow;"&gt;String&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;IsNullOrEmpty&lt;/span&gt;(&lt;span style="color: #e5e5e5;"&gt;userName&lt;/span&gt;))&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #e5e5e5;"&gt;RoleList&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;Items&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;Clear&lt;/span&gt;();&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #ff8000;"&gt;foreach&lt;/span&gt; (&lt;span style="color: #ff8000;"&gt;string&lt;/span&gt; &lt;span style="color: #e5e5e5;"&gt;roleName&lt;/span&gt; &lt;span style="color: #ff8000;"&gt;in&lt;/span&gt; &lt;span style="color: yellow;"&gt;Roles&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;GetAllRoles&lt;/span&gt;())&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;ListItem&lt;/span&gt; &lt;span style="color: #e5e5e5;"&gt;roleListItem&lt;/span&gt; = &lt;span style="color: #ff8000;"&gt;new&lt;/span&gt; &lt;span style="color: yellow;"&gt;ListItem&lt;/span&gt;();&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #e5e5e5;"&gt;roleListItem&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;Text&lt;/span&gt; = &lt;span style="color: #e5e5e5;"&gt;roleName&lt;/span&gt;;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #e5e5e5;"&gt;roleListItem&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;Selected&lt;/span&gt; = &lt;span style="color: yellow;"&gt;Roles&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;IsUserInRole&lt;/span&gt;(&lt;span style="color: #e5e5e5;"&gt;userName&lt;/span&gt;, &lt;span style="color: #e5e5e5;"&gt;roleName&lt;/span&gt;);&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #e5e5e5;"&gt;RoleList&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;Items&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;Add&lt;/span&gt;(&lt;span style="color: #e5e5e5;"&gt;roleListItem&lt;/span&gt;);&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #ff8000;"&gt;private&lt;/span&gt; &lt;span style="color: #ff8000;"&gt;void&lt;/span&gt; &lt;span style="color: #e5e5e5;"&gt;UpdateRolesFromList&lt;/span&gt;()&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #ff8000;"&gt;foreach&lt;/span&gt; (&lt;span style="color: yellow;"&gt;ListItem&lt;/span&gt; &lt;span style="color: #e5e5e5;"&gt;roleListItem&lt;/span&gt; &lt;span style="color: #ff8000;"&gt;in&lt;/span&gt; &lt;span style="color: #e5e5e5;"&gt;RoleList&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;Items&lt;/span&gt;)&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #ff8000;"&gt;string&lt;/span&gt; &lt;span style="color: #e5e5e5;"&gt;roleName&lt;/span&gt; = &lt;span style="color: #e5e5e5;"&gt;roleListItem&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;Value&lt;/span&gt;;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #ff8000;"&gt;string&lt;/span&gt; &lt;span style="color: #e5e5e5;"&gt;userName&lt;/span&gt; = &lt;span style="color: #e5e5e5;"&gt;TxtUserName&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;Text&lt;/span&gt;;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #ff8000;"&gt;bool&lt;/span&gt; &lt;span style="color: #e5e5e5;"&gt;enableRole&lt;/span&gt; = &lt;span style="color: #e5e5e5;"&gt;roleListItem&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;Selected&lt;/span&gt;;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #ff8000;"&gt;if&lt;/span&gt; (&lt;span style="color: #e5e5e5;"&gt;enableRole&lt;/span&gt; == &lt;span style="color: #ff8000;"&gt;true&lt;/span&gt; &amp;amp;&amp;amp; &lt;span style="color: yellow;"&gt;Roles&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;IsUserInRole&lt;/span&gt;(&lt;span style="color: #e5e5e5;"&gt;userName&lt;/span&gt;, &lt;span style="color: #e5e5e5;"&gt;roleName&lt;/span&gt;) == &lt;span style="color: #ff8000;"&gt;false&lt;/span&gt;)&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;Roles&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;AddUsersToRole&lt;/span&gt;(&lt;span style="color: #ff8000;"&gt;new&lt;/span&gt; &lt;span style="color: #ff8000;"&gt;string&lt;/span&gt;[] { &lt;span style="color: #e5e5e5;"&gt;userName&lt;/span&gt; }, &lt;span style="color: #e5e5e5;"&gt;roleName&lt;/span&gt;);&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #ff8000;"&gt;else&lt;/span&gt; &lt;span style="color: #ff8000;"&gt;if&lt;/span&gt; (&lt;span style="color: #e5e5e5;"&gt;enableRole&lt;/span&gt; == &lt;span style="color: #ff8000;"&gt;true&lt;/span&gt; &amp;amp;&amp;amp; &lt;span style="color: yellow;"&gt;Roles&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;IsUserInRole&lt;/span&gt;(&lt;span style="color: #e5e5e5;"&gt;userName&lt;/span&gt;, &lt;span style="color: #e5e5e5;"&gt;roleName&lt;/span&gt;) == &lt;span style="color: #ff8000;"&gt;true&lt;/span&gt;)&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;Roles&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;RemoveUserFromRole&lt;/span&gt;(&lt;span style="color: #e5e5e5;"&gt;userName&lt;/span&gt;, &lt;span style="color: #e5e5e5;"&gt;roleName&lt;/span&gt;);&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #ff8000;"&gt;protected&lt;/span&gt; &lt;span style="color: #ff8000;"&gt;void&lt;/span&gt; &lt;span style="color: #e5e5e5;"&gt;LookupBtn_Click&lt;/span&gt;(&lt;span style="color: #ff8000;"&gt;object&lt;/span&gt; &lt;span style="color: #e5e5e5;"&gt;sender&lt;/span&gt;, &lt;span style="color: yellow;"&gt;EventArgs&lt;/span&gt; &lt;span style="color: #e5e5e5;"&gt;e&lt;/span&gt;)&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #e5e5e5;"&gt;PopulateRoleList&lt;/span&gt;(&lt;span style="color: #e5e5e5;"&gt;TxtUserName&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;Text&lt;/span&gt;);&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #e5e5e5;"&gt;UpdateBtn&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;Visible&lt;/span&gt; = &lt;span style="color: #ff8000;"&gt;true&lt;/span&gt;;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #e5e5e5;"&gt;LabelRoleMembership&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;Visible&lt;/span&gt; = &lt;span style="color: #ff8000;"&gt;true&lt;/span&gt;;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #ff8000;"&gt;protected&lt;/span&gt; &lt;span style="color: #ff8000;"&gt;void&lt;/span&gt; &lt;span style="color: #e5e5e5;"&gt;UpdateBtn_Click&lt;/span&gt;(&lt;span style="color: #ff8000;"&gt;object&lt;/span&gt; &lt;span style="color: #e5e5e5;"&gt;sender&lt;/span&gt;, &lt;span style="color: yellow;"&gt;EventArgs&lt;/span&gt; &lt;span style="color: #e5e5e5;"&gt;e&lt;/span&gt;)&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #e5e5e5;"&gt;UpdateRolesFromList&lt;/span&gt;();&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #e5e5e5;"&gt;PopulateRoleList&lt;/span&gt;(&lt;span style="color: #e5e5e5;"&gt;TxtUserName&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;Text&lt;/span&gt;);&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #e5e5e5;"&gt;PopulateRoleList&lt;/span&gt;(&lt;span style="color: #e5e5e5;"&gt;TxtUserName&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;Text&lt;/span&gt;);&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-8974816476397068922?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/8974816476397068922/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=8974816476397068922' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/8974816476397068922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/8974816476397068922'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2008/04/intranet-applications-with-role-based.html' title='Intranet Applications with Role-based Security using Windows Authentication and SQL Server'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-6403287385595635658</id><published>2008-04-04T18:52:00.001-07:00</published><updated>2008-10-16T11:22:01.421-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Features in Hardy Heron Release of Ubuntu</title><content type='html'>&lt;p&gt;I can't wait for the latest version of Ubuntu named "Hardy Heron".  If you are interested to see what's new in this new version look &lt;a href="http://www.ubuntu.com/testing/hardy/beta#head-e55186d5d312cfd6b8d74a407dbef271a1edfc46"&gt;here&lt;/a&gt;.  I have been using Ubuntu since "Hoary HedgeHog".  I have used a number of Linux distros, but the first time I looked at Ubuntu, I liked it right away and stayed with it.  It's the best Linux distro for me.  In case you're wondering what the past and future versions of Ubuntu were called, here's a list I compiled...&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
 &lt;tr&gt;
  &lt;th&gt;Version&lt;/th&gt;
  &lt;th&gt;Code Name&lt;/th&gt;
  &lt;th&gt;Release Date&lt;/th&gt;
 &lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
 &lt;tr&gt;
  &lt;td&gt;4.10&lt;/td&gt;
  &lt;td&gt;Warty Warthog&lt;/td&gt;
  &lt;td&gt;2004-10-20&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;5.04&lt;/td&gt;
  &lt;td&gt;Hoary Hedgehog&lt;/td&gt;
  &lt;td&gt;2005-04-08&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;5.10&lt;/td&gt;
  &lt;td&gt;Breezy Badger&lt;/td&gt;
  &lt;td&gt;2005-10-13&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;6.06&lt;/td&gt;
  &lt;td&gt;Dapper Drake&lt;/td&gt;
  &lt;td&gt;2006-06-01&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;6.10&lt;/td&gt;
  &lt;td&gt;Edgy Eft&lt;/td&gt;
  &lt;td&gt;2006-10-26&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;7.04&lt;/td&gt;
  &lt;td&gt;Fiesty Fawn&lt;/td&gt;
  &lt;td&gt;2007-04-19&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;7.10&lt;/td&gt;
  &lt;td&gt;Gutsy Gibbon&lt;/td&gt;
  &lt;td&gt;2007-10-18&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;8.04&lt;/td&gt;
  &lt;td&gt;Hardy Heron&lt;/td&gt;
  &lt;td&gt;2008-04-24&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;8.10&lt;/td&gt;
  &lt;td&gt;Intrepid Ibex&lt;/td&gt;
  &lt;td&gt;2008-10-30&lt;/td&gt;
 &lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;Interesting to note from this list is that if you look in the version number, the first number is the year it was released, the second number after the dot is the month it was released.  Based on the dates, I have been using Ubuntu for 3 years now!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-6403287385595635658?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/6403287385595635658/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=6403287385595635658' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/6403287385595635658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/6403287385595635658'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2008/04/features-in-hardy-heron-release-of.html' title='Features in Hardy Heron Release of Ubuntu'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-6270458111517466070</id><published>2008-01-04T14:04:00.000-08:00</published><updated>2008-10-16T11:23:19.393-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Do you want charts on your webpages?  Use the Google Chart API</title><content type='html'>&lt;p&gt;Wow! This is excellent.  If you want to dynamically create charts for your webpages, you can make use of the &lt;a href="http://code.google.com/apis/chart/"&gt;Google Chart API&lt;/a&gt;.  You don't know how much money we spent in the company where I work just to create embedded charts for our webpages.  Google makes this simple like as follows:&lt;/p&gt;
&lt;pre&gt;
http://chart.apis.google.com/chart?cht=p3&amp;chd=s:hW&amp;chs=250x100&amp;chl=Hello|World
&lt;/pre&gt;
&lt;p&gt;The above snippet produces this:&lt;/p&gt;
&lt;img src="http://chart.apis.google.com/chart?cht=p3&amp;amp;chd=s:hW&amp;amp;chs=250x100&amp;amp;chl=Hello|World" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-6270458111517466070?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/6270458111517466070/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=6270458111517466070' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/6270458111517466070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/6270458111517466070'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2008/01/do-you-want-charts-on-your-webpages-use.html' title='Do you want charts on your webpages?  Use the Google Chart API'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-4594366135387510934</id><published>2007-12-13T15:36:00.000-08:00</published><updated>2008-10-16T11:24:36.693-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Hide Console Windows in Perl</title><content type='html'>&lt;p&gt;Here's a nice snippet if you want to hide console windows that open up when calling utilities or commands using backticks.  Perl, being an excellent duct-tape language, makes this easy, just add this snippet at the bottom of your code:&lt;/p&gt;

&lt;div id='snippet'&gt;
&lt;font color="#ff80ff"&gt;BEGIN&lt;/font&gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Win32::SetChildShowWindow(&lt;font color="#00ffff"&gt;0&lt;/font&gt;) &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;if&lt;/font&gt;&amp;nbsp;&lt;font color="#ff6600"&gt;defined&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;&amp;amp;Win32::SetChildShowWindow&lt;/font&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-4594366135387510934?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/4594366135387510934/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=4594366135387510934' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/4594366135387510934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/4594366135387510934'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2007/12/hide-console-windows-in-perl.html' title='Hide Console Windows in Perl'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-3209734460321981827</id><published>2007-10-14T22:12:00.000-07:00</published><updated>2008-10-16T11:25:40.053-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Tip in using FileSystemWatcher class, make use of InternalBufferSize</title><content type='html'>&lt;/p&gt;There are a few gotchas in implementing FileSystemWatcher.  One of them that I have recently encountered is the use of InternalBufferSize property.  Previously, I built a windows service that watches for new files created in a directory.  The files are then processed and the data uploaded to a sql server database.  During my testing and initial deploy, I didn't see any issue nor did I think of any potential problems.  Until one day I noticed that it is not picking up all the files.  Some files are being left out at random.  After some investigation, I found out that this is happening because of an overflow in the buffer that supports the FileSystemWatcher.  The default setting for this property is only at 8K, imagine it has to keep track of all the events and info about the files.  Approximately according to &lt;a href="http://weblogs.asp.net/ashben/archive/2003/10/14/31773.aspx"&gt;this&lt;/a&gt;, 8K can only hold info for as much as 80 files at one time.  So for me, my solution is to increase the buffer size to 32K, which is 32768.  The setting should be in multiples of 4K as noted in &lt;a href="http://msdn2.microsoft.com/en-us/library/system.io.filesystemwatcher.internalbuffersize.aspx"&gt;msdn&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Here's how I implemented the class:&lt;/p&gt;

&lt;div id='snippet'&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: #ff8000;"&gt;public&lt;/span&gt; &lt;span style="color: #ff8000;"&gt;partial&lt;/span&gt; &lt;span style="color: #ff8000;"&gt;class&lt;/span&gt; &lt;span style="color: yellow;"&gt;NXPFileWatcher&lt;/span&gt; : &lt;span style="color: #e5e5e5;"&gt;ServiceBase&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #e5e5e5;"&gt;FileSystemWatcher&lt;/span&gt; &lt;span style="color: #e5e5e5;"&gt;FSWatcher&lt;/span&gt; = &lt;span style="color: #ff8000;"&gt;null&lt;/span&gt;;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #ff8000;"&gt;public&lt;/span&gt; &lt;span style="color: #e5e5e5;"&gt;NXPFileWatcher&lt;/span&gt;()&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #e5e5e5;"&gt;InitializeComponent&lt;/span&gt;();&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #ff8000;"&gt;protected&lt;/span&gt; &lt;span style="color: #ff8000;"&gt;override&lt;/span&gt; &lt;span style="color: #ff8000;"&gt;void&lt;/span&gt; &lt;span style="color: #e5e5e5;"&gt;OnStart&lt;/span&gt;(&lt;span style="color: #ff8000;"&gt;string&lt;/span&gt;[] &lt;span style="color: #e5e5e5;"&gt;args&lt;/span&gt;)&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #ff8000;"&gt;try&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #e5e5e5;"&gt;FSWatcher&lt;/span&gt; = &lt;span style="color: #ff8000;"&gt;new&lt;/span&gt; &lt;span style="color: #e5e5e5;"&gt;FileSystemWatcher&lt;/span&gt;();&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #e5e5e5;"&gt;FSWatcher&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;Path&lt;/span&gt; = &lt;span style="color: yellow;"&gt;ConfigurationManager&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;AppSettings&lt;/span&gt;[&lt;span style="color: #ff80ff;"&gt;"WatchPath"&lt;/span&gt;];&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #e5e5e5;"&gt;FSWatcher&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;InternalBufferSize&lt;/span&gt; = &lt;span style="color: aqua;"&gt;32768&lt;/span&gt;;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #e5e5e5;"&gt;FSWatcher&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;NotifyFilter&lt;/span&gt; = &lt;span style="color: #e5e5e5;"&gt;NotifyFilters&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;CreationTime&lt;/span&gt;;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #e5e5e5;"&gt;FSWatcher&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;Filter&lt;/span&gt; = &lt;span style="color: #ff80ff;"&gt;"*.xml"&lt;/span&gt;;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #e5e5e5;"&gt;FSWatcher&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;Created&lt;/span&gt; += &lt;span style="color: #ff8000;"&gt;new&lt;/span&gt; &lt;span style="color: #e5e5e5;"&gt;FileSystemEventHandler&lt;/span&gt;(&lt;span style="color: #e5e5e5;"&gt;FSWatcher_Created&lt;/span&gt;);&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #e5e5e5;"&gt;FSWatcher&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;EnableRaisingEvents&lt;/span&gt; = &lt;span style="color: #ff8000;"&gt;true&lt;/span&gt;;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #e5e5e5;"&gt;SendNotification&lt;/span&gt;(&lt;span style="color: #ff80ff;"&gt;"has Started"&lt;/span&gt;);&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #ff8000;"&gt;catch&lt;/span&gt; (&lt;span style="color: yellow;"&gt;Exception&lt;/span&gt; &lt;span style="color: #e5e5e5;"&gt;ex&lt;/span&gt;)&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #e5e5e5;"&gt;Log&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;Write&lt;/span&gt;(&lt;span style="color: #e5e5e5;"&gt;ex&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;Message&lt;/span&gt;);&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #ff8000;"&gt;protected&lt;/span&gt; &lt;span style="color: #ff8000;"&gt;override&lt;/span&gt; &lt;span style="color: #ff8000;"&gt;void&lt;/span&gt; &lt;span style="color: #e5e5e5;"&gt;OnStop&lt;/span&gt;()&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #ff8000;"&gt;try&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #e5e5e5;"&gt;FSWatcher&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;Dispose&lt;/span&gt;();&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #e5e5e5;"&gt;SendNotification&lt;/span&gt;(&lt;span style="color: #ff80ff;"&gt;"has Stopped"&lt;/span&gt;);&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #ff8000;"&gt;catch&lt;/span&gt; (&lt;span style="color: yellow;"&gt;Exception&lt;/span&gt; &lt;span style="color: #e5e5e5;"&gt;ex&lt;/span&gt;)&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #e5e5e5;"&gt;Log&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;Write&lt;/span&gt;(&lt;span style="color: #e5e5e5;"&gt;ex&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;Message&lt;/span&gt;);&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #ff8000;"&gt;protected&lt;/span&gt; &lt;span style="color: #ff8000;"&gt;override&lt;/span&gt; &lt;span style="color: #ff8000;"&gt;void&lt;/span&gt; &lt;span style="color: #e5e5e5;"&gt;OnPause&lt;/span&gt;()&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #e5e5e5;"&gt;OnStop&lt;/span&gt;();&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #ff8000;"&gt;protected&lt;/span&gt; &lt;span style="color: #ff8000;"&gt;override&lt;/span&gt; &lt;span style="color: #ff8000;"&gt;void&lt;/span&gt; &lt;span style="color: #e5e5e5;"&gt;OnContinue&lt;/span&gt;()&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #e5e5e5;"&gt;OnStart&lt;/span&gt;(&lt;span style="color: #ff8000;"&gt;null&lt;/span&gt;);&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #ff8000;"&gt;protected&lt;/span&gt; &lt;span style="color: #ff8000;"&gt;override&lt;/span&gt; &lt;span style="color: #ff8000;"&gt;void&lt;/span&gt; &lt;span style="color: #e5e5e5;"&gt;OnShutdown&lt;/span&gt;()&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #ff8000;"&gt;try&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #e5e5e5;"&gt;FSWatcher&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;Dispose&lt;/span&gt;();&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #e5e5e5;"&gt;SendNotification&lt;/span&gt;(&lt;span style="color: #ff80ff;"&gt;"has stopped due to system shutting down"&lt;/span&gt;);&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #ff8000;"&gt;catch&lt;/span&gt; (&lt;span style="color: yellow;"&gt;Exception&lt;/span&gt; &lt;span style="color: #e5e5e5;"&gt;ex&lt;/span&gt;)&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #e5e5e5;"&gt;Log&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;Write&lt;/span&gt;(&lt;span style="color: #e5e5e5;"&gt;ex&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;Message&lt;/span&gt;);&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #ff8000;"&gt;private&lt;/span&gt; &lt;span style="color: #ff8000;"&gt;void&lt;/span&gt; &lt;span style="color: #e5e5e5;"&gt;FSWatcher_Created&lt;/span&gt;(&lt;span style="color: #ff8000;"&gt;object&lt;/span&gt; &lt;span style="color: #e5e5e5;"&gt;sender&lt;/span&gt;, &lt;span style="color: #e5e5e5;"&gt;FileSystemEventArgs&lt;/span&gt; &lt;span style="color: #e5e5e5;"&gt;e&lt;/span&gt;)&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: lime;"&gt;// Now open the file&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #e5e5e5;"&gt;XmlFile&lt;/span&gt; &lt;span style="color: #e5e5e5;"&gt;xml&lt;/span&gt; = &lt;span style="color: #ff8000;"&gt;new&lt;/span&gt; &lt;span style="color: #e5e5e5;"&gt;XmlFile&lt;/span&gt;();&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #e5e5e5;"&gt;xml&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;FullPath&lt;/span&gt; = &lt;span style="color: #e5e5e5;"&gt;e&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;FullPath&lt;/span&gt;;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #e5e5e5;"&gt;xml&lt;/span&gt;.&lt;span style="color: #e5e5e5;"&gt;Process&lt;/span&gt;();&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-3209734460321981827?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/3209734460321981827/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=3209734460321981827' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/3209734460321981827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/3209734460321981827'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2007/10/tip-in-using-filesystemwatcher-class.html' title='Tip in using FileSystemWatcher class, make use of InternalBufferSize'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-5098416698015296112</id><published>2007-09-28T17:13:00.000-07:00</published><updated>2008-10-16T11:27:05.921-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>List of Access Modifiers in C#</title><content type='html'>&lt;p&gt;I have been programming in C# for more than 3 years now, always I forget the specifics on keywords like access modifiers.  The most commonly used access modifiers are of course 'public' and 'private', and it's pretty obvious what they mean.  But for example "protected internal", I just cannot recall on top of my head what it pertains to, so just as a note, here's all of them:&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
 &lt;tr&gt;
  &lt;th&gt;Access Modifier&lt;/th&gt;
  &lt;th&gt;Meaning&lt;/th&gt;
 &lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
 &lt;tr&gt;
  &lt;td&gt;public&lt;/td&gt;
  &lt;td&gt;Available to all classes&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;protected&lt;/td&gt;
  &lt;td&gt;Available only to the current class or to derived classes&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;internal&lt;/td&gt;
  &lt;td&gt;Available only to classes in the current assembly&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;protected internal&lt;/td&gt;
  &lt;td&gt;Available only to the current class, derived classes, or classes in the current assembly&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;private&lt;/td&gt;
  &lt;td&gt;Available only to the containing class&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;virtual&lt;/td&gt;
  &lt;td&gt;Creates a virtual method or property that can be overriden by a subclass&lt;/td&gt;
 &lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-5098416698015296112?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/5098416698015296112/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=5098416698015296112' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/5098416698015296112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/5098416698015296112'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2007/09/list-of-access-modifiers-in-c.html' title='List of Access Modifiers in C#'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-5846531460084615935</id><published>2007-09-24T23:03:00.001-07:00</published><updated>2008-10-16T11:27:46.329-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='family'/><title type='text'>My Son's Playing in His First Piano Recital</title><content type='html'>&lt;object width="425" height="350"&gt; &lt;param name="movie" value="http://www.youtube.com/v/yrEAngx4b-4"&gt; &lt;/param&gt; &lt;embed src="http://www.youtube.com/v/yrEAngx4b-4" type="application/x-shockwave-flash" width="425" height="350"&gt; &lt;/embed&gt; &lt;/object&gt;

&lt;p&gt;He had been practicing at least once daily for the past few weeks to prepare for his first recital ever.  His perseverance and hard work surely paid off.  In his short program, he played two pieces back to back, &lt;span style="font-style:italic;"&gt;&lt;span style="font-weight:bold;"&gt;Baby Face&lt;/span&gt;&lt;/span&gt; and &lt;span style="font-style:italic;"&gt;&lt;span style="font-weight:bold;"&gt;Swing Town&lt;/span&gt;&lt;span style="font-weight:bold;"&gt;&lt;/span&gt;&lt;/span&gt;.  My goodness, no tense, nor flustered he is, he just played it, beautifully.  As for me,  it was nerve wracking, but I made it.  Just ecstatic!  I'm proud of you son.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-5846531460084615935?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/5846531460084615935/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=5846531460084615935' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/5846531460084615935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/5846531460084615935'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2007/09/my-son.html' title='My Son&apos;s Playing in His First Piano Recital'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-3478071231234025862</id><published>2007-09-14T17:52:00.000-07:00</published><updated>2008-10-16T11:30:41.583-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wala lang'/><title type='text'>Hey There Delilah</title><content type='html'>&lt;p&gt;Another song I like.  By &lt;a href="http://en.wikipedia.org/wiki/Plain_White_T's"&gt;Plain White T's&lt;/a&gt;.  There are songs that just strike your heartstrings.  This is one of them.  This song reminded me of when my then girlfriend had to leave to go to another country.  I liked the song, first because of the lyrics, hmmm... a bit similar to the words that I said in my letters and phone calls to her.  Hey, this guy is just simply retelling a segment of my life.  Second, the melody of the song is just great, hauntingly folkish.  Btw, just a little bit of trivia about this song, this was actually released in 2005.  And now that the band had reached superstar (or superband?) status, some of their songs had been revisited, this song was one of them.  It got re-released and reached the Billboard's top spot in July 2007.  Now even considered as the biggest hit of the summer.  Read more from &lt;a href="http://en.wikipedia.org/wiki/Hey_There_Delilah"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;span style="font-style:italic;"&gt;
&lt;p&gt;
Hey there Delilah,&lt;br /&gt;
What's it like in New York City? &lt;br /&gt;
I'm a thousand miles away, &lt;br /&gt;
But girl tonight you look so pretty, &lt;br /&gt;
Yes you do, &lt;br /&gt;
Time Square can't shine as bright as you, &lt;br /&gt;
I swear it's true. &lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
Hey there Delilah, &lt;br /&gt;
Don't you worry about the distance, &lt;br /&gt;
I'm right there if you get lonely, &lt;br /&gt;
Give this song another listen, &lt;br /&gt;
Close your eyes, &lt;br /&gt;
Listen to my voice it's my disguise, &lt;br /&gt;
I'm by your side. &lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
Oh it's what you do to me, &lt;br /&gt;
Oh it's what you do to me, &lt;br /&gt;
Oh it's what you do to me, &lt;br /&gt;
Oh it's what you do to me, &lt;br /&gt;
What you do to me. &lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
Hey there Delilah, &lt;br /&gt;
I know times are getting hard, &lt;br /&gt;
But just believe me girl some day, &lt;br /&gt;
I'll pay the bills with this guitar, &lt;br /&gt;
We'll have it good, &lt;br /&gt;
We'll have the life we knew we would, &lt;br /&gt;
My word is good. &lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
Hey there Delilah, &lt;br /&gt;
I've got so much left to say, &lt;br /&gt;
If every simple song I wrote to you, &lt;br /&gt;
Would take your breath away, &lt;br /&gt;
I'd write it all, &lt;br /&gt;
Even more in love with me you'd fall, &lt;br /&gt;
We'd have it all. &lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
Oh it's what you do to me, &lt;br /&gt;
Oh it's what you do to me, &lt;br /&gt;
Oh it's what you do to me, &lt;br /&gt;
Oh it's what you do to me. &lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
A thousand miles seems pretty far, &lt;br /&gt;
But they've got planes and trains and cars, &lt;br /&gt;
I'd walk to you if I had no other way, &lt;br /&gt;
Our friends would all make fun of us, &lt;br /&gt;
And we'll just laugh along because, &lt;br /&gt;
We know that none of them have felt this way, &lt;br /&gt;
Delilah I can promise you, &lt;br /&gt;
That by the time that we get through, &lt;br /&gt;
The world will never ever be the same, &lt;br /&gt;
And you're to blame. &lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
Hey there Delilah you be good, &lt;br /&gt;
And don't you miss me, &lt;br /&gt;
Two more years and you'll be done with school, &lt;br /&gt;
And I'll be making history, &lt;br /&gt;
Like I do, &lt;br /&gt;
You'll know it's all because of you, &lt;br /&gt;
We can do whatever we want to, &lt;br /&gt;
Hey there Delilah here's to you, &lt;br /&gt;
This one's for you. &lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
Oh it's what you do to me, &lt;br /&gt;
Oh it's what you do to me, &lt;br /&gt;
Oh it's what you do to me, &lt;br /&gt;
Oh it's what you do to me, &lt;br /&gt;
What you do to me. &lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
Ohhh&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/37100504-3478071231234025862?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/3478071231234025862/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=3478071231234025862' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/3478071231234025862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/3478071231234025862'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2007/09/hey-there-delilah.html' title='Hey There Delilah'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-1836075800426480872</id><published>2007-09-14T17:25:00.000-07:00</published><updated>2008-10-16T11:32:05.034-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><title type='text'>How to search all stored procedures in a db for a particular "text"</title><content type='html'>&lt;/p&gt;After migrating a large db from SQL Server 2000 to SQL Server 2005, one of the changes I needed to make was to switch from using xp_smtp_sendmail to sp_send_dbmail using the new "Database Mail" feature.  Since I'm dealing with a db with at least a couple hundred stored procedures, I didn't want to manually look at each one.  &lt;a href="http://databases.aspfaq.com/database/how-do-i-find-a-stored-procedure-containing-text.html"&gt;Here&lt;/a&gt; is a blogpost I found tackling this issue.
&lt;/p&gt;
&lt;p&gt;Summarizing, here's what I have used:&lt;/p&gt;
&lt;pre&gt;
use mydb;
go

select routine_name, routine_definition
from information_schema.routines
where routine_definition like '%xp_smtp_sendmail%'
and routine_type = 'procedure'
go
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-1836075800426480872?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/1836075800426480872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=1836075800426480872' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/1836075800426480872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/1836075800426480872'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2007/09/how-to-search-all-stored-procedures-in.html' title='How to search all stored procedures in a db for a particular &quot;text&quot;'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-8025463852666230276</id><published>2007-09-04T14:06:00.000-07:00</published><updated>2008-10-16T11:36:09.778-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><title type='text'>SSIS problems with Excel Source</title><content type='html'>&lt;p&gt;I'm working on an import to my databases from an Excel sheet.  This should have been a breeze with SSIS if not because of issues with the Excel Source data flow, which is apparently because of Jet OLEDB.  Let me describe the issue.  When data is read from an Excel worksheet, the Jet samples the first few rows for the data type, the problem is that when it encounters a different one other than what it assumed at first, instead of raising an exception, it just simply drops the data and replaces it with NULL.  And so, what happened at first, I thought that all data was imported in the database not knowing that some of them were NULL.  Bad...bad...bad.
&lt;/p&gt;
&lt;p&gt;Anyhow, here's the solution, enjoy:&lt;/p&gt;

&lt;p&gt;
1.  Going to the Excel Connection Manager, I changed the Connection Strings to:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=H:\BillingReport\Upload.xls;Extended Properties="EXCEL 8.0;HDR=YES;IMEX=1";
&lt;/p&gt;
&lt;p&gt;I added IMEX=1&lt;/p&gt;

&lt;p&gt;
2.  Went to the registry of where the package will run and changed:
Hkey_Local_Machine/Software/Microsoft/Jet/4.0/Engines/Excel/TypeGuessRows
to 0 (zero for maximum).
&lt;/p&gt;

&lt;p&gt;This solution came from these posts:&lt;/p&gt;
&lt;a href="http://msmvps.com/blogs/nickwienholt/archive/2006/03/15/86379.aspx"&gt;msmvps&lt;/a&gt;
&lt;br /&gt;
&lt;a href="http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=85381"&gt;sqlteam&lt;/a&gt;
&lt;br /&gt;
&lt;a href="http://bi-polar23.blogspot.com/2007/08/loading-multiple-excel-files-with-ssis.html"&gt;bi-polar23&lt;/a&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;p&gt;Thank you all!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-8025463852666230276?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/8025463852666230276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=8025463852666230276' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/8025463852666230276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/8025463852666230276'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2007/09/ssis-problems-with-excel-source.html' title='SSIS problems with Excel Source'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-4366025687288418268</id><published>2007-08-16T10:29:00.000-07:00</published><updated>2008-10-16T11:37:44.831-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><title type='text'>SQL Server 2005 Error:  User or Role already exists in the current database</title><content type='html'>&lt;p&gt;Just for me to remember.  I'm currently doing  migration of our applications and databases from the East Coast going to California.  This is something that came up when I migrated one of my databases.  I certainly would like to remember...
&lt;/p&gt;
&lt;p&gt;
This is what happens when you restore the database to a new server, you expect that accounts could be configured to access the database via the "User Mapping".  But instead there is this error message:  "Error 15023: User or role already exists in the current database."  Apparently, this is just a case of SID mismatch.  Here's the solution:
&lt;/p&gt;
&lt;p&gt;SQL Server has a built in stored procedure to handle this issue:
&lt;/p&gt;
&lt;p&gt;&lt;span style="font-weight:bold;"&gt;sp_change_users_login&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;Use the parameter 'Update_One' to update one SID:
&lt;/p&gt;
&lt;pre&gt;
USE YourDatabase
GO

EXEC sp_change_users_login Update_One, 'yourLogin', 'yourLogin'
GO
&lt;/pre&gt;

&lt;p&gt;
Go to this &lt;a href="http://www.falafel.com/community/blogs/adonet/archive/2007/07/15/error-15023-user-or-role-already-exists-in-the-current-database.aspx"&gt;post&lt;/a&gt; for further reading.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-4366025687288418268?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/4366025687288418268/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=4366025687288418268' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/4366025687288418268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/4366025687288418268'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2007/08/sql-server-2005-error-user-or-role.html' title='SQL Server 2005 Error:  User or Role already exists in the current database'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-6403267155547946421</id><published>2007-06-18T10:22:00.000-07:00</published><updated>2008-10-16T11:39:56.395-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wala lang'/><title type='text'>Nothing Left to Lose</title><content type='html'>&lt;p&gt;I just love this song by &lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FNothing-Left-Lose-Mat-Kearney%2Fdp%2FB000EQ47LS%3Fie%3DUTF8%26s%3Dmusic%26qid%3D1182187559%26sr%3D8-1&amp;tag=mylifiname-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=9325"&gt;Matt Kearney&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=mylifiname-20&amp;amp;l=ur2&amp;amp;o=1" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;the very first time I heard it on the radio.  Here's the lyrics of this song courtesy of &lt;a href="http://thatoneguy.wordpress.com/2006/09/18/mat-kearney-nothing-left-to-lose-lyrics/"&gt;splatr&lt;/a&gt;:
&lt;/p&gt;

&lt;span style="font-style:italic;"&gt;
&lt;p&gt;
Something’s in the air tonight&lt;br /&gt;
The sky’s alive with a burning light&lt;br /&gt;
You can mark my words something’s about to break&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
And i found myself in a bitter fight&lt;br /&gt;
While I’ve held your hand through the darkest night&lt;br /&gt;
Don’t know where your coming from but your coming soon&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
To a kid from Oregon by way of California&lt;br /&gt;
All of this is more than I’ve ever known or seen&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
Come on and we’ll sing, like we were free&lt;br /&gt;
Push the pedal down watch the world around fly by us&lt;br /&gt;
Come on and we’ll try, one last time&lt;br /&gt;
I’m off of the floor one more time to find you&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
And here we go there’s nothing left to choose&lt;br /&gt;
And here we go there’s nothing left to lose&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
So I packed my car and headed east&lt;br /&gt;
Where I felt your fire and a sweet release&lt;br /&gt;
There’s a fire in these hills that’s coming down&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
And I don’t know much but i found you here&lt;br /&gt;
And I can not wait another year&lt;br /&gt;
Don’t know where your coming from but you coming soon&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
To a kid from Oregon by way of California&lt;br /&gt;
All of this is more than i’ve ever known or seen&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
Come on and we’ll sing, like we were free&lt;br /&gt;
Push the pedal down watch the world around fly by us&lt;br /&gt;
Come on and we’ll try, one last time&lt;br /&gt;
I’m off of the floor one more time to find you&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
And here we go there’s nothing left to choose&lt;br /&gt;
And here we go there’s nothing left to lose&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
I can still hear the trains out my window&lt;br /&gt;
From Hobart street to here in Nashville&lt;br /&gt;
I can still smell the pomegranates grow&lt;br /&gt;
And I don’t know how hard this wind will blow&lt;br /&gt;
Or where we’ll go&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
Come on and we’ll sing, like we were free&lt;br /&gt;
Push the pedal down watch the world around fly by us&lt;br /&gt;
Come on and we’ll try, one last time&lt;br /&gt;
I’m off of the floor one more time to find you&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
And here we go there’s nothing left to choose&lt;br /&gt;
And here we go there’s nothing left to lose&lt;br /&gt;
&lt;/p&gt;
&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-6403267155547946421?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/6403267155547946421/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=6403267155547946421' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/6403267155547946421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/6403267155547946421'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2007/06/nothing-left-to-lose.html' title='Nothing Left to Lose'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-4505452474532393361</id><published>2007-06-05T13:55:00.000-07:00</published><updated>2008-12-08T23:58:40.814-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Object Oriented Analysis and Design</title><content type='html'>&lt;p&gt;I'm reading this &lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FObject-Oriented-Analysis-Design-Applications-3rd%2Fdp%2F020189551X%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1181077196%26sr%3D1-1&amp;tag=mylifiname-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=9325"&gt;book&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=mylifiname-20&amp;amp;l=ur2&amp;amp;o=1" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;about &lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FObject-Oriented-Analysis-Design-Applications-3rd%2Fdp%2F020189551X%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1181077196%26sr%3D1-1&amp;tag=mylifiname-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=9325"&gt;Object-Oriented Analysis and Design.&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=mylifiname-20&amp;amp;l=ur2&amp;amp;o=1" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;  These are some excerpts I would like to take note of:
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-weight:bold;"&gt;The Role of Decomposition&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
"The technique of mastering complexity has been known since ancient times: divide et impera (divide and rule)". When designing a complex software system, it is essential to decompose it into smaller and smaller parts, each of which we may then refine independently. In this manner, we satisfy the very real constraint that exists on the channel capacity of human cognition: To understand any given level of a system, we need only comprehend a few parts (rather than all parts) at once. Indeed, as Parnas observes, intelligent decomposition directly addresses the inherent complexity of software by forcing a division of a system's state space.
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-weight:bold;"&gt;The Role of Abstraction&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Earlier, we referred to Miller's experiments, from which he concluded that an individual can comprehend only about seven, plus or minus two, chunks of information at one time. This number appears to be independent of information content. As Miller himself observes, "The span of absolute judgment and the span of immediate memory impose severe limitations on the amount of information that we are able to receive, process and remember. By organizing the stimulus input simultaneously into several dimensions and successively into a sequence of chunks, we manage to break ... this informational bottleneck". In contemporary terms, we call this process chunking or abstraction.
&lt;/p&gt;
&lt;p&gt;
As Wulf describes it, "We (humans) have developed an exceptionally powerful technique for dealing with complexity. We abstract from it. Unable to master the entirety of a complex object, we choose to ignore its inessential details, dealing instead with the generalized, idealized model of the object". For example, when studying how photosynthesis works in a plant, we can focus on the chemical reactions in certain cells in a leaf and ignore all other parts, such as the roots and stems. We are still constrained by the number of things that we can comprehend at one time, but through abstraction, we use chunks of information with increasingly greater semantic content. This is especially true if we take an object-oriented view of the world because objects, as abstractions of entities in the real world, represent a particularly dense and cohesive clustering of information.
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-weight:bold;"&gt;Elements of the Object Model&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
   1. Abstraction&lt;br /&gt;
   2. Encapsulation&lt;br /&gt;
   3. Modularity&lt;br /&gt;
   4. Hierarchy&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
By major, we mean that a model without any one of these elements is not object-oriented.
&lt;/p&gt;
&lt;p&gt;
There are three minor elements of the object model:
&lt;/p&gt;
&lt;p&gt;
   1. Typing&lt;br /&gt;
   2. Concurrency&lt;br /&gt;
   3. Persistence&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
By minor, we mean that each of these elements is a useful, but not essential, part of the object model.
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-weight:bold;"&gt;Abstraction:&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Abstraction focuses on the essential characteristics of some object, relative to the perspective of the viewer.
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cf9ZNaFBCrc/RmXjliw6chI/AAAAAAAABLM/MnHhzM4qhh4/s1600-h/abstraction.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_cf9ZNaFBCrc/RmXjliw6chI/AAAAAAAABLM/MnHhzM4qhh4/s400/abstraction.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5072710789429359122" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-weight:bold;"&gt;Encapsulation:&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Encapsulation hides the details of the implementation of an object.
&lt;/p&gt;
&lt;p&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cf9ZNaFBCrc/RmXpSCw6ciI/AAAAAAAABLU/IucbOx3gVJw/s1600-h/encapsulation.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_cf9ZNaFBCrc/RmXpSCw6ciI/AAAAAAAABLU/IucbOx3gVJw/s400/encapsulation.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5072717051491676706" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Abstraction and encapsulation are complementary concepts: Abstraction focuses on the observable behavior of an object, whereas encapsulation focuses on the implementation that gives rise to this behavior. Encapsulation is most often achieved through information hiding (not just data hiding), which is the process of hiding all the secrets of an object that do not contribute to its essential characteristics; typically, the structure of an object is hidden, as well as the implementation of its methods. "No part of a complex system should depend on the internal details of any other part". Whereas abstraction "helps people to think about what they are doing," encapsulation "allows program changes to be reliably made with limited effort".
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-weight:bold;"&gt;Modularity:&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Modularity packages abstractions into discrete units.
&lt;/p&gt;
&lt;p&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cf9ZNaFBCrc/RmXsciw6cjI/AAAAAAAABLc/8SI8JiBUejg/s1600-h/modularity.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_cf9ZNaFBCrc/RmXsciw6cjI/AAAAAAAABLc/8SI8JiBUejg/s400/modularity.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5072720530415186482" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-weight:bold;"&gt;Hierarchy:&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Abstractions form a hierarchy.
&lt;/p&gt;
&lt;p&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_cf9ZNaFBCrc/RmhDyiw6ckI/AAAAAAAABLs/SJdARgxNISo/s1600-h/hierarchy.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_cf9ZNaFBCrc/RmhDyiw6ckI/AAAAAAAABLs/SJdARgxNISo/s400/hierarchy.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5073379515837346370" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-weight:bold;"&gt;Typing:&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Strong typing prevents mixing of abstractions.
&lt;/p&gt;
&lt;p&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_cf9ZNaFBCrc/RmhLQiw6clI/AAAAAAAABL0/L093KuTyeq8/s1600-h/typing.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_cf9ZNaFBCrc/RmhLQiw6clI/AAAAAAAABL0/L093KuTyeq8/s400/typing.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5073387727814816338" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-weight:bold;"&gt;Concurrency:&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Concurrency allows different objects to act at the same time.
&lt;/p&gt;
&lt;p&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cf9ZNaFBCrc/RmhM6yw6cmI/AAAAAAAABL8/jsXD5SoO3FQ/s1600-h/concurrency.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_cf9ZNaFBCrc/RmhM6yw6cmI/AAAAAAAABL8/jsXD5SoO3FQ/s400/concurrency.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5073389553175917154" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-weight:bold;"&gt;Persistence:&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Persistence saves the state and class of an object across time or space.
&lt;/p&gt;
&lt;p&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cf9ZNaFBCrc/RmhQ0yw6cnI/AAAAAAAABME/T2JB93nA7b8/s1600-h/persistence.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_cf9ZNaFBCrc/RmhQ0yw6cnI/AAAAAAAABME/T2JB93nA7b8/s400/persistence.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5073393848143213170" /&gt;&lt;/a&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-4505452474532393361?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/4505452474532393361/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=4505452474532393361' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/4505452474532393361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/4505452474532393361'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2007/06/object-oriented-analysis-and-design.html' title='Object Oriented Analysis and Design'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_cf9ZNaFBCrc/RmXjliw6chI/AAAAAAAABLM/MnHhzM4qhh4/s72-c/abstraction.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-6016118175247613883</id><published>2007-05-07T15:54:00.000-07:00</published><updated>2008-10-16T11:44:49.296-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Update Active Directory using Perl</title><content type='html'>&lt;p&gt;Over the weekend, I received a phone call from my manager because there was an emergency to help out in a site migration that was happening somewhere in Texas.  One of the things that was needed to be done is to import data from an Excel spreadsheet to a new active directory setup.  Well, this is a pretty easy thing to do with perl.&lt;/p&gt;
&lt;p&gt;Here's my solution:
&lt;/p&gt;

&lt;div id='snippet'&gt;
&lt;font color="#66ff00"&gt;#set_user_account.pl&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;#Program to import data to Active Directory&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;#by: Sam Dela Cruz&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;#date: 05/04/2007&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;use &lt;/font&gt;Win32;&lt;br /&gt;
&lt;font color="#ff6600"&gt;use &lt;/font&gt;Win32::OLE &lt;font color="#ff80ff"&gt;qw(&lt;/font&gt;&lt;font color="#ff80ff"&gt;in&lt;/font&gt;&lt;font color="#ff80ff"&gt;)&lt;/font&gt;;&lt;br /&gt;
&lt;font color="#ff6600"&gt;use &lt;/font&gt;Win32::OLE::Enum;&lt;br /&gt;
&lt;font color="#ff6600"&gt;use &lt;/font&gt;Spreadsheet::ParseExcel::Simple;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;#list should be in the form of&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;#userid,lastname,firstname,middlename,organization,location,street,city,state,zip,phone,mobile,fax&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$data_source&lt;/font&gt;;&lt;br /&gt;
&lt;font color="#ff6600"&gt;unless&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;@ARGV&lt;/font&gt;) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;print&lt;/font&gt;&amp;nbsp;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;Enter input file: &lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;chomp&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;$data_source&lt;/font&gt;&amp;nbsp;= );&lt;br /&gt;
}&lt;br /&gt;
&lt;font color="#ff6600"&gt;else&lt;/font&gt;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$data_source&lt;/font&gt;&amp;nbsp;= &lt;font color="#ff6600"&gt;shift&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;@ARGV&lt;/font&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$xls&lt;/font&gt;&amp;nbsp;= Spreadsheet::ParseExcel::Simple-&amp;gt;&lt;font color="#ff6600"&gt;read&lt;/font&gt;(&lt;font color="#00ffff"&gt;$data_source&lt;/font&gt;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;or&lt;/font&gt;&amp;nbsp;&lt;font color="#ff6600"&gt;die&lt;/font&gt;&amp;nbsp;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;Cannot read &lt;/font&gt;&lt;font color="#00ffff"&gt;$data_source&lt;/font&gt;&lt;font color="#ff80ff"&gt;: &lt;/font&gt;&lt;font color="#00ffff"&gt;$!&lt;/font&gt;&lt;font color="#ffa500"&gt;\n&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;foreach&lt;/font&gt;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$sheet&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;$xls&lt;/font&gt;-&amp;gt;sheets()){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;while&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;$sheet&lt;/font&gt;-&amp;gt;has_data){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;$usb&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$ln&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$fn&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$mn&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$org&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$location&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$street&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$city&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$state&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$zip&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$phone&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$mobile&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$fax&lt;/font&gt;&amp;nbsp;) = &lt;font color="#00ffff"&gt;$sheet&lt;/font&gt;-&amp;gt;next_row;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$user&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;if&lt;/font&gt;(&lt;font color="#00ffff"&gt;$user&lt;/font&gt;&amp;nbsp;= get_user(&lt;font color="#00ffff"&gt;$usb&lt;/font&gt;)){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$User&lt;/font&gt;-&amp;gt;GetInfo();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#66ff00"&gt;#Set Info&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set_object_property(&lt;font color="#00ffff"&gt;$User&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;sn&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;remove_before_after_space(&lt;font color="#00ffff"&gt;$ln&lt;/font&gt;)); &lt;font color="#66ff00"&gt;#lastname&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set_object_property(&lt;font color="#00ffff"&gt;$User&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;givenName&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;remove_before_after_space(&lt;font color="#00ffff"&gt;$fn&lt;/font&gt;)); &lt;font color="#66ff00"&gt;#firstname&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set_object_property(&lt;font color="#00ffff"&gt;$User&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;initials&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;remove_before_after_space(&lt;font color="#00ffff"&gt;$mn&lt;/font&gt;)); &lt;font color="#66ff00"&gt;#middlename&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set_object_property(&lt;font color="#00ffff"&gt;$User&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;department&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;remove_before_after_space(&lt;font color="#00ffff"&gt;$org&lt;/font&gt;)); &lt;font color="#66ff00"&gt;#organization&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set_object_property(&lt;font color="#00ffff"&gt;$User&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;physicalDeliveryOfficeName&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;remove_before_after_space(&lt;font color="#00ffff"&gt;$location&lt;/font&gt;)); &lt;font color="#66ff00"&gt;#location&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set_object_property(&lt;font color="#00ffff"&gt;$User&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;streetAddress&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;remove_before_after_space(&lt;font color="#00ffff"&gt;$street&lt;/font&gt;)); &lt;font color="#66ff00"&gt;#street&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set_object_property(&lt;font color="#00ffff"&gt;$User&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;l&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;remove_before_after_space(&lt;font color="#00ffff"&gt;$city&lt;/font&gt;)); &lt;font color="#66ff00"&gt;#city&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set_object_property(&lt;font color="#00ffff"&gt;$User&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;st&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;remove_before_after_space(&lt;font color="#00ffff"&gt;$state&lt;/font&gt;)); &lt;font color="#66ff00"&gt;#state&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set_object_property(&lt;font color="#00ffff"&gt;$User&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;postalcode&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;remove_before_after_space(&lt;font color="#00ffff"&gt;$zip&lt;/font&gt;)); &lt;font color="#66ff00"&gt;#zip&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set_object_property(&lt;font color="#00ffff"&gt;$User&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;telephoneNumber&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;remove_before_after_space(&lt;font color="#00ffff"&gt;$phone&lt;/font&gt;)); &lt;font color="#66ff00"&gt;#phone&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set_object_property(&lt;font color="#00ffff"&gt;$User&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;mobile&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;remove_before_after_space(&lt;font color="#00ffff"&gt;$mobile&lt;/font&gt;)); &lt;font color="#66ff00"&gt;#mobile&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set_object_property(&lt;font color="#00ffff"&gt;$User&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;facsimiletelephonenumber&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;remove_before_after_space(&lt;font color="#00ffff"&gt;$fax&lt;/font&gt;)); &lt;font color="#66ff00"&gt;#fax&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;unless&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;$User&lt;/font&gt;-&amp;gt;SetInfo()){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;print&lt;/font&gt;&amp;nbsp;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;Uploaded,&lt;/font&gt;&lt;font color="#00ffff"&gt;$usb&lt;/font&gt;&lt;font color="#ff80ff"&gt;,&lt;/font&gt;&lt;font color="#00ffff"&gt;$ln&lt;/font&gt;&lt;font color="#ff80ff"&gt;,&lt;/font&gt;&lt;font color="#00ffff"&gt;$fn&lt;/font&gt;&lt;font color="#ff80ff"&gt;,&lt;/font&gt;&lt;font color="#00ffff"&gt;$mn&lt;/font&gt;&lt;font color="#ff80ff"&gt;,&lt;/font&gt;&lt;font color="#00ffff"&gt;$org&lt;/font&gt;&lt;font color="#ff80ff"&gt;,&lt;/font&gt;&lt;font color="#00ffff"&gt;$location&lt;/font&gt;&lt;font color="#ff80ff"&gt;,&lt;/font&gt;&lt;font color="#00ffff"&gt;$street&lt;/font&gt;&lt;font color="#ff80ff"&gt;,&lt;/font&gt;&lt;font color="#00ffff"&gt;$city&lt;/font&gt;&lt;font color="#ff80ff"&gt;,&lt;/font&gt;&lt;font color="#00ffff"&gt;$state&lt;/font&gt;&lt;font color="#ff80ff"&gt;,&lt;/font&gt;&lt;font color="#00ffff"&gt;$zip&lt;/font&gt;&lt;font color="#ff80ff"&gt;,&lt;/font&gt;&lt;font color="#00ffff"&gt;$phone&lt;/font&gt;&lt;font color="#ff80ff"&gt;,&lt;/font&gt;&lt;font color="#00ffff"&gt;$mobile&lt;/font&gt;&lt;font color="#ff80ff"&gt;,&lt;/font&gt;&lt;font color="#00ffff"&gt;$fax&lt;/font&gt;&lt;font color="#ffa500"&gt;\n&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;else&lt;/font&gt;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;print&lt;/font&gt;&amp;nbsp;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;Cannot upload &lt;/font&gt;&lt;font color="#00ffff"&gt;$usb&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;nbsp;info: &lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;.Win32::OLE-&amp;gt;LastError.&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ffa500"&gt;\n&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;else&lt;/font&gt;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;print&lt;/font&gt;&amp;nbsp;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;Unable to open &lt;/font&gt;&lt;font color="#00ffff"&gt;$usb&lt;/font&gt;&lt;font color="#ffa500"&gt;\n&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;sub&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#00ffff"&gt;get_user&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$usb&lt;/font&gt;&amp;nbsp;= &lt;font color="#ff6600"&gt;shift&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$user&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$ldap&lt;/font&gt;&amp;nbsp;= &lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;LDAP://cn=&lt;/font&gt;&lt;font color="#00ffff"&gt;$usb&lt;/font&gt;&lt;font color="#ff80ff"&gt;,ou=corporate,ou=users,ou=corporate,dc=acme,dc=acme,dc=com&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;if&lt;/font&gt;(&lt;font color="#00ffff"&gt;$user&lt;/font&gt;&amp;nbsp;= Win32::OLE-&amp;gt;GetObject(&lt;font color="#00ffff"&gt;$ldap&lt;/font&gt;)){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;return&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$user&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;return&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;0&lt;/font&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;sub&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#00ffff"&gt;set_object_property&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;$object&lt;/font&gt;,&lt;font color="#00ffff"&gt;$property&lt;/font&gt;,&lt;font color="#00ffff"&gt;$value&lt;/font&gt;)=&lt;font color="#00ffff"&gt;@_&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;if&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;$value&lt;/font&gt;) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;print&lt;/font&gt;&amp;nbsp;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;Error: &lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;.Win32::OLE-&amp;gt;LastError.&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;,&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&amp;nbsp;&lt;font color="#ff6600"&gt;if&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;$object&lt;/font&gt;-&amp;gt;Put(&lt;font color="#00ffff"&gt;$property&lt;/font&gt;,&lt;font color="#00ffff"&gt;$value&lt;/font&gt;));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;else&lt;/font&gt;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;print&lt;/font&gt;&amp;nbsp;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;Error: &lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;.Win32::OLE-&amp;gt;LastError.&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;,&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&amp;nbsp;&lt;font color="#ff6600"&gt;if&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;$object&lt;/font&gt;-&amp;gt;PutEx(&lt;font color="#00ffff"&gt;1&lt;/font&gt;,&lt;font color="#00ffff"&gt;$property&lt;/font&gt;,&lt;font color="#00ffff"&gt;$value&lt;/font&gt;));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;sub&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#00ffff"&gt;remove_before_after_space&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$data&lt;/font&gt;&amp;nbsp;= &lt;font color="#ff6600"&gt;shift&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$data&lt;/font&gt;&amp;nbsp;=~ &lt;font color="#ff6600"&gt;s/&lt;/font&gt;&lt;font color="#ff80ff"&gt;^&lt;/font&gt;&lt;font color="#ffa500"&gt;\s&lt;/font&gt;&lt;font color="#ffa500"&gt;+&lt;/font&gt;&lt;font color="#ff80ff"&gt;|&lt;/font&gt;&lt;font color="#ffa500"&gt;\s&lt;/font&gt;&lt;font color="#ffa500"&gt;+&lt;/font&gt;&lt;font color="#ff80ff"&gt;$&lt;/font&gt;&lt;font color="#ff6600"&gt;//g&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;return&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$data&lt;/font&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;

&lt;p&gt;There is just one gotcha.  When setting up object property with the value of NULL or if you want to blank out that property, you will have to use a different method called PutEx with the ADS_PROPERTY_CLEAR = 1, thus:
&lt;/p&gt;

Instead of

&lt;div id='snippet'&gt;
&lt;font color="#00ffff"&gt;$object&lt;/font&gt;-&amp;gt;Put(&lt;font color="#00ffff"&gt;$property&lt;/font&gt;,&lt;font color="#00ffff"&gt;$value&lt;/font&gt;)&lt;br /&gt;&lt;br /&gt;
&lt;/div&gt;

do

&lt;div id='snippet'&gt;
&lt;font color="#00ffff"&gt;$object&lt;/font&gt;-&amp;gt;PutEx(&lt;font color="#00ffff"&gt;1&lt;/font&gt;,&lt;font color="#00ffff"&gt;$property&lt;/font&gt;,&lt;font color="#00ffff"&gt;$value&lt;/font&gt;)&lt;br /&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-6016118175247613883?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/6016118175247613883/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=6016118175247613883' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/6016118175247613883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/6016118175247613883'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2007/05/update-active-directory-using-perl.html' title='Update Active Directory using Perl'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-7602774657036816490</id><published>2007-03-30T11:47:00.000-07:00</published><updated>2009-03-06T10:04:12.477-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lotus notes'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Access Lotus Notes using Perl via Win32::OLE</title><content type='html'>&lt;p&gt;Are you a Lotus Notes user?  Did you ever wonder how you can extract text out of Lotus Notes using Perl?  Here's a script that I wrote to extract notification emails:
&lt;/p&gt;

&lt;div id='snippet'&gt;
&lt;font color="#ff6600"&gt;use &lt;/font&gt;Win32::OLE;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$server&lt;/font&gt;;&lt;br /&gt;
&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$database&lt;/font&gt;;&lt;br /&gt;
&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$folder&lt;/font&gt;;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$file&lt;/font&gt;&amp;nbsp;= &lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;temp_file.csv&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$ini&lt;/font&gt;&amp;nbsp;= &lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;get_emails.ini&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;;&lt;br /&gt;
&lt;font color="#ff6600"&gt;if&lt;/font&gt;&amp;nbsp;(&lt;font color="#ff6600"&gt;-e&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$ini&lt;/font&gt;)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;open&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;INI&lt;/font&gt;,&lt;font color="#00ffff"&gt;$ini&lt;/font&gt;) || &lt;font color="#ff6600"&gt;die&lt;/font&gt;&amp;nbsp;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;Not able to open &lt;/font&gt;&lt;font color="#00ffff"&gt;$ini&lt;/font&gt;&lt;font color="#ff80ff"&gt;: &lt;/font&gt;&lt;font color="#00ffff"&gt;$!&lt;/font&gt;&lt;font color="#ffa500"&gt;\n&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;chomp&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;$server&lt;/font&gt;&amp;nbsp;= );&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;chomp&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;$database&lt;/font&gt;&amp;nbsp;= );&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;chomp&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;$folder&lt;/font&gt;&amp;nbsp;= );&lt;br /&gt;
}&lt;br /&gt;
&lt;font color="#ff6600"&gt;else&lt;/font&gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;print&lt;/font&gt;&amp;nbsp;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ffa500"&gt;\n&lt;/font&gt;&lt;font color="#ff80ff"&gt;Enter Notes Server: &lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;chomp&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;$server&lt;/font&gt;=);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;print&lt;/font&gt;&amp;nbsp;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ffa500"&gt;\n&lt;/font&gt;&lt;font color="#ff80ff"&gt;Enter Notes Database: &lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;chomp&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;$database&lt;/font&gt;=);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;print&lt;/font&gt;&amp;nbsp;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ffa500"&gt;\n&lt;/font&gt;&lt;font color="#ff80ff"&gt;Enter Folder you want to access: &lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;chomp&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;$folder&lt;/font&gt;=);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;#connect to the Notes database&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$Notes&lt;/font&gt;&amp;nbsp;= Win32::OLE-&amp;gt;&lt;font color="#ff6600"&gt;new&lt;/font&gt;(&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;Notes.NotesSession&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;) || &lt;font color="#ff6600"&gt;warn&lt;/font&gt;&amp;nbsp;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;Cannot start Lotus Notes Session object: &lt;/font&gt;&lt;font color="#00ffff"&gt;$!&lt;/font&gt;&lt;font color="#ffa500"&gt;\n&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;;&lt;br /&gt;
&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$Database&lt;/font&gt;&amp;nbsp;= &lt;font color="#00ffff"&gt;$Notes&lt;/font&gt;-&amp;gt;GetDatabase(&lt;font color="#00ffff"&gt;$server&lt;/font&gt;, &lt;font color="#00ffff"&gt;$database&lt;/font&gt;);&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;#Fetch contents of the folder&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$Response&lt;/font&gt;&amp;nbsp;= &lt;font color="#00ffff"&gt;$Database&lt;/font&gt;-&amp;gt;GetView(&lt;font color="#00ffff"&gt;$folder&lt;/font&gt;);&lt;br /&gt;
&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$Count&lt;/font&gt;&amp;nbsp;= &lt;font color="#00ffff"&gt;$Response&lt;/font&gt;-&amp;gt;TopLevelEntryCount;&lt;br /&gt;
&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$Index&lt;/font&gt;&amp;nbsp;= &lt;font color="#00ffff"&gt;$Count&lt;/font&gt;;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;open&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;OUT&lt;/font&gt;, &lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;$file&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;);&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;#loop through all emails&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff6600"&gt;for&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;1.&lt;/font&gt;.&lt;font color="#00ffff"&gt;$Count&lt;/font&gt;)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$Document&lt;/font&gt;&amp;nbsp;= &lt;font color="#00ffff"&gt;$Response&lt;/font&gt;-&amp;gt;GetNthDocument(&lt;font color="#00ffff"&gt;$Index&lt;/font&gt;--);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$subject&lt;/font&gt;&amp;nbsp;= &lt;font color="#00ffff"&gt;$Document&lt;/font&gt;-&amp;gt;GetFirstItem(&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;Subject&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;)-&amp;gt;{Text};&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$body&lt;/font&gt;&amp;nbsp;= &lt;font color="#00ffff"&gt;$Document&lt;/font&gt;-&amp;gt;GetFirstItem(&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;Body&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;)-&amp;gt;{Text};&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;print&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;OUT&lt;/font&gt;&amp;nbsp;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;Subject: &lt;/font&gt;&lt;font color="#00ffff"&gt;$subject&lt;/font&gt;&lt;font color="#ffa500"&gt;\n&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;Body: &lt;/font&gt;&lt;font color="#00ffff"&gt;$body&lt;/font&gt;&lt;font color="#ffa500"&gt;\n&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;`&lt;/font&gt;&lt;font color="#ff80ff"&gt;start excel.exe &lt;/font&gt;&lt;font color="#00ffff"&gt;$file&lt;/font&gt;&lt;font color="#ff6600"&gt;`&lt;/font&gt;;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;

&lt;p&gt;
This works if you have Lotus Notes Client installed on your machine.  As you can see the script uses OLE to access your mail database via the client.  There is a way to connect to any Lotus Notes database without having to install Lotus Notes.  It can be accessed using the ever popular Perl DBI module.  The latter is the one that I use to synchronize Lotus Notes databases to Oracle, MySQL and SQL Server.  Will discuss more about that... stay tuned.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-7602774657036816490?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/7602774657036816490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=7602774657036816490' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/7602774657036816490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/7602774657036816490'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2007/03/access-lotus-notes-using-perl-via.html' title='Access Lotus Notes using Perl via Win32::OLE'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-1502584950965716190</id><published>2007-03-07T13:59:00.000-08:00</published><updated>2008-12-08T23:58:41.046-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><title type='text'>Notes on Business Intelligence Solution</title><content type='html'>&lt;p&gt;These are some practical tips taken from this book - &lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FPractical-Business-Intelligence-Microsoft-Windows%2Fdp%2F0321356985%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1173305020%26sr%3D8-1&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;tag=mylifiname-20&amp;linkCode=ur2&amp;amp;camp=1789&amp;creative=9325"&gt;Practical Business Intelligence with SQL Server 2005&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=mylifiname-20&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;l=ur2&amp;o=1" alt="" style="border: medium none  ! important; margin: 0px ! important;" border="0" height="1" width="1" /&gt;.
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-weight: bold;"&gt;Suggested Approach:&lt;/span&gt;  Build a consistent relational data warehouse with a dimensional schema optimized for queries.
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-weight: bold;"&gt;Overall Solution Diagram:&lt;/span&gt;
&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cf9ZNaFBCrc/Re84uJw8leI/AAAAAAAABKc/nvKrTky0YHc/s1600-h/bi_diagram.gif"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_cf9ZNaFBCrc/Re84uJw8leI/AAAAAAAABKc/nvKrTky0YHc/s400/bi_diagram.gif" alt="" id="BLOGGER_PHOTO_ID_5039308873597228514" border="0" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-weight: bold;"&gt;Choose between Star or Snowflake for a Dimension?  Answer: It Depends&lt;/span&gt;
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Choose snowflake when the dimension's attributes come from different sources.&lt;/li&gt;&lt;li&gt;Snowflake when the dimension has a strong natural hierarchy.  It is easier to manage the ETL process in this case.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Use a surrogate key for every dimension table&lt;/span&gt;.  Surrogate keys are used as primary identifiers for all dimension tables in the data warehouse, and every fact table record that refers to a dimension always uses the surrogate key rather than the business key(primary key).  All relationships in the data warehouse use the surrogate key, including the relationships between different dimension tables in a snowflake structure. Because the data warehouse uses surrogate keys and the source systems use business keys, this means that one important step in the ETL process is to translate the business keys in the incoming transaction records into data warehouse surrogate keys before inserting the new fact records.
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-weight: bold;"&gt;
Making a List of Candidate Attributes and Dimensions&lt;/span&gt;
When you are reviewing the information you have collected, look for terms that represent different ways of looking at data. A useful rule of thumb is to look for words such as &lt;span style="font-style: italic;"&gt;by&lt;/span&gt;(as in, "I need to see profitability &lt;span style="font-style: italic;"&gt;by&lt;/span&gt; product category"). If you keep a list of all these candidate attributes when you find them, you can start to group them into probable dimensions such as Product or Customer.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;
One thing to be careful of is synonyms: People often have many different ways of naming the same thing, and it is rare that everyone will agree on the definition of every term. Similarly, people in different parts of the business could be using the same term to mean different things. An important job during the modeling process is to identify these synonyms and imprecise names and to drive the business users toward consensus on what terms will mean in the data warehouse. A useful by-product of this process can be a data dictionary that documents these decisions as they are made.
&lt;/p&gt;
&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Making a List of Candidate Measures&lt;/span&gt;
At the same time that you are recording the attributes that you have found, you will be looking for numeric measures. Many of the candidate measures that you find will turn out to be derived from a smaller set of basic measures, but you can keep track of all them because they might turn out to be useful calculations that you can add into the OLAP cube later. The best candidates for measures are additive and atomic. That is, they can be added up across all the dimensions, including time, and they are not composed from other measures.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-weight: bold;"&gt;Grouping the Measures with the Same Grain into Fact Tables&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Figuring out how to group measures into fact tables is a much more structured process than grouping related attributes into dimension tables. The key concept that determines what measures end up on a fact table is that every fact table has only one grain. After you have your list of candidate measures, you can set up a spreadsheet as shown in the Table below with the candidate dimensions on the columns and the candidate measures on the rows.
&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
    &lt;tr&gt;
        &lt;th&gt;&lt;/th&gt;
        &lt;th&gt;Product&lt;/th&gt;
        &lt;th&gt;Customer&lt;/th&gt;
        &lt;th&gt;Date&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
    &lt;tr&gt;
        &lt;td&gt;Sales Amount&lt;/td&gt;
        &lt;td&gt;SKU&lt;/td&gt;
        &lt;td&gt;Customer&lt;/td&gt;
        &lt;td&gt;Day&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;Quantity&lt;/td&gt;
        &lt;td&gt;SKU&lt;/td&gt;
        &lt;td&gt;Customer&lt;/td&gt;
        &lt;td&gt;Day&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;Budget Amount&lt;/td&gt;
        &lt;td&gt;Category&lt;/td&gt;
        &lt;td&gt;N/A&lt;/td&gt;
        &lt;td&gt;Month&lt;/td&gt;
    &lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;
For each measure, you need to figure out the grain or level of detail you have available. For example, for a specific sales amount from a sales transaction, you can figure out the customer that it was sold to, the product SKU that they bought, and the day that they made the purchase, so the granularity of the sales amount measure is Product SKU by Customer by Day. For budget amount, the business is only producing monthly budgets for each product category, so the granularity is Product Category by Month.
&lt;/p&gt;
&lt;p&gt;
From the example in Table, we end up with two different fact tables. Because the Sales Amount and Quantity measures both have the same granularity, they will be on the Sales fact table, which will also include Product, Customer, and Date dimension keys. A separate Budget fact table will have Product Category and Date dimension keys and a Budget Amount measure.
&lt;/p&gt;
&lt;p&gt;
Identifying the granularity of every measure sounds simple in principle but often turns out to be difficult in practice. So, how do you know when you have made a mistake? One common sign is when you end up with some records in the fact table with values for one set of measures and nulls for the remainder. Depending on how you load the data, you could also see that a given numeric quantity ends up being repeated on multiple records on a fact table. This usually occurs when you have a measure with a higher granularity (such as Product Category rather than Product SKU) than the fact table.
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-weight:bold;"&gt;High Level Architecture&lt;/span&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cf9ZNaFBCrc/RfCAk1HowzI/AAAAAAAABK4/G8XTAm6pu9U/s1600-h/bi_diagram_high_level.gif"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_cf9ZNaFBCrc/RfCAk1HowzI/AAAAAAAABK4/G8XTAm6pu9U/s400/bi_diagram_high_level.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5039669353250341682" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-weight:bold;"&gt;Most important dimensional modeling lesson:&lt;/span&gt;  A single fact table must never contain measures at different levels of granularity.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-1502584950965716190?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/1502584950965716190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=1502584950965716190' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/1502584950965716190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/1502584950965716190'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2007/03/notes-on-business-intelligence-solution.html' title='Notes on Business Intelligence Solution'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cf9ZNaFBCrc/Re84uJw8leI/AAAAAAAABKc/nvKrTky0YHc/s72-c/bi_diagram.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-8791070932202123452</id><published>2007-03-05T20:56:00.000-08:00</published><updated>2007-04-18T11:11:35.172-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='family'/><title type='text'>Baby Ivana Visits Us!</title><content type='html'>&lt;table&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;!-- Start of Flickr Badge --&gt;
&lt;style type="text/css"&gt;
.zg_div {margin:0px 5px 5px 0px; width:117px;}
.zg_div_inner {border: solid 1px #FFFFFF; background-color:#ffffff;  color:#666666; text-align:center; font-family:arial, helvetica; font-size:11px;}
.zg_div a, .zg_div a:hover, .zg_div a:visited {color:#3993ff; background:inherit !important; text-decoration:none !important;}
&lt;/style&gt;
&lt;script type="text/javascript"&gt;
zg_insert_badge = function() {
var zg_bg_color = 'ffffff';
var zgi_url = 'http://www.flickr.com/apps/badge/badge_iframe.gne?zg_bg_color='+zg_bg_color+'&amp;zg_person_id=27796218%40N00&amp;zg_set_id=72157594572785372&amp;zg_context=in%2Fset-72157594572785372%2F';
document.write('&lt;iframe style="background-color:#'+zg_bg_color+'; border-color:#'+zg_bg_color+'; border:none;" width="113" height="151" frameborder="0" scrolling="no" src="'+zgi_url+'" title="Flickr Badge"&gt;&lt;\/iframe&gt;');
if (document.getElementById) document.write('&lt;div id="zg_whatlink"&gt;&lt;a href="http://www.flickr.com/badge.gne" style="color:#3993ff;" onclick="zg_toggleWhat(); return false;"&gt;What is this?&lt;\/a&gt;&lt;\/div&gt;');
}
zg_toggleWhat = function() {
document.getElementById('zg_whatdiv').style.display = (document.getElementById('zg_whatdiv').style.display != 'none') ? 'none' : 'block';
document.getElementById('zg_whatlink').style.display = (document.getElementById('zg_whatdiv').style.display != 'none') ? 'none' : 'block';
return false;
}
&lt;/script&gt;
&lt;div class="zg_div"&gt;&lt;div class="zg_div_inner"&gt;&lt;a href="http://www.flickr.com"&gt;www.&lt;strong style="color:#3993ff"&gt;flick&lt;span style="color:#ff1c92"&gt;r&lt;/span&gt;&lt;/strong&gt;.com&lt;/a&gt;&lt;br&gt;
&lt;script type="text/javascript"&gt;zg_insert_badge();&lt;/script&gt;
&lt;div id="zg_whatdiv"&gt;This is a Flickr badge showing photos in a set called &lt;a href="http://www.flickr.com/photos/27796218@N00/sets/72157594572785372"&gt;Ivana &amp;amp; Ara - Mar 2007&lt;/a&gt;. Make your own badge &lt;a href="http://www.flickr.com/badge.gne"&gt;here&lt;/a&gt;.&lt;/div&gt;
&lt;script type="text/javascript"&gt;if (document.getElementById) document.getElementById('zg_whatdiv').style.display = 'none';&lt;/script&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- End of Flickr Badge --&gt;
&lt;/td&gt;
&lt;td&gt;
Cute little baby Ivana.  Our friends' first baby.  Surely a delight to be visited.  My daughter doesn't know how to react at first since she's always the youngest one in the house.  Ivana's really a sweetie, she smiles in a whim, she likes my voice and laughs at my talking.  She's just adorable!
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-8791070932202123452?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/8791070932202123452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=8791070932202123452' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/8791070932202123452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/8791070932202123452'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2007/03/baby-ivana-visits-us.html' title='Baby Ivana Visits Us!'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-3738208595206276187</id><published>2007-03-05T13:55:00.000-08:00</published><updated>2008-10-16T11:48:44.156-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Powerful Regular Expressions in Perl</title><content type='html'>&lt;p&gt;Perl is rich with regular expressions.  Most programs written in perl would normally have at least one regex for pattern matching.  Having regular expressions actually ingrained directly into the language's core as well as into the minds of perl programmers, most tasks involving string manipulations are easily done in perl.
&lt;/p&gt;
&lt;p&gt;
Well, last week I had an opportunity to answer one interesting question posted on &lt;a href="http://aspn.activestate.com/ASPN/Mail/Browse/Threaded/ActivePerl"&gt;ActivePerl&lt;/a&gt; forum.  The &lt;a href="http://aspn.activestate.com/ASPN/Mail/Message/ActivePerl/3417006"&gt;question&lt;/a&gt; apparently has something to do with parsing a DNA sequence.
&lt;/p&gt;

Here is the question:

&lt;pre  style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;
Given the string $temp= "XXXXAAAZZZZBBBSSSSCCCGGGGBBBVVVVVBBB"

Write a regex for filtering out the string between...
AAA
BBB
CCC
so in the above case, the output should be:
AAAZZZZZBBB
BBBSSSSSSCCC
CCCGGGGBBB
BBBVVVVVBBB
All combinations of start and end for AAA BBB CCC.&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;My solution:&lt;/p&gt;

&lt;div id='snippet'&gt;
&lt;font color="#ff80ff"&gt;#!/usr/bin/perl&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;use strict&lt;/font&gt;;&lt;br /&gt;
&lt;font color="#ff6600"&gt;use warnings&lt;/font&gt;;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$dna_sequence&lt;/font&gt;&amp;nbsp;&amp;nbsp;= &lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;XXXXAAAZZZZBBBSSSSCCCGGGGBBBVVVVVBBB&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;;&lt;br /&gt;
&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;@dna_tags&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= (&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;AAA&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;BBB&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;CCC&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&lt;br /&gt;
&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$joined_tags&lt;/font&gt;&amp;nbsp;&amp;nbsp; = &lt;font color="#ff6600"&gt;join&lt;/font&gt;&amp;nbsp;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;|&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;, &lt;font color="#00ffff"&gt;@dna_tags&lt;/font&gt;;&lt;br /&gt;
&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$tag_pattern&lt;/font&gt;&amp;nbsp;&amp;nbsp; = &lt;font color="#ff80ff"&gt;qr(&lt;/font&gt;&lt;font color="#00ffff"&gt;$joined_tags&lt;/font&gt;&lt;font color="#ff80ff"&gt;)&lt;/font&gt;; &lt;font color="#66ff00"&gt;#regexp quoting mechanism&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff6600"&gt;foreach&lt;/font&gt;&amp;nbsp;( &lt;font color="#00ffff"&gt;$dna_sequence&lt;/font&gt;&amp;nbsp;=~&lt;font color="#ff6600"&gt;&amp;nbsp;/&lt;/font&gt;&lt;font color="#ffa500"&gt;(?=(&lt;/font&gt;&lt;font color="#00ffff"&gt;$tag_pattern&lt;/font&gt;&lt;font color="#ffa500"&gt;.*?&lt;/font&gt;&lt;font color="#00ffff"&gt;$tag_pattern&lt;/font&gt;&lt;font color="#ffa500"&gt;))&lt;/font&gt;&lt;font color="#ff6600"&gt;/g&lt;/font&gt;&amp;nbsp;) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#66ff00"&gt;#do whatever on the captured string&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#66ff00"&gt;#in this case, I just want to print it out&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;print&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$_&lt;/font&gt;, &lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ffa500"&gt;\n&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;

&lt;p&gt;The trick here is in the lookaround construct.  Using positive lookahead specified with the special sequence (?=...), in the above snippet, (?=($tag_pattern.*?$tag_pattern)).  Parentheses inside the construct grab the matched string.  This is what is called zero-width look-ahead, since at this point, the match engine has not advanced at all.  But because of the /g modifier, the engine notices that it has not moved forward so it advances one character position, then does the same match until it reaches the end of the string.  So in this case, the effect is overlapping matches.
&lt;/p&gt;
&lt;p&gt;
There is an excellent article about this same regular expressions constructs that can be found in perl.com in this &lt;a href="http://www.perl.com/pub/a/2003/07/01/regexps.html"&gt;post&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
I would recommend reading these two books:
&lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FMastering-Regular-Expressions-Jeffrey-Friedl%2Fdp%2F0596528124%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1173134876%26sr%3D1-1&amp;amp;amp;tag=mylifiname-20&amp;linkCode=ur2&amp;amp;camp=1789&amp;creative=9325"&gt;Mastering Regular Expressions&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=mylifiname-20&amp;amp;amp;amp;l=ur2&amp;o=1" alt="" style="border: medium none  ! important; margin: 0px ! important;" border="0" height="1" width="1" /&gt; and &lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FPerl-Cookbook-Second-Tom-Christiansen%2Fdp%2F0596003137%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1173134960%26sr%3D1-1&amp;amp;amp;tag=mylifiname-20&amp;linkCode=ur2&amp;amp;camp=1789&amp;creative=9325"&gt;Perl Cookbook&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=mylifiname-20&amp;amp;amp;amp;l=ur2&amp;o=1" alt="" style="border: medium none  ! important; margin: 0px ! important;" border="0" height="1" width="1" /&gt;.  &lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FPerl-Cookbook-Second-Tom-Christiansen%2Fdp%2F0596003137%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1173134960%26sr%3D1-1&amp;amp;amp;tag=mylifiname-20&amp;linkCode=ur2&amp;amp;camp=1789&amp;creative=9325"&gt;Perl Cookbook&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=mylifiname-20&amp;amp;amp;amp;l=ur2&amp;o=1" alt="" style="border: medium none  ! important; margin: 0px ! important;" border="0" height="1" width="1" /&gt; is actually where I got the basic solution on this problem.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-3738208595206276187?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/3738208595206276187/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=3738208595206276187' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/3738208595206276187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/3738208595206276187'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2007/03/powerful-regular-expressions-in-perl.html' title='Powerful Regular Expressions in Perl'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-1894016990475698228</id><published>2007-02-23T11:16:00.000-08:00</published><updated>2008-04-03T17:31:48.796-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><title type='text'>A Cube Example</title><content type='html'>&lt;p&gt;Again taken from &lt;a href="http://msdn2.microsoft.com/en-us/library/ms174587.aspx"&gt;msdn&lt;/a&gt;...&lt;/p&gt;
&lt;p&gt;A cube is defined by its measures and dimensions. The measures and dimensions in a cube are derived from the tables and views in the data source view on which the cube is based, or which is generated from the measure and dimension definitions. &lt;/p&gt; 
&lt;p&gt;The Imports cube contains two measures, Packages and Last, and three related dimensions, Route, Source, and Time.&lt;/p&gt;
&lt;div&gt;&lt;a&gt;&lt;img alt="Cube Example 1" src="http://msdn2.microsoft.com/en-us/library/ms174587.687cd5d8-d469-4ed6-94c8-1c4f4cfcaf57%28en-US,SQL.90%29.gif" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;The smaller alphanumeric values around the cube are the members of the dimensions. Example members are ground (member of the Route dimension), Africa (member of the Source dimension), and 1st quarter (member of the Time dimension).&lt;/p&gt;
&lt;h4&gt;Measures&lt;/h4&gt;
&lt;p&gt;The values within the cube cells represent the two measures, Packages and Last. The Packages measure represents the number of imported packages, and the &lt;b&gt;Sum&lt;/b&gt; function is used to aggregate the facts. The Last measure represents the date of receipt, and the &lt;b&gt;Max&lt;/b&gt; function is used to aggregate the facts.&lt;/p&gt;
&lt;h4&gt;Dimensions&lt;/h4&gt;
&lt;p&gt;The Route dimension represents the means by which the imports reach their destination. Members of this dimension include ground, nonground, air, sea, road, or rail. The Source dimension represents the locations where the imports are produced, such as Africa or Asia. The Time dimension represents the quarters and halves of a single year.&lt;/p&gt;
&lt;h4&gt;Aggregates&lt;/h4&gt;
&lt;p&gt;Business users of a cube can determine the value of any measure for each member of every dimension, regardless of the level of the member within the dimension, because Analysis Services aggregates values at upper levels as needed. For example, the measure values in the preceding illustration can be aggregated according to a standard calendar hierarchy by using the Calendar Time hierachy in the Time dimension as illustrated in the following diagram.&lt;/p&gt;
&lt;div&gt;&lt;a&gt;&lt;img alt="Diagram of measures organized along time dimension" src="http://msdn2.microsoft.com/en-us/library/ms174587.831d0aae-7fad-433b-8cf1-576024c385e9%28en-US,SQL.90%29.gif" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;In addition to aggregating measures by using a single dimension, you can aggregate measures by using combinations of members from different dimensions. This allows business users to evaluate measures in multiple dimensions simultaneously. For example, if a business user wants to analyze quarterly imports that arrived by air from the Eastern Hemisphere and Western Hemisphere, the business user can issue a query on the cube to retrieve the following dataset.&lt;/p&gt;

&lt;table&gt;
&lt;tbody&gt;
 &lt;tr&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;Packages&lt;/td&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;Last&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;All Sources&lt;/td&gt;
  &lt;td&gt;Eastern Hemisphere&lt;/td&gt;
  &lt;td&gt;Western Hemisphere&lt;/td&gt;
  &lt;td&gt;All Sources&lt;/td&gt;
  &lt;td&gt;Eastern Hemisphere&lt;/td&gt;
  &lt;td&gt;Western Hemisphere&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;All Time&lt;/td&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;25110&lt;/td&gt;
  &lt;td&gt;6547&lt;/td&gt;
  &lt;td&gt;18563&lt;/td&gt;
  &lt;td&gt;Dec-29-99&lt;/td&gt;
  &lt;td&gt;Dec-22-99&lt;/td&gt;
  &lt;td&gt;Dec-29-99&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;1st half&lt;/td&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;11173&lt;/td&gt;
  &lt;td&gt;2977&lt;/td&gt;
  &lt;td&gt;8196&lt;/td&gt;
  &lt;td&gt;Jun-28-99&lt;/td&gt;
  &lt;td&gt;Jun-20-99&lt;/td&gt;
  &lt;td&gt;Jun-28-99&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;1st quarter&lt;/td&gt;
  &lt;td&gt;5108&lt;/td&gt;
  &lt;td&gt;1452&lt;/td&gt;
  &lt;td&gt;3656&lt;/td&gt;
  &lt;td&gt;Mar-30-99&lt;/td&gt;
  &lt;td&gt;Mar-19-99&lt;/td&gt;
  &lt;td&gt;Mar-30-99&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;2nd quarter&lt;/td&gt;
  &lt;td&gt;6065&lt;/td&gt;
  &lt;td&gt;1525&lt;/td&gt;
  &lt;td&gt;4540&lt;/td&gt;
  &lt;td&gt;Jun-28-99&lt;/td&gt;
  &lt;td&gt;Jun-20-99&lt;/td&gt;
  &lt;td&gt;Jun-28-99&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;2nd half&lt;/td&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;13937&lt;/td&gt;
  &lt;td&gt;3570&lt;/td&gt;
  &lt;td&gt;10367&lt;/td&gt;
  &lt;td&gt;Dec-29-99&lt;/td&gt;
  &lt;td&gt;Dec-22-99&lt;/td&gt;
  &lt;td&gt;Dec-29-99&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;3rd quarter&lt;/td&gt;
  &lt;td&gt;6119&lt;/td&gt;
  &lt;td&gt;1444&lt;/td&gt;
  &lt;td&gt;4675&lt;/td&gt;
  &lt;td&gt;Sep-30-99&lt;/td&gt;
  &lt;td&gt;Sep-18-99&lt;/td&gt;
  &lt;td&gt;Sep-30-99&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;&lt;/td&gt;
  &lt;td&gt;4th quarter&lt;/td&gt;
  &lt;td&gt;7818&lt;/td&gt;
  &lt;td&gt;2126&lt;/td&gt;
  &lt;td&gt;5692&lt;/td&gt;
  &lt;td&gt;Dec-29-99&lt;/td&gt;
  &lt;td&gt;Dec-22-99&lt;/td&gt;
  &lt;td&gt;Dec-29-99&lt;/td&gt;
 &lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;


&lt;p&gt;After a cube is defined, you can create new aggregations, or you can change existing aggregations to set options such as whether aggregations are precalculated during processing or calculated at query time.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-1894016990475698228?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/1894016990475698228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=1894016990475698228' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/1894016990475698228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/1894016990475698228'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2007/02/cube-example.html' title='A Cube Example'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-4970894967293256456</id><published>2007-02-22T16:49:00.000-08:00</published><updated>2008-10-16T11:50:49.515-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><title type='text'>Why use UDM?</title><content type='html'>&lt;p&gt;Continuing with my research about Data Warehousing, the following are some of my notes in Data Modeling.  Taken from &lt;a href="http://msdn2.microsoft.com/en-us/library/ms174783.aspx#"&gt;this&lt;/a&gt; tutorial in SQL Server from &lt;a href="http://msdn2.microsoft.com/en-us/library/ms174783.aspx#"&gt;msdn&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-weight: bold;"&gt;UDM - Unified Dimensional Model&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
A user who wants to retrieve information directly from a data source, such as an Enterprise Resource Planning (ERP) database, faces several significant challenges:
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt; The contents of such data sources are frequently very hard to understand, being designed with systems and developers instead of users in mind.
&lt;/li&gt;&lt;li&gt; Information of interest to the user is typically distributed among multiple heterogeneous data sources. Even if dealing only with different relational databases, the user must understand the details of each, such as the dialect of SQL that is used. Worse, those data sources might be of very different types, including not only relational databases but files and Web services.
&lt;/li&gt;&lt;li&gt; Whereas many data sources are oriented toward holding large quantities of transaction level detail, frequently the queries that support business decision-making involve summary, aggregated information. With increased data volumes, the time that is required to retrieve such summary values for interactive end-user analysis can be prohibitive.
&lt;/li&gt;&lt;li&gt; Business rules are generally not encapsulated in the data sources. Users are left to make their own interpretation of the data.
&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;The role of a Unified Dimensional Model (UDM) is to provide a bridge between the user and the data sources. A UDM is constructed over one or more physical data sources. The user issues queries against the UDM using a variety of client tools, such as Microsoft Excel.&lt;/p&gt; &lt;div&gt;&lt;img alt="Clients access all data sources through single UDM" src="http://msdn2.microsoft.com/en-us/library/ms174783.67861280-3922-4bb7-aec1-838d8c221896%28en-US,SQL.90%29.gif" /&gt;&lt;/div&gt; 

&lt;p&gt;There are advantages to the end user even when the UDM is constructed only as a thin layer over the data source: simpler, more easily understood model of the data, isolation from heterogeneous backend data sources, and improved performance for summary type queries. In some scenarios, a simple UDM can be constructed automatically. Greater investment in the construction of the UDM can generate additional benefits that accrue from the richness of metadata that the model can provide.&lt;/p&gt;
&lt;p&gt;The UDM provides the following benefits:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;         Greatly enriches the user model.
&lt;/li&gt;&lt;li&gt;         Provides high performance queries supporting interactive analysis, even over large data volumes.
&lt;/li&gt;&lt;li&gt;         Captures business rules in the model to support richer analysis.
&lt;/li&gt;&lt;li&gt;         Supports ‘closing the loop’: letting users can act upon the data they see.  &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-4970894967293256456?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/4970894967293256456/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=4970894967293256456' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/4970894967293256456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/4970894967293256456'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2007/02/why-use-udm.html' title='Why use UDM?'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-2651454596012229542</id><published>2007-02-19T14:11:00.000-08:00</published><updated>2007-04-18T11:13:11.015-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='family'/><title type='text'>Cool Snow in Bear Valley</title><content type='html'>&lt;table&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;!-- Start of Flickr Badge --&gt;
&lt;style type="text/css"&gt;
.zg_div {margin:0px 5px 5px 0px; width:117px;}
.zg_div_inner { color:#666666; text-align:center; font-family:arial, helvetica; font-size:11px;}
.zg_div a, .zg_div a:hover, .zg_div a:visited {color:#3993ff; background:inherit !important; text-decoration:none !important;}
&lt;/style&gt;
&lt;script type="text/javascript"&gt;
zg_insert_badge = function() {
var zg_bg_color = 'ffffff';
var zgi_url = 'http://www.flickr.com/apps/badge/badge_iframe.gne?zg_bg_color='+zg_bg_color+'&amp;zg_person_id=27796218%40N00&amp;zg_set_id=72157594545428394&amp;zg_context=in%2Fset-72157594545428394%2F';
document.write('&lt;iframe style="background-color:#'+zg_bg_color+'; border-color:#'+zg_bg_color+'; border:none;" width="113" height="151" frameborder="0" scrolling="no" src="'+zgi_url+'" title="Flickr Badge"&gt;&lt;\/iframe&gt;');
if (document.getElementById) document.write('&lt;div id="zg_whatlink"&gt;&lt;a href="http://www.flickr.com/badge.gne" style="color:#3993ff;" onclick="zg_toggleWhat(); return false;"&gt;What is this?&lt;\/a&gt;&lt;\/div&gt;');
}
zg_toggleWhat = function() {
document.getElementById('zg_whatdiv').style.display = (document.getElementById('zg_whatdiv').style.display != 'none') ? 'none' : 'block';
document.getElementById('zg_whatlink').style.display = (document.getElementById('zg_whatdiv').style.display != 'none') ? 'none' : 'block';
return false;
}
&lt;/script&gt;
&lt;div class="zg_div"&gt;&lt;div class="zg_div_inner"&gt;&lt;a href="http://www.flickr.com"&gt;www.&lt;strong style="color:#3993ff"&gt;flick&lt;span style="color:#ff1c92"&gt;r&lt;/span&gt;&lt;/strong&gt;.com&lt;/a&gt;&lt;br&gt;
&lt;script type="text/javascript"&gt;zg_insert_badge();&lt;/script&gt;
&lt;div id="zg_whatdiv"&gt;This is a Flickr badge showing photos in a set called &lt;a href="http://www.flickr.com/photos/27796218@N00/sets/72157594545428394"&gt;Bear Valley Feb 2007&lt;/a&gt;. Make your own badge &lt;a href="http://www.flickr.com/badge.gne"&gt;here&lt;/a&gt;.&lt;/div&gt;
&lt;script type="text/javascript"&gt;if (document.getElementById) document.getElementById('zg_whatdiv').style.display = 'none';&lt;/script&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- End of Flickr Badge --&gt;

&lt;/td&gt;
&lt;td&gt;
We just got back from a three hour drive from Angel's Camp where we stayed for 2 nights.  Bear Valley was just an hour away from where we stayed.  Driving to highway 4 going to north, one would not think that there's lots of snow once you get on the top of the mountains.  Bear Valley is so nice, we particularly enjoyed the not so angled slopes and vast stretch of snow, well suited for our 3 and 4 year old kids.  My son who's 9 years old, especially enjoyed the 2 sledding hills.  He got to the hills countless times tirelessly.  I asked my daughter if she really enjoyed it, she said "Yes" and what she enjoyed the most, well "making snowballs".
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-2651454596012229542?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/2651454596012229542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=2651454596012229542' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/2651454596012229542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/2651454596012229542'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2007/02/cool-snow-in-bear-valley.html' title='Cool Snow in Bear Valley'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-5437530483005823704</id><published>2007-02-15T14:52:00.000-08:00</published><updated>2008-10-16T11:51:58.514-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wala lang'/><title type='text'>Five Reasons Why I Sleep Past Midnight Everyday</title><content type='html'>&lt;p&gt;This is in response to a &lt;a href="http://engtech.wordpress.com/2007/02/15/group_writing_contest_2_win_amazon/"&gt;contest&lt;/a&gt;   called "Five Things" hosted by one of my favorite blogs &lt;a href="http://engtech.wordpress.com/"&gt;//engtech.&lt;/a&gt;  So without further ado, here's my "five things":&lt;/p&gt;

&lt;span style="font-weight: bold;"&gt;Five Reasons Why I Sleep Past Midnight Everyday:
&lt;/span&gt;&lt;ol&gt;&lt;li&gt;So I can do things after putting my children to bed.&lt;/li&gt;&lt;li&gt;So I can catch up on my reading and study materials.&lt;/li&gt;&lt;li&gt;So I can surf the net.&lt;/li&gt;&lt;li&gt;So I can have quiet time for myself.&lt;/li&gt;&lt;li&gt;I have Insomnia, which is probably the result of the first 4 reasons mentioned.
&lt;/li&gt;&lt;/ol&gt;

&lt;p&gt;Now that I'm thinking about it, the result could also be the reason why I do the first 4.  It's a cycle you know, it's a never ending thing.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-5437530483005823704?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/5437530483005823704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=5437530483005823704' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/5437530483005823704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/5437530483005823704'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2007/02/five-reasons-why-i-sleep-past-midnight.html' title='Five Reasons Why I Sleep Past Midnight Everyday'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-2402253435787369674</id><published>2007-02-14T10:00:00.000-08:00</published><updated>2008-10-16T11:53:27.533-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Kill Processes in Windows using Perl</title><content type='html'>&lt;p&gt;When doing install automation, sometimes, it is necessary to disable some processes before proceeding.  This can be done easily using perl's &lt;span style="font-weight: bold;"&gt;kill()&lt;/span&gt; function.  But sometimes some processes are hard to kill, so what I have been using is this script that I borrowed from &lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2Fexec%2Fobidos%2Fsearch-handle-url%3F%255Fencoding%3DUTF8%26search-type%3Dss%26index%3Dbooks%26field-author%3DDave%2520Roth&amp;amp;amp;amp;amp;amp;tag=mylifiname-20&amp;linkCode=ur2&amp;amp;camp=1789&amp;creative=9325"&gt;Dave Roth&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=mylifiname-20&amp;amp;amp;amp;amp;amp;amp;l=ur2&amp;o=1" alt="" style="border: medium none  ! important; margin: 0px ! important;" border="0" height="1" width="1" /&gt; in his book &lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FWin32-Perl-Scripting-Administrators-Handbook%2Fdp%2F1578702151%2Fsr%3D1-1%2Fqid%3D1171476820%3Fie%3DUTF8%26s%3Dbooks&amp;amp;amp;amp;amp;amp;tag=mylifiname-20&amp;linkCode=ur2&amp;amp;camp=1789&amp;creative=9325"&gt;Win32 Perl Scripting.&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=mylifiname-20&amp;amp;amp;amp;amp;amp;amp;l=ur2&amp;o=1" alt="" style="border: medium none  ! important; margin: 0px ! important;" border="0" height="1" width="1" /&gt;&lt;/p&gt;

&lt;p&gt;
Here's how I do it:&lt;/p&gt;

&lt;div id='snippet'&gt;
&lt;font color="#ff6600"&gt;use &lt;/font&gt;SamTools::Process;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;#Kill Anti-Spywares&lt;/font&gt;&lt;br /&gt;
kill_process(&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;gcasServ&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;);&lt;br /&gt;
kill_process(&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;gcasDtServ&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;);&lt;br /&gt;
kill_process(&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;SpySweeper&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;);&lt;br /&gt;
kill_process(&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;SpyBot&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;);&lt;br /&gt;
kill_process(&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;Ad-Watch&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;);&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;sub&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#00ffff"&gt;kill_process&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$process&lt;/font&gt;&amp;nbsp;= &lt;font color="#ff6600"&gt;shift&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$result&lt;/font&gt;&amp;nbsp;= &lt;font color="#00ffff"&gt;0&lt;/font&gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$pid&lt;/font&gt;&amp;nbsp;= SamTools::Process::getpid(&lt;font color="#00ffff"&gt;$process&lt;/font&gt;);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;if&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;$pid&lt;/font&gt;){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;if&lt;/font&gt;&amp;nbsp;(SamTools::Process::kill_pid(&lt;font color="#00ffff"&gt;$pid&lt;/font&gt;)){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$log&lt;/font&gt;-&amp;gt;message(&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;Process=Successfully killed &lt;/font&gt;&lt;font color="#00ffff"&gt;$process&lt;/font&gt;&lt;font color="#ffa500"&gt;\n&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;else&lt;/font&gt;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$log&lt;/font&gt;-&amp;gt;exception(&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;Process=Cannot kill &lt;/font&gt;&lt;font color="#00ffff"&gt;$process&lt;/font&gt;&lt;font color="#ffa500"&gt;\n&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;else&lt;/font&gt;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$log&lt;/font&gt;-&amp;gt;message(&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;Process=&lt;/font&gt;&lt;font color="#00ffff"&gt;$process&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;nbsp;not found&lt;/font&gt;&lt;font color="#ffa500"&gt;\n&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
}&lt;br /&gt;
&lt;/div&gt;

&lt;p&gt;I modularized it below:&lt;/p&gt;

&lt;div id='snippet'&gt;
&lt;font color="#ff6600"&gt;package&lt;/font&gt;&lt;font color="#ffff00"&gt;&amp;nbsp;SamTools::Process;&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;use &lt;/font&gt;Win32::PerfLib;&lt;br /&gt;
&lt;font color="#ff6600"&gt;use &lt;/font&gt;Win32::API;&lt;br /&gt;
&lt;font color="#ff6600"&gt;use &lt;/font&gt;Win32::Process::Info;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;sub&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#00ffff"&gt;getpid&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$process&lt;/font&gt;&amp;nbsp;= &lt;font color="#ff6600"&gt;shift&lt;/font&gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$server&lt;/font&gt;&amp;nbsp;= &lt;font color="#00ffff"&gt;$ENV&lt;/font&gt;{COMPUTERNAME};&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$pid&lt;/font&gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Win32::PerfLib::GetCounterNames(&lt;font color="#00ffff"&gt;$server&lt;/font&gt;, &lt;font color="#00ffff"&gt;\%counter&lt;/font&gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;%r_counter&lt;/font&gt;&amp;nbsp;= &lt;font color="#ff6600"&gt;map&lt;/font&gt;&amp;nbsp;{ &lt;font color="#00ffff"&gt;$counter&lt;/font&gt;{&lt;font color="#00ffff"&gt;$_&lt;/font&gt;} =&amp;gt; &lt;font color="#00ffff"&gt;$_&lt;/font&gt;&amp;nbsp;} &lt;font color="#ff6600"&gt;keys&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;%counter&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$process_obj&lt;/font&gt;&amp;nbsp;= &lt;font color="#00ffff"&gt;$r_counter&lt;/font&gt;{Process};&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$process_id&lt;/font&gt;&amp;nbsp;= &lt;font color="#00ffff"&gt;$r_counter&lt;/font&gt;{&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;ID Process&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;};&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$perflib&lt;/font&gt;&amp;nbsp;= &lt;font color="#ff6600"&gt;new&lt;/font&gt;&amp;nbsp;Win32::PerfLib(&lt;font color="#00ffff"&gt;$server&lt;/font&gt;) || &lt;font color="#ff6600"&gt;return&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;0&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$proc_ref&lt;/font&gt;&amp;nbsp;= {};&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$perflib&lt;/font&gt;-&amp;gt;GetObjectList(&lt;font color="#00ffff"&gt;$process_obj&lt;/font&gt;, &lt;font color="#00ffff"&gt;$proc_ref&lt;/font&gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$perflib&lt;/font&gt;-&amp;gt;Close();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$instance_ref&lt;/font&gt;&amp;nbsp;= &lt;font color="#00ffff"&gt;$proc_ref&lt;/font&gt;-&amp;gt;{Objects}-&amp;gt;{&lt;font color="#00ffff"&gt;$process_obj&lt;/font&gt;}-&amp;gt;{Instances};&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;foreach&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$p&lt;/font&gt;&amp;nbsp;(&lt;font color="#ff6600"&gt;sort&lt;/font&gt;&amp;nbsp;&lt;font color="#ff6600"&gt;keys&lt;/font&gt;&amp;nbsp;%{&lt;font color="#00ffff"&gt;$instance_ref&lt;/font&gt;}){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$counter_ref&lt;/font&gt;&amp;nbsp;= &lt;font color="#00ffff"&gt;$instance_ref&lt;/font&gt;-&amp;gt;{&lt;font color="#00ffff"&gt;$p&lt;/font&gt;}-&amp;gt;{Counters};&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;foreach&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$i&lt;/font&gt;&amp;nbsp;(&lt;font color="#ff6600"&gt;keys&lt;/font&gt;&amp;nbsp;%{&lt;font color="#00ffff"&gt;$counter_ref&lt;/font&gt;}){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;if&lt;/font&gt;(&lt;font color="#00ffff"&gt;$counter_ref&lt;/font&gt;-&amp;gt;{&lt;font color="#00ffff"&gt;$i&lt;/font&gt;}-&amp;gt;{CounterNameTitleIndex} ==&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#00ffff"&gt;$process_id&lt;/font&gt;&amp;nbsp;&amp;amp;&amp;amp; &lt;font color="#00ffff"&gt;$instance_ref&lt;/font&gt;-&amp;gt;{&lt;font color="#00ffff"&gt;$p&lt;/font&gt;}-&amp;gt;{Name} &lt;font color="#ff6600"&gt;eq&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$process&lt;/font&gt;){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$pid&lt;/font&gt;&amp;nbsp;= &lt;font color="#00ffff"&gt;$counter_ref&lt;/font&gt;-&amp;gt;{&lt;font color="#00ffff"&gt;$i&lt;/font&gt;}-&amp;gt;{Counter};&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;last&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#66ff00"&gt;#try again using a different approach WMI&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;unless&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;$pid&lt;/font&gt;){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;if&lt;/font&gt;&amp;nbsp;(&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$pi&lt;/font&gt;&amp;nbsp;= Win32::Process::Info-&amp;gt;&lt;font color="#ff6600"&gt;new&lt;/font&gt;(&lt;font color="#00ffff"&gt;$server&lt;/font&gt;)){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$processes&lt;/font&gt;&amp;nbsp;= &lt;font color="#00ffff"&gt;$pi&lt;/font&gt;-&amp;gt;GetProcInfo();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$number&lt;/font&gt;&amp;nbsp;= &lt;font color="#00ffff"&gt;@$processes&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;foreach&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;@$processes&lt;/font&gt;){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;if&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;$_&lt;/font&gt;-&amp;gt;{Name} =~&lt;font color="#ff6600"&gt;&amp;nbsp;/&lt;/font&gt;&lt;font color="#00ffff"&gt;$process&lt;/font&gt;&lt;font color="#ff6600"&gt;/i&lt;/font&gt;){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$pid&lt;/font&gt;&amp;nbsp;= &lt;font color="#00ffff"&gt;$_&lt;/font&gt;-&amp;gt;{ProcessId};&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$pid&lt;/font&gt;?&lt;font color="#ff6600"&gt;return&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$pid&lt;/font&gt;:&lt;font color="#ff6600"&gt;return&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;0&lt;/font&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;sub&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#00ffff"&gt;pidalive&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$pid&lt;/font&gt;&amp;nbsp;= &lt;font color="#ff6600"&gt;shift&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$server&lt;/font&gt;&amp;nbsp;= &lt;font color="#00ffff"&gt;$ENV&lt;/font&gt;{COMPUTERNAME};&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Win32::PerfLib::GetCounterNames(&lt;font color="#00ffff"&gt;$server&lt;/font&gt;, &lt;font color="#00ffff"&gt;\%counter&lt;/font&gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;%r_counter&lt;/font&gt;&amp;nbsp;= &lt;font color="#ff6600"&gt;map&lt;/font&gt;&amp;nbsp;{ &lt;font color="#00ffff"&gt;$counter&lt;/font&gt;{&lt;font color="#00ffff"&gt;$_&lt;/font&gt;} =&amp;gt; &lt;font color="#00ffff"&gt;$_&lt;/font&gt;&amp;nbsp;} &lt;font color="#ff6600"&gt;keys&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;%counter&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$process_obj&lt;/font&gt;&amp;nbsp;= &lt;font color="#00ffff"&gt;$r_counter&lt;/font&gt;{Process};&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$process_id&lt;/font&gt;&amp;nbsp;= &lt;font color="#00ffff"&gt;$r_counter&lt;/font&gt;{&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;ID Process&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;};&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$perflib&lt;/font&gt;&amp;nbsp;= &lt;font color="#ff6600"&gt;new&lt;/font&gt;&amp;nbsp;Win32::PerfLib(&lt;font color="#00ffff"&gt;$server&lt;/font&gt;) || &lt;font color="#ff6600"&gt;return&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;0&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$proc_ref&lt;/font&gt;&amp;nbsp;= {};&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$perflib&lt;/font&gt;-&amp;gt;GetObjectList(&lt;font color="#00ffff"&gt;$process_obj&lt;/font&gt;, &lt;font color="#00ffff"&gt;$proc_ref&lt;/font&gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$perflib&lt;/font&gt;-&amp;gt;Close();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$instance_ref&lt;/font&gt;&amp;nbsp;= &lt;font color="#00ffff"&gt;$proc_ref&lt;/font&gt;-&amp;gt;{Objects}-&amp;gt;{&lt;font color="#00ffff"&gt;$process_obj&lt;/font&gt;}-&amp;gt;{Instances};&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;foreach&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$p&lt;/font&gt;&amp;nbsp;(&lt;font color="#ff6600"&gt;sort&lt;/font&gt;&amp;nbsp;&lt;font color="#ff6600"&gt;keys&lt;/font&gt;&amp;nbsp;%{&lt;font color="#00ffff"&gt;$instance_ref&lt;/font&gt;}){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$counter_ref&lt;/font&gt;&amp;nbsp;= &lt;font color="#00ffff"&gt;$instance_ref&lt;/font&gt;-&amp;gt;{&lt;font color="#00ffff"&gt;$p&lt;/font&gt;}-&amp;gt;{Counters};&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;foreach&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$i&lt;/font&gt;&amp;nbsp;(&lt;font color="#ff6600"&gt;keys&lt;/font&gt;&amp;nbsp;%{&lt;font color="#00ffff"&gt;$counter_ref&lt;/font&gt;}){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;if&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;$counter_ref&lt;/font&gt;-&amp;gt;{&lt;font color="#00ffff"&gt;$i&lt;/font&gt;}-&amp;gt;{Counter} == &lt;font color="#00ffff"&gt;$pid&lt;/font&gt;){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;return&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$pid&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;return&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;0&lt;/font&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;sub&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#00ffff"&gt;kill&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$process&lt;/font&gt;&amp;nbsp;= &lt;font color="#ff6600"&gt;shift&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$pid&lt;/font&gt;&amp;nbsp;= getpid(&lt;font color="#00ffff"&gt;$process&lt;/font&gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;if&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;$pid&lt;/font&gt;){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Configure();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$iResult&lt;/font&gt;&amp;nbsp;= ForceKill( &lt;font color="#00ffff"&gt;$pid&lt;/font&gt;&amp;nbsp;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;return&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;1&lt;/font&gt;&amp;nbsp;&lt;font color="#ff6600"&gt;if&lt;/font&gt;( &lt;font color="#00ffff"&gt;$iResult&lt;/font&gt;&amp;nbsp;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;return&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;0&lt;/font&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;sub&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#00ffff"&gt;kill_pid&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$pid&lt;/font&gt;&amp;nbsp;= &lt;font color="#ff6600"&gt;shift&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Configure();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$iResult&lt;/font&gt;&amp;nbsp;= ForceKill( &lt;font color="#00ffff"&gt;$pid&lt;/font&gt;&amp;nbsp;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;return&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;1&lt;/font&gt;&amp;nbsp;&lt;font color="#ff6600"&gt;if&lt;/font&gt;( &lt;font color="#00ffff"&gt;$iResult&lt;/font&gt;&amp;nbsp;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;return&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;0&lt;/font&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;sub&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#00ffff"&gt;ForceKill&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;( &lt;font color="#00ffff"&gt;$Pid&lt;/font&gt;&amp;nbsp;) = &lt;font color="#00ffff"&gt;@_&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$iResult&lt;/font&gt;&amp;nbsp;= &lt;font color="#00ffff"&gt;0&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$phToken&lt;/font&gt;&amp;nbsp;= &lt;font color="#ff6600"&gt;pack&lt;/font&gt;( &lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;L&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;, &lt;font color="#00ffff"&gt;0&lt;/font&gt;&amp;nbsp;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#66ff00"&gt;# Fetch the process's token&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;if&lt;/font&gt;(&lt;font color="#00ffff"&gt;$OpenProcessToken&lt;/font&gt;-&amp;gt;Call(&lt;font color="#00ffff"&gt;$GetCurrentProcess&lt;/font&gt;-&amp;gt;Call(),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#00ffff"&gt;$TOKEN_ADJUST_PRIVILEGES&lt;/font&gt;&amp;nbsp;| &lt;font color="#00ffff"&gt;$TOKEN_QUERY&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#00ffff"&gt;$phToken&lt;/font&gt;&amp;nbsp;)){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$hToken&lt;/font&gt;&amp;nbsp;= &lt;font color="#ff6600"&gt;unpack&lt;/font&gt;( &lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;L&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;, &lt;font color="#00ffff"&gt;$phToken&lt;/font&gt;&amp;nbsp;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#66ff00"&gt;# Set the debug privilege on the token&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;if&lt;/font&gt;( SetPrivilege( &lt;font color="#00ffff"&gt;$hToken&lt;/font&gt;, &lt;font color="#00ffff"&gt;$SE_DEBUG_NAME&lt;/font&gt;, &lt;font color="#00ffff"&gt;1&lt;/font&gt;&amp;nbsp;) ){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#66ff00"&gt;# Now that we have debug privileges on the process&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#66ff00"&gt;# open the process so we can mess with it.&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$hProcess&lt;/font&gt;&amp;nbsp;= &lt;font color="#00ffff"&gt;$OpenProcess&lt;/font&gt;-&amp;gt;Call( &lt;font color="#00ffff"&gt;$PROCESS_TERMINATE&lt;/font&gt;, &lt;font color="#00ffff"&gt;0&lt;/font&gt;, &lt;font color="#00ffff"&gt;$Pid&lt;/font&gt;&amp;nbsp;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;if&lt;/font&gt;( &lt;font color="#00ffff"&gt;$hProcess&lt;/font&gt;&amp;nbsp;){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#66ff00"&gt;# We no longer need the debug privilege since we have opened&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#66ff00"&gt;# the process so remove the privilege.&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SetPrivilege( &lt;font color="#00ffff"&gt;$hToken&lt;/font&gt;, &lt;font color="#00ffff"&gt;$SE_DEBUG_NAME&lt;/font&gt;, &lt;font color="#00ffff"&gt;0&lt;/font&gt;&amp;nbsp;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#66ff00"&gt;# Let's termiante the process&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$iResult&lt;/font&gt;&amp;nbsp;= &lt;font color="#00ffff"&gt;$TerminateProcess&lt;/font&gt;-&amp;gt;Call( &lt;font color="#00ffff"&gt;$hProcess&lt;/font&gt;, &lt;font color="#00ffff"&gt;0&lt;/font&gt;&amp;nbsp;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$CloseHandle&lt;/font&gt;-&amp;gt;Call( &lt;font color="#00ffff"&gt;$hProcess&lt;/font&gt;&amp;nbsp;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$CloseHandle&lt;/font&gt;-&amp;gt;Call( &lt;font color="#00ffff"&gt;$hToken&lt;/font&gt;&amp;nbsp;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;return&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$iResult&lt;/font&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;sub&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#00ffff"&gt;SetPrivilege&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;( &lt;font color="#00ffff"&gt;$hToken&lt;/font&gt;, &lt;font color="#00ffff"&gt;$pszPriv&lt;/font&gt;, &lt;font color="#00ffff"&gt;$bSetFlag&lt;/font&gt;&amp;nbsp;) = &lt;font color="#00ffff"&gt;@_&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$pLuid&lt;/font&gt;&amp;nbsp;= &lt;font color="#ff6600"&gt;pack&lt;/font&gt;( &lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;Ll&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;, &lt;font color="#00ffff"&gt;0&lt;/font&gt;, &lt;font color="#00ffff"&gt;0&lt;/font&gt;&amp;nbsp;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#66ff00"&gt;# Lookup the LIUD of the privilege&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;if&lt;/font&gt;( &lt;font color="#00ffff"&gt;$LookupPrivilegeValue&lt;/font&gt;-&amp;gt;Call( &lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ffa500"&gt;\x00\x00&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;, &lt;font color="#00ffff"&gt;$pszPriv&lt;/font&gt;, &lt;font color="#00ffff"&gt;$pLuid&lt;/font&gt;&amp;nbsp;) ){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#66ff00"&gt;# Unpack the LUID&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$pPrivStruct&lt;/font&gt;&amp;nbsp;= &lt;font color="#ff6600"&gt;pack&lt;/font&gt;( &lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;LLlL&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#00ffff"&gt;1&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#ff6600"&gt;unpack&lt;/font&gt;( &lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;Ll&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;, &lt;font color="#00ffff"&gt;$pLuid&lt;/font&gt;&amp;nbsp;),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ( ( &lt;font color="#00ffff"&gt;$bSetFlag&lt;/font&gt;&amp;nbsp;)? &lt;font color="#00ffff"&gt;$SE_PRIVILEGE_ENABLED&lt;/font&gt;&amp;nbsp;: &lt;font color="#00ffff"&gt;0&lt;/font&gt;&amp;nbsp;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#66ff00"&gt;# Now modify the process's token to set the required privilege&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$iResult&lt;/font&gt;&amp;nbsp;= ( &lt;font color="#00ffff"&gt;0&lt;/font&gt;&amp;nbsp;!= &lt;font color="#00ffff"&gt;$AdjustTokenPrivileges&lt;/font&gt;-&amp;gt;Call( &lt;font color="#00ffff"&gt;$hToken&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#00ffff"&gt;0&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#00ffff"&gt;$pPrivStruct&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#ff6600"&gt;length&lt;/font&gt;( &lt;font color="#00ffff"&gt;$pPrivStruct&lt;/font&gt;&amp;nbsp;),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#00ffff"&gt;0&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#00ffff"&gt;0&lt;/font&gt;&amp;nbsp;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;return&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$iResult&lt;/font&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;sub&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#00ffff"&gt;Configure&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$TOKEN_QUERY&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = &lt;font color="#00ffff"&gt;0x0008&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$TOKEN_ADJUST_PRIVILEGES&lt;/font&gt;&amp;nbsp;= &lt;font color="#00ffff"&gt;0x0020&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$SE_PRIVILEGE_ENABLED&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= &lt;font color="#00ffff"&gt;0x02&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$PROCESS_TERMINATE&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = &lt;font color="#00ffff"&gt;0x0001&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$SE_DEBUG_NAME&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = &lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;SeDebugPrivilege&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#66ff00"&gt;# Prepare to use some specialized Win32 API calls&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$GetCurrentProcess&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = &lt;font color="#ff6600"&gt;new&lt;/font&gt;&amp;nbsp;Win32::API( &lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;Kernel32.dll&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;GetCurrentProcess&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [],&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; N ) || &lt;font color="#ff6600"&gt;die&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$OpenProcessToken&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= &lt;font color="#ff6600"&gt;new&lt;/font&gt;&amp;nbsp;Win32::API( &lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;AdvApi32.dll&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;OpenProcessToken&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [N,N,P], I ) || &lt;font color="#ff6600"&gt;die&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$LookupPrivilegeValue&lt;/font&gt;&amp;nbsp;&amp;nbsp;= &lt;font color="#ff6600"&gt;new&lt;/font&gt;&amp;nbsp;Win32::API( &lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;AdvApi32.dll&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;LookupPrivilegeValue&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [P,P,P], I ) || &lt;font color="#ff6600"&gt;die&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$AdjustTokenPrivileges&lt;/font&gt;&amp;nbsp;= &lt;font color="#ff6600"&gt;new&lt;/font&gt;&amp;nbsp;Win32::API( &lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;AdvApi32.dll&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;AdjustTokenPrivileges&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [N,I,P,N,P,P],&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I ) || &lt;font color="#ff6600"&gt;die&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$OpenProcess&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = &lt;font color="#ff6600"&gt;new&lt;/font&gt;&amp;nbsp;Win32::API( &lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;Kernel32.dll&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;OpenProcess&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [N,I,N],&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; N ) || &lt;font color="#ff6600"&gt;die&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$TerminateProcess&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= &lt;font color="#ff6600"&gt;new&lt;/font&gt;&amp;nbsp;Win32::API( &lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;Kernel32.dll&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;TerminateProcess&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [N,I],&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I ) || &lt;font color="#ff6600"&gt;die&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$CloseHandle&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = &lt;font color="#ff6600"&gt;new&lt;/font&gt;&amp;nbsp;Win32::API( &lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;Kernel32.dll&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;CloseHandle&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [N],&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I ) || &lt;font color="#ff6600"&gt;die&lt;/font&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#00ffff"&gt;1&lt;/font&gt;;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;__END__&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;=head1 NAME&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;SamTools::Process - Sam's Process controllers.&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;=head1 SYNOPSIS&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;use SamTools::Process;&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;=head1 DESCRIPTION&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;This module controls processes on Win32 Systems.&amp;nbsp;&amp;nbsp;Currently, only has killing capability.&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;use SamTools::Process;&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;=head1 kill&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;SamTools::Process::kill('ProcessName');&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-2402253435787369674?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/2402253435787369674/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=2402253435787369674' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/2402253435787369674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/2402253435787369674'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2007/02/kill-processes-in-windows.html' title='Kill Processes in Windows using Perl'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-5653649373046033976</id><published>2007-02-13T10:29:00.000-08:00</published><updated>2008-10-16T11:55:42.824-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><title type='text'>Data Warehousing Concepts</title><content type='html'>&lt;p&gt;I'm reading a book on &lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FMicrosoft-Server-2005-Analysis-Services%2Fdp%2F0735621993%2Fsr%3D8-1%2Fqid%3D1171391904%3Fie%3DUTF8%26s%3Dbooks&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;tag=mylifiname-20&amp;linkCode=ur2&amp;amp;camp=1789&amp;creative=9325"&gt;Data Warehousing.&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=mylifiname-20&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;l=ur2&amp;o=1" alt="" style="border: medium none  ! important; margin: 0px ! important;" border="0" height="1" width="1" /&gt;  This is in preparation for a project that I'm involved in.  The project is to build a global reporting solution for IT using SQL Server 2005 Reporting Services.  Here are some key words I want to remember about data warehousing:&lt;/p&gt;

&lt;table cellpadding="5" cellspacing="0" frame="above" rules="groups"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th scope="col" style="text-align: left;" class="docTableCell bottomBorder thead" align="left" valign="bottom"&gt;This term&lt;/th&gt;&lt;th scope="col" style="text-align: left;" class="docTableCell bottomBorder thead" align="left" valign="bottom"&gt;Means this&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;Attribute&lt;/td&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;&lt;a name="specific dimension"&gt;&lt;/a&gt;Information about a specific dimension member&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;Data warehouse&lt;/td&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;&lt;a name="designed to"&gt;&lt;/a&gt;A relational database designed to store management information&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;Dimension&lt;/td&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;&lt;a name="of labels"&gt;&lt;/a&gt;A list of labels that can be used to cross-tabulate values from other dimensions&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;Fact table&lt;/td&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;&lt;a name="table that"&gt;&lt;/a&gt;The relational database table that contains values for one or more measures at the lowest level of detail for one or more dimensions&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;Foreign key column&lt;/td&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;&lt;a name="for each"&gt;&lt;/a&gt;A column in a database table that contains many values for each value in the primary key column of another database table&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;Join&lt;/td&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;&lt;a name="one table"&gt;&lt;/a&gt;The processes of linking the primary key of one table to the foreign key of another table&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;Measure&lt;/td&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;&lt;a name="to monitor"&gt;&lt;/a&gt;A summarizable numerical value used to monitor business activity&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;Member&lt;/td&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;&lt;a name="single item"&gt;&lt;/a&gt;A single item within a dimension&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;&lt;span class="docEmphasis"&gt;Member&lt;/span&gt; property&lt;/td&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;&lt;a name="An attribute"&gt;&lt;/a&gt;An attribute of a member that is not meaningful when grouping values for a report, but contains valuable information about a different attribute&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;Primary key column&lt;/td&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;&lt;a name="a database"&gt;&lt;/a&gt;A column in a database dimension table that contains values that uniquely identify each row&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;Snowflake design&lt;/td&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;&lt;a name="in which"&gt;&lt;/a&gt;A database arrangement in which attributes of a dimension are stored in a separate (normalized) table&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;Star design&lt;/td&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;&lt;a name="arrangement in"&gt;&lt;/a&gt;A database arrangement in which multiple attributes of a dimension are redundantly stored in a single (denormalized) dimension table&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Design considerations:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Use integers for dimension members to reduce size of the fact table and to gaurantee uniqueness of each member key in a dimension table.&lt;/li&gt;&lt;li&gt;Use surrogate keys so that the fact table consumes less space.  The ability to create multiple instances of the same product–or the same customer–is an extremely important benefit of surrogate keys, and it is particularly important in a data warehouse where you are maintaining historical information for comparison.  Surrogate keys are a critical part of most data warehouse design. The foreign key in the fact table and the primary key in the dimension table are then completely under the control of the data warehouse.&lt;/li&gt;&lt;li&gt;Values in a data warehouse are not changing as dynamically as they would in a production database, so storing the values redundantly is less important than is retrieving the values as quickly as possible for a report.&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Understanding OLAP and Analysis Services:&lt;/span&gt;&lt;/p&gt;
&lt;table cellpadding="5" cellspacing="0" frame="above" rules="groups"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th scope="col" style="text-align: left;" class="docTableCell bottomBorder thead" align="left" valign="bottom"&gt;This term&lt;/th&gt;&lt;th scope="col" style="text-align: left;" class="docTableCell bottomBorder thead" align="left" valign="bottom"&gt;Means this&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;Aggregation&lt;/td&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;&lt;a name="a measure"&gt;&lt;/a&gt;Summarized values of a measure&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;Cache&lt;/td&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;&lt;a name="in memory"&gt;&lt;/a&gt;Server-based storage locations both in memory (automatic) or on disk (designed) that enhance query performance&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;Calculated member&lt;/td&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;&lt;a name="for aggregating"&gt;&lt;/a&gt;A mechanism for aggregating measures using formulas more complex than those stored in a cube&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;Cube&lt;/td&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;&lt;a name="one or"&gt;&lt;/a&gt;A collection of one or more related measure groups and their associated dimensions&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;Cube metadata&lt;/td&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;&lt;a name="and dimensions"&gt;&lt;/a&gt;Instructions for creating and querying OLAP structures such as cubes and dimensions&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;Hierarchy&lt;/td&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;Levels of aggregation within a single dimension&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;Measure group&lt;/td&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;&lt;a name="single fact"&gt;&lt;/a&gt;The conceptual container of detail values from a single fact table, along with all possible aggregations for one or more dimension hierarchies&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;Online analytical processing (OLAP)&lt;/td&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;&lt;a name="support decision"&gt;&lt;/a&gt;A database system optimized to support decision-making processes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;&lt;a name="transaction processing"&gt;&lt;/a&gt;Online transaction processing (OLTP)&lt;/td&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;&lt;a name="A database"&gt;&lt;/a&gt;A database system used to manage transactions such as order processing&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;Unified Dimensional Model (UDM)&lt;/td&gt;&lt;td class="docTableCell bottomBorder" align="left" valign="top"&gt;&lt;a name="and dimensions"&gt;&lt;/a&gt;The measure groups and dimensions that define your organization's BI data; essentially synonymous with a cube&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Benefit of an OLAP cube over a relational database:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Consistently fast response - prestoring calculated values.&lt;/li&gt;&lt;li&gt;Metadata-based queries&lt;/li&gt;&lt;li&gt;Spreadsheet-style formulas&lt;/li&gt;&lt;/ol&gt;

&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Design considerations:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Use &lt;span style="font-weight: bold; font-style: italic;"&gt;Database model OLAP&lt;/span&gt; instead of &lt;span style="font-weight: bold; font-style: italic;"&gt;Spreadsheet model OLAP&lt;/span&gt;.  Advantages and disadvantages, the biggest benefit of OLAP stored using the database model is the ability to avoid data explosion. Because you need relatively few aggregate tables to provide fast results, you can have much larger cubes with many more dimensions and attributes than by using a spreadsheet model. Perhaps the biggest disadvantage of OLAP stored by using a database model is that there is no inherent way to physically store values that are calculated using nonassociative operators.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-5653649373046033976?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/5653649373046033976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/5653649373046033976'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2007/02/data-warehousing-concepts.html' title='Data Warehousing Concepts'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-8056674423657565177</id><published>2007-02-08T17:00:00.000-08:00</published><updated>2008-12-08T23:58:41.331-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Progress GUI in perl using Win32::GUI</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cf9ZNaFBCrc/RcvPqZTfgCI/AAAAAAAAAtw/QwK7DNxCvIs/s1600-h/screen.JPG"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_cf9ZNaFBCrc/RcvPqZTfgCI/AAAAAAAAAtw/QwK7DNxCvIs/s400/screen.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5029341736143388706" /&gt;&lt;/a&gt;
&lt;p&gt;Did you ever need a progress GUI injected in your program?  I did, and I still do.  A progress GUI is something that is nice to have to show how a long running program is progressing.  You don't want a user to think that your program is stuck.  Last thing you want to happen is the user doing Ctrl+Alt+Delete then End Task.  And so my solution is to display something like this:
&lt;/p&gt;
&lt;p&gt;
Here's how my module is used:&lt;/p&gt;
&lt;div id='snippet'&gt;
&lt;font color="#ff6600"&gt;use &lt;/font&gt;SamTools::ProgressGUI;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$GUI&lt;/font&gt;&amp;nbsp;= SamTools::ProgressGUI-&amp;gt;&lt;font color="#ff6600"&gt;new&lt;/font&gt;({&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#ff80ff"&gt;Title&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;=&amp;gt; &lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;Organization Name - Install Status&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#ff80ff"&gt;ProgressBar &lt;/font&gt;=&amp;gt; &lt;font color="#00ffff"&gt;1&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#00ffff"&gt;$GUI&lt;/font&gt;-&amp;gt;show(&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;Installing Software...&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;);&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;foreach&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;1.&lt;/font&gt;.&lt;font color="#00ffff"&gt;10&lt;/font&gt;) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$GUI&lt;/font&gt;-&amp;gt;step();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;sleep&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;1&lt;/font&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#00ffff"&gt;$GUI&lt;/font&gt;-&amp;gt;hide();&lt;br /&gt;
&lt;/div&gt;

&lt;p&gt;
Here's the module.  I will probably contribute this to CPAN, just need to find time to prepare it, but here you go, enjoy...&lt;/p&gt;

&lt;div id='snippet'&gt;
&lt;font color="#ff80ff"&gt;#!/usr/bin/perl -w&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;#&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;#&amp;nbsp;&amp;nbsp; This is module for displaying progress GUI&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;#&amp;nbsp;&amp;nbsp; Written By: Sam Dela Cruz&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;#&amp;nbsp;&amp;nbsp; Date&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;: 05/18/2006&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;#&amp;nbsp;&amp;nbsp; Version&amp;nbsp;&amp;nbsp; : 1.00&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;#&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;package&lt;/font&gt;&lt;font color="#ffff00"&gt;&amp;nbsp;SamTools::ProgressGUI;&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;use strict&lt;/font&gt;;&lt;br /&gt;
&lt;font color="#ff6600"&gt;use &lt;/font&gt;Win32::GUI;&lt;br /&gt;
&lt;font color="#ff6600"&gt;use &lt;/font&gt;Win32::GUI::BitmapInline;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;#&amp;nbsp;&amp;nbsp; Constructor&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff6600"&gt;sub&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#00ffff"&gt;new&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$proto&lt;/font&gt;&amp;nbsp;&amp;nbsp;= &lt;font color="#ff6600"&gt;shift&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$class&lt;/font&gt;&amp;nbsp;&amp;nbsp;= &lt;font color="#ff6600"&gt;ref&lt;/font&gt;(&lt;font color="#00ffff"&gt;$proto&lt;/font&gt;) || &lt;font color="#00ffff"&gt;$proto&lt;/font&gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$self&lt;/font&gt;&amp;nbsp;= {};&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;bless&lt;/font&gt;(&lt;font color="#00ffff"&gt;$self&lt;/font&gt;, &lt;font color="#00ffff"&gt;$class&lt;/font&gt;);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#66ff00"&gt;#initialize object&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;return&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$self&lt;/font&gt;-&amp;gt;_init(&lt;font color="#00ffff"&gt;@_&lt;/font&gt;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;#&amp;nbsp;&amp;nbsp; Initialize object&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff6600"&gt;sub&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#00ffff"&gt;_init&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$self&lt;/font&gt;&amp;nbsp;= &lt;font color="#ff6600"&gt;shift&lt;/font&gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#66ff00"&gt;# default values&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$self&lt;/font&gt;-&amp;gt;{&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;title&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= &lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;Install Progress&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$self&lt;/font&gt;-&amp;gt;{&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;progressbar&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;}&amp;nbsp;&amp;nbsp;= &lt;font color="#00ffff"&gt;0&lt;/font&gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#66ff00"&gt;# Have we been passed anything&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;if&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;@_&lt;/font&gt;&amp;nbsp;!= &lt;font color="#00ffff"&gt;0&lt;/font&gt;){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#66ff00"&gt;# We are expecting our configuration to come as an anonymous hash&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;if&lt;/font&gt;&amp;nbsp;(&lt;font color="#ff6600"&gt;ref&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$_&lt;/font&gt;[&lt;font color="#00ffff"&gt;0&lt;/font&gt;] &lt;font color="#ff6600"&gt;eq&lt;/font&gt;&amp;nbsp;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;HASH&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$hash&lt;/font&gt;=&lt;font color="#00ffff"&gt;$_&lt;/font&gt;[&lt;font color="#00ffff"&gt;0&lt;/font&gt;];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;foreach&lt;/font&gt;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$key&lt;/font&gt;&amp;nbsp;(&lt;font color="#ff6600"&gt;keys&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;%$hash&lt;/font&gt;){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$self&lt;/font&gt;-&amp;gt;{&lt;font color="#ff6600"&gt;lc&lt;/font&gt;(&lt;font color="#00ffff"&gt;$key&lt;/font&gt;)}=&lt;font color="#00ffff"&gt;$hash&lt;/font&gt;-&amp;gt;{&lt;font color="#00ffff"&gt;$key&lt;/font&gt;};&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;else&lt;/font&gt;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;( &lt;font color="#00ffff"&gt;$self&lt;/font&gt;-&amp;gt;{&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;title&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;}, &lt;font color="#00ffff"&gt;$self&lt;/font&gt;-&amp;gt;{&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;progressbar&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;} ) = &lt;font color="#00ffff"&gt;@_&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#66ff00"&gt;#create the GUI&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;return&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$self&lt;/font&gt;-&amp;gt;_createGUI;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;#&amp;nbsp;&amp;nbsp; Create the GUI&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff6600"&gt;sub&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#00ffff"&gt;_createGUI&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$self&lt;/font&gt;&amp;nbsp;= &lt;font color="#ff6600"&gt;shift&lt;/font&gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#66ff00"&gt;# Program Icon&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$self&lt;/font&gt;-&amp;gt;{&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;icon&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;} = newIcon Win32::GUI::BitmapInline( &lt;font color="#ff80ff"&gt;q(&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AAABAAEAICAAAAAAAACoCAAAFgAAACgAAAAgAAAAQAAAAAEACAAAAAAAgAQAAAAAAAAAAAAAAAEA&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAwMDAAMDcwADwyqYA8PDwAJn//wCZ1JkA&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/9SZAP/M/wCZmf8AMCIiABEAAAAiAAAARAAAAFUAAAB3AAAAiAAAAKoAAADdAAAA7gAAAAARAAAA&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IgAAAEQAAABVAAAAdwAAAIgAAACqAAAA3QAAAO4AAAAAEQAAACIAAABEAAAAVQAAAHcAAACQAAAA&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;qgAAAN0AAADuADMAAABmAAAAmQAAAMwAAAAAMwAAMzMAAGYzAAChMwAAzDMAAP8zAAAAZgAAM2YA&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AGZmAACZZgAAzGYAAP9mAAAAmQAAM5kAAGaZAACZmQAAzJkAAP+ZAAAAzAAAM8wAAGbMAACZzAAA&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;zMwAAP/MAAAz/wAAZv8AAJn/AADM/wAAAAAzADMAMwBmADMAmQAzAMwAMwD/ADMAADMzADszMwBm&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MzMAmTMzAMwzMwD/MzMAAGYzADNuMwBmZjMAmWYzAMxmMwD/ZjMAAJkzADOZMwBmmTMAmZkzAMyZ&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MwD/mTMAAMwzADPMMwBmzDMAmcwzAMzMMwD/zDMAAP8zADP/MwBm/zMAmf8zAMz/MwD//zMAAABm&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ADMAZgBmAGYAmQBmAMwAZgD/AGYAADNmADMzZgBmM2YAmTNmAMwzZgD/M2YAAGZmADNmZgBmZmYA&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mWZmAMxmZgD/ZmYAAJlmADOZZgBmmWYAmZlmAMyZZgD/mWYAAMxmADPMZgBmzGYAmcxmAMzMZgD/&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;zGYAAP9mADP/ZgBm/2YAmf9mAMz/ZgD//2YAAACZADMAmQBmAJkAmQCZAMwAmQD/AJkAADOZADMz&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mQBmM5kAmTOZAMwzmQD/M5kAAGahADNmmQBmZpkAmWaZAMxmmQD/ZpkAAJmZADOZmQBmmZkAmZmZ&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AMyZmQD/mZkAAMyZADPMmQBmzJkAmcyZAMzMmQD/zJkAAP+ZADP/mQBm/5kAmf+ZAMz/mQD//5kA&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AADMADMAzABmAMwAmQDMAMwAzAD/CNQAADPMADMzzABmM8wAmTPMAMwzzAD/M8wAAGbMADNmzABm&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ZswAmWbMAMxmzAD/ZswAAJnMADOZzABmmcwAmZnMAMyZzAD/mcwAAMzMADPMzABmzMwAmczMAMzM&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;zAD/zMwAAP/MADP/zABm/8wAmf/MAMz/zAD//8wAMwD/AGYA/wCZAP8AzAD/AAAz/wAzM/8AZjP/&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AJkz/wDMM/8A/zP/AABm/wAzZv8AZmb/AJlm/wDMZv8A/2b/AACZ/wDd3d0AzJn/AGbM/wAAAIgA&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/wDMAJkzAAAzZjMAAGaZADMzMwDw+/8ApKCgAICAgAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD/&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//8A//////////8KgVdXXVdXXXtXXXtXXXsJ///////////////2//b/9lcZ/Bn8GRkZGRkZGRkZ&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GVHV9v/29v/2//v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7++0LCu2AXFZW&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;elZWelZWVlZWVlZWVVZWVlZWVlYHCwoL///VGRn8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pyr///2&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1Rn8/Pz8/Pz8Gfz8Gfz8Gfz8/Pz8/Pz8/Pz8/Pyr/85zUPz8/PwFUBkZ/HvOD8/VD87IGfz8UAUF&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BQVQGfyrK/m5/Pz8T/mWGRmBD/n5D//5+fnP/AX5+fn5+fm5UPzc+fn8/Py6+fkZgf/h+fkK9vn5&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+f/Pc/n5K9zc+fkqGZX5+VD8Gfn5+Z3//+H5+f//+fn5//8OuXMZGRm6+flzBfn5c/xz+fn54Qr/&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+fnh///5+fn///8OGRkZ/HT5+bpQ+fkFGbn5+fn5Cg/5+ej///n5+f////97Gfz8lvn5BRj5+bkY&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+fm5+fkPD/n5D///+fn5/////3sZ/AUr+flQ/Nz5+QX5+VDc+dzo+fkKCv/5+fn///8Ke1AqK/n5&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lvz8lfn5+fkq/Mb5+Ssr+f////n5+f///wrd+fn5KwX8/PwF+fn5+QX8zvkrKyvi////+fkr//8K&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;4fn5+blRGfz8/FD5+fn5UPzVKysrK+j///8rKyv//w/5+flP/Pz8/Pz8Gfn5+Sv8/IHoKyv5D///&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/ysrK///6Pn5Bfz8/Pz8/Pz83Pn5lvz8/J0rK/kK////Kysr///i+fl0/Pz8GRn8/PyW+flz/Pz8&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/Csr3P////8rKyv/q3P5+blzUJcqc/wZGQUr3Pz8/Pz8livh/wr///n5K8/8/Lr5+fn5+fm5/NUZ&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dCuW/Pz8/PxzK8HVCc/V3PkrGfz8GZcrK/kr3HOr/9UZGfz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/PwZ&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Ufz8q////9X8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8GQn//////wpX/Pz8GRkZGRkZGRkZGRkZ&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GRkZGRkZGfyr////a2trkGtIRENIQ0NJQ0NJQ0NJQ0NJQ0NJQ0NJa2uQa2v6+vr6IiIiIiIiIiIi&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IiIiIiIiIiIiIiIiIiIiIiIiIvr6IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIia2tra2tr&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;a2tEQ0NDQ0NDQ0NDQ0NDQ0NDa2tra2tra2v//////////wpXV1dXV1dXV1dXV1dXV9X/////////&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AAAAAAAAAAAAAAAAAAAA&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff80ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#ff80ff"&gt;)&lt;/font&gt;&amp;nbsp;);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#66ff00"&gt;# Start Pop-Up Window GUI&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$self&lt;/font&gt;-&amp;gt;{&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;screen_width&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;}&amp;nbsp;&amp;nbsp;= Win32::GUI::GetSystemMetrics(&lt;font color="#00ffff"&gt;0&lt;/font&gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$self&lt;/font&gt;-&amp;gt;{&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;screen_height&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;} = Win32::GUI::GetSystemMetrics(&lt;font color="#00ffff"&gt;1&lt;/font&gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$self&lt;/font&gt;-&amp;gt;{&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;font1&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = &lt;font color="#ff6600"&gt;new&lt;/font&gt;&amp;nbsp;GUI::Font(-&lt;font color="#ff80ff"&gt;name&lt;/font&gt;=&amp;gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;Tahoma&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&lt;font color="#ff80ff"&gt;height&lt;/font&gt;=&amp;gt;&lt;font color="#00ffff"&gt;8&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$self&lt;/font&gt;-&amp;gt;{&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;font2&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = &lt;font color="#ff6600"&gt;new&lt;/font&gt;&amp;nbsp;GUI::Font(-&lt;font color="#ff80ff"&gt;name&lt;/font&gt;=&amp;gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;Tahoma&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&lt;font color="#ff80ff"&gt;height&lt;/font&gt;=&amp;gt;&lt;font color="#00ffff"&gt;14&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&lt;font color="#ff80ff"&gt;bold&lt;/font&gt;=&amp;gt;&lt;font color="#00ffff"&gt;1&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$self&lt;/font&gt;-&amp;gt;{&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;font3&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = &lt;font color="#ff6600"&gt;new&lt;/font&gt;&amp;nbsp;GUI::Font(-&lt;font color="#ff80ff"&gt;name&lt;/font&gt;=&amp;gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;Tahoma&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&lt;font color="#ff80ff"&gt;height&lt;/font&gt;=&amp;gt;&lt;font color="#00ffff"&gt;9&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&lt;font color="#ff80ff"&gt;bold&lt;/font&gt;=&amp;gt;&lt;font color="#00ffff"&gt;1&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$self&lt;/font&gt;-&amp;gt;{&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;font4&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = &lt;font color="#ff6600"&gt;new&lt;/font&gt;&amp;nbsp;GUI::Font(-&lt;font color="#ff80ff"&gt;name&lt;/font&gt;=&amp;gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;Tahoma&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&lt;font color="#ff80ff"&gt;height&lt;/font&gt;=&amp;gt;&lt;font color="#00ffff"&gt;11&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&lt;font color="#ff80ff"&gt;bold&lt;/font&gt;=&amp;gt;&lt;font color="#00ffff"&gt;1&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$self&lt;/font&gt;-&amp;gt;{&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;Popup&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;} = &lt;font color="#ff6600"&gt;new&lt;/font&gt;&amp;nbsp;GUI::DialogBox(&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&lt;font color="#ff80ff"&gt;name&amp;nbsp;&amp;nbsp; &lt;/font&gt;=&amp;gt; &lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;Popup&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&lt;font color="#ff80ff"&gt;text&amp;nbsp;&amp;nbsp; &lt;/font&gt;=&amp;gt; &lt;font color="#00ffff"&gt;$self&lt;/font&gt;-&amp;gt;{&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;title&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;},&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&lt;font color="#ff80ff"&gt;size&amp;nbsp;&amp;nbsp; &lt;/font&gt;=&amp;gt; [&lt;font color="#00ffff"&gt;400&lt;/font&gt;, &lt;font color="#00ffff"&gt;150&lt;/font&gt;],&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&lt;font color="#ff6600"&gt;pos&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;gt; [((&lt;font color="#00ffff"&gt;$self&lt;/font&gt;-&amp;gt;{&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;screen_width&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;}/&lt;font color="#00ffff"&gt;2&lt;/font&gt;)&lt;font color="#00ffff"&gt;-200&lt;/font&gt;),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ((&lt;font color="#00ffff"&gt;$self&lt;/font&gt;-&amp;gt;{&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;screen_height&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;}/&lt;font color="#00ffff"&gt;2&lt;/font&gt;)&lt;font color="#00ffff"&gt;-125&lt;/font&gt;)],&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&lt;font color="#ff80ff"&gt;font&amp;nbsp;&amp;nbsp; &lt;/font&gt;=&amp;gt; &lt;font color="#00ffff"&gt;$self&lt;/font&gt;-&amp;gt;{&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;font1&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;},&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&lt;font color="#ff80ff"&gt;helpbutton &lt;/font&gt;=&amp;gt; &lt;font color="#00ffff"&gt;0&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$wc&lt;/font&gt;&amp;nbsp;= &lt;font color="#00ffff"&gt;$self&lt;/font&gt;-&amp;gt;{&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;Popup&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;}-&amp;gt;Width();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$self&lt;/font&gt;-&amp;gt;{&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;Popup&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;}-&amp;gt;SetIcon(&lt;font color="#00ffff"&gt;$self&lt;/font&gt;-&amp;gt;{&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;icon&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;});&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$self&lt;/font&gt;-&amp;gt;{&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;Popup&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;}-&amp;gt;AddLabel( -&lt;font color="#ff80ff"&gt;name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;=&amp;gt; &lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;PopupLabel&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&lt;font color="#ff80ff"&gt;text&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;=&amp;gt; &lt;font color="#ff80ff"&gt;&amp;quot;&amp;quot;&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&lt;font color="#ff80ff"&gt;top&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;=&amp;gt; &lt;font color="#00ffff"&gt;20&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&lt;font color="#ff80ff"&gt;left&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;=&amp;gt; &lt;font color="#00ffff"&gt;20&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&lt;font color="#ff80ff"&gt;height&amp;nbsp;&amp;nbsp;&lt;/font&gt;=&amp;gt; &lt;font color="#00ffff"&gt;80&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&lt;font color="#ff80ff"&gt;width&amp;nbsp;&amp;nbsp; &lt;/font&gt;=&amp;gt; &lt;font color="#00ffff"&gt;$wc&lt;/font&gt;&lt;font color="#00ffff"&gt;-40&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&lt;font color="#ff80ff"&gt;font&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;=&amp;gt; &lt;font color="#00ffff"&gt;$self&lt;/font&gt;-&amp;gt;{&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;font1&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;},&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#66ff00"&gt;#display progress bar if specified in object creation&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;if&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;$self&lt;/font&gt;-&amp;gt;{&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;progressbar&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;}) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$self&lt;/font&gt;-&amp;gt;{&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;Popup&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;}-&amp;gt;AddProgressBar( -&lt;font color="#ff80ff"&gt;name&amp;nbsp;&amp;nbsp; &lt;/font&gt;=&amp;gt; &lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;ProgressBar&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&lt;font color="#ff80ff"&gt;width&amp;nbsp;&amp;nbsp;&lt;/font&gt;=&amp;gt; &lt;font color="#00ffff"&gt;$wc&lt;/font&gt;&lt;font color="#00ffff"&gt;-40&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&lt;font color="#ff80ff"&gt;height &lt;/font&gt;=&amp;gt; &lt;font color="#00ffff"&gt;10&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&lt;font color="#ff80ff"&gt;top&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;=&amp;gt; &lt;font color="#00ffff"&gt;80&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&lt;font color="#ff80ff"&gt;left&amp;nbsp;&amp;nbsp; &lt;/font&gt;=&amp;gt; &lt;font color="#00ffff"&gt;20&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&lt;font color="#ff80ff"&gt;smooth &lt;/font&gt;=&amp;gt; &lt;font color="#00ffff"&gt;1&lt;/font&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$self&lt;/font&gt;-&amp;gt;{&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;Popup&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;}-&amp;gt;ProgressBar-&amp;gt;SetPos (&lt;font color="#00ffff"&gt;0&lt;/font&gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$self&lt;/font&gt;-&amp;gt;{&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;Popup&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;}-&amp;gt;ProgressBar-&amp;gt;SetRange(&lt;font color="#00ffff"&gt;0&lt;/font&gt;,&lt;font color="#00ffff"&gt;50&lt;/font&gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$self&lt;/font&gt;-&amp;gt;{&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;Popup&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;}-&amp;gt;ProgressBar-&amp;gt;SetStep (&lt;font color="#00ffff"&gt;1&lt;/font&gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$self&lt;/font&gt;-&amp;gt;{&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;Popup&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;}-&amp;gt;SetForegroundWindow();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;return&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$self&lt;/font&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;#&amp;nbsp;&amp;nbsp; Methods&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff6600"&gt;sub&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#00ffff"&gt;show&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$self&lt;/font&gt;&amp;nbsp;= &lt;font color="#ff6600"&gt;shift&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$message&lt;/font&gt;&amp;nbsp;= &lt;font color="#ff6600"&gt;shift&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$self&lt;/font&gt;-&amp;gt;{&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;Popup&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;}-&amp;gt;PopupLabel-&amp;gt;Text(&lt;font color="#00ffff"&gt;$message&lt;/font&gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$self&lt;/font&gt;-&amp;gt;{&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;Popup&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;}-&amp;gt;Show();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Win32::GUI::DoEvents();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;sub&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#00ffff"&gt;step&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$self&lt;/font&gt;&amp;nbsp;= &lt;font color="#ff6600"&gt;shift&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$self&lt;/font&gt;-&amp;gt;{&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;Popup&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;}-&amp;gt;ProgressBar-&amp;gt;StepIt() &lt;font color="#ff6600"&gt;if&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;$self&lt;/font&gt;-&amp;gt;{&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;progressbar&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;});&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Win32::GUI::DoEvents();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;sub&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#00ffff"&gt;hide&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$self&lt;/font&gt;&amp;nbsp;= &lt;font color="#ff6600"&gt;shift&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;if&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;$self&lt;/font&gt;-&amp;gt;{&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;progressbar&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;}){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$self&lt;/font&gt;-&amp;gt;{&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;Popup&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;}-&amp;gt;ProgressBar-&amp;gt;SetPos(&lt;font color="#00ffff"&gt;50&lt;/font&gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;sleep&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;1&lt;/font&gt;; &lt;font color="#66ff00"&gt;# give chance to show completion of progress bar&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$self&lt;/font&gt;-&amp;gt;{&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;Popup&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;}-&amp;gt;Hide();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Win32::GUI::DoEvents();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#00ffff"&gt;1&lt;/font&gt;;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;__END__&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;=head1 NAME&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;&amp;nbsp;SamTools::ProgressGUI - Sam's Simple Progress GUI&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;=head1 SYNOPSIS&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;&amp;nbsp;use SamTools::ProgressGUI;&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;&amp;nbsp;# Pretty format, all the parameters&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;&amp;nbsp;my $GUI = SamTools::ProgressGUI-&amp;gt;new({&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Title&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; 'Organization Name - Install Status',&amp;nbsp;&amp;nbsp; # define the window title&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ProgressBar =&amp;gt; 1,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;# display progress bar&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;&amp;nbsp;# Typical usage&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;&amp;nbsp;my $GUI = SamTools::ProgressGUI-&amp;gt;new({&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Title&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; 'Organization Name - Install Status',&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ProgressBar =&amp;gt; 1,&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;&amp;nbsp;# Display status window with the message&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;&amp;nbsp;$GUI-&amp;gt;show(&amp;quot;Installing Software...&amp;quot;);&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;&amp;nbsp;# Move the progress bar&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;&amp;nbsp;$GUI-&amp;gt;step();&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;&amp;nbsp;# Hide the status GUI&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;&amp;nbsp;$GUI-&amp;gt;hide();&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;=head1 DESCRIPTION&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;I is a class providing methods to display a progress GUI.&amp;nbsp;&amp;nbsp;There are a number&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;of parameters that can be passed to allow configuration of the GUI.&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;=head1 REQUIRED MODULES&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;Win32::GUI;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;Win32::GUI::BitmapInline;&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;=head1 METHODS&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;There are no class methods, the object methods are described below.&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;Private class method start with the underscore character '_' and&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;should be treated as I.&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;=head2 new&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;Called to create a I object.&amp;nbsp;&amp;nbsp;The following optional named parameters can be&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;passed to the constructor via an anonymous hash:&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;=over 4&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;=item Title&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;Defines the window title.&amp;nbsp;&amp;nbsp;If not defined in the&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;constructor then it will use the default &amp;quot;Philips NA IT - Install Progress&amp;quot;.&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;=item ProgressBar&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;Used to determine if a progress bar is needed.&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;Default is none.&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;=back&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;=head2 _init &amp;amp; Private methods&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;I method to initialise the object on construction.&amp;nbsp;&amp;nbsp;Called by C.&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;All I methods start with B&amp;lt;_&amp;gt; and should be treated as PRIVATE.&amp;nbsp;&amp;nbsp;No other&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;private methods are documented (since they are private).&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;=head2 show&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;The C method is used to show the Progress GUI with message specified.&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;eg.&amp;nbsp;&amp;nbsp;$GUI-&amp;gt;show(&amp;quot;Installing Software...&amp;quot;);&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;=head2 step&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;C is used to step the progress bar if progress bar is turned on.&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;=head2 hide&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;C is used to hide the GUI.&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;=head1 KNOWN ISSUES&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;none&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;=head1 AUTHOR&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;Sam Dela Cruz, sammydc at gmail dot com&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;=head1 LICENSE&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;Copyright (c) 2006 - Sam Dela Cruz. All rights reserved. This&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;program is free software; you can redistribute it and/or modify it under&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;the same terms as Perl itself.&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;=cut&lt;/font&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-8056674423657565177?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/8056674423657565177/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=8056674423657565177' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/8056674423657565177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/8056674423657565177'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2007/02/progress-gui-in-perl-using-win32gui.html' title='Progress GUI in perl using Win32::GUI'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cf9ZNaFBCrc/RcvPqZTfgCI/AAAAAAAAAtw/QwK7DNxCvIs/s72-c/screen.JPG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-6014840415083499449</id><published>2007-02-06T14:50:00.000-08:00</published><updated>2008-10-15T18:16:05.399-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Perl Best Practices</title><content type='html'>I always wanted to tidy up my perl code.  But most of the time, because of the nature of work and tasks, I don't need to worry about this because my programs are mostly throw-away scripts, write and use once.  But through the years that I'm programming in perl, I have accumulated a bunch of snippets here and there that are really worthy of reuse.  Problem is when I look at them again, I need to re-read and re-understand my code again.  Something I left out before is naming and layout convention.  So with the purpose of rewriting and improving readability, consistency and maintainability of my codes, I set to follow some standards.  I found this wonderful book called &lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FPerl-Best-Practices-Damian-Conway%2Fdp%2F0596001738%2Fsr%3D1-1%2Fqid%3D1170803662%3Fie%3DUTF8%26s%3Dbooks&amp;amp;amp;amp;amp;tag=mylifiname-20&amp;linkCode=ur2&amp;amp;camp=1789&amp;creative=9325"&gt;Perl Best Practices.&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=mylifiname-20&amp;amp;amp;amp;amp;amp;l=ur2&amp;o=1" alt="" style="border: medium none  ! important; margin: 0px ! important;" border="0" height="1" width="1" /&gt;  It outlines coding layouts, naming conventions and well, best practices, perl style.  Below are my notes for Naming Conventions taken from &lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FPerl-Best-Practices-Damian-Conway%2Fdp%2F0596001738%2Fsr%3D1-1%2Fqid%3D1170803662%3Fie%3DUTF8%26s%3Dbooks&amp;amp;amp;amp;amp;tag=mylifiname-20&amp;linkCode=ur2&amp;amp;camp=1789&amp;creative=9325"&gt;this&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=mylifiname-20&amp;amp;amp;amp;amp;amp;l=ur2&amp;o=1" alt="" style="border: medium none  ! important; margin: 0px ! important;" border="0" height="1" width="1" /&gt;book by &lt;a href="http://www.amazon.com/gp/search?ie=UTF8&amp;keywords=Damian%20Conway&amp;tag=mylifiname-20&amp;index=books&amp;linkCode=ur2&amp;camp=1789&amp;creative=9325"&gt;Damian Conway.&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=mylifiname-20&amp;amp;l=ur2&amp;amp;o=1" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;

&lt;div id='snippet'&gt;
&lt;font color="#66ff00"&gt;#Identifiers&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;# Packages and Classes&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;# Noun::Adjective::Adjective&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff6600"&gt;package&lt;/font&gt;&lt;font color="#ffff00"&gt;&amp;nbsp;Disk;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff6600"&gt;package&lt;/font&gt;&lt;font color="#ffff00"&gt;&amp;nbsp;Disk::DVD;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff6600"&gt;use base&lt;/font&gt;&amp;nbsp;&lt;font color="#ff80ff"&gt;qw(&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;nbsp;Disk &lt;/font&gt;&lt;font color="#ff80ff"&gt;)&lt;/font&gt;;&lt;br /&gt;
&lt;font color="#ff6600"&gt;package&lt;/font&gt;&lt;font color="#ffff00"&gt;&amp;nbsp;Disk::DVD::Rewritable;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff6600"&gt;use base&lt;/font&gt;&amp;nbsp;&lt;font color="#ff80ff"&gt;qw(&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;nbsp;Disk::DVD &lt;/font&gt;&lt;font color="#ff80ff"&gt;)&lt;/font&gt;;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;# Variables&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;# noun, preceded by zero or more adjectives&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$next_client&lt;/font&gt;;&lt;br /&gt;
&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$prev_appointment&lt;/font&gt;;&lt;br /&gt;
&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$estimated_net_worth&lt;/font&gt;;&lt;br /&gt;
&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$final_total&lt;/font&gt;;&lt;br /&gt;
&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$cumulative_total&lt;/font&gt;;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;# Hashes and Arrays for look-up tables&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;# noun, preceded by zero or more adjectives, then preposition&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;%title_of&lt;/font&gt;;&lt;br /&gt;
&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;%ISBN_for&lt;/font&gt;;&lt;br /&gt;
&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;@sales_from&lt;/font&gt;;&lt;br /&gt;
&lt;font color="#66ff00"&gt;# and later...&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff6600"&gt;while&lt;/font&gt;&amp;nbsp;(&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$month&lt;/font&gt;&amp;nbsp;= prompt -&lt;font color="#ff80ff"&gt;menu &lt;/font&gt;=&amp;gt; &lt;font color="#00ffff"&gt;$MONTH_NAMES&lt;/font&gt;) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;for&lt;/font&gt;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$book&lt;/font&gt;&amp;nbsp;( &lt;font color="#00ffff"&gt;@catalog&lt;/font&gt;&amp;nbsp;) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;print&lt;/font&gt;&amp;nbsp;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#00ffff"&gt;$ISBN_for&lt;/font&gt;&lt;font color="#ff80ff"&gt;{&lt;/font&gt;&lt;font color="#00ffff"&gt;$book&lt;/font&gt;&lt;font color="#ff80ff"&gt;} &lt;/font&gt;&lt;font color="#00ffff"&gt;$title_of&lt;/font&gt;&lt;font color="#ff80ff"&gt;{&lt;/font&gt;&lt;font color="#00ffff"&gt;$book&lt;/font&gt;&lt;font color="#ff80ff"&gt;}: &lt;/font&gt;&lt;font color="#00ffff"&gt;$sales_from&lt;/font&gt;&lt;font color="#ff80ff"&gt;[&lt;/font&gt;&lt;font color="#00ffff"&gt;$month&lt;/font&gt;&lt;font color="#ff80ff"&gt;]&lt;/font&gt;&lt;font color="#ffa500"&gt;\n&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;# Subroutines and Methods&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;# imperative_verb noun&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff6600"&gt;sub&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#00ffff"&gt;get_record&lt;/font&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;# imperative_verb noun preposition&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff6600"&gt;sub&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#00ffff"&gt;get_record_for&lt;/font&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;# imperative_verb noun&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff6600"&gt;sub&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#00ffff"&gt;eat_cookie&lt;/font&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;# imperative_verb adjective noun&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff6600"&gt;sub&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#00ffff"&gt;eat_previous_cookie&lt;/font&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;# imperative_verb noun&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff6600"&gt;sub&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#00ffff"&gt;build_profile&lt;/font&gt;;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;# imperative_verb adjective noun&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff6600"&gt;sub&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#00ffff"&gt;build_execution_profile&lt;/font&gt;;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;# imperative_verb adjective noun participle&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff6600"&gt;sub&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#00ffff"&gt;build_execution_profile_using&lt;/font&gt;;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;# Notice how clear this is:&lt;/font&gt;&lt;br /&gt;
&lt;font color="#00ffff"&gt;@config_options&lt;/font&gt;&amp;nbsp;= get_record_for(&lt;font color="#00ffff"&gt;$next_client&lt;/font&gt;);&lt;br /&gt;
&lt;font color="#ff6600"&gt;for&lt;/font&gt;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$option&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;@config_options&lt;/font&gt;) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;build_execution_profile_using(&lt;font color="#00ffff"&gt;$next_client&lt;/font&gt;, &lt;font color="#00ffff"&gt;$option&lt;/font&gt;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;# Booleans&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;# begin with is_ or has_, but not always&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;sub&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#00ffff"&gt;is_valid&lt;/font&gt;;&lt;br /&gt;
&lt;font color="#ff6600"&gt;sub&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#00ffff"&gt;metadata_available_for&lt;/font&gt;;&lt;br /&gt;
&lt;font color="#ff6600"&gt;sub&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#00ffff"&gt;has_end_tag&lt;/font&gt;;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#00ffff"&gt;my&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;$&lt;/font&gt;&lt;font color="#00ffff"&gt;loading_finished&lt;/font&gt;;&lt;br /&gt;
&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$has_found_bad_record&lt;/font&gt;;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;# and later...&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;if&lt;/font&gt;&amp;nbsp;(is_valid(&lt;font color="#00ffff"&gt;$next_record&lt;/font&gt;) &amp;amp;&amp;amp; !&lt;font color="#00ffff"&gt;$loading_finished&lt;/font&gt;) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;METADATA:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;while&lt;/font&gt;&amp;nbsp;(metadata_available_for(&lt;font color="#00ffff"&gt;$next_record&lt;/font&gt;)) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;push&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;@metadata&lt;/font&gt;, get_metadata_for(&lt;font color="#00ffff"&gt;$next_record&lt;/font&gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;last&lt;/font&gt;&amp;nbsp;METADATA &lt;font color="#ff6600"&gt;if&lt;/font&gt;&amp;nbsp;has_end_tag(&lt;font color="#00ffff"&gt;$next_record&lt;/font&gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
}&lt;br /&gt;
&lt;font color="#ff6600"&gt;else&lt;/font&gt;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$has_found_bad_record&lt;/font&gt;&amp;nbsp;= &lt;font color="#00ffff"&gt;1&lt;/font&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;# Reference Variables&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;# suffix _ref to any variable that is supposed to store a reference&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff6600"&gt;sub&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#00ffff"&gt;pad_str&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;$text&lt;/font&gt;, &lt;font color="#00ffff"&gt;$opts_ref&lt;/font&gt;) = &lt;font color="#00ffff"&gt;@_&lt;/font&gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$gap&lt;/font&gt;&amp;nbsp;&amp;nbsp; = &lt;font color="#00ffff"&gt;$opts_ref&lt;/font&gt;{cols} - &lt;font color="#ff6600"&gt;length&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$text&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$left&lt;/font&gt;&amp;nbsp;&amp;nbsp;= &lt;font color="#00ffff"&gt;$opts_ref&lt;/font&gt;{centred} ? &lt;font color="#ff6600"&gt;int&lt;/font&gt;(&lt;font color="#00ffff"&gt;$gap&lt;/font&gt;/&lt;font color="#00ffff"&gt;2&lt;/font&gt;) : &lt;font color="#00ffff"&gt;0&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$right&lt;/font&gt;&amp;nbsp;= &lt;font color="#00ffff"&gt;$gap&lt;/font&gt;&amp;nbsp;- &lt;font color="#00ffff"&gt;$left&lt;/font&gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;return&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$SPACE&lt;/font&gt;&amp;nbsp;x &lt;font color="#00ffff"&gt;$left&lt;/font&gt;&amp;nbsp;. &lt;font color="#00ffff"&gt;$text&lt;/font&gt;&amp;nbsp;. &lt;font color="#00ffff"&gt;$SPACE&lt;/font&gt;&amp;nbsp;x &lt;font color="#00ffff"&gt;$right&lt;/font&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;# Arrays and Hashes&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;# Name arrays in the plural and hashes in the singular&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;%option&lt;/font&gt;;&lt;br /&gt;
&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;%title_of&lt;/font&gt;;&lt;br /&gt;
&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;%count_for&lt;/font&gt;;&lt;br /&gt;
&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;%is_available&lt;/font&gt;;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;# and later...&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff6600"&gt;if&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;$option&lt;/font&gt;{&lt;font color="#ff80ff"&gt;'&lt;/font&gt;&lt;font color="#ff80ff"&gt;count_all&lt;/font&gt;&lt;font color="#ff80ff"&gt;'&lt;/font&gt;} &amp;amp;&amp;amp; &lt;font color="#00ffff"&gt;$title_of&lt;/font&gt;{&lt;font color="#00ffff"&gt;$next_book&lt;/font&gt;} =~ &lt;font color="#ff6600"&gt;m/&lt;/font&gt;&lt;font color="#00ffff"&gt;$target&lt;/font&gt;&lt;font color="#ff6600"&gt;/xms&lt;/font&gt;) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$count_for&lt;/font&gt;{&lt;font color="#00ffff"&gt;$next_book&lt;/font&gt;}++;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$is_available&lt;/font&gt;{&lt;font color="#00ffff"&gt;$next_book&lt;/font&gt;} = &lt;font color="#00ffff"&gt;1&lt;/font&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;@events&lt;/font&gt;;&lt;br /&gt;
&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;@handlers&lt;/font&gt;;&lt;br /&gt;
&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;@unknowns&lt;/font&gt;;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;# and later...&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;for&lt;/font&gt;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$event&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;@events&lt;/font&gt;) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;push&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;@unknowns&lt;/font&gt;, &lt;font color="#ff6600"&gt;grep&lt;/font&gt;&amp;nbsp;{ ! &lt;font color="#00ffff"&gt;$_&lt;/font&gt;-&amp;gt;handle(&lt;font color="#00ffff"&gt;$event&lt;/font&gt;) } &lt;font color="#00ffff"&gt;@handlers&lt;/font&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;print&lt;/font&gt;&amp;nbsp;&lt;font color="#ff6600"&gt;map&lt;/font&gt;&amp;nbsp;{ &lt;font color="#00ffff"&gt;$_&lt;/font&gt;-&amp;gt;err_msg } &lt;font color="#00ffff"&gt;@unknowns&lt;/font&gt;;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;# but arrays as random-access look-up table, should be singular&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;@factorial&lt;/font&gt;&amp;nbsp;= (&lt;font color="#00ffff"&gt;1&lt;/font&gt;);&lt;br /&gt;
&lt;font color="#ff6600"&gt;for&lt;/font&gt;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$n&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;1.&lt;/font&gt;.&lt;font color="#00ffff"&gt;$MAX_FACT&lt;/font&gt;) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$factorial&lt;/font&gt;[&lt;font color="#00ffff"&gt;$n&lt;/font&gt;] = &lt;font color="#00ffff"&gt;$n&lt;/font&gt;&amp;nbsp;* &lt;font color="#00ffff"&gt;$factorial&lt;/font&gt;[&lt;font color="#00ffff"&gt;$n&lt;/font&gt;&lt;font color="#00ffff"&gt;-1&lt;/font&gt;];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;sub&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#00ffff"&gt;factorial&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;$n&lt;/font&gt;) = &lt;font color="#00ffff"&gt;@_&lt;/font&gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;croak&lt;/font&gt;&amp;nbsp;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff80ff"&gt;Can't compute factorial(&lt;/font&gt;&lt;font color="#00ffff"&gt;$n&lt;/font&gt;&lt;font color="#ff80ff"&gt;)&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;quot;&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;if&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$n&lt;/font&gt;&amp;nbsp;&amp;lt; &lt;font color="#00ffff"&gt;0&lt;/font&gt;&amp;nbsp;|| &lt;font color="#00ffff"&gt;$n&lt;/font&gt;&amp;nbsp;&amp;gt; &lt;font color="#00ffff"&gt;$MAX_FACT&lt;/font&gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;return&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$factorial&lt;/font&gt;[&lt;font color="#00ffff"&gt;$n&lt;/font&gt;];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;# Underscores&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;# Use underscores to separate words in multiword identifiers&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
FORM:&lt;br /&gt;
&lt;font color="#ff6600"&gt;for&lt;/font&gt;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$tax_form&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;@tax_form_sequence&lt;/font&gt;) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$notional_tax_paid&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= &lt;font color="#00ffff"&gt;$tax_form&lt;/font&gt;-&amp;gt;{reported_income} * &lt;font color="#00ffff"&gt;$tax_form&lt;/font&gt;-&amp;gt;{effective_tax_rate};&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;next&lt;/font&gt;&amp;nbsp;FORM &lt;font color="#ff6600"&gt;if&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$notional_tax_paid&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;lt; &lt;font color="#00ffff"&gt;$MIN_ASSESSABLE&lt;/font&gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$total_paid&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+= &lt;font color="#00ffff"&gt;$notional_tax_paid&lt;/font&gt;&amp;nbsp;- &lt;font color="#00ffff"&gt;$tax_form&lt;/font&gt;-&amp;gt;{allowed_deductions};&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;# Capitalization&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;# Distinguish different program components by case&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;# Use lowercase only for the names of subroutines,&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;# methods, variables, and labeled arguments&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;# $controller, new( ), src=&amp;gt;$fh&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;# Use mixed-case for package and class names&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;# IO::Controller&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;# Use uppercase for constants&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;# $SRC, $NODE&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$controller&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= IO::Controller-&amp;gt;&lt;font color="#ff6600"&gt;new&lt;/font&gt;(&lt;font color="#ff80ff"&gt;src&lt;/font&gt;=&amp;gt;&lt;font color="#00ffff"&gt;$fh&lt;/font&gt;,&amp;nbsp;&amp;nbsp;&lt;font color="#ff80ff"&gt;mode&lt;/font&gt;=&amp;gt;&lt;font color="#00ffff"&gt;$SRC&lt;/font&gt;|&lt;font color="#00ffff"&gt;$NODE&lt;/font&gt;);&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;# Abbreviations&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;# retain start of each word&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;# This example is easily comprehended:&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#ff6600"&gt;use &lt;/font&gt;List::Util &lt;font color="#ff80ff"&gt;qw(&lt;/font&gt;&lt;font color="#ff80ff"&gt;&amp;nbsp;max &lt;/font&gt;&lt;font color="#ff80ff"&gt;)&lt;/font&gt;;&lt;br /&gt;
&lt;br /&gt;
DESC:&lt;br /&gt;
&lt;font color="#ff6600"&gt;for&lt;/font&gt;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$desc&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;@orig_strs&lt;/font&gt;) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$len&lt;/font&gt;&amp;nbsp;= &lt;font color="#ff6600"&gt;length&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$desc&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;next&lt;/font&gt;&amp;nbsp;DESC &lt;font color="#ff6600"&gt;if&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$len&lt;/font&gt;&amp;nbsp;&amp;gt; &lt;font color="#00ffff"&gt;$UPPER_LIM&lt;/font&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$max_len&lt;/font&gt;&amp;nbsp;= max(&lt;font color="#00ffff"&gt;$max_len&lt;/font&gt;, &lt;font color="#00ffff"&gt;$len&lt;/font&gt;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;# Utility Subroutines&lt;/font&gt;&lt;br /&gt;
&lt;font color="#66ff00"&gt;# Prefix &amp;quot;for internal use only&amp;quot; subroutines with an underscore&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ff6600"&gt;sub&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#00ffff"&gt;_find_fib&lt;/font&gt;&lt;font color="#ffcc00"&gt;&amp;nbsp;&lt;/font&gt;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;$n&lt;/font&gt;) = &lt;font color="#00ffff"&gt;@_&lt;/font&gt;;&lt;br /&gt;
&lt;br /&gt;
&lt;font color="#66ff00"&gt;# Walk up cache from last known value, applying Fn = Fn-1 + Fn-2...&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;for&lt;/font&gt;&amp;nbsp;&lt;font color="#ff6600"&gt;my&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;$i&lt;/font&gt;&amp;nbsp;(&lt;font color="#00ffff"&gt;@fib_for&lt;/font&gt;..&lt;font color="#00ffff"&gt;$n&lt;/font&gt;) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;$fib_for&lt;/font&gt;[&lt;font color="#00ffff"&gt;$i&lt;/font&gt;] = &lt;font color="#00ffff"&gt;$fib_for&lt;/font&gt;[&lt;font color="#00ffff"&gt;$i&lt;/font&gt;&lt;font color="#00ffff"&gt;-1&lt;/font&gt;] + &lt;font color="#00ffff"&gt;$fib_for&lt;/font&gt;[&lt;font color="#00ffff"&gt;$i&lt;/font&gt;&lt;font color="#00ffff"&gt;-2&lt;/font&gt;];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff6600"&gt;return&lt;/font&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-6014840415083499449?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/6014840415083499449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=6014840415083499449' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/6014840415083499449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/6014840415083499449'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2007/02/perl-best-practices.html' title='Perl Best Practices'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-335429149969822632</id><published>2007-01-13T23:43:00.000-08:00</published><updated>2007-04-18T11:20:39.960-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='family'/><title type='text'>Kid's Surprise</title><content type='html'>&lt;table&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;
&lt;div style="font-size: 83%; width: 194px; font-family: arial,sans-serif; text-align: center;"&gt;&lt;div style="background: transparent url(http://picasaweb.google.com/f/img/transparent_album_background.gif) no-repeat scroll left 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 194px;"&gt;&lt;a href="http://picasaweb.google.com/sammydc/KidSSurprise"&gt;&lt;img style="border: medium none ; padding: 0px; margin-top: 16px;" src="http://lh6.google.com/image/sammydc/RanZSgzfLVE/AAAAAAAAALE/RuFSbgqftvc/s160-c/KidSSurprise.jpg" height="160" width="160" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://picasaweb.google.com/sammydc/KidSSurprise"&gt;&lt;div style="font-weight: bold; color: rgb(77, 77, 77); text-decoration: none;"&gt;Kid's Surprise&lt;/div&gt;&lt;/a&gt;&lt;div style="color: rgb(128, 128, 128);"&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;div&gt;This is a great idea from the 3 moms. They arranged this get-together to surprise our kids with presents. It was amazing to see how they really appreciated simple gifts.  You can see from their eyes the moment they opened the gifts the sparkle.  This is nice, we got to do this at least once a year.&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-335429149969822632?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/335429149969822632/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=335429149969822632' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/335429149969822632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/335429149969822632'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2007/01/kids-surprise.html' title='Kid&apos;s Surprise'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-5077966225410680687</id><published>2007-01-12T16:19:00.000-08:00</published><updated>2008-12-08T23:58:41.480-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wala lang'/><title type='text'>Online Exercise Journal</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_cf9ZNaFBCrc/Rags6QzfLUI/AAAAAAAAABI/6Z7RMNEAJB4/s1600-h/fitday_chart_Jan_12_2007.PNG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://3.bp.blogspot.com/_cf9ZNaFBCrc/Rags6QzfLUI/AAAAAAAAABI/6Z7RMNEAJB4/s400/fitday_chart_Jan_12_2007.PNG" alt="" id="BLOGGER_PHOTO_ID_5019311164159372610" border="0" /&gt;&lt;/a&gt;&lt;span style="font-family:trebuchet ms;"&gt;I spent a few minutes on the web trying to find an online exercise journal so I can track my progress.  I found &lt;/span&gt;&lt;a style="font-family: trebuchet ms;" href="http://www.fitday.com/"&gt;FitDay&lt;/a&gt;&lt;span style="font-family:trebuchet ms;"&gt;.   Not only that it tracks daily exercise activities but also tracks diet.  Then based on the journal entry, answers fitness questions, including:
&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;"&gt;How many calories am I eating?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;"&gt;What's my fat/carb/protein calorie breakdown?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;"&gt;How many calories does each food contribute?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;"&gt;Am I getting my recommended requirements of vitamins and minerals?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;"&gt;How many calories do I burn?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;"&gt;Where am I burning my calories (exercise, BMR, lifestyle)?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;"&gt;Am I achieving a caloric balance?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;"&gt;How many miles did I run (swim, walk, bike) over the past few weeks?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;"&gt;How is my weight changing?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;"&gt;Is my weight within a healthy range for my height?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;"&gt;Am I achieving my personal weight goal?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;"&gt;Am I achieving my personal nutrition goals?&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:trebuchet ms;"&gt;The chart above shows how healthy(?) I am at the moment.  There is a way to enter fitness goals.  My goal is to be 150 lbs. by the end of the year.  Let's track my progress!
&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-5077966225410680687?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/5077966225410680687/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=5077966225410680687' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/5077966225410680687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/5077966225410680687'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2007/01/online-exercise-journal.html' title='Online Exercise Journal'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_cf9ZNaFBCrc/Rags6QzfLUI/AAAAAAAAABI/6Z7RMNEAJB4/s72-c/fitday_chart_Jan_12_2007.PNG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-1404429724571006104</id><published>2007-01-12T12:49:00.000-08:00</published><updated>2008-10-16T11:57:58.468-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wala lang'/><title type='text'>Let's Take A Walk!</title><content type='html'>&lt;p&gt;After years of no exercise whatsoever, this week I started walking just 30 minutes a day.  Oh what a feeling!  (from a song, if I may borrow).  A difference it makes indeed.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-1404429724571006104?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/1404429724571006104/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=1404429724571006104' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/1404429724571006104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/1404429724571006104'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2007/01/lets-take-walk.html' title='Let&apos;s Take A Walk!'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37100504.post-4618666616967539179</id><published>2006-11-10T16:18:00.000-08:00</published><updated>2008-10-16T11:58:35.932-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='family'/><title type='text'>It's Friday</title><content type='html'>&lt;p&gt;Another week is over.  What have I accomplished this week?  A lot I suppose, but not too much.  This week in a hurry I did the following:&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;Composed and delivered a talk.&lt;/li&gt;&lt;li&gt;Took my 2 kids to the doctor due to common cough and cold.&lt;/li&gt;&lt;li&gt;Rescheduled a public talk.&lt;/li&gt;&lt;li&gt;Learned about dotnetCharting for work.&lt;/li&gt;&lt;/ol&gt;

&lt;p&gt;
I worried to much about my 2 kids being sick this week, everytime this happens I would remember how sick my youngest had been a few years back.  It was my first time to have experienced putting a baby in a tub full of water.  Her temperature had reached 103 degrees at about 11:30 that night.  While I was talking to her pediatrician on the phone, I turned on the tub faucet and filled it with water, then 2 minutes later, soaked my baby while she was crying and screaming.  Quite an experience.  I'm sure most parents have their share of these experiences.  This week it was my son who brought this viral sickness in my house.  He must have  gotten it from school.  Their pedia suggested he bring hand sanitizers to school and wash hands often specially after touching things like doorknobs and keyboards in school.  My wife also was slightly sick, problem sometimes is that, she has trouble of knowing if she had cold or an allergy attack.  Allergy attack indeed, just a night after taking her medications, she is back as a hyperactive mom.  I too got the cold bug, but as usual I'm not allowed to get sick, so while taking in 2 pills in 2 nights, still did my daily routine.  Well, so much for that, hopefully after taking the prescribed medications, my kids would be their usual selves, hyper and &lt;span style="font-style: italic;"&gt;makulit&lt;/span&gt; (stubborn).
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37100504-4618666616967539179?l=samdelacruz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samdelacruz.blogspot.com/feeds/4618666616967539179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37100504&amp;postID=4618666616967539179' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/4618666616967539179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37100504/posts/default/4618666616967539179'/><link rel='alternate' type='text/html' href='http://samdelacruz.blogspot.com/2006/11/its-friday.html' title='It&apos;s Friday'/><author><name>samdc</name><uri>http://www.blogger.com/profile/09002535975231830154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
