Posted by: merc
I'm working on a new project, with new VS2008 on my new desk and new chair, what better time to update the log4cxx library that I've been using since then : )

I've quickly downloaded the source package from the official log4cxx site and I'm really happy that it comes with MSVS project files now!

But soon I realize that it only build DLL versions of the log4cxx, and since I need the static version of log4cxx I'll have to go back to the ANT tool.

As usual you'll still need to get the apr, apr-util and other contrib package and setup ANT for the task, and since I don't have that environment anymore I just had to get all these package allover again.

Everything went a lot smoother then the last time I did this about a year ago, with the right package and build environment everything went just smooth (hooraay~)

The ANT tool still generates the static/shared/release/debug projects files separately. So just like what I did before, I generate the VC6 projects for each build type, and merge it into a single solutions that can compile and build all build type. Plus I also included the required external dependencies (apr / apr-util / etc) so you will just need to download single package and starts get log4cxx to compile on your machine.

I've made two package available, one for VC6, another for VC2008 (VC9) from my previous blog entry here.

:)

p/s: did I told you that I've got my new desktop machine and new laptop machine as well? ^_^

31 Jul 2008: Pair Me Up, Scotty?

Posted by: merc
With our current Sprint's Backlog item completed, me and my colleague decided to trying out Pair Programming just for the fun of it. I volunteer to be the driver while he be the navigator (I actually think "back-seat driver" would be a more appropriate term :D )

We dig-in on my station, and working on a backlog item (for the next sprint, which yet to start yet). I must admit that the progress of completing the task is pretty fast, we exchange idea on the solution before code it in, and on the first run the code is working :) And not to mention that the whole activity it keeps me awake! which I normally doze-off in the afternoon while working alone~

I have a feeling that we're going to do this more often in the future :D

11 Jul 2008: Man's Best Friend

