<?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-38570912</id><updated>2011-09-06T17:59:19.201+08:00</updated><category term='iPhone SwirlyMMS UCWeb'/><category term='mutton'/><category term='challenges'/><category term='JBoss'/><category term='EMMA'/><category term='USB Disk Virus Immunity'/><category term='Travel'/><category term='Office'/><category term='Beijing'/><category term='Virus'/><category term='Wildelife'/><category term='Code Coverage Test'/><category term='meeting'/><category term='autorun'/><category term='Wangfujing'/><category term='software engineer'/><category term='J2EE'/><category term='Subway'/><category term='iPhone IMGSaver'/><category term='train'/><category term='flavor'/><category term='USB Disk'/><title type='text'>Qin An</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://anqin007.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://anqin007.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Qin An</name><uri>http://www.blogger.com/profile/15466598646160501560</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oHwfDQZuD6Y/SaqeHE3Il3I/AAAAAAAAAAU/m3VIBCoYdBg/s1600-R/180'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>21</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-38570912.post-1282449964258775927</id><published>2009-03-01T22:39:00.002+08:00</published><updated>2009-03-01T22:55:41.074+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone IMGSaver'/><title type='text'>How IMGSaver Works on iPhone</title><content type='html'>&lt;p&gt;&lt;br /&gt;IMGSaver uses a piece of JavaScript to inject the following code into the current document.&lt;br /&gt;&lt;br /&gt;(Sorry, I can't put the code into this blogger!! Blogger.com is a terrible blog!)&lt;br /&gt;&lt;br /&gt;It shows up all images in the current web page (document). Then, user should click one of them. By this way this image pops up on the top of the history. User has to close Safari, so that the current history in memory is persisted into &lt;span style="font-family:courier new;"&gt;/var/mobile/Library/Safari/History.plist&lt;/span&gt;. Next time when IMGSaver is opened, the first item in the list is what the user just clicked. IMGSaver downloads once again by the URL, and saves it into local directory.&lt;br /&gt;&lt;br /&gt;The keypoint is to inject the JavaScript into current document. IMGSave preinstalled a number of bookmark items, and one of them, "Display All Images", contains this java script code. &lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38570912-1282449964258775927?l=anqin007.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anqin007.blogspot.com/feeds/1282449964258775927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38570912&amp;postID=1282449964258775927' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/1282449964258775927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/1282449964258775927'/><link rel='alternate' type='text/html' href='http://anqin007.blogspot.com/2009/03/how-imgsaver-works-on-iphone.html' title='How IMGSaver Works on iPhone'/><author><name>Qin An</name><uri>http://www.blogger.com/profile/15466598646160501560</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oHwfDQZuD6Y/SaqeHE3Il3I/AAAAAAAAAAU/m3VIBCoYdBg/s1600-R/180'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38570912.post-7349667722615580465</id><published>2009-02-14T12:08:00.000+08:00</published><updated>2009-02-14T12:10:56.834+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone SwirlyMMS UCWeb'/><title type='text'>iPhone SwirlyMMS Conflicts with Other Software</title><content type='html'>After I installed &lt;em&gt;UCWeb&lt;/em&gt;, I found that the &lt;em&gt;SwirlyMMS&lt;/em&gt; can't work. I need it, but I can't reinstall it. Last time when I updated the SwirlyMMS, it made my iPhone couldn't start. I had to reinstall the whole system, and lost all my contacts and data.&lt;br /&gt;&lt;br /&gt;This time, I had to be very careful. I found that one more dynamic library was inserted into /System/Library/LaunchDaemons/com.apple.CommCenter.plist. I carefully removed it and let /Applications/SwirlyMMS.app/smshook.dylib be the only library. Then restarted iPhone, and the SwirlyMMS worked as usual. Also UCWeb works as well. I am not sure whether it can fully function. At least, it works as I expected.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38570912-7349667722615580465?l=anqin007.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anqin007.blogspot.com/feeds/7349667722615580465/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38570912&amp;postID=7349667722615580465' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/7349667722615580465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/7349667722615580465'/><link rel='alternate' type='text/html' href='http://anqin007.blogspot.com/2009/02/iphone-swirlymms-conflicts-with-other.html' title='iPhone SwirlyMMS Conflicts with Other Software'/><author><name>Qin An</name><uri>http://www.blogger.com/profile/15466598646160501560</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oHwfDQZuD6Y/SaqeHE3Il3I/AAAAAAAAAAU/m3VIBCoYdBg/s1600-R/180'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38570912.post-8830617218050608218</id><published>2007-06-23T22:07:00.000+08:00</published><updated>2007-06-27T08:58:04.622+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='USB Disk Virus Immunity'/><title type='text'>A Simple Immune Method to USB-Disk Viruses</title><content type='html'>&lt;p&gt;&lt;em&gt;This is the outline of a little presentation.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Introduction to the USB-Disk Viruses&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Understand the USB-Disk viruses&lt;br /&gt;&lt;p&gt;USB-Disk viruses are a kind of viruses attached to USB removable disk like that of floppy disk very popular in 1990s. The virus from an infected computer is reproduced itself into the USB disk. When you plug this disk into a clean computer, the virus gets a chance to reside in the system, waiting for a new victim, while you are in complete ignorance of all this happened.&lt;br /&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;How they propagate&lt;br /&gt;&lt;p&gt;By default, Windows system enables an Auto Play function. When you plug in a USB disk or CD, Windows loads and executes a file named AutoRun.ini, which is the list of predefined tasks. The virus reproduces itself into the disk and modifies this file, so that when the file is executed, the virus is able to reside into the system.&lt;br /&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;How they damage your computer system&lt;br /&gt;&lt;p&gt;Nowadays the virus is not that simple as just propagating itself, whose only consequence is to lower the performance of the system. Today, almost every virus has its own mission embedded with spy wares and backdoors, which makes you in dangerous, for example, stealing your data files, ID information, and password of your bank account. Your computer probably becomes a zombie, from which hackers attack other victims.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;An Immune Method to the USB-Disk Viruses&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Open a command prompt by click &lt;strong&gt;Start&lt;/strong&gt; -&gt; &lt;strong&gt;Run&lt;/strong&gt;. Input &lt;span style="color:#0000ff;"&gt;&lt;tt&gt;cmd&lt;/tt&gt;&lt;/span&gt; and hit the return key.&lt;/li&gt;&lt;li&gt;In the command prompt, create a directory in the root directory of the USB drive with command:&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;&lt;/span&gt;&lt;span style="font-family:courier new;color:#3333ff;"&gt;mkdir AutoRun.ini&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Move into this new directory with command:&lt;br /&gt;&lt;span style="font-family:courier new;color:#3333ff;"&gt;cd AutoRun.ini&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Create a new directory with command:&lt;br /&gt;&lt;span style="font-family:courier new;color:#3333ff;"&gt;mkdir a...//&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Exit the command prompt window with command:&lt;br /&gt;&lt;span style="font-family:courier new;color:#3333ff;"&gt;exit&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Remove the USB-Disk from the computer&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;A simple method without extensive computer knowledge&lt;/li&gt;&lt;li&gt;Immunity to the current known USB-Disk viruses and unknown ones in the future&lt;/li&gt;&lt;li&gt;Applicable to other removable storage devices such as digital cameras and MP3 players&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38570912-8830617218050608218?l=anqin007.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anqin007.blogspot.com/feeds/8830617218050608218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38570912&amp;postID=8830617218050608218' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/8830617218050608218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/8830617218050608218'/><link rel='alternate' type='text/html' href='http://anqin007.blogspot.com/2007/06/simple-immune-method-to-usb-disk.html' title='A Simple Immune Method to USB-Disk Viruses'/><author><name>Qin An</name><uri>http://www.blogger.com/profile/15466598646160501560</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oHwfDQZuD6Y/SaqeHE3Il3I/AAAAAAAAAAU/m3VIBCoYdBg/s1600-R/180'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38570912.post-1625624915863805584</id><published>2007-04-17T23:04:00.001+08:00</published><updated>2007-04-17T23:04:41.716+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Wildelife'/><title type='text'>Sample: Wildlife</title><content type='html'>In the big woods, another spring will bring new leaves to the towering Nuttall oaks and sweet gums and centuries-old bald cypresses. Black bears will emerge from their dens in massive hollow sycamores, and bald eagle chicks will beg for food from their parents. Swallow-tailed kites and Swainson’s warblers will build nests, cottonmouths will uncoil and set off in search of unwary bullfrogs, and wood ducks will lead their young across bayous that are home to alligator gar as long as kayaks.&lt;br /&gt;&lt;br /&gt;-Mel White, The Ghost Bird, &lt;em&gt;National Geographic&lt;/em&gt;, Dec. 2005.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38570912-1625624915863805584?l=anqin007.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anqin007.blogspot.com/feeds/1625624915863805584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38570912&amp;postID=1625624915863805584' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/1625624915863805584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/1625624915863805584'/><link rel='alternate' type='text/html' href='http://anqin007.blogspot.com/2007/04/sample-wildlife.html' title='Sample: Wildlife'/><author><name>Qin An</name><uri>http://www.blogger.com/profile/15466598646160501560</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oHwfDQZuD6Y/SaqeHE3Il3I/AAAAAAAAAAU/m3VIBCoYdBg/s1600-R/180'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38570912.post-199537230610176837</id><published>2007-04-09T01:08:00.000+08:00</published><updated>2007-04-09T02:33:49.642+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mutton'/><category scheme='http://www.blogger.com/atom/ns#' term='flavor'/><category scheme='http://www.blogger.com/atom/ns#' term='Beijing'/><title type='text'>Shuan Yang Rou</title><content type='html'>In Beijing, an international city in China, you can find many kinds of cuisines around the world, while, &lt;em&gt;Shuan Yang Rou&lt;/em&gt;, instant-boiled mutton slices, is one of the finger-countable local flavors. After I first tried it when I came to Beijing ten years ago, it becomes one of my regular dining-outs. Outsiders often mix it up with hot pot, a flavor originated from Chongqing, a municipality in the southwest of China, whose pot contains thick soup, hot and spicy, while the pot of Shuan Yang Rou contains only clear water, and every taste is in a dish of special sesame jam, which is usually the top secret of a restaurant, since it can lure fussy goers far away. You fetch a piece of mutton, usually transported from the grassland of Inner Mongolia, with chopsticks, and put it into the boiling water for a little while, then, get it out and put it into the dish of sesame jam, and it is ready to serve. The action, &lt;em&gt;Shuan&lt;/em&gt; in the clear water, is quite easy to learn, and people put a different meaning to this little verb, &lt;em&gt;cheated&lt;/em&gt; or &lt;em&gt;befooled&lt;/em&gt;, i.e., you are asked to do something but finally you get nothing reward at all.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38570912-199537230610176837?l=anqin007.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anqin007.blogspot.com/feeds/199537230610176837/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38570912&amp;postID=199537230610176837' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/199537230610176837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/199537230610176837'/><link rel='alternate' type='text/html' href='http://anqin007.blogspot.com/2007/04/shuan-yang-rou.html' title='Shuan Yang Rou'/><author><name>Qin An</name><uri>http://www.blogger.com/profile/15466598646160501560</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oHwfDQZuD6Y/SaqeHE3Il3I/AAAAAAAAAAU/m3VIBCoYdBg/s1600-R/180'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38570912.post-6332903409861610859</id><published>2007-04-09T01:04:00.000+08:00</published><updated>2007-04-09T01:05:36.053+08:00</updated><title type='text'>Sample: Introducing People</title><content type='html'>Borge, 43, lankily erect, fair-featured, and self-possessed, with long, ropy arms and cinnamon hair, was known, among other things, for his obsessive preparedness; he was a study in Nordi cool. Mike, 39, a dark-featured, dimpled South African-born Swiss, tightly muscled and with gigantic thighs, had a zesty kinetic spirit that gave the impression of a bull in a china shop; he thought of himself as a hot Latin and was more inclined to wing it. You could see the stamina shining out of his eyes. Thomas, 39, a compact and talkative Swiss, quick to laugh, with twinkly blue eyes and an underlying edge, was fastidious about safety and had a professional alpine guide’s love of detail. At one point, he was a prospective third partner on Mike and Borge’s trek to the Pole in the dark, but, for reasons which will be explained later, they went their separate ways.&lt;br /&gt;&lt;br /&gt;Marguerite Del Giudice, Arctic Dreams &amp; Nightmares, &lt;em&gt;National Geographic&lt;/em&gt;, Jan., 2007.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38570912-6332903409861610859?l=anqin007.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anqin007.blogspot.com/feeds/6332903409861610859/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38570912&amp;postID=6332903409861610859' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/6332903409861610859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/6332903409861610859'/><link rel='alternate' type='text/html' href='http://anqin007.blogspot.com/2007/04/sample-introducing-people.html' title='Sample: Introducing People'/><author><name>Qin An</name><uri>http://www.blogger.com/profile/15466598646160501560</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oHwfDQZuD6Y/SaqeHE3Il3I/AAAAAAAAAAU/m3VIBCoYdBg/s1600-R/180'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38570912.post-2400794620193535315</id><published>2007-04-03T12:59:00.000+08:00</published><updated>2007-04-03T13:00:21.623+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Subway'/><category scheme='http://www.blogger.com/atom/ns#' term='Wangfujing'/><category scheme='http://www.blogger.com/atom/ns#' term='Beijing'/><category scheme='http://www.blogger.com/atom/ns#' term='Office'/><title type='text'>From Home to Office</title><content type='html'>The office of Qilinsoft is located at Wangfujing, the downtown of Beijing. Everyday I take subway Line 13 from Huilongguan station, a large community in the north of Beijing, to the eastern terminal Dongzhimen station, located at the northeast corner of the Second Ring road. There, I change to subway Line 2 to south, and arrive at Jianguomen station, an interchange station. Without exiting the station, I change to subway Line 1, and arrive at Wangfujing station. Follow the sign of the exit to the Oriental Plaza. The office is on the 16th floor, Block E1.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38570912-2400794620193535315?l=anqin007.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anqin007.blogspot.com/feeds/2400794620193535315/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38570912&amp;postID=2400794620193535315' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/2400794620193535315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/2400794620193535315'/><link rel='alternate' type='text/html' href='http://anqin007.blogspot.com/2007/04/from-home-to-office.html' title='From Home to Office'/><author><name>Qin An</name><uri>http://www.blogger.com/profile/15466598646160501560</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oHwfDQZuD6Y/SaqeHE3Il3I/AAAAAAAAAAU/m3VIBCoYdBg/s1600-R/180'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38570912.post-190433447823910164</id><published>2007-03-23T22:54:00.001+08:00</published><updated>2007-04-03T13:03:23.824+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='train'/><category scheme='http://www.blogger.com/atom/ns#' term='Travel'/><title type='text'>Travel by Train</title><content type='html'>If I could get a train ticket, I would like to travel by train instead of by air. In China, more likely trains can arrive on time. There is a larger space for you to walk around in a train carriage than that of in a plane cabin. I am happy to enjoy flowing into beautiful scenery along with steel rails, whereas you may find it boring with unchanged sunshine and clouds. There are a lot of interesting people, with whom I can share various experiences, and it makes the journey even shorter than flying in the air.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38570912-190433447823910164?l=anqin007.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anqin007.blogspot.com/feeds/190433447823910164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38570912&amp;postID=190433447823910164' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/190433447823910164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/190433447823910164'/><link rel='alternate' type='text/html' href='http://anqin007.blogspot.com/2007/03/travel-by-train.html' title='Travel by Train'/><author><name>Qin An</name><uri>http://www.blogger.com/profile/15466598646160501560</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oHwfDQZuD6Y/SaqeHE3Il3I/AAAAAAAAAAU/m3VIBCoYdBg/s1600-R/180'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38570912.post-292659519764917326</id><published>2007-03-20T22:18:00.000+08:00</published><updated>2007-03-20T22:21:09.493+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='meeting'/><title type='text'>Homework: 5-Sentence Paragraph as How You Will Open a Meeting</title><content type='html'>Good afternoon, everybody! In today’s meeting, we will discuss the policy of our internal CVS system. The list of topics has been sent out this morning and hope that everybody can contribute to this meeting. I would like to thank colleagues from our IT department for their coming since they will help us in system installation and administration. We hope that we can work out a document on the policy in this 1-hour meeting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38570912-292659519764917326?l=anqin007.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anqin007.blogspot.com/feeds/292659519764917326/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38570912&amp;postID=292659519764917326' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/292659519764917326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/292659519764917326'/><link rel='alternate' type='text/html' href='http://anqin007.blogspot.com/2007/03/homework-5-sentence-paragraph-as-how.html' title='Homework: 5-Sentence Paragraph as How You Will Open a Meeting'/><author><name>Qin An</name><uri>http://www.blogger.com/profile/15466598646160501560</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oHwfDQZuD6Y/SaqeHE3Il3I/AAAAAAAAAAU/m3VIBCoYdBg/s1600-R/180'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38570912.post-2070584291155311310</id><published>2007-03-13T11:25:00.000+08:00</published><updated>2007-03-13T11:28:04.147+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software engineer'/><category scheme='http://www.blogger.com/atom/ns#' term='challenges'/><title type='text'>Perks and Drags of Our Current Job</title><content type='html'>We are having an English training program recently. The first home work is to write 5 sentences on the perks and drags of our current job, dream job and future career path. Here is mine.&lt;br /&gt;&lt;br /&gt;As a TechLead of the runtime components of the Galileo Project, I always have to catch up with various new technologies in the industry matured in an even shorter period of time. It makes me sometimes frustrated while we are hammering our product in office, there is a new technology mushroomed out in the world elsewhere. Further, we have to be more careful and patient to every single step in the lifecycle of software development, from coding to QA. A recent famous accident of the F-22 Raptor Fighter of the US AF provides a worldwide example, whose Global Positioning Inertial Navigation Systems crushed when it flew across the International Date Line in its maiden deployment. These must be the eternal challenges a software engineer has to face in the technology career.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38570912-2070584291155311310?l=anqin007.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anqin007.blogspot.com/feeds/2070584291155311310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38570912&amp;postID=2070584291155311310' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/2070584291155311310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/2070584291155311310'/><link rel='alternate' type='text/html' href='http://anqin007.blogspot.com/2007/03/perks-and-drags-of-our-current-job.html' title='Perks and Drags of Our Current Job'/><author><name>Qin An</name><uri>http://www.blogger.com/profile/15466598646160501560</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oHwfDQZuD6Y/SaqeHE3Il3I/AAAAAAAAAAU/m3VIBCoYdBg/s1600-R/180'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38570912.post-6692709090392234447</id><published>2007-02-17T10:47:00.000+08:00</published><updated>2007-02-17T10:56:29.677+08:00</updated><title type='text'>Start Local XWindow on Microsoft Windows Platform</title><content type='html'>&lt;p&gt;In a UNIX network, it is quite natural to connect to an XWindows server from local machine. If your daily work is on a Windows machine, and occasionally do something requiring an XWindows, there are two ways provided by &lt;em&gt;cygwin&lt;/em&gt; package, which is a simulator of UNIX environment on a Microsoft Windows platform.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;You can start an X server on UNIX side, and use an X client on Windows side. The terminal is a true XWindows, as if you were working locally on the remote UNIX machine. This approach consume more resource on the server side, and sometims it is infeasible in case there are multiple users doing same thing in an organization.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Another way is to start up an X server on local Windows side. Cygwin provides an simulated UNIX environment. Then telnet to remote UNIX machine and direct the X connection back to the local one. Here are the detailed steps.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;You should install cygwin + X11R6 package.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;On your host 10.10.1.123, run&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;"&gt;/usr/X11R6/bin/startxwin.bat&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;to start local XWindows.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;In the shell, add remote host:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;"&gt;xhost 10.10.1.35&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Then telnet to 10.10.1.35, assuming you are in &lt;span style="font-family:courier new;"&gt;csh&lt;/span&gt;, and set &lt;span style="font-family:courier new;"&gt;DISPLAY&lt;/span&gt; environment variable:&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;setenv DISPLAY 10.10.1.123:0.0&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Then you can start any XWindows application. Do a test:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;"&gt;xterm &amp;amp;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;You will see a UNIX shell window on your Windows desktop. An interesting feature of this approach is that, unlike the first method you get a window for everything on UNIX side, with the second method, each XWindow is dependent. They can be operated in same way as a Windows' window.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38570912-6692709090392234447?l=anqin007.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anqin007.blogspot.com/feeds/6692709090392234447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38570912&amp;postID=6692709090392234447' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/6692709090392234447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/6692709090392234447'/><link rel='alternate' type='text/html' href='http://anqin007.blogspot.com/2007/02/start-local-xwindow.html' title='Start Local XWindow on Microsoft Windows Platform'/><author><name>Qin An</name><uri>http://www.blogger.com/profile/15466598646160501560</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oHwfDQZuD6Y/SaqeHE3Il3I/AAAAAAAAAAU/m3VIBCoYdBg/s1600-R/180'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38570912.post-8858315964144443272</id><published>2007-02-17T10:44:00.000+08:00</published><updated>2007-02-17T10:47:17.029+08:00</updated><title type='text'>Kill Process by Name on UNIX</title><content type='html'>Here is a ksh script to kill processes by name.&lt;br /&gt;Usage: kill processName&lt;br /&gt;&lt;br /&gt;---------------- cut here ---------------------&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;#!/usr/bin/ksh&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;str="$1"&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;ps -ef  grep "$str"  {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;while read aline;do&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;        cmd=`echo $aline  awk '{ print $9 }'`&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;        if [ [ $cmd = $0 ] ]; then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;                continue&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;        fi&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;        cmd=`echo $aline  awk '{ print $8 " " $9 " " $10 }'`&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;        if [ [ $cmd = "grep" ] ]; then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;                continue&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;        fi&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;        cmd2=`echo $cmd  grep "$str"`&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;        if [ [ $cmd2 = "" ] ]; then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;                continue&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;        fi&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;        print "$aline"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;        pid=`echo $aline  awk '{ print $2 }'`&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;        print "kill pid = $pid"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;        kill -9 $pid&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;        done&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;---------------- cut here -----------------------&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38570912-8858315964144443272?l=anqin007.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anqin007.blogspot.com/feeds/8858315964144443272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38570912&amp;postID=8858315964144443272' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/8858315964144443272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/8858315964144443272'/><link rel='alternate' type='text/html' href='http://anqin007.blogspot.com/2007/02/kill-process-by-name-on-unix.html' title='Kill Process by Name on UNIX'/><author><name>Qin An</name><uri>http://www.blogger.com/profile/15466598646160501560</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oHwfDQZuD6Y/SaqeHE3Il3I/AAAAAAAAAAU/m3VIBCoYdBg/s1600-R/180'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38570912.post-560853805588404054</id><published>2007-02-14T16:53:00.000+08:00</published><updated>2007-02-14T17:04:29.453+08:00</updated><title type='text'>Default Transaction Attribute of an EJB is different among WebLogic/WebSphere/JBoss</title><content type='html'>Here is another difference between WebLogic and WebSphere/JBoss. For WebLogic, the default transaction attribute of an EJB is &lt;span style="font-family:courier new;"&gt;TX_NOT_SUPPORTED&lt;/span&gt; if it is not explicitly defined in &lt;span style="font-family:courier new;"&gt;ejb-jar.xml&lt;/span&gt;. There is no transaction context in the call to the EJB. However, JBoss and WebSphere, the default behavior is different, and there is a new transaction.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38570912-560853805588404054?l=anqin007.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anqin007.blogspot.com/feeds/560853805588404054/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38570912&amp;postID=560853805588404054' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/560853805588404054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/560853805588404054'/><link rel='alternate' type='text/html' href='http://anqin007.blogspot.com/2007/02/default-transaction-attribute-of-ejb-is.html' title='Default Transaction Attribute of an EJB is different among WebLogic/WebSphere/JBoss'/><author><name>Qin An</name><uri>http://www.blogger.com/profile/15466598646160501560</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oHwfDQZuD6Y/SaqeHE3Il3I/AAAAAAAAAAU/m3VIBCoYdBg/s1600-R/180'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38570912.post-3548882384224857229</id><published>2007-02-14T15:36:00.000+08:00</published><updated>2007-02-14T16:28:47.163+08:00</updated><title type='text'>WebLogic Only Supports String Type in ActivationSpec</title><content type='html'>Unlike WebSphere and JBoss, WebLogic only supports &lt;span style="font-family:courier new;"&gt;java.lang.String&lt;/span&gt; type properties in &lt;span style="font-family:courier new;"&gt;ActivationSpec&lt;/span&gt;. WebLogic claims it always strictly follows J2EE specification. Developer can specify properties with wrapped primitive types on &lt;em&gt;Resource Adaptor&lt;/em&gt; level in &lt;span style="font-family:courier new;"&gt;ra.xml&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;br /&gt;&amp;lt;resourceadapter&amp;gt;&lt;br /&gt;    &amp;lt;resourceadapter-class&amp;gt;&lt;br /&gt;        mypackage.ResourceAdapterImpl&lt;br /&gt;    &amp;lt;/resourceadapter-class&amp;gt;&lt;br /&gt;    &amp;lt;config-property&amp;gt;&lt;br /&gt;        &amp;lt;config-property-name&amp;gt;convertRate&amp;lt;/config-property-name&amp;gt;&lt;br /&gt;        &amp;lt;config-property-type&amp;gt;java.lang.Integer&amp;lt;/config-property-type&amp;gt;&lt;br /&gt;    &amp;lt;config-property-value&amp;gt;123&amp;lt;/config-property-value&amp;gt;&lt;br /&gt;    &amp;lt;/config-property&amp;gt;&lt;br /&gt;    ……&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Maybe it is true that this is the right way, but it is obviously inconvenient to specify only &lt;span style="font-family:courier new;"&gt;String&lt;/span&gt; type in &lt;span style="font-family:courier new;"&gt;ActivationSpec&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38570912-3548882384224857229?l=anqin007.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anqin007.blogspot.com/feeds/3548882384224857229/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38570912&amp;postID=3548882384224857229' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/3548882384224857229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/3548882384224857229'/><link rel='alternate' type='text/html' href='http://anqin007.blogspot.com/2007/02/weblogic-only-supports-string-type-in.html' title='WebLogic Only Supports String Type in ActivationSpec'/><author><name>Qin An</name><uri>http://www.blogger.com/profile/15466598646160501560</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oHwfDQZuD6Y/SaqeHE3Il3I/AAAAAAAAAAU/m3VIBCoYdBg/s1600-R/180'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38570912.post-2680482842635291533</id><published>2007-02-03T00:46:00.000+08:00</published><updated>2007-02-06T08:54:25.667+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code Coverage Test'/><category scheme='http://www.blogger.com/atom/ns#' term='J2EE'/><category scheme='http://www.blogger.com/atom/ns#' term='JBoss'/><category scheme='http://www.blogger.com/atom/ns#' term='EMMA'/><title type='text'>Code Coverage Test with EMMA Utility</title><content type='html'>Unit test is an essential stage in a software development lifecycle. After the code of features is completed, developer is required to design a number of test cases to guarantee the software performs desired functions.&lt;br /&gt;&lt;br /&gt;There is no simple objective criteria how many test cases enough to assure the quality of a software. Being lack of deep knowledge of implementation, project managers reluctantly accept the test plan from developers. The question can not be answered by developer either. Since it is infeasible to exhaust every possible test scenario, the developer is eager to know the minimum number of cases that can touch the most part of the code.&lt;br /&gt;&lt;br /&gt;The code coverage test is probably a feasible objective measure. A little open-source utility, &lt;a href="http://emma.sourceforge.net/"&gt;&lt;em&gt;EMMA&lt;/em&gt;&lt;/a&gt;, can generate a precise picture how much percentage the code is covered after the execution of a test suite. The data is broken down to packages, classes, and even methods. It helps the developer design new cases to increase the percentage rather than to repeat similar cases.&lt;br /&gt;&lt;br /&gt;EMMA provides a lot of features, and I am very impressed with two of them: It reports rich coverage analysis without introducing significant overhead during either build or execution time. It is simple, lightweight, and easy to probe classes running in a J2EE container. Here is an example where the test suite is designed for &lt;span style="font-family:courier new;"&gt;foo.jar&lt;/span&gt; used by a &lt;em&gt;JBoss&lt;/em&gt; application server.&lt;br /&gt;&lt;br /&gt;First copy &lt;span style="font-family:courier new;"&gt;emma.jar&lt;/span&gt; into the &lt;span style="font-family:courier new;"&gt;lib&lt;/span&gt; directory of the application server.&lt;br /&gt;&lt;br /&gt;Create an instrumented version of &lt;span style="font-family:courier new;"&gt;foo.jar&lt;/span&gt;. Put &lt;span style="font-family:courier new;"&gt;emma.jar&lt;/span&gt; into environment variable &lt;span style="font-family:courier new;"&gt;CLASSPATH&lt;/span&gt;. Create a directory &lt;span style="font-family:courier new;"&gt;output&lt;/span&gt; for the instrumented classes. Execute command &lt;span style="font-family:courier new;"&gt;java emma instr -d output -ip foo.jar&lt;/span&gt;. There is a file &lt;span style="font-family:courier new;"&gt;coverage.em&lt;/span&gt; created under the current working directory. Then package the instrumented classes under directory &lt;span style="font-family:courier new;"&gt;output&lt;/span&gt; into a new version of &lt;span style="font-family:courier new;"&gt;foo.jar&lt;/span&gt;, and replace the JAR file in the application server.&lt;br /&gt;&lt;br /&gt;Start the application server. Execute the test suite as usual. Then stop the application server. There will be a raw result file &lt;span style="font-family:courier new;"&gt;coverage.ec&lt;/span&gt; generated under the directory where the application server is launched, in my case, &lt;span style="font-family:courier new;"&gt;C:\jboss-4.0.4.GA\bin\coverage.ec&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Generated the plain text and HTML reports with command &lt;span style="font-family:courier new;"&gt;java emma report -r txt,html -in coverage.em -in C:\jboss-4.0.4.GA\bin\coverage.ec&lt;/span&gt;. The plain text report is generated in the current working directory &lt;span style="font-family:courier new;"&gt;coverage.txt&lt;/span&gt;. The report in HTML format is generated as &lt;span style="font-family:courier new;"&gt;coverage\index.html&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38570912-2680482842635291533?l=anqin007.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anqin007.blogspot.com/feeds/2680482842635291533/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38570912&amp;postID=2680482842635291533' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/2680482842635291533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/2680482842635291533'/><link rel='alternate' type='text/html' href='http://anqin007.blogspot.com/2007/02/code-coverage-test-with-emma-utility.html' title='Code Coverage Test with EMMA Utility'/><author><name>Qin An</name><uri>http://www.blogger.com/profile/15466598646160501560</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oHwfDQZuD6Y/SaqeHE3Il3I/AAAAAAAAAAU/m3VIBCoYdBg/s1600-R/180'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38570912.post-116985925805068617</id><published>2007-01-27T08:54:00.001+08:00</published><updated>2007-02-03T00:59:38.699+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='autorun'/><category scheme='http://www.blogger.com/atom/ns#' term='USB Disk'/><category scheme='http://www.blogger.com/atom/ns#' term='Virus'/><title type='text'>A USB Disk Virus</title><content type='html'>My younger sister came to Beijing, and gave me her little USB disk. She said there was a virus. It was effected in the network in her office. There are a lot of viruses wandering on their network from computer to computer. Even they installed various virus killers, the situation remained unchanged.&lt;br /&gt;&lt;br /&gt;I had no idea about USB viruses. Maybe this is the first time I was facing this kind of thing. I plugged the disk into the USB port of my notebook. I am not afraid of it because I have Norton Anti-Virus. After scaned, Norton reported there is a malware named &lt;span style="font-family:courier new;"&gt;iexplorer.exe&lt;/span&gt; under &lt;span style="font-family:courier new;"&gt;iexplorer&lt;/span&gt; directory. The virus tries to fool user it is a copy of the famous &lt;em&gt;Internet Explorer&lt;/em&gt;!&lt;br /&gt;&lt;br /&gt;How does it take action? When we click the icon of the removable disk in the window of &lt;em&gt;My Computer&lt;/em&gt;, by default, &lt;span style="font-family:courier new;"&gt;autorun.inf&lt;/span&gt; on this disk is loaded and something will be executed. At this moment, the virus hides itself in memory waiting for the opportunity to copy itself to a new USB disk.&lt;br /&gt;&lt;br /&gt;It is possible to disable the &lt;em&gt;autorun&lt;/em&gt; feature by modifing some key values in the &lt;em&gt;Registry&lt;/em&gt; of Windows. But it is not a wise idea. More often we need this feature. There is a best practice in using a USB disk or other removable devices. You can keep pressing the &lt;em&gt;Shift&lt;/em&gt; key when you plug the disk. In this case &lt;span style="font-family:courier new;"&gt;autorun&lt;/span&gt; is skipped. And then, open your virus scanner. Remove &lt;span style="font-family:courier new;"&gt;autorun.inf&lt;/span&gt;. For a USB disk, you actually don't need it. Be cautious after you use your disk in other computers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38570912-116985925805068617?l=anqin007.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anqin007.blogspot.com/feeds/116985925805068617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38570912&amp;postID=116985925805068617' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/116985925805068617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/116985925805068617'/><link rel='alternate' type='text/html' href='http://anqin007.blogspot.com/2007/01/qin_27.html' title='A USB Disk Virus'/><author><name>Qin An</name><uri>http://www.blogger.com/profile/15466598646160501560</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oHwfDQZuD6Y/SaqeHE3Il3I/AAAAAAAAAAU/m3VIBCoYdBg/s1600-R/180'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38570912.post-116931859831152993</id><published>2007-01-21T02:33:00.000+08:00</published><updated>2007-01-21T17:29:04.453+08:00</updated><title type='text'>Reading File in a Multi-Thread Environment</title><content type='html'>A file can be opened separately in a multi-thread environment, but it can not be read independently. It seems there is a unique reading pointer inside OS. When a thread reads some bytes, the pointer is advanced, and other threads will continue reading from the new position. To control the reading behaviour, file operations must be synchronized. Look at the following piece of code:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;unsigned long pos = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;unsigned long bytesRead = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;for (;;) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mutex_-&gt;captureObject();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fseek(f, pos, SEEK_SET);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bytesRead = fread(buffer, 1, BUFFSIZE, f);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mutex_-&gt;releaseObject();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (bytesRead &lt;= 0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pos += bytesRead;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.......&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A mutex object is used to synchronize file operations.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38570912-116931859831152993?l=anqin007.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anqin007.blogspot.com/feeds/116931859831152993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38570912&amp;postID=116931859831152993' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/116931859831152993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/116931859831152993'/><link rel='alternate' type='text/html' href='http://anqin007.blogspot.com/2007/01/reading-file-in-multi-thread.html' title='Reading File in a Multi-Thread Environment'/><author><name>Qin An</name><uri>http://www.blogger.com/profile/15466598646160501560</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oHwfDQZuD6Y/SaqeHE3Il3I/AAAAAAAAAAU/m3VIBCoYdBg/s1600-R/180'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38570912.post-116862016977048405</id><published>2007-01-13T00:37:00.000+08:00</published><updated>2007-01-13T00:42:49.780+08:00</updated><title type='text'>Change IP Address in a Script</title><content type='html'>We usually change the IP address of the network card of our computer with a graphic tool. This work can also be done in a command prompt. Sometimes it is useful. Follow me:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;C:\&gt;ipconfig&lt;br /&gt;Windows 2000 IP Configuration&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Ethernet adapter Local Area Connection:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;  Connection-specific DNS Suffix . :&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;  IP Address. . . . . . . . . . . . : 10.0.127.235&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;  Subnet Mask . . . . . . . . . . . : 255.255.255.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;  Default Gateway . . . . . . . . . : 10.0.127.1&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;C:\&gt;netsh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;netsh&gt;i&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;interface&gt;i&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;interface ip&gt;sh a&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Configuration for interface "Local Area Connection"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;DHCP enabled:           No&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;IP Address:             10.0.127.235&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;SubnetMask:             255.255.255.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Default Gateway:        10.0.127.1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;GatewayMetric:          1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;InterfaceMetric         1&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;interface ip&gt;set a "Local Area Connection" static 192.168.16.44 255.255.255.0 192.168.16.5 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Ok.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;interface ip&gt;sh a&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Configuration for interface "Local Area Connection"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;DHCP enabled:           No&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;IP Address:             192.168.16.44&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;SubnetMask:             255.255.255.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Default Gateway:        192.168.16.5&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;GatewayMetric:          1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;InterfaceMetric         1&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;interface ip&gt;exit&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;C:\&gt;ipconfig&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Windows 2000 IP Configuration&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Ethernet adapter Local Area Connection:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;  Connection-specific DNS Suffix . :&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;  IP Address. . . . . . . . . . . . : 192.168.16.44&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;  Subnet Mask . . . . . . . . . . . : 255.255.255.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;  Default Gateway . . . . . . . . . : 192.168.16.5&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;If you want to set it as DHCP, try this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;interface ip&gt;set a "Local Area Connection" source=dhcp&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Administrator permission is required for this work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38570912-116862016977048405?l=anqin007.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anqin007.blogspot.com/feeds/116862016977048405/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38570912&amp;postID=116862016977048405' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/116862016977048405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/116862016977048405'/><link rel='alternate' type='text/html' href='http://anqin007.blogspot.com/2007/01/change-ip-address-in-script.html' title='Change IP Address in a Script'/><author><name>Qin An</name><uri>http://www.blogger.com/profile/15466598646160501560</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oHwfDQZuD6Y/SaqeHE3Il3I/AAAAAAAAAAU/m3VIBCoYdBg/s1600-R/180'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38570912.post-116860956935433069</id><published>2007-01-12T21:43:00.000+08:00</published><updated>2007-01-12T21:46:09.363+08:00</updated><title type='text'>Amazon Forest to Farms</title><content type='html'>I was heavily shocked by the cover of the January release of the &lt;em&gt;National Geographic&lt;/em&gt; when I saw it today on a bookshelf of the Wangfujing Bookstore, Beijing. The title "&lt;em&gt;Amazon Forest to Farms&lt;/em&gt;" is printed over a picture of farmland, a common landscape of the vast plain of central China. The land is cultivated perfectly by advanced machinery, except a little lonely tree standing in the middle. Nobody can imagine it is a snapshot of the Amazon region. Amazon forest is dubbed as the lung of the Earth. At this moment I just feel hard to breath. The little tree is telling a horrific story why it is there and how long it will be there.&lt;br /&gt;&lt;br /&gt;When I showed the magazine to my friend, a foreigner in IT industry as myself, he has no semantic linkage between &lt;em&gt;Amazon&lt;/em&gt; and &lt;em&gt;Forest&lt;/em&gt;, of course, no idea why this title goes to the cover page of this famous magazine. He talked to me the Amazon in the United States and made me astonished.&lt;br /&gt;&lt;br /&gt;The story is quite simple. Where did these trees go? They went to paper mills, to publishers’ workshops, to shelves of bookstores and finally the Internet. The Amazon in the South America might disappear soon, but it lives on the Internet in the United States of America. There is no evidence that the Amazon in the digital era can last forever.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38570912-116860956935433069?l=anqin007.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anqin007.blogspot.com/feeds/116860956935433069/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38570912&amp;postID=116860956935433069' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/116860956935433069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/116860956935433069'/><link rel='alternate' type='text/html' href='http://anqin007.blogspot.com/2007/01/amazon-forest-to-farms.html' title='Amazon Forest to Farms'/><author><name>Qin An</name><uri>http://www.blogger.com/profile/15466598646160501560</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oHwfDQZuD6Y/SaqeHE3Il3I/AAAAAAAAAAU/m3VIBCoYdBg/s1600-R/180'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38570912.post-116853183036223481</id><published>2007-01-12T00:07:00.000+08:00</published><updated>2007-01-12T00:14:08.153+08:00</updated><title type='text'>Disable JIT to Obtain Line Number in Stack Trace</title><content type='html'>&lt;p&gt;IBM JVM can optimize a Java class. In this case, when an exception's stack trace is printed, you may find there is no line number for some classes. It is diffuclt for you to figure out the problem:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:78%;"&gt;at com.vitria.bpe.runtime.EventUtil.isTimerEvent(Compiled Code)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:78%;"&gt;at com.vitria.bpe.process.states.BPBasicStateImpl.applyRulesRegular(Compiled Code)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:78%;"&gt;at com.vitria.bpe.process.states.BPActionStateImpl.onEntry(Compiled Code)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:78%;"&gt;at com.vitria.bpe.process.states.BPBasicStateImpl.applyPolicy(Compiled Code)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We can disable JVM's JIT feature in following way:&lt;br /&gt;&lt;br /&gt;Go to WebSphere's console: &lt;em&gt;Application servers&lt;/em&gt; &gt; &lt;em&gt;server1&lt;/em&gt; &gt; &lt;em&gt;Process Definition&lt;/em&gt; &gt; &lt;em&gt;Java Virtual Machine&lt;/em&gt;&lt;br /&gt;And select the check box of "&lt;strong&gt;Disable JIT&lt;/strong&gt;".&lt;br /&gt;Save the new configuration and restart WebSphere.&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38570912-116853183036223481?l=anqin007.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anqin007.blogspot.com/feeds/116853183036223481/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38570912&amp;postID=116853183036223481' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/116853183036223481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/116853183036223481'/><link rel='alternate' type='text/html' href='http://anqin007.blogspot.com/2007/01/disable-jit-to-obtain-line-number-in.html' title='Disable JIT to Obtain Line Number in Stack Trace'/><author><name>Qin An</name><uri>http://www.blogger.com/profile/15466598646160501560</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oHwfDQZuD6Y/SaqeHE3Il3I/AAAAAAAAAAU/m3VIBCoYdBg/s1600-R/180'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38570912.post-116852138031013378</id><published>2007-01-11T21:15:00.000+08:00</published><updated>2007-01-11T22:18:28.786+08:00</updated><title type='text'>Manually Install Customer Service in WebSphere 6.1</title><content type='html'>Manually install the service:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Open the console of WebSphere. Go to &lt;em&gt;Servers&lt;/em&gt; -&gt; &lt;em&gt;Application Servers&lt;/em&gt;. Select &lt;span style="font-family:courier new;"&gt;server1&lt;/span&gt; for example.&lt;/li&gt;&lt;li&gt;On &lt;strong&gt;Configuration&lt;/strong&gt; tab, select &lt;em&gt;Server Infrastructure&lt;/em&gt; -&gt; &lt;em&gt;Administration&lt;/em&gt; -&gt; &lt;em&gt;Administration Services&lt;/em&gt;.&lt;/li&gt;&lt;li&gt;On &lt;strong&gt;Configuration&lt;/strong&gt; tab, select &lt;em&gt;Extension MBean Provider&lt;/em&gt;.&lt;/li&gt;&lt;li&gt;Click &lt;strong&gt;New&lt;/strong&gt;.&lt;/li&gt;&lt;li&gt;Input &lt;em&gt;Name&lt;/em&gt; as &lt;span style="font-family:courier new;"&gt;MyServiceMBean&lt;/span&gt;, &lt;em&gt;Classpath&lt;/em&gt; as &lt;span style="font-family:courier new;"&gt;${WAS_LIBS_DIR}/myjar.jar&lt;/span&gt;, &lt;em&gt;Description&lt;/em&gt; as &lt;span style="font-family:courier new;"&gt;Administration MBean&lt;/span&gt;. Click &lt;strong&gt;OK&lt;/strong&gt;, and save the changes. The JAR file contains the classes implementing this service.&lt;/li&gt;&lt;li&gt;Select the record &lt;span style="font-family:courier new;"&gt;MyServiceMBean&lt;/span&gt; just created. The bean name &lt;span style="font-family:courier new;"&gt;MyServiceMBean&lt;/span&gt; is defined in the XML &lt;span style="font-family:courier new;"&gt;MyService.xml&lt;/span&gt; file.&lt;/li&gt;&lt;li&gt;Select the &lt;em&gt;extensionMBeans&lt;/em&gt; on &lt;em&gt;Additional Properties&lt;/em&gt; column.&lt;/li&gt;&lt;li&gt;Click &lt;strong&gt;New&lt;/strong&gt;.&lt;/li&gt;&lt;li&gt;Input &lt;em&gt;DescriptorURI&lt;/em&gt; as &lt;span style="font-family:courier new;"&gt;MyService.xml&lt;/span&gt;, &lt;em&gt;type&lt;/em&gt; as &lt;span style="font-family:courier new;"&gt;MyServiceMBean&lt;/span&gt;. Click &lt;strong&gt;OK&lt;/strong&gt;, and save the changes.&lt;/li&gt;&lt;li&gt;Go to &lt;em&gt;Servers&lt;/em&gt; -&gt; &lt;em&gt;Application Servers&lt;/em&gt;. Select &lt;span style="font-family:courier new;"&gt;server1&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;On &lt;strong&gt;Configuration&lt;/strong&gt; tab, select &lt;em&gt;Server Infrastructure&lt;/em&gt; -&gt; &lt;em&gt;Administration&lt;/em&gt; -&gt; &lt;em&gt;Custom Services&lt;/em&gt;.&lt;/li&gt;&lt;li&gt;Click &lt;strong&gt;New&lt;/strong&gt;.&lt;/li&gt;&lt;li&gt;Check the option &lt;em&gt;Enable service at server startup&lt;/em&gt;. Input &lt;em&gt;Classname&lt;/em&gt; as &lt;span style="font-family:courier new;"&gt;mypackage.MyServiceMBean&lt;/span&gt;, &lt;em&gt;Display Name&lt;/em&gt; as "&lt;span style="font-family:courier new;"&gt;My Service MBean&lt;/span&gt;", &lt;em&gt;Classpath&lt;/em&gt; as &lt;span style="font-family:courier new;"&gt;${WAS_LIBS_DIR}/myjar.jar&lt;/span&gt;. Click &lt;strong&gt;OK&lt;/strong&gt;, and save the changes.&lt;/li&gt;&lt;li&gt;Restart WebSphere server.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38570912-116852138031013378?l=anqin007.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anqin007.blogspot.com/feeds/116852138031013378/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38570912&amp;postID=116852138031013378' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/116852138031013378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38570912/posts/default/116852138031013378'/><link rel='alternate' type='text/html' href='http://anqin007.blogspot.com/2007/01/manually-install-customer-service-in.html' title='Manually Install Customer Service in WebSphere 6.1'/><author><name>Qin An</name><uri>http://www.blogger.com/profile/15466598646160501560</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oHwfDQZuD6Y/SaqeHE3Il3I/AAAAAAAAAAU/m3VIBCoYdBg/s1600-R/180'/></author><thr:total>1</thr:total></entry></feed>
