Category: Computing
Posted by: merc
Installing Aptana in Ubuntu 64bit is no fun, every other distribution has its standalone package, but not on Ubuntu 64bit : (

After installed Aptana onto my Eclipse as a plugins, launching Eclipse (now with Aptana) splat me on the face with "Aptana requires Sun JRE 1.5 or greater to work properly."

But I've already had JRE 1.6! Some forumers says I need to update my JAVA_HOME and the symbolic link that points to the "real" JRE 1.6:
ubuntu:~$ sudo update-alternatives --config java
ubuntu:~$ echo "export JAVA_HOME=/usr/lib/jvm/java-6-sun/jre" >> ~/.bashrc

Now there is a problem, the error is gone, only if I launch Eclipse from terminal, if I launched it from the "Main Menu", the error about JRE comes back.

Until much later I found out that Eclipse support a flag -vm to specifically allow one to point to the VM they wish to use, I've added the line "/usr/bin/eclipse -vm /usr/lib/jvm/java-6-sun/jre/bin/java" as the command to execute.

So, I dont get it, why is $JAVA_HOME not set if eclipse is launch from the "Main Menu"?

02 Oct 2008: My New Phone :)

Category: Anything Else
Posted by: merc
SonyErricson P1i The I.T called me up today and asked me to pickup my new phone from them, its a SonyErricson P1i ! ^_^

I waited I got home, and un-box the package with my washed hand ;)

Swap in my SIM card, and plugged in its battery, viola, IT's ALIVE~

After fiddling with it for a while, I realize that it could not connect to my home wifi, which seems odd, my colleague's N95 connected to it without any fuss...

Another problem that I found, is that I can't get my Motorola H700 bluetooth head set to pair with my new phone.

A quick browse for solution on the www, found that plenty of people has the exact same problem as I, it is not until I found the following articles that solve both my problem:

1. Unable to connect wifi:
In most cases P1i connects to the network but the applications cannot access the web.

I had the same problem but the solution i found was to reduse the threshoud to 2346.

For this go to internet accounts /more/advanced and change RTS threshold to 2346 and powersave to OFF

now ur browser should be able to access the web.

2. Unable to pair Motorola H700
1. With the mic closed, press the call button and hold it for a few seconds.

2. When the purple (or lavender) light comes on, open immediately the mic while the light is on. After you do this, the light will flash two times and then will remain steadily lit (If the light die off after the boom was flip out, then maybe the connection of the boom is loose, so after you flip it out, FORCE it out a little further, that should make sure this steps work).

3. Your headset will be now in pairing mode.


I must say that another thing that I'm actually shock is that it does not come with a "joy-stick" like my old K700i, although I'm expected that its a "PDA" phone after all.

Now that I'm happy, the keys are still something I need to get used to, qw-er-ty keyboard on a phone... hm....

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!
«Prev || 1 | 2 | 3 | 4 | 5 | 6 | 7 || Next»