Category: Books
Posted by: merc
I was walking out for lunch in a fine sunny afternoon, and for some odd reason, when I walk by a car parked at the road-side parking lot, I peer through its glass and a book on its dashboard caught my eyes (I don't usually peek into parked cars).

A closer look reveal the title: How to Make Your Man Behave in 21 Days or Less Using the Secrets of Professional Dog Trainers

WTF *_*
Category: Computing
Posted by: merc
Since the launch of Firefox 3, trying to download Firefox 2 has been increasingly difficult (since most mirrors are updating to the latest version).

To be honest I'm not too fancy to install it as soon as it was released, since Firefox 2 works for me. So fate took a turn and my machine need a re-installation all over. Since I can't get FF2, I've deiced to give FF3 a try.

Downloading it was a breeze, plus another two minutes and FF3 in installed to my Vista.

From what I've read, the new FF3 default theme suppose to give the user an "integrated" experience within the user's OS. Now look at bellow, I do not think its any where near to "Vista" as it claim, putting a funky button as Back and Forward button do-not-constitute as "Vista" integration OK?

FF3 Default Theme

A quick search at Mozilla Firefox Theme shows that most of the theme are for FF2, very few that are FF3 ready. I'm looking for something that "revert" the FF3 look back to FF2, although I could not find the exact match, I did found Phoenity Aura 0.3

FF3 Phoenity Aura

Don't get me wrong, the FF3 does an excellent job in bringing us FF3 (for God knows how many improvement has made so that the freeloader like you and me can enjoy the digital era), but I think shipping Strata as the default theme, is less appealing to me.
Category: Books
Posted by: merc
Divergence I was browsing through bookshelves in the Kinokuniya Book Store and this particular book Divergence caught my eyes, for its bright pink, I'm a little doubtful that its as good as my favorite sci-fi author Peter F. Hamilton, but a further inspection on the cover reveal a tag line "A new British star has arrived to join the likes of Hamilton, Reynolds and Banks'. Ok~ Now that don't sound so bad, at lease it would be as good don't you think?

A week passed and when I'm done reading the book, it just wasn't what I've expected, the book has too many loose ends (which all suppose to explained by the conclusion which whole universe is actually wired from its creation to support barter-system? ), the characters development, apart from Judy, are just flat as well!

Posted by: merc
I've got quite a number of request in email requesting me for a simple log4cxx sample program that illustrate the usage of log4cxx ever since I've wrote this article. I've sent my sample program in emails to those request, but I guess it will be more productive if I would just put up a sample usage here.

This will be a to-the-point log4cxx tutorial, you will probably need the binary here before you proceed:

The log4cxx XML Configuration file ( MyLogConfig.xml ) will shows you the usage of following appender:
  1. org.apache.log4j.ConsoleAppender
  2. org.apache.log4j.FileAppender
  3. org.apache.log4j.rolling.RollingFileAppender
  4. org.apache.log4j.RollingFileAppender
  5. org.apache.log4j.net.SMTPAppender
  6. org.apache.log4j.jdbc.JDBCAppender
  7. org.apache.log4j.net.XMLSocketAppender
The MyLogConfig.xml is properly commented, so it should be self explanatory. ( and no, there is no typo, the configuration file actually refer it as log4j )

Writing The Code
Create a C++ Console project in VC++, and put in the following code:
#include <log4cxx\logger.h> 
#include <log4cxx\xml\domconfigurator.h>
#include <windows.h>

using namespace log4cxx;
using namespace log4cxx::xml;
using namespace log4cxx::helpers;

// Define static logger variable
LoggerPtr loggerToFile(Logger::getLogger( _T("MyLogger") ) );
LoggerPtr loggerMyFunctionA(Logger::getLogger( _T("MyFunctionA") ));


void MyFunctionA()
{
LOG4CXX_INFO(loggerMyFunctionA, _T("Executing MyFunctionA."));
}


int _tmain(int argc, _TCHAR* argv[])
{
// Load configuration file
DOMConfigurator::configure("MyLogConfig.xml");

// Loop something
for(int i=0; i<10; ++i)
{
LOG4CXX_DEBUG(loggerToFile, _T("this is a debug message."));
LOG4CXX_INFO (loggerToFile, _T("this is a info message, just ignore."));
LOG4CXX_WARN (loggerToFile, _T("this is a warn message, dont worry too much."));
LOG4CXX_ERROR(loggerToFile, _T("this is a error message, something serious is happening."));
LOG4CXX_FATAL(loggerToFile, _T("this is a fatal message, crash and burn!!!"));
MyFunctionA();

Sleep(1000);
printf("i = %d\n", i);
}


getchar();
return 0;
}


Writing the log4cxx Configuration File
The log4cxx configuration file as follows ( MyLogConfig.xml ):
<?xml version="1.0" encoding="UTF-8" ?>
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- Output the log message to system console.
-->
<appender name="MyConsoleAppender" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p %c{1} - %m%n"/>
</layout>
</appender>
<!-- Output the log message to a log file named "NormalLogFile.log"
-->
<appender name="MyNormalAppender" class="org.apache.log4j.FileAppender">
<param name="file" value="NormalLogFile.log" />
<param name="append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %5p %c{1} - %m%n" />
</layout>
</appender>


<!-- the following appender with the name "TimeBasedLog.log", every night a few seconds after
12::00PM the old log will be renamed with append the date in filename, and a new log file
with the name "TimeBasedLog.log" will be create.
notice the RollingFileAppender is under "org.apache.log4j.rolling" namespace
-->
<appender name="MyRollingAppenderDaily" class="org.apache.log4j.rolling.RollingFileAppender">
<rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
<param name="FileNamePattern" value="TimeBasedLog.%d{yyyy-MM-dd}.log"/>
<param name="activeFileName" value="TimeBasedLog.log"/>
</rollingPolicy>

<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss,SSS} %x [%p] (%F:%L) %m%n"/>
</layout>
<param name="file" value="TimeBasedLog.log"/>
<param name="append" value="true"/>
</appender>


<!-- On application startup, a log file named "SizeBasedLog.log" will be create if not exist.
When the log file reach beyond 5KB, it will be renamed "SizeBasedLog.log.1", when the log
index reach "SizeBasedLog.log.5", the next rename will be back to "SizeBasedLog.log.1" and
overite the old log.
-->
<appender name="MyRollingAppenderSize" class="org.apache.log4j.RollingFileAppender">
<param name="file" value="SizeBasedLog.log"/>
<param name="append" value="true"/>
<param name="MaxFileSize" value="5KB"/>
<param name="MaxBackupIndex" value="5"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
</layout>
</appender>


<!-- the following appender creates a logfile in log4j XML format, suitable to viewing with
XML log viewer such as Chainsaw (http://logging.apache.org/log4j/docs/chainsaw.html)
-->
<appender name="MyLogFileAppenderXml" class="org.apache.log4j.RollingFileAppender">
<param name="file" value="XmlLog.txt" />
<param name="append" value="true" />
<param name="ImmediateFlush" value="true" />
<layout class="org.apache.log4j.xml.XMLLayout" />
</appender>
<!-- This appender will send email through SMTP server.
-->
<appender name="MySMTPAppenderEmail" class="org.apache.log4j.net.SMTPAppender">
<param name="BufferSize" value="512" />
<param name="SMTPHost" value="smtp.youremailserver.com" />
<param name="SMTPPort" value="25" />
<param name="From" value="yourname@youremailserver.com (mailto:yourname@youremailserver.com)" />
<param name="To" value="yourname@youremailserver.com (mailto:yourname@youremailserver.com)" />
<param name="CC" value="someoneelse@youremailserver.com (mailto:someoneelse@youremailserver.com)" />
<param name="SMTPUsername" value="yourusername" />
<param name="SMTPPassword" value="yourpassword" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{ABSOLUTE},%c{1}] %m%n"/>
</layout>
</appender>


<!-- This appender will write the log message to a database through JDBC connection
to Sybase Database.
-->
<appender name="MyJdbcAppender" class="org.apache.log4j.jdbc.JDBCAppender">
<param name="driver" value="com.sybase.jdbc2.jdbc.SybDriver"/>
<param name="URL" value="jdbc:sybase:Tds:127.0.0.1:2638/Summit"/>
<param name="user" value="DBA"/>
<param name="password" value="SQL"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="INSERT INTO ErrorLog (ErrorMessage) VALUES ('%d - %c - %p - %m')"/>
</layout>
</appender>


<!-- This appender will write log message and send it through XMLSocketAppender, a receiver
with XMLSocketReceiver such as Chainsaw (http://logging.apache.org/log4j/docs/chainsaw.html)
will be able to receive and interpret it.
-->
<appender name="MyXmlAppender" class="org.apache.log4j.net.XMLSocketAppender">
<param name="Port" value="1234"/>
<param name="RemoteHost" value="10.7.5.15"/>
<param name="ReconnectionDelay" value="60000"/>
<param name="LocationInfo" value="true" />
</appender>


<!-- Using XMLSocketAppender couple with pattern layout to send text lines to
a ordinary TCP listener, any application that implements TCP socuket listening
will be able to receive the log message.
-->
<appender name="MyXmlAppenderFormated" class="org.apache.log4j.net.XMLSocketAppender">
<param name="Port" value="1235"/>
<param name="RemoteHost" value="localhost"/>
<param name="ReconnectionDelay" value="60000"/>
<param name="LocationInfo" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
</layout>
</appender>


<!-- Setup the root category, add the appenders and set the default level
5 level of logging, ALL < DEBUG < INFO < WARN < ERROR < FATAL
The root level is set with INFO, which mean any message greater or same
as INFO will be log down, in this case, DEBUG is not logged.
To log all regardless of logging level, set <priority value="ALL">
-->
<root>
<priority value="all" />
<appender-ref ref="MyRollingAppenderDaily"/>
<appender-ref ref="MyRollingAppenderSize"/>
<appender-ref ref="MyConsoleAppender"/>
<appender-ref ref="MyLogFileAppenderXml"/>
<appender-ref ref="MyXmlAppenderFormated"/>
<appender-ref ref="MyXmlAppender"/>
<appender-ref ref="MyJdbcAppender"/>
</root>

<!-- Specify the level for some specific categories -->
<category name="MyFunctionA" >
<priority value ="info" />
<appender-ref ref="MyNormalAppender" />
</category>

</log4j:configuration>

You may notice that the tag has log4j in it, that's fine, it'll work :)

I can't remember where did I gather all the pieces up there, but I kind of remember that it was pieces from different sources before I have put in together. Let me know if you need additional instructions. Is this helpful? Happy Logging ; )
Category: Computing
Posted by: merc
More then once I need to have to populate a country list into database for later retrieve to populate an online form or combo box. Instead of doing it all over again, I've made the following SQL script, it should work with My SQL, MS SQL, etc...

I'm not sure if this the full list of every country in the world, so if you know a country that is not in the list, let me know.

And please pre-create a table tCountry to hold the data.

INSERT INTO tCountry (CountryName) VALUES ('Afghanistan');
INSERT INTO tCountry (CountryName) VALUES ('Albania');
INSERT INTO tCountry (CountryName) VALUES ('Algeria');
INSERT INTO tCountry (CountryName) VALUES ('American Samoa');
INSERT INTO tCountry (CountryName) VALUES ('Andorra');
INSERT INTO tCountry (CountryName) VALUES ('Angola');
INSERT INTO tCountry (CountryName) VALUES ('Anguilla');
INSERT INTO tCountry (CountryName) VALUES ('Antarctica');
INSERT INTO tCountry (CountryName) VALUES ('Antigua and Barbuda');
INSERT INTO tCountry (CountryName) VALUES ('Argentina');
INSERT INTO tCountry (CountryName) VALUES ('Armenia');
INSERT INTO tCountry (CountryName) VALUES ('Arctic Ocean');
INSERT INTO tCountry (CountryName) VALUES ('Aruba');
INSERT INTO tCountry (CountryName) VALUES ('Ashmore and Cartier Islands');
INSERT INTO tCountry (CountryName) VALUES ('Atlantic Ocean');
INSERT INTO tCountry (CountryName) VALUES ('Australia');
INSERT INTO tCountry (CountryName) VALUES ('Austria');
INSERT INTO tCountry (CountryName) VALUES ('Azerbaijan');
INSERT INTO tCountry (CountryName) VALUES ('Bahamas');
INSERT INTO tCountry (CountryName) VALUES ('Bahrain');
INSERT INTO tCountry (CountryName) VALUES ('Baker Island');
INSERT INTO tCountry (CountryName) VALUES ('Bangladesh');
INSERT INTO tCountry (CountryName) VALUES ('Barbados');
INSERT INTO tCountry (CountryName) VALUES ('Bassas da India');
INSERT INTO tCountry (CountryName) VALUES ('Belarus');
INSERT INTO tCountry (CountryName) VALUES ('Belgium');
INSERT INTO tCountry (CountryName) VALUES ('Belize');
INSERT INTO tCountry (CountryName) VALUES ('Benin');
INSERT INTO tCountry (CountryName) VALUES ('Bermuda');
INSERT INTO tCountry (CountryName) VALUES ('Bhutan');
INSERT INTO tCountry (CountryName) VALUES ('Bolivia');
INSERT INTO tCountry (CountryName) VALUES ('Bosnia and Herzegovina');
INSERT INTO tCountry (CountryName) VALUES ('Botswana');
INSERT INTO tCountry (CountryName) VALUES ('Bouvet Island');
INSERT INTO tCountry (CountryName) VALUES ('Brazil');
INSERT INTO tCountry (CountryName) VALUES ('British Virgin Islands');
INSERT INTO tCountry (CountryName) VALUES ('Brunei');
INSERT INTO tCountry (CountryName) VALUES ('Bulgaria');
INSERT INTO tCountry (CountryName) VALUES ('Burkina Faso');
INSERT INTO tCountry (CountryName) VALUES ('Burundi');
INSERT INTO tCountry (CountryName) VALUES ('Cambodia');
INSERT INTO tCountry (CountryName) VALUES ('Cameroon');
INSERT INTO tCountry (CountryName) VALUES ('Canada');
INSERT INTO tCountry (CountryName) VALUES ('Cape Verde');
INSERT INTO tCountry (CountryName) VALUES ('Cayman Islands');
INSERT INTO tCountry (CountryName) VALUES ('Central African Republic');
INSERT INTO tCountry (CountryName) VALUES ('Chad');
INSERT INTO tCountry (CountryName) VALUES ('Chile');
INSERT INTO tCountry (CountryName) VALUES ('China');
INSERT INTO tCountry (CountryName) VALUES ('Christmas Island');
INSERT INTO tCountry (CountryName) VALUES ('Clipperton Island');
INSERT INTO tCountry (CountryName) VALUES ('Cocos Islands');
INSERT INTO tCountry (CountryName) VALUES ('Colombia');
INSERT INTO tCountry (CountryName) VALUES ('Comoros');
INSERT INTO tCountry (CountryName) VALUES ('Cook Islands');
INSERT INTO tCountry (CountryName) VALUES ('Coral Sea Islands');
INSERT INTO tCountry (CountryName) VALUES ('Costa Rica');
INSERT INTO tCountry (CountryName) VALUES ('Cote d"Ivoire');
INSERT INTO tCountry (CountryName) VALUES ('Croatia');
INSERT INTO tCountry (CountryName) VALUES ('Cuba');
INSERT INTO tCountry (CountryName) VALUES ('Cyprus');
INSERT INTO tCountry (CountryName) VALUES ('Czech Republic');
INSERT INTO tCountry (CountryName) VALUES ('Denmark');
INSERT INTO tCountry (CountryName) VALUES ('Democratic Republic of the Congo');
INSERT INTO tCountry (CountryName) VALUES ('Djibouti');
INSERT INTO tCountry (CountryName) VALUES ('Dominica');
INSERT INTO tCountry (CountryName) VALUES ('Dominican Republic');
INSERT INTO tCountry (CountryName) VALUES ('East Timor');
INSERT INTO tCountry (CountryName) VALUES ('Ecuador');
INSERT INTO tCountry (CountryName) VALUES ('Egypt');
INSERT INTO tCountry (CountryName) VALUES ('El Salvador');
INSERT INTO tCountry (CountryName) VALUES ('Equatorial Guinea');
INSERT INTO tCountry (CountryName) VALUES ('Eritrea');
INSERT INTO tCountry (CountryName) VALUES ('Estonia');
INSERT INTO tCountry (CountryName) VALUES ('Ethiopia');
INSERT INTO tCountry (CountryName) VALUES ('Europa Island');
INSERT INTO tCountry (CountryName) VALUES ('Falkland Islands (Islas Malvinas)');
INSERT INTO tCountry (CountryName) VALUES ('Faroe Islands');
INSERT INTO tCountry (CountryName) VALUES ('Fiji');
INSERT INTO tCountry (CountryName) VALUES ('Finland');
INSERT INTO tCountry (CountryName) VALUES ('France');
INSERT INTO tCountry (CountryName) VALUES ('French Guiana');
INSERT INTO tCountry (CountryName) VALUES ('French Polynesia');
INSERT INTO tCountry (CountryName) VALUES ('French Southern and Antarctic Lands');
INSERT INTO tCountry (CountryName) VALUES ('Gabon');
INSERT INTO tCountry (CountryName) VALUES ('Gambia');
INSERT INTO tCountry (CountryName) VALUES ('Gaza Strip');
INSERT INTO tCountry (CountryName) VALUES ('Georgia');
INSERT INTO tCountry (CountryName) VALUES ('Germany');
INSERT INTO tCountry (CountryName) VALUES ('Ghana');
INSERT INTO tCountry (CountryName) VALUES ('Gibraltar');
INSERT INTO tCountry (CountryName) VALUES ('Glorioso Islands');
INSERT INTO tCountry (CountryName) VALUES ('Greece');
INSERT INTO tCountry (CountryName) VALUES ('Greenland');
INSERT INTO tCountry (CountryName) VALUES ('Grenada');
INSERT INTO tCountry (CountryName) VALUES ('Guadeloupe');
INSERT INTO tCountry (CountryName) VALUES ('Guam');
INSERT INTO tCountry (CountryName) VALUES ('Guatemala');
INSERT INTO tCountry (CountryName) VALUES ('Guernsey');
INSERT INTO tCountry (CountryName) VALUES ('Guinea');
INSERT INTO tCountry (CountryName) VALUES ('Guinea-Bissau');
INSERT INTO tCountry (CountryName) VALUES ('Guyana');
INSERT INTO tCountry (CountryName) VALUES ('Haiti');
INSERT INTO tCountry (CountryName) VALUES ('Honduras');
INSERT INTO tCountry (CountryName) VALUES ('Hong Kong');
INSERT INTO tCountry (CountryName) VALUES ('Howland Island');
INSERT INTO tCountry (CountryName) VALUES ('Hungary');
INSERT INTO tCountry (CountryName) VALUES ('Iceland');
INSERT INTO tCountry (CountryName) VALUES ('India');
INSERT INTO tCountry (CountryName) VALUES ('Indian Ocean');
INSERT INTO tCountry (CountryName) VALUES ('Indonesia');
INSERT INTO tCountry (CountryName) VALUES ('Iran');
INSERT INTO tCountry (CountryName) VALUES ('Iraq');
INSERT INTO tCountry (CountryName) VALUES ('Ireland');
INSERT INTO tCountry (CountryName) VALUES ('Isle of Man');
INSERT INTO tCountry (CountryName) VALUES ('Israel');
INSERT INTO tCountry (CountryName) VALUES ('Italy');
INSERT INTO tCountry (CountryName) VALUES ('Jamaica');
INSERT INTO tCountry (CountryName) VALUES ('Jan Mayen');
INSERT INTO tCountry (CountryName) VALUES ('Japan');
INSERT INTO tCountry (CountryName) VALUES ('Jarvis Island');
INSERT INTO tCountry (CountryName) VALUES ('Jersey');
INSERT INTO tCountry (CountryName) VALUES ('Johnston Atoll');
INSERT INTO tCountry (CountryName) VALUES ('Jordan');
INSERT INTO tCountry (CountryName) VALUES ('Juan de Nova Island');
INSERT INTO tCountry (CountryName) VALUES ('Kazakhstan');
INSERT INTO tCountry (CountryName) VALUES ('Kenya');
INSERT INTO tCountry (CountryName) VALUES ('Kingman Reef');
INSERT INTO tCountry (CountryName) VALUES ('Kiribati');
INSERT INTO tCountry (CountryName) VALUES ('Kerguelen Archipelago');
INSERT INTO tCountry (CountryName) VALUES ('Kuwait');
INSERT INTO tCountry (CountryName) VALUES ('Kyrgyzstan');
INSERT INTO tCountry (CountryName) VALUES ('Laos');
INSERT INTO tCountry (CountryName) VALUES ('Latvia');
INSERT INTO tCountry (CountryName) VALUES ('Lebanon');
INSERT INTO tCountry (CountryName) VALUES ('Lesotho');
INSERT INTO tCountry (CountryName) VALUES ('Liberia');
INSERT INTO tCountry (CountryName) VALUES ('Libya');
INSERT INTO tCountry (CountryName) VALUES ('Liechtenstein');
INSERT INTO tCountry (CountryName) VALUES ('Lithuania');
INSERT INTO tCountry (CountryName) VALUES ('Luxembourg');
INSERT INTO tCountry (CountryName) VALUES ('Macau');
INSERT INTO tCountry (CountryName) VALUES ('Macedonia');
INSERT INTO tCountry (CountryName) VALUES ('Madagascar');
INSERT INTO tCountry (CountryName) VALUES ('Malawi');
INSERT INTO tCountry (CountryName) VALUES ('Malaysia');
INSERT INTO tCountry (CountryName) VALUES ('Maldives');
INSERT INTO tCountry (CountryName) VALUES ('Mali');
INSERT INTO tCountry (CountryName) VALUES ('Malta');
INSERT INTO tCountry (CountryName) VALUES ('Marshall Islands');
INSERT INTO tCountry (CountryName) VALUES ('Martinique');
INSERT INTO tCountry (CountryName) VALUES ('Mauritania');
INSERT INTO tCountry (CountryName) VALUES ('Mauritius');
INSERT INTO tCountry (CountryName) VALUES ('Mayotte');
INSERT INTO tCountry (CountryName) VALUES ('Mexico');
INSERT INTO tCountry (CountryName) VALUES ('Micronesia');
INSERT INTO tCountry (CountryName) VALUES ('Midway Islands');
INSERT INTO tCountry (CountryName) VALUES ('Moldova');
INSERT INTO tCountry (CountryName) VALUES ('Monaco');
INSERT INTO tCountry (CountryName) VALUES ('Mongolia');
INSERT INTO tCountry (CountryName) VALUES ('Montenegro');
INSERT INTO tCountry (CountryName) VALUES ('Montserrat');
INSERT INTO tCountry (CountryName) VALUES ('Morocco');
INSERT INTO tCountry (CountryName) VALUES ('Mozambique');
INSERT INTO tCountry (CountryName) VALUES ('Myanmar');
INSERT INTO tCountry (CountryName) VALUES ('Namibia');
INSERT INTO tCountry (CountryName) VALUES ('Nauru');
INSERT INTO tCountry (CountryName) VALUES ('Navassa Island');
INSERT INTO tCountry (CountryName) VALUES ('Nepal');
INSERT INTO tCountry (CountryName) VALUES ('Netherlands');
INSERT INTO tCountry (CountryName) VALUES ('Netherlands Antilles');
INSERT INTO tCountry (CountryName) VALUES ('New Caledonia');
INSERT INTO tCountry (CountryName) VALUES ('New Zealand');
INSERT INTO tCountry (CountryName) VALUES ('Nicaragua');
INSERT INTO tCountry (CountryName) VALUES ('Niger');
INSERT INTO tCountry (CountryName) VALUES ('Nigeria');
INSERT INTO tCountry (CountryName) VALUES ('Niue');
INSERT INTO tCountry (CountryName) VALUES ('Norfolk Island');
INSERT INTO tCountry (CountryName) VALUES ('North Korea');
INSERT INTO tCountry (CountryName) VALUES ('Northern Mariana Islands');
INSERT INTO tCountry (CountryName) VALUES ('Norway');
INSERT INTO tCountry (CountryName) VALUES ('Oman');
INSERT INTO tCountry (CountryName) VALUES ('Pacific Ocean');
INSERT INTO tCountry (CountryName) VALUES ('Pakistan');
INSERT INTO tCountry (CountryName) VALUES ('Palau');
INSERT INTO tCountry (CountryName) VALUES ('Palmyra Atoll');
INSERT INTO tCountry (CountryName) VALUES ('Panama');
INSERT INTO tCountry (CountryName) VALUES ('Papua New Guinea');
INSERT INTO tCountry (CountryName) VALUES ('Paracel Islands');
INSERT INTO tCountry (CountryName) VALUES ('Paraguay');
INSERT INTO tCountry (CountryName) VALUES ('Peru');
INSERT INTO tCountry (CountryName) VALUES ('Philippines');
INSERT INTO tCountry (CountryName) VALUES ('Pitcairn Islands');
INSERT INTO tCountry (CountryName) VALUES ('Poland');
INSERT INTO tCountry (CountryName) VALUES ('Portugal');
INSERT INTO tCountry (CountryName) VALUES ('Puerto Rico');
INSERT INTO tCountry (CountryName) VALUES ('Qatar');
INSERT INTO tCountry (CountryName) VALUES ('Reunion');
INSERT INTO tCountry (CountryName) VALUES ('Republic of the Congo');
INSERT INTO tCountry (CountryName) VALUES ('Romania');
INSERT INTO tCountry (CountryName) VALUES ('Russia');
INSERT INTO tCountry (CountryName) VALUES ('Rwanda');
INSERT INTO tCountry (CountryName) VALUES ('Saint Helena');
INSERT INTO tCountry (CountryName) VALUES ('Saint Kitts and Nevis');
INSERT INTO tCountry (CountryName) VALUES ('Saint Lucia');
INSERT INTO tCountry (CountryName) VALUES ('Saint Pierre and Miquelon');
INSERT INTO tCountry (CountryName) VALUES ('Saint Vincent and the Grenadin');
INSERT INTO tCountry (CountryName) VALUES ('Samoa');
INSERT INTO tCountry (CountryName) VALUES ('San Marino');
INSERT INTO tCountry (CountryName) VALUES ('Sao Tome and Principe');
INSERT INTO tCountry (CountryName) VALUES ('Saudi Arabia');
INSERT INTO tCountry (CountryName) VALUES ('Senegal');
INSERT INTO tCountry (CountryName) VALUES ('Serbia');
INSERT INTO tCountry (CountryName) VALUES ('Seychelles');
INSERT INTO tCountry (CountryName) VALUES ('Sierra Leone');
INSERT INTO tCountry (CountryName) VALUES ('Singapore');
INSERT INTO tCountry (CountryName) VALUES ('Slovakia');
INSERT INTO tCountry (CountryName) VALUES ('Slovenia');
INSERT INTO tCountry (CountryName) VALUES ('Solomon Islands');
INSERT INTO tCountry (CountryName) VALUES ('Somalia');
INSERT INTO tCountry (CountryName) VALUES ('South Africa');
INSERT INTO tCountry (CountryName) VALUES ('South Georgia and the South Sandwich Islands');
INSERT INTO tCountry (CountryName) VALUES ('South Korea');
INSERT INTO tCountry (CountryName) VALUES ('Spain');
INSERT INTO tCountry (CountryName) VALUES ('Spratly Islands');
INSERT INTO tCountry (CountryName) VALUES ('Sri Lanka');
INSERT INTO tCountry (CountryName) VALUES ('Sudan');
INSERT INTO tCountry (CountryName) VALUES ('Suriname');
INSERT INTO tCountry (CountryName) VALUES ('Svalbard');
INSERT INTO tCountry (CountryName) VALUES ('Swaziland');
INSERT INTO tCountry (CountryName) VALUES ('Sweden');
INSERT INTO tCountry (CountryName) VALUES ('Switzerland');
INSERT INTO tCountry (CountryName) VALUES ('Syria');
INSERT INTO tCountry (CountryName) VALUES ('Taiwan');
INSERT INTO tCountry (CountryName) VALUES ('Tajikistan');
INSERT INTO tCountry (CountryName) VALUES ('Tanzania');
INSERT INTO tCountry (CountryName) VALUES ('Thailand');
INSERT INTO tCountry (CountryName) VALUES ('Togo');
INSERT INTO tCountry (CountryName) VALUES ('Tokelau');
INSERT INTO tCountry (CountryName) VALUES ('Tonga');
INSERT INTO tCountry (CountryName) VALUES ('Trinidad and Tobago');
INSERT INTO tCountry (CountryName) VALUES ('Tromelin Island');
INSERT INTO tCountry (CountryName) VALUES ('Tunisia');
INSERT INTO tCountry (CountryName) VALUES ('Turkey');
INSERT INTO tCountry (CountryName) VALUES ('Turkmenistan');
INSERT INTO tCountry (CountryName) VALUES ('Turks and Caicos Islands');
INSERT INTO tCountry (CountryName) VALUES ('Tuvalu');
INSERT INTO tCountry (CountryName) VALUES ('Uganda');
INSERT INTO tCountry (CountryName) VALUES ('Ukraine');
INSERT INTO tCountry (CountryName) VALUES ('United Arab Emirates');
INSERT INTO tCountry (CountryName) VALUES ('United Kingdom');
INSERT INTO tCountry (CountryName) VALUES ('USA');
INSERT INTO tCountry (CountryName) VALUES ('Uruguay');
INSERT INTO tCountry (CountryName) VALUES ('Uzbekistan');
INSERT INTO tCountry (CountryName) VALUES ('Vanuatu');
INSERT INTO tCountry (CountryName) VALUES ('Venezuela');
INSERT INTO tCountry (CountryName) VALUES ('Vietnam');
INSERT INTO tCountry (CountryName) VALUES ('Virgin Islands');
INSERT INTO tCountry (CountryName) VALUES ('Wake Island');
INSERT INTO tCountry (CountryName) VALUES ('Wallis and Futuna');
INSERT INTO tCountry (CountryName) VALUES ('West Bank');
INSERT INTO tCountry (CountryName) VALUES ('Western Sahara');
INSERT INTO tCountry (CountryName) VALUES ('Yemen');
INSERT INTO tCountry (CountryName) VALUES ('Yugoslavia');
INSERT INTO tCountry (CountryName) VALUES ('Zambia');
INSERT INTO tCountry (CountryName) VALUES ('Zimbabwe');
Category: Anything Else
Posted by: merc

Years ago when I first saw this JERKER at the local IKEA store I've fall in love with it. But with the price high on my budget, I only get to visit it when I visits IKEA, sit with it for a while, and imagine that its mine~

And today, I find it shocking that IKEA has discontinue this great product, and lucky for me, I manage to get the last unit (a display unit) that is fairly new enough, plus some discount on its original price.

IKEA policy, which you have to disassemble the "AS-IT" unit yourself and bring it home yourself, not that I complain too much, but when I reach home with my JERKER, I could not remember which part to go with which. Panic and turn to my best friend Google and lucky enough for me, I've found a PDF copy of the manual : ) and here me with my JERKER~

In case you're looking for the manual yourself, download it here.

And I think I'm weired, but wait until you've read BEHOLD! THE SHRINE TO THE IKEA JERKER DESK!

17 Apr 2008: Goodbye Coffeebean~

Category: Food
Posted by: merc
Coffeebean Logo I've been a regular customer of The Coffee Bean & Tea Leaf, the cozy wood like fixture of the coffee house and the aroma of its coffee just give the relaxation that I need. That is until yesterday, they no longer accept credit card transaction bellow a minimal amount of purchase. WTF. So really, goodbye Coffeebean, I'm walking a few blocks further, so I'll reach The Starbuck Coffee from now on.
Category: Anything Else
Posted by: merc



Many years ago when I was in my first job, my manager come up to me and instruct me to make duplicates copy of my work in CDs and he would bring back a copy back to his home, I was thinking that he must have love my work so much that he wanted a copy in his home so he could hang up the CDs on walls and show to his guest that how lucky he was to have such a valuable employee like me ^_^

Many years later when I was visiting our company data center, a shot of thick smoke racing to the sky caught my eyes, and I was thinking some @#$% is doing open burning! That's illegal!

Not before long I realize that the smoke was coming out from a data center cluster just next to our company's data center, it's ON FIRE! The fire was clearly visible from the doors and windows, and people are running out from the burning building. The fire engine response in about 10-15 minutes later, and some 15 more minutes after that the fire was brought down.

Me mingling with the data center technician that gather outside the burning building and over heard one talking to another:
A: "I just did a backup this morning..."
B: "Thank God, at lease we have our data in a safe place..."
A: "Uh... the backup server is right next to the one I'm backing up..."
B: "....."

Well, I guess they don't have a boss that appreciate their work like I had~ ; )

And for those of you who are having hard time to convince your manager to invest on off-site backup, maybe this is a good time to to send him this link ; )

«Prev || 1 | 2 | 3 | 4 | 5 | 6 || Next»