Instalasi XAMPP

Posted by Joko Nurjadi

Alkisah saya memiliki XAMPP 1.7.0 yang berjalan baik, tapi biar up to date saya memutuskan menggantinya dengan XAMPP 1.7.7. Eh, ternyata berbagai masalah datang, untungnya dengan bantuan Google dan try & error, akhirnya masalah terpecahkan, dan kayaknya bagus juga kalo ditulis di blog, buat catatan saya sekaligus siapa tau ada yang mengalami hal yang sama.

Ada dua error yang terjadi saat memulai XAMPP 1.7.7 di komputer saya, yang pertama adalah saat mengetikkan http://localhost, maka browser menampilkan pesan:

New XAMPP security concept:

Access to the requested directory is only available from the local network.

This setting can be configured in the file "httpd-xampp.conf".


Solusinya adalah dengan mengedit file httpd-xampp.conf yang terletak di xampp\apache\conf\extra. Temukan kata "Deny from all" dan ganti menjadi "Allow from all". Simpan dan restart Apache. Maka http://localhost dapat diakses.

Tetapi masalah belum berakhir, setelah mengakses http://localhost/security/index.php, lalu http://localhost/security/xamppsecurity.php untuk mengubah password MySQL untuk user root, kemudian saya mencoba mengakses phpMyAdmin di http://localhost/phpmyadmin, saya mencoba login tetapi malah keluar error:

Connection for controluser as defined in your configuration failed.

Solusinya edit file config.inc.php di folder xampp\phpMyAdmin, dan tambahkan baris:
$cfg['Servers'][$i]['host'] = '127.0.0.1';

atau lengkapnya:

/* Authentication type and info */
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['host'] = '127.0.0.1';
$cfg['Servers'][$i]['password'] = '';
$cfg['Servers'][$i]['extension'] = 'mysql';
$cfg['Servers'][$i]['AllowNoPassword'] = true;

restart MySQL dan masalah terpecahkan. :)


read full version ...

Publikasi Buku Buddhis

Posted by Joko Nurjadi

Dukung publikasi buku Buddhis dalam Bahasa Indonesia.
Klik gambar dibawah untuk memperbesar:


Laporan dana di update di halaman http://dhct.ws/f21673.0 secara rutin oleh team.

Sejauh ini sudah diterjemahkan Dīgha Nikāya (http://dhct.ws/p1002) dan Saṃyutta Nikāya (http://dhct.ws/p2469). Yang akan terbit setelah kumpulan Khotbah Kumpulan Sang Buddha tahun depan adalah Majjhima Nikaya.

Untuk mendapatkannya silahkan ke link yg disertakan. Bisa didapatkan softcopynya.

DCPress mendahulukan cetaknya untuk vihara, pandita, perpustakaan dan guru untuk penerbitannya dan diberikan gratis/tanpa mengganti uang cetak dan disebarkan softcopynya.

read full version ...

Nomor Urut Dengan PHPMaker

Posted by Joko Nurjadi

PHPMaker adalah sebuah tool untuk memudahkan programmer PHP dalam membuat website, khususnya halaman web administrator yang mengelola table-table database. Hanya dalam hitungan menit, Anda dapat membuat sebuah halaman administrator lengkap dengan fitur search, add, edit, delete, view, untuk masing-masing table. Ribuan baris kode PHP yang menyusun halaman tersebut di-generate oleh PHPMaker.

Namun kekurangannya adalah, saat dibutuhkan fitur-fitur custom, terkadang membuat Anda harus melakukan hardcode alias mengubah sendiri kode program. Namun sebenarnya PHPMaker memiliki fleksibilitas cukup tinggi sehingga beberapa kasus dapat di-customize melalui GUI.

Contohnya adalah jika Anda ingin menambahkan nomor urut (autonumber) pada tampilan saat view table, tanpa menyimpan nomor urut tersebut pada table, caranya adalah sebagai berikut (menggunakan PHPMaker 7):
1. Pada PHPMaker, klik table yang ingin diberi nomor urut, klik tab "Server Events/Client Scripts.
2. Arahkan pada Server Events - Global - Table Specific - List Page - ListOptions_Load
3. Masukkan kode PHP dibawah ini:

global $cnt;
$cnt = 0;
$this->ListOptions->Add("new");
$this->ListOptions->Items["new"]->OnLeft = TRUE; // Link on left
$this->ListOptions->MoveItem("new", 0); // Move to first column

4. Arahkan pada Server Events - Global - Table Specific - List Page - ListOptions_Rendered

5. Masukkan kode PHP dibawah ini:

eval('global $' . join(',$', array_keys($GLOBALS)) . ';');
$this->ListOptions->Items["new"]->Body = $cnt;
$cnt++;

6. Generate dan telah tersedia nomor urut pada tampilan table Anda.

Semoga berguna.



read full version ...

Bon Jovi - The Circle (2009)

Posted by Joko Nurjadi

Komunitas Kolumnis Musik

Band rock yang satu ini memang layak punya nama besar. Setiap gebrakannya selalu ditunggu, tetapi sukar mengharapkan kejutan dari Bon Jovi. Walaupun untuk band sekelas Bon Jovi, sesuatu yang baru bukanlah keharusan, cukup mempertahankan "cita rasa " yang sudah melekat.


"The Circle" merupakan album studio Bon Jovi ke-11 setelah berkiprah sekitar 26 tahun, mereka telah mengukir lagu-lagu big hit seperti Runaway, Livin` On A Prayer, Always, It`s My Life, dan seterusnya. Bagi yang telaten mengikuti musik Bon Jovi, mungkin merasakan pergeseran musik mereka menjadi lebih ringan, sebagian fans mungkin menyukainya, tapi sebagian lagi tidak.

Yang jelas dengan album ini, Bon Jovi semakin mengukuhkan bahwa: Bon Jovi won`t back to 80`s! Jadi jangan harapkan hadirnya semangat Bon Jovi di tahun 80-an: teriakan serak Jon Bon Jovi, ritem gahar Richie Sambora, lagu-lagu melodik tapi tetap metal atau istilah bekennya: glam rock/metal, dance metal, dll.

Setidaknya, masih ada lagu-lagu yang cukup segar seperti single We Weren`t Born to Follow, atau Work for the Working Man yang dentuman bassnya mengingatkan saya pada lagu Keep The Faith.

Detik pertama Bullet memiliki intro mirip It`s My Life, dan lagu ini memang tidak jelek, dilanjutkan dengan "Thorn In My Side" yang asyik. Tapi banyak juga lagu yang menurut saya hanya sekedar menuh-menuhin album (filler), untungnya ditutup dengan ballad yang touching: "Learn to Love".

Bon Jovi saat ini adalah: Jon Bon Jovi pada vokal yang selalu hati-hati meniti nada tinggi dan kebanyakan lebih memilih range vokal yang aman, Richie Sambora pada gitar yang memainkan ritem dengan monoton dan sedikit solo gitar, juga sebenarnya tidak perlu nama besar Tico Torres (drum), David Bryan (keyboards), Hugh McDonald (bass) untuk memainkan level musik mereka saat ini.

Singkatnya, dari segi musikalitas, Bon Jovi nyaris tidak berbeda dengan... katakanlah Chris Daughtry atau David Cook (keduanya alumni American Idol yang meraih sukses komersial). Ya, mereka adalah vokalis bertalenta yang dapat menyanyikan lagu pop-rock yang mudah diterima telinga, tetapi bukan tipe lagu yang mengundang pertanyaan "wow.. siapa nih yang main gitar?", contohnya. But it`s a circle (lingkaran setan?), mungkin sulit bagi Bon Jovi untuk keluar menampilkan kembali ciri rock yang menghentak-hentak, dan mungkin sedikit juga yang perduli.

Tapi buat saya, menikmati lagu lawas seperti "Wild is the Wind" atau "Burning For Love" jauh lebih nikmat dibandingkan mendengarkan lagu-lagu dalam album The Circle. Biarpun demikian, tetap saja rasanya wajib menyimak setiap album Bon Jovi. Kok bisa gitu ya?

Track Listing:

01. We Weren`t Born to Follow
02. When We Were Beautiful
03. Work for the Working Man
04. Superman Tonight
05. Bullet
06. Thorn In My Side
07. Live Before You Die
08. Brokenpromiseland
09. Love`s the Only Rule
10. Fast Cars
11. Happy Now
12. Learn to Love

Personil:

Jon Bon Jovi - vocals
Richie Sambora - guitars
Tico Torres - drums
David Bryan - keyboards
Hugh McDonald - bass


read full version ...

Introduction To Zend Framework

Posted by Joko Nurjadi


Once you are online, it’s easy to find new technologies out there. Read some IT articles from websites and you probably think “yeah... it’s cool”, but it’s not really easy to get directly into those technologies, especially if you are a developer.

How many months or years you have spent learning some programming languages/paradigms, only to face new things that say “leave it and try this one”?


I believe there are so many PHP developers in web development area, and they are mostly still using pure procedural paradigm. I can imagine sooner or later - just like me - they will read about Zend Framework one day, but instead of thinking this is a good news, maybe they will start worry about their time dealing with learning curve, adaptation, practice, and so on… while on the other hand, Zend Framework promises a rapid development (and yes, it’s TRUE).

This tutorial is for you, who needs quick (but not dirty) approach to get into MVC paradigm brought by Zend Framework.

First I will introduce you briefly what is Zend Framework, and then I will show two main concepts of Zend Framework: use-at-will architecture and MVC pattern.

Zend Framework



I will give you a quick understanding here, Zend Framework (or ZF for short) is a collection of object oriented components/objects that you can choose any and plug into your codes, all in PHP language.

So, it fits perfectly for PHP developers, you don’t need to learn new programming language, also you don’t need to forget your PHP skill and codes. Even better, you will optimize your codes and improve the way you code, using ZF.

In this following tutorial, I assume you already have ZF installed on your machine. If you haven’t, download ZF via http://framework.zend.com and follow the installation instructions.

Use-at-will Architecture



You can create professional web applications that have modern features such Ajax, RSS/Atom feed, web services and so on, all using ZF. But none of those features is the most important issue in ZF, if I want to use ZF technology and its working environment for long time; I don’t think those features are enough since I can do the same things with many different ways without ZF.

Fortunately, ZF has two main and powerful concepts: use-at-will architecture and MVC pattern. Keep in mind these concepts and you can use ZF in the best way that suitable for your condition.

Now, we will discuss use-at-will architecture first.

Imagine you have library of functions that you can choose any of them individually depends on what you need in your application. This is what ZF provides to you with use-at-will architecture.

For example, take a look at this familiar PHP codes:


$sql = “INSERT INTO ms_product (product_code,product_name,description) VALUES (‘01’,’Keyboard’,’Cordless’);


As PHP developer, you may have ton of INSERT INTO queries like this (and much longer than this). Let’s assume several hours after you wrote the query, you have to add price field in ms_product table, then you must change your query to:


$sql = “INSERT INTO ms_product (product_code,product_name,description, price) VALUES (‘01’,’Keyboard’,’Cordless’,100);


Note the changes in bold font, this is the way you usually change your codes with traditional PHP. Of course above is simple query example, but more complex the query, more difficult for you to maintain, even if your query is formatted and wrapped into lines.

Now ZF is coming and you have an alternative to use a ZF component called ZF_DB. You will change your codes as follows:



$db->insert('ms_product',
array(
'product_code'=>’01’ ,
'product_name'=>’Keyboard’ ,
'description'=> ’Cordless’
)
);



See the difference? Now your query is more structured, formatted and easy to maintain. In case you don’t have enough time to re-write all queries in this way, you can keep some of your queries unchanging.

That’s how use-at-will architecture works; use ZF in any part you want without you have to change everything.

Below is a more complete showcase how to create form validation with ZF technique.

Look at this example form:




<HTML>
<head>
</head>
<body>

<form action="form.php" method=post>
<table>

<tr>
<td> username </td>
<td> : </td>
<td> <input type=text name=username> </td>
</tr>

<tr>
<td> password </td>
<td> : </td>
<td> <input type=password name=password> </td>
</tr>

<tr>
<td> confirm password </td>
<td> : </td>
<td> <input type=password name=confirmpassword> </td>
</tr>

<tr>
<td> e-mail </td>
<td> : </td>
<td> <input type=text name=email> </td>
</tr>

<tr>
<td colspan=3>
<input type=submit name=submit value="Submit">
</td>
</tr>

</table>
</form>

</body>
</HTML>





This is a common registration form in HTML that has input fields as follows:

  • username

  • password

  • confirm password

  • e-mail address


  • As PHP developer, your job is prevent invalid entries from users, assume you have to provide these validation rules in your PHP codes:

  • Username cannot be empty, only contains alphabet and numeric characters, white space is not allowed.

  • Password and confirm password has same validation rules as username, and both should be exactly the same.

  • Reject invalid e-mail (e.g. should be has domain name, @ character, etc)


  • I think no need to write validation example using traditional PHP here, but I believe you can predict the complexity and how long to build those things, maybe it takes up to 30 minutes, and the original codes will bigger twice or more, just try it if you want.

    Now let’s see the following codes and see how ZF handles above validation problems:




    <HTML>
    <head>
    </head>
    <body>

    <?php
    require_once 'Zend/Filter/Input.php';
    require_once 'Zend/Validate/EmailAddress.php';
    require_once 'Zend/Validate/InArray.php';

    $validators = array(
    'username' => array(
    'Alnum'
    ),
    'password' => array(
    'Alnum',
    new Zend_Validate_InArray(array($_POST['confirmpassword']))
    ),
    'email' => 'EmailAddress'
    );

    $data = $_POST;
    $input = new Zend_Filter_Input($filters, $validators, $data);

    if ($input->hasInvalid()) {
    $invalidFields = $input->getInvalid();

    foreach ($invalidFields as $i => $value) {
    echo $i . " is invalid <br>";
    }
    }
    echo "<br>";
    ?>
    <form action="form.php" method=post>
    <table>

    <tr>
    <td> username </td>
    <td> : </td>
    <td> <input type=text name=username> </td>
    </tr>

    <tr>
    <td> password </td>
    <td> : </td>
    <td> <input type=password name=password> </td>
    </tr>

    <tr>
    <td> confirm password </td>
    <td> : </td>
    <td> <input type=password name=confirmpassword> </td>
    </tr>

    <tr>
    <td> e-mail </td>
    <td> : </td>
    <td> <input type=text name=email> </td>
    </tr>

    <tr>
    <td colspan=3>
    <input type=submit name=submit value="Submit">
    </td>
    </tr>

    </table>
    </form>

    </body>
    </HTML>




    I will not try to assure you this codes is written in less than 30 minutes, but we can see it’s short, easy to understand, and easy to maintain and reuse. It’s using Zend_Filter_Input component, where you don’t have to do some complex regular expressions and logic programming, but you have to know how to use this component.

    As you can see, $validators is a validator rules that contain array to prevent invalid entries for each fields, then we retrieve input data with this statement:


    $input = new Zend_Filter_Input($filters, $validators, $data);


    Then all entries will be processed. You can try input invalid data (e.g. username contains white space, invalid e-mail address), browser should return invalid information as the entries don’t match the rules.

    In two examples above (Zend_DB and Zend_Filter_Input), you can see the similarity, how the codes is structured well and using object oriented approaches.

    Remember to include Zend reference files with statement require_once. In some cases, it’s not so hard to code with use-at-will architecture way, because ZF has very good documentation and examples for each component. But you may find some difficulties in exploring its functions to fit some cases; this is a learning process you must pass through.

    But don’t worry if you cannot find ZF solution, you still can combine your ZF codes with traditional PHP or even other framework/library while you are keep on searching the ZF solution. For my personal taste, this flexibility is what I like the most from use-at-will architecture.

    For example, mostly of ZF validation codes as explained above is a copy paste from ZF documentation, but when it comes to how to reject password field and confirm password field when they are not equal, you won’t find copy paste solution in ZF_Filter_Input component documentation, except a clue about StringEquals hypothetical class (you won’t find ready to use StringEquals class, you have to create it first).

    I also used my own PHP function to that case as alternative way before I finally found how to use Zend_Validate_InArray class later. As I said before, you can use ZF in the best way that suitable for you.

    MVC Pattern



    I think MVC pattern is a further step after you familiar enough using ZF components with use-at-will architecture way, because MVC pattern is likely to use in relative bigger web application. I bet you won’t take the risk using ZF in a big scale web application without have enough understanding and practices on it.

    MVC stands for Model-View-Controller, a paradigm in software engineering that isolates business logic from user interface consideration.

    First, we will look at the theory of MVC. This is simple definition of Model, View, and Controller:

    1. Model.

    The domain logic adds meaning to raw data, e.g. validate e-mail address, calculate taxes.

    2. View.

    The user interface elements, view is HTML pages in web development.

    3. Controller.

    Processes and responds to events or user actions, may invoke changes on the model.

    Zend_Controller



    On ZF documentation, you will find Zend_Controller located somewhere in the middle of index page, because the documentation is sorted by alphabetical.

    Hint: do not read the documentation just like you’re reading Harry Potter! Zend_Controller is where you should read first in order to learn about MVC pattern.

    As your application should isolate business logic from user interface, it becomes common using layout or template. Some developers maybe not familiar yet with this, since they are handling all processes starting from database design, web design, web programming - all in the same layer of work - and finally launch it to Internet.

    But you should know your work is not finished yet, if you believe in software development life cycle; this is just a beginning of your website life cycle. Sometimes modifications take longer time than initial development, especially if you don’t have robust structure and don’t know where you’re going to.

    Some major modifications for example are: changes in layout and design, database structure, additional features, and so on.

    So you should consider a structured and robust file system layout in big scale web application, I will introduce you to a typical directory layout as follows:




    application/
    default/
    controllers/
    ErrorController.php
    IndexController.php
    models/
    views/
    scripts/
    error/
    error.phtml
    index/
    index.phtml
    filters/
    helpers/
    html/
    images/
    scripts/
    styles/
    .htaccess
    index.php





    You may find many versions of layout from other references, but it doesn’t matter if you already know what the point is. This is not fixed format as you can create your own layout.

    You can create your layout manually or using wizard template. I am using Zend Studio for Eclipse to generate above template layout. Let’s continue from this layout example.

    See the structure and files, note that phtml files that locate below view folder are web pages files that contain PHP codes.

    If you create this layout manually using Windows environment, maybe you find problem in creating file .htaccess and complaint to Bill Gates why you just cannot put period character as first character in filename. Don’t worry; you can create a blank document in notepad and save it as .htaccess with File Type: All Files.

    Add these codes to .htaccess:



    RewriteEngine on
    RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php



    This means all non-resource requests (images, stylesheets) will route to the front controller.

    Next, edit html/index.php as follows:




    <?php

    set_include_path('.' . PATH_SEPARATOR . '../library' . PATH_SEPARATOR . './application/default/models/' . PATH_SEPARATOR . get_include_path());
    require_once 'Zend/Controller/Front.php';

    $controller = Zend_Controller_Front::getInstance();
    $controller->setControllerDirectory('../application/default/controllers');
    $controller->throwExceptions(false);

    $controller->dispatch();




    This is called bootstrap file, where all requests are routed through. ZF also recommends you to leave your PHP codes open, without ?> closing tag as best practices to prevent unintentional output of white spaces.

    You can set throwExceptions parameter value to true if you want to display more detail error messages, otherwise it will display your customable error messages.

    Edit IndexController.php as follows:




    <?php
    require_once 'Zend/Controller/Action.php';

    class IndexController extends Zend_Controller_Action
    {
    public function indexAction()
    {
    }
    }





    This is default action controller.

    Next, edit ErrorController.php and enter the following:




    <?php

    require_once 'Zend/Controller/Action.php';

    class ErrorController extends Zend_Controller_Action
    {
    public function errorAction()
    {
    }
    }




    Edit index.phtml as follows:




    <?php

    echo '<?xml version="1.0" encoding="UTF-8" ?>';
    ?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>New Zend Framework Project</title>
    </head>

    <body>
    Hello, world!
    </body>

    </html>




    Finally, edit error.phtml as follows:




    <!DOCTYPE html
    PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Error Message</title>
    </head>
    <body>
    <h1>An error occurred</h1>
    <p>An error occurred; please try again later.</p>
    </body>
    </html>




    This is what will be displayed if any error occurred.

    Now try to view your site, for example http://localhost/zf/html (assuming your root web folder is zf), if you encounter some error like server error, probably you need to modify file httpd.conf, and find these lines:



    LoadModule rewrite_module modules/mod_rewrite.so
    LoadModule setenvif_module modules/mod_setenvif.so
    #LoadModule speling_module modules/mod_speling.so
    LoadModule status_module modules/mod_status.so



    Add or delete character # in front of each line as display above, restart your apache and try again.

    Don’t expect sophisticate web pages, because all of your efforts only will display “Hello World!” in your browser, but this is where you begin to create your cool web application with MVC paradigm. Feel free to change error message, greeting message, etc.

    Maybe you still think it’s too complicate steps only to display “Hello World!”, well, that’s not true if you see the bigger picture. For example, try to put wrong address (e.g. http://localhost/zf/html/anything), and your framework will automatically handle it and return your own error message.

    I also believe now you can combine validation codes as explained before with MVC pattern. I hope with these steps, now you have good understanding both in use-at-will architecture and MVC pattern.

    Still there are a lot of things to discover, keep practice and learn!

    Joko Nurjadi - 20 May 2008

    read full version ...

    Content Management System Berbasis Web

    Posted by Joko Nurjadi


    Siapa yang tidak mengenal google.com? Salah satu situs search engine yang paling favorit saat ini, dan memiliki satu ciri khas yang menarik. Perhatikan bahwa Google selalu mengganti nuansa logonya sesuai event atau hari libur yang sedang berlangsung, misalnya logo dengan gambar petasan pada saat tahun baru, logo dengan gambar bola pada saat piala dunia, dan lain sebagainya.

    Anda dapat mengunjungi situs http://www.google.com/holidaylogos.html untuk melihat logo Google yang sudah pernah digunakan, sangat menarik bukan? Hal tersebut juga membuat kita penasaran, bagaimana logo selanjutnya yang akan dibuat oleh Google untuk menyambut event yang akan datang.

    Ide mengubah logo atau nuansa sesuai event yang berlangsung sebenarnya bukan suatu hal yang baru, hal tersebut merupakan nilai tambah suatu situs sehingga terlihat selalu update dan diperbaharui, juga menghindari tampilan yang monoton dan membosankan.

    Content Management System Berbasis Web

    Pada suatu situs atau aplikasi, tentu Anda memiliki content yang ditampilkan. Misalkan berita, produk, ataupun promosi-promosi tertentu. Anda memerlukan suatu sistem untuk mengatur content tersebut, sistem tersebut yang dikenal dengan Content Management System (CMS).

    Sebuah CMS berbasis web memiliki fitur-fitur untuk memudahkan pekerjaan Anda untuk mem-publish content situs Anda ke Internet agar semua orang dapat menikmati content terbaru.

    CMS yang baik tentu memudahkan pengguna dan menghindari kompleksitas yang tidak diperlukan. Untuk membuat CMS tentu diperlukan kemampuan programming yang baik, tapi untuk menggunakan CMS, tidak diperlukan kemampuan programming dan memang bukan tugas pengguna CMS jika harus melakukan kegiatan programming.

    Satu hal yang cukup membingungkan bagi Anda yang baru mengenal CMS, CMS bukanlah situs utama yang dikunjungi oleh visitor. Kurang lebih hubungan antara situs utama dan CMS adalah seperti contoh berikut.

    Misalkan Anda memiliki situs pribadi dengan domain rajajomblo.com, maka visitor yang mengunjungi situs Anda dengan mengetikkan rajajomblo.com akan dapat melihat foto dan cerita-cerita heboh Anda dalam mencari pacar.

    Jika Anda ingin mengubah atau memperbaharui content, misalnya mengupload foto terbaru, maka Anda menggunakan CMS. CMS pada umumnya diletakkan pada web server dan juga memiliki alamat yang dapat diakses web browser.

    Contoh alamat CMS, misalnya di www.rajajomblo.com/CMS atau alamat lainnya.

    Pada halaman CMS, Anda harus memasukkan username dan password untuk mencegah orang lain menggunakan CMS Anda, jika Anda berhasil masuk, maka terdapat menu-menu untuk melakukan upload gambar, menulis berita terbaru, dan lain-lain.

    Sekali Anda telah mengupdate content, maka pada situs utama www.rajajomblo.com telah tampil foto dan cerita terbaru Anda. Cukup mudah, bukan?

    Secara umum, sebuah CMS dapat mendukung fitur-fitur sebagai berikut:

    1. Melakukan import dan menciptakan dokumen dan materi multimedia.
    2. Mengidentifikasi pengguna dan pengaturan content management.
    3. Kemampuan untuk memberikan tugas dan tanggung jawab pada kategori content yang berlainan.
    4. Definisi pengaturan content, dimana terdapat pemberitahuan untuk content yang berubah.
    5. Kemampuan untuk melakukan tracking pada perubahan content.
    6. Kemampuan untuk publish content.

    Pada awalnya, CMS dikembangkan secara internal oleh organisasi yang banyak melakukan web publishing, seperti majalah dan koran online, juga newsletter.

    Urutan Pengoperasian

    Bayangkan tahap pengerjaan pada sebuah surat kabar secara manual, dimulai dari tahap pertama. Seorang Content Creator membuat dokumen atau berita baru, tugas selanjutnya berada pada tangan Copy Editor, yang dapat menolak atau menyetujui, atau memberikan komentar pada dokumen tersebut.

    Kemudian seorang Layout Editor akan melakukan layout yang diperlukan, setelah itu Chief Editor memiliki tanggung jawab untuk melakukan publikasi dokumen tersebut.

    Demikian pula pengoperasian pada CMS, yang membantu melakukan pengontrolan masing-masing langkah pengoperasian diatas. Content dan semua informasi terkait pada umumnya disimpan pada sebuah sistem relational database yang tentu sudah tidak asing lagi bagi Anda.

    Secara contoh nyata, perubahan apa saja content yang dapat Anda lakukan pada CMS? Walaupun bukan sebuah keharusan, pada sebuah CMS umumnya Anda dapat melakukan perubahan content terhadap:

    1. Block.
    2. Module.
    3. Theme.

    Masing-masing akan dijelaskan secara terpisah.

    Block

    Block merupakan sebuah bagian yang membentuk website secara keseluruhan. Contohnya suatu block header yang terdiri dari logo dan kata pengantar, atau block footer yang berisi alamat perusahaan, ataupun menu navigasi pada sisi kiri.

    Block dapat digunakan pada setiap halaman website, sehingga Anda dapat membayangkan betapa repotnya jika Anda hanya ingin mengubah alamat perusahaan pada footer, Anda harus mengganti seluruh halaman yang ada!

    Dengan block, potongan-potongan kode program dipisahkan dengan rapi dan melalui CMS, Anda dapat melakukan perubahan terhadap masing-masing block tersebut.

    Module

    Banyak modul yang membentuk sebuah situs, misalnya modul artikel, FAQ, produk, gallery, dan lain sebagainya. Setiap modul penting sebaiknya dibuat secara dinamis, dan dapat diupdate dengan mudah melalui CMS.

    Aplikasi CMS juga sering kali menyertakan tools WYSIWYG editor untuk memudahkan pengguna melakukan perubahan content. Seperti yang Anda ketahui, browser menterjemahkan kode-kode tag HTML sehingga tampil dengan format tertentu seperti huruf berjenis bold, italic, dan lain sebagainya.

    Tanpa menggunakan tools WYSIWYG editor, pengguna CMS harus mengetikkan tag-tag HTML untuk membuat format-format tertentu,tetapi dengan tools WYSIWYG editor, pengguna dapat mengetik dan memberikan format tulisan dengan mudah sebagaimana layaknya menulis pada aplikasi word processing. Beberapa WYSIWYG editor bahkan menyediakan icon-icon smiley yang gaul.

    Pada CMS, juga mungkin terdapat modul khusus, seperti modul system dan administrator. Penggunaannya dapat dikembangkan menjadi banyak hal, seperti memberikan hak akses dan membuat tingkatan security bagi pengguna.

    Theme

    Bagian theme sering berubah sesuai event yang tengah atau akan berlangsung. Sebuah theme (tema) adalah tampilan kosmetik yang terdapat pada setiap halaman website, dan mengontrol properti seperti warna dan font.

    Dengan Apa CMS dibuat?

    Sebuah CMS berbasis web pada dasarnya sama dengan aplikasi web yang telah Anda kenal. Anda perlu memiliki sistem relational database seperti MySQL, Microsoft SQL Server, PostgreSQL dan lain sebagainya. Sebagai bahasa pemrograman/script, Anda dapat menggunakan PHP, JSP, ASP, ColdFusion dan lain sebagainya.

    Apakah sebuah situs harus memiliki CMS? Jika situs Anda merupakan sebuah web dinamis, jawabannya tentu sebaiknya Anda memiliki CMS. Dengan CMS, Anda dapat melakukan pemeliharaan dan pembaharuan isi website dengan mudah tanpa memiliki keahlian seorang webmaster!

    Memilih Produk CMS

    Terdapat cukup banyak aplikasi CMS sebagai sebuah paket produk yang dapat disesuaikan dengan kebutuhan Anda, walau tidak tertutup kemungkinan untuk membuat sendiri CMS jika Anda memiliki team developer.

    Sebelum memilih CMS, terlebih dahulu Anda harus menuliskan tipe perusahaan Anda sebagai titik awalnya, dapat dimulai dengan, apakah perusahaan Anda merupakan perusahaan kecil, menengah, atau besar dan sejauh mana kebutuhannya akan CMS, apakah keberadaan CMS akan menangani kebutuhan Intranet maupun Internet.

    Selanjutnya content yang akan dipublish oleh CMS. Apakah berupa halaman web sederhana, atau halaman web yang kompleks dengan layout yang spesifik, informasi dinamis dari database, dan lain sebagainya.

    Sesuaikan tujuan dan strategi Anda, termasuk strategi jangka panjang bisnis Anda. Beberapa kunci keunggulan CMS yang dapat Anda bandingkan satu sama lain:

    1. Workflow.
    Kemudahan customize pada workflow yang digunakan oleh perusahaan Anda menjadi salah satu kunci yang Anda perlukan. Pertimbangkan apakah CMS yang Anda pilih dapat menjalankan workflow pada perusahaan Anda.

    2. Security.
    Merupakan faktor untuk memproteksi keamanan integritas content. Adanya level security dan tracking/audit trail akan merupakan nilai tambah.

    3. Report.
    CMS harus menyediakan laporan dengan ruang lingkup yang luas. Baik untuk level pengguna maupun administrator. Dukungan untuk menghasilkan laporan yang dapat di customize juga dibutuhkan dalam beberapa kasus.

    Termasuk adalah laporan untuk statistik penggunaan, misalnya penggunaan harian, halaman dengan rating paling tinggi, ataupun penggunaan search engine.

    Selanjutnya dari sisi presentation, juga perlu dipertimbangkan dukungan cross-browser, kecepatan akses, navigasi dan lain sebagainya.

    Khusus jika Anda ingin membeli produk CMS, perhatikan training yang Anda dapatkan, dokumentasi (untuk pengguna, administrator, dan developer), garansi, persetujuan maintenance, resource yang diperlukan (hardware, software, operating system), skill yang diperlukan untuk menggunakan CMS tersebut, dan tentu saja harga dan referensi dimana CMS tersebut pernah diimplementasi. Referensi berguna untuk membandingkan karakteristik antara organisasi yang menjadi referensi dengan organisasi Anda.

    CMS Open Source

    Jika pada operating system Anda telah mengenal platform open source, kemudian tools developer atau relational database berbasis open source, maka tidak heran Anda juga akan mendapatkan aplikasi open source.

    Demikian pula pada CMS, terdapat cukup banyak CMS open source, antara lain adalah:

    1. e107.
    Salah satu CMS favorit yang dibuat dengan kombinasi PHP dan MySQL. Dapat di customize dengan mudah dan terus dikembangkan.

    2. PHP-Nuke.
    Dengan PHP-Nuke, Anda dapat melakukan proses administrasi dan maintenance content untuk kebutuhan Intranet maupun Internet.

    3. Joomla!.
    Salah satu CMS yang terkenal dan digunakan mulai dari website sederhana hingga aplikasi corporate yang kompleks.

    Masih cukup banyak CMS dengan masing-masing keunggulan dan kelemahannya, beberapa yang populer adalah YACS, MODx, PHP-Fusion, WordPress, Drupal, Xaraya, Plone, Mambo, PostNuke, phpBB, dan lain sebagainya.

    Wah, ternyata memilih CMS open source lebih pusing lagi! Mungkin demikian komentar Anda. Sebaiknya Anda perlu mengenal CMS open source secara umum lebih jauh lagi.

    Kebanyakan CMS open source berjalan pada platform LAMP, apakah LAMP itu? LAMP merupakan singkatan yang menunjukkan Linux, Apache, MySQL, dan PHP yang memang keseluruhannya merupakan open source.

    Jika Anda mengunjungi masing-masing situs CMS tersebut dan semakin bingung karena semuanya mengaku bahwa CMS mereka merupakan solusi untuk Anda, maka Anda mungkin akan mendapatkan pencerahan dengan melihat siapa yang telah menggunakannya.

    Saat mengevaluasi sebuah CMS, cari link yang menunjukkan situs yang menggunakan CMS tersebut. Sebagai contoh, jika Anda melihat Mamboo, maka CMS tersebut digunakan oleh banyak situs menarik dengan ukuran bisnis relatif kecil dengan berbagai background.

    Acuan selanjutnya, pastikan CMS tersebut masih terus dikembangkan sehingga terus dilakukan perbaikan-perbaikan. Masuk dalam forum diskusi juga dapat memberikan informasi berguna bagi Anda.

    Jika dari seluruh referensi yang Anda dapatkan, Anda masih belum mendapatkan gambaran yang cukup, maka langkah ini pasti akan menjawabnya, yaitu gunakan versi demo! Situs www.opensourcecms.com memberikan Anda dua jam akses demo untuk lebih dari 100 CMS open source yang tersedia.

    Membangun Sendiri CMS

    Jika darah programmer Anda bergolak atau Anda memiliki suatu nama unik yang menurut Anda cocok sebagai nama sebuah CMS, mungkin timbul motivasi Anda untuk membuat sendiri CMS, atau paling tidak sekedar mengetahui bagaimana membuat CMS.

    Panduan pertama adalah membuat daftar kebutuhan pengguna, dimana pada intinya CMS Anda akan mengijinkan content situs Intranet/Internet dapat dengan mudah disimpan dan di manage didalam sebuah database, dengan tambahan beberapa fitur seperti otorisasi pengguna atau tingkat pengguna.

    Sebuah interface yang mudah digunakan untuk melakukan proses add, remove, dan modify isi merupakan sebuah keharusan. Lakukan pemrograman secara OOP atau paling tidak secara modular, karena CMS Anda berpeluang terus dikembangkan dan menjadi besar.

    Gunakan bahasa pemrograman dan database yang Anda kuasai, atau direkomendasikan. Untuk aplikasi web berbasis Linux, salah satu pilihan Anda dapat menggunakan PHP dan MySQL, ataupun menggunakan ASP / ASP.NET dan SQL Server untuk platform Windows.

    Fokuskan dalam melakukan design database terlebih dahulu, design table berikut field seperti table untuk menampung artikel, produk, dan lain-lain.

    CMS merupakan pengolahan content, karena itu content yang masuk dan diolah harus valid, dalam artian Anda harus melakukan memproteksi maksimal. Buat juga log untuk kegiatan detail pengguna agar dapat dilakukan trace back untuk kegiatan yang telah terjadi. Setiap pengguna CMS harus bertanggung jawab atas hak yang telah diberikan, sesuai dengan level atau group security-nya.

    Untuk estetika CMS, berbeda dengan saat Anda membangun situs multimedia yang wah, pada CMS justru Anda seharusnya meminimalisasi desain, tetapi memiliki interface yang atraktif. Google adalah contoh yang baik dalam hal ini.

    Jika Anda telah berhasil membuat sebuah basic CMS yang baik, maka akan banyak ide yang dapat direalisasikan untuk pengembangannya. Contohnya menambahkan WYSIWYG editor, menciptakan profile untuk masing-masing pengguna CMS, atau tools untuk berkomunikasi lebih lanjut, seperti forum publik, calendar, dan banyak lagi.

    Tentu saja apa yang telah dijelaskan diatas hanyalah aspek-aspek utama, dalam prakteknya Anda akan menemui lebih banyak lagi permasalahan yang tentunya secara positif akan semakin memperbaiki CMS Anda.

    Sumber:

    Majalah PC Media Edisi 04/2007

    read full version ...

    GeoIP

    Posted by Joko Nurjadi

    Geolocation IP merupakan metode menentukan letak geografis visitor website BERDASARKAN IP Address, informasinya dapat berupa negara, kota, latitude, longitude, timezone, dan lain-lain. Jadi pengunjung website tidak perlu memperkenalkan diri, website yang dikunjungi sudah mengenali dari mana ia berasal.


    Lalu apa kegunaannya? Banyak, contohnya: MIEAYAM.COM adalah website sebuah rumah makan terkenal dengan menu andalannya: NASI GORENG (lho kok ngga nyambung) yang tersebar di seluruh kota di Indonesia, berdasarkan statistik GeoIP, dihasilkan daftar 10 besar kota pengunjung yang paling banyak mengakses mieayam.com. Tentunya hal ini dapat menjadi pertimbangan manajemen mieayam.com untuk membuka cabang di kota-kota tersebut. Atau, jika mieayam.com dapat mengetahui kota asal pengunjung, maka tampilan homepage web dapat diatur untuk menampilkan cabang-cabang yang berada di kota tersebut. Ini hanya contoh-contoh kecil, pengembangannya bisa sangat variatif.

    Contoh implementasi sederhananya dapat dilihat pada http://reviewmusik.com/geoip

    Apakah berarti IP Address menyimpan informasi geolocation? Secara langsung tidak, pada prinsipnya IP adalah pengenal sebuah host/komputer dalam jaringan. Alokasi dan registrasi IP berdasarkan regionalnya diatur oleh Regional Internet Registry (ARIN/APNIC, dll), sebuah engine GeoIP melakukan proses mapping IP ke database yang menyimpan informasi tersebut.

    Demikian informasi singkat ini, sebenarnya ini cuma sedikit catatan sebagai penutup kegiatan saya ngutak-ngatik GeoIP, thanks buat Mr. Bowo yang sudah banyak membantu. Ok... keep learn and share!

    Lebih lanjut:

    Majalah PC Media edisi 11/2009


    read full version ...

    Pembuatan Aplikasi Web

    Posted by Joko Nurjadi


    Jika sebuah pertanyaan diajukan pada Anda, “apakah yang sudah tidak baru lagi, tetapi tetap hangat?”. Salah satu jawaban yang sangat tepat adalah: Internet. Dunia maya memang sudah cukup lama dikenal, tetapi pembicaraan seputar internet terasa tidak ada habis-habisnya. Termasuk didalamnya adalah topik aplikasi web.


    Sejak teknologi jaringan dikenal, penggunaan jaringan semakin dipergunakan secara luas. Terutama di kota-kota besar, saat ini sudah cukup sulit menemukan kantor tanpa jaringan komputer. Bahkan tetangga rumah Anda pun kemungkinan memiliki jaringan komputer.

    Hal ini diimbangi dengan perkembangan aplikasi. Jika dulu Anda harus bermain game tetris bersama rekan Anda dengan menggunakan satu komputer, kini Anda dapat melihat game center menyediakan layanan bermain game bersama melalui komputer masing-masing (walaupun kecil kemungkinan mereka sedang bermain game tetris).

    Demikian pula bagi Anda yang berkecimpung dalam pembangunan aplikasi. Membangun aplikasi jaringan yang memungkinkan multi-user atau sentralisasi database sudah menjadi permintaan customer yang sudah tidak dapat ditawar lagi.

    Client-server

    Seiring perkembangan jaringan, istilah aplikasi client-server mulai sering terdengar. Client-server merupakan suatu arsitektur jaringan dimana membedakan sisi client dengan sisi server. Aplikasi pada client umumnya ditampilkan dengan GUI (Graphical User Interface) dan mengirimkan request pada server atau aplikasi server.

    Terdapat banyak variasi dari server, misalnya file server, terminal server, atau mail server. Masing-masing dengan keperluan yang berbeda-beda, tetapi tetap menggunakan basis arsitektur yang sama.

    Saat sedang mengakses sebuah situs berita di internet, web browser yang Anda gunakan merupakan aplikasi client. Sementara database yang menyimpan berita beserta aplikasi yang terdapat pada URL yang Anda ketikkan merupakan server.

    Saat Anda melakukan request sebuah berita tertentu, aplikasi pada server akan mencari informasi yang diperlukan didalam database, mengolahnya kedalam halaman web, dan mengirimkannya kembali pada web browser untuk Anda.

    Aplikasi yang menggunakan web browser sebagai aplikasi client pada jaringan intranet atau internet, dinamakan dengan web aplikasi. Tentu saja Anda dapat membuat sendiri software desktop untuk client dengan pertimbangan-pertimbangan tertentu, tetapi Anda juga harus melakukan instalasi software tersebut pada setiap client.

    Selain itu, software client Anda kemungkinan memerlukan spesifikasi komputer yang relatif lebih tinggi dibandingkan kebutuhan sebuah web browser.

    Walaupun demikian, web browser yang menggunakan script HTML (HyperText Markup Language) tradisional tentu tidak dapat menampilkan fitur-fitur selengkap software desktop yang terinstalasi.

    Dokumen yang ditampilkan dengan HTML bersifat statik, artinya sekali tampil pada web browser, dokumen tersebut tidak akan berubah hingga dilakukan request ulang. Walaupun hal ini diatasi dengan Dynamic HTML yang dikembangkan setelahnya, tetapi masih cukup banyak keterbatasan dibandingkan aplikasi desktop yang juga terus berkembang.

    Diluar kekurangan dan kelebihan yang dimiliki, penggunaan web aplikasi perlu dipertimbangkan sebagai salah satu solusi yang menjanjikan.

    HTML dan DHTML

    Seperti telah disebutkan, informasi pada web browser ditampilkan dengan format HTML. Dimana HTML menampilkan header, paragraf, daftar dan seterusnya secara struktural. HTML terdiri dari entitas-entitas:

    1. Element.
    Element HTML membentuk suatu content dengan format tampilan tertentu. Misalnya pada perintah <> Judul < /H2 >. <> merupakan element pembuka dimana kata-kata yang terdapat didalamnya akan ditampilkan dengan format header. < /H2 > menandakan penutup element. Perintah-perintah seperti <> disebut dengan tag HTML.

    2. Attribute.
    Attribute merupakan pengaturan lebih lanjut terhadap element, contoh: < align="”left”">. Dimana align=left merupakan sebuah attribute yang menunjukkan posisi pengaturan teks secara rata kiri. Attribute dapat memiliki banyak nilai, misalnya align=center, align=left dan lain sebagainya.

    3. Data Type.
    HTML juga menyediakan beberapa tipe data, seperti data script dan style sheet, dan bermacam-macam tipe untuk nilai attribute. Termasuk didalamnya adalah ID, name, language, color, date and time, dan seterusnya.

    4. Character References.
    Merupakan kumpulan karakter yang merepresentasikan suatu karakter tertentu, sebagai contoh karakter “é” dapat ditulis dengan character reference “é”.

    Bukan dunia teknologi namanya kalau tidak berkembang cepat, demikian juga dengan HTML yang dikembangkan lebih lanjut dengan Dynamic HTML atau DHTML, yang memiliki fitur-fitur tambahan yang didukung sejak Microsoft Internet Explorer versi 4.0.

    Dengan DHTML, Anda dapat menambahkan lebih banyak kosmetika user interface pada dokumen HTML. Keunggulannya DHTML adalah tidak memberatkan server dan lalu lintas jaringan.

    Beberapa fitur dan efek yang Anda dapatkan dengan penggunaan DHTML antara lain adalah:

    1. Menyembunyikan teks dan gambar.
    2. Animasi teks dan gambar.
    3. Menciptakan form yang dapat merespon langsung terhadap data user.
    4. Menciptakan otomatis refresh pada isi halaman.

    DHTML menciptakan efek-efek diatas dengan melakukan modifikasi terhadap dokumen yang aktif, secara otomatis melakukan format ulang dan menampilkannya lagi. Dimana server tidak perlu menghasilkan isi dokumen yang baru karena dokumen tersebut tidak perlu dipanggil ulang pada browser.

    DHTML menggunakan style dan script untuk melakukan proses dari apa yang diinput oleh user, kemudian memanipulasi elemen HTML, attribute, style dan teks didalam dokumen tersebut.

    Elemen, attribute dan style pada DHTML dibaca dari spesifikasi HTML dan Cascading Style Sheet (CSS).

    CSS

    Cascading Style Sheet (CSS) merupakan sebuah standard yang dikembangkan oleh World Wide Web Consortium (W3C). CSS mengijinkan developer web untuk mendefinisikan font, margin dan line spacing didalam bagian-bagian yang berbeda dari dokumen HTML.

    Lebih signifikan, CSS mengijinkan isi dokumen tampil pada posisi absolut dengan mendefinisikan koordinat x dan y. Bahkan mengijinkan fasilitas overlapping pada elemen yang berbeda dengan menentukan z-order.

    CSS mendefinisikan style untuk isi seluruh dokumen. Sebuah style merupakan suatu grup property yang mendefinisikan bagaimana sebuah elemen HTML akan ditampilkan didalam dokumen.

    Dengan CSS, Anda juga dapat membuat style yang Anda ciptakan dikelompokkan dan diasosiasikan untuk bagian yang spesifik saja. Contohnya untuk sebuah style yang ingin digunakan pada sebuah elemen dokumen, maka elemen tersebut harus didalam sebuah tag HTML, misalnya <>. Didalam tag tersebut terdapat sebuah attribute khusus yang mendefinisikan sebuah style CSS.

    Sintaks penulisan CSS berbeda dengan penulisan pada HTML. Pada CSS, masing-masing property dan nilainya dipisahkan dengan sebuah karakter titik dua. Contohnya perintah “position:relative”. Sementara pada masing-masing kesatuan property dan nilai dipisahkan dengan karakter titik koma. Contoh: < style="”position:relative;">.

    Untuk menggunakan sebuah style pada sebuah element, Anda dapat menggunakan inline style.

    Saat Anda mengelompokkan bermacam-macam style diantara tag <>, Anda telah menciptakan sebuah style sheet. Dengan menggunakan style dan style sheet, Anda dapat mengubah tampilan dan format elemen dokumen dengan cepat tanpa menambah atau menghapus elemen yang bersangkutan.

    Script-based Programming

    Anda dapat memanipulasi lebih jauh dokumen yang ingin Anda tampilkan dengan menggunakan script-based programming, yang mengijinkan Anda mengubah inline style pada masing-masing elemen dan mengubah aturan style pada CSS.

    Script-based programming dapat ditulis dengan menggunakan VBScript, JScript, atau JavaScript. Script-based programming memiliki akses pada setiap property dari style CSS melalui Component Object Model (COM).

    Konsep Object Model pada DHTML membuat tag HTML dan atribut CSS dapat diprogram secara keseluruhan. Ini berarti Anda dapat menampilkan efek sebuah link dapat berubah ketika pointer mouse bergerak melaluinya, atau sebuah teks dapat berubah ukuran ketika dipilih, atau sebuah elemen dapat berpindah posisi saat di-klik.

    Mungkin Anda terbiasa menggunakan bahasa pemrograman visual seperti Visual Basic, dimana masing-masing obyek harus memiliki apa yang disebut event handler. Kontradiksi dengan ini, obyek pada DHTML dapat menggunakan event handler secara bersama (share event handler).

    Ketika sebuah event terjadi pada anak dari sebuah obyek, maka event tersebut dapat naik keatas secara hirarkis pada halaman tersebut hingga menemukan sebuah event handler untuk diproses. Hal ini dikenal dengan istilah event bubbling.

    Hirarki ditentukan oleh posisi element pada HTML, yang dijelaskan pada gambar berikut.



    Pada contoh gambar, elemen hyperlink merupakan anak dari elemen table, dimana elemen table merupakan anak dari elemen body, dan seterusnya. Pada level tertinggi adalah obyek dokumen, dimana memuat halaman HTML.

    Ketika sebuah event pada hyperlink terjadi, maka akan dilakukan pencarian event handler pada table, kemudian dilanjutkan pada body, kemudian pada HTML, dan akhirnya pada dokumen obyek. Pencarian event akan berhenti pada saat ditemukan sebuah event handler.

    Keuntungan dari event bubbling ini adalah mengurangi penulisan kode program. Sebagai contoh, lebih mudah menulis sebuah procedure event click pada form dibandingkan menuliskan procedure tersebut pada masing-masing elemen form seperti check box, text box dan seterusnya.

    Ketika sebuah check box dipilih, maka event akan naik menuju form untuk melakukan suatu proses yang diinginkan.

    Database

    Salah satu kekurangan dari bahasa script dan pemrograman client-side seperti HTML, DHTML, CSS dan JavaScript adalah tidak dapat mengakses database. Sementara jika Anda membangun aplikasi web seperti Shopping Cart pada internet ataupun General Ledger untuk lingkungan intranet, tentunya keberadaan database merupakan sesuatu yang mutlak.

    Database pada aplikasi web diletakkan pada server tertentu, untuk aplikasi berskala besar, sangat mungkin memiliki lebih dari satu server database. Database yang sering digunakan adalah MySQL, Microsoft SQL Server, Oracle, PostgreSQL dan lain sebagainya.

    Web Programming Language

    Jika pada aplikasi desktop Anda dapat menggunakan bahasa pemrograman Visual Basic, Visual C++, Delphi dan lain sebagainya, pada aplikasi web Anda juga memerlukan sebuah bahasa pemrograman.

    Bahasa pemrograman pada web berfungsi untuk menghasilkan halaman web yang dinamis, dinamis tidak hanya dari sisi tampilan, tetapi juga isi halaman yang diambil dari database.

    Karena itu, bahasa pemrograman web bersifat server-side, dimana lokasi dan pengolahannya dilakukan pada sisi server. Terdapat cukup banyak bahasa pemrograman web yang handal untuk membuat aplikasi web.

    Practical Extraction and Report Language

    Dikenal dengan singkatan Perl, merupakan bahasa pemrograman yang pada awalnya digunakan untuk manipulasi teks, kemudian berkembang menjadi bahasa pemrograman yang banyak digunakan untuk sistem administrasi, pemrograman jaringan, pengembangan GUI (Graphical User Interface), dan pembuatan aplikasi web.

    Penulisan sintaks Perl mirip dengan bahasa C, hal ini tidak mengherankan karena keseluruhan stuktur Perl diturunkan dari bahasa C. Perl juga mendukung Object Oriented Programming (OOP) ataupun pemrograman procedural. Perl memiliki banyak modul build-in untuk pemrosesan teks, dan memiliki banyak modul third-party.

    Perl merupakan software free, dengan lisensi dari Artistic License dan GNU General Public License. Perl tersedia pada kebanyakan sistem operasi, antara lain Unix, Linux, FreeBSD, Mac OS X dan Microsoft Windows.

    Pada Perl 5, interface database diimplementasikan dengan Perl DBI modules. DBI merupakan singkatan dari Database Interface, yang menyediakan modul pemrosesan database untuk Perl. Sementara modul DBD:: (Database Driver) menangani driver untuk pengaksesan database yang berbeda-beda.

    Tidak perlu heran jika Anda membeli buku Perl dengan gambar seekor unta. Karena unta merupakan simbol dari Perl.

    Active Server Pages

    Active Server Pages (ASP) merupakan bahasa pemrograman web yang diperkenalkan oleh Microsoft yang dipasarkan sebagai add-on bersama Internet Information Services (IIS).

    Programming dengan menggunakan ASP relatif cukup mudah, terutama dengan adanya obyek yang sudah build-in. Misalnya obyek Application, ASPError, Request, Response, Server dan Session.

    ASP mencapai versi 3.0, kemudian dilanjutkan dengan ASP.NET yang merupakan bagian dari platform Microsoft .NET yang telah mencapai ASP.NET versi 2.0.

    Bagi Anda yang telah terbiasa menggunakan bahasa pemrograman Visual Basic, akan lebih mudah mempelajari dan menggunakan ASP.

    PHP

    Hypertext Preprocessor atau lebih dikenal dengan PHP, merupakan bahasa pemrograman web yang open source, yang awalnya didisain sebagai sebuah kumpulan kecil script Perl. PHP umumnya didistribusikan bersama dengan Linux, Apache dan MySQL.

    PHP berjalan pada hampir semua web server populer dan tersedia dengan platform sistem operasi yang berbeda-beda. Karena fleksibilitas ini maka PHP terinstalasi secara luas, lebih dari 18 juta domain internet pada saat ini menempati hosting pada server yang dilengkapi dengan PHP.

    Terdapat aplikasi PHP yang terkenal dan banyak digunakan seperti phpBB, Joomla, Wordpress dan MediaWiki.

    ColdFusion

    ColdFusion pada awalnya merupakan produk dari Allaire, yang kemudian dibeli oleh Macromedia, dan melakukan merger dengan Adobe Systems.

    ColdFusion menyediakan cukup banyak service yang memiliki nilai tambah, diantaranya:

    1. Konversi dari HTML ke PDF.
    2. Validasi form pada client-side termasuk fitur rich form dengan menggunakan Flash.
    3. GUI Widgets seperti datagrid dan date picker.
    4. Query database pada platform independen melaluli ODBC atau JDBC.
    5. Pengambilan data dari sistem enterprise seperti Active Directory, LDAP, POP, HTTP dan FTP.

    Sintaks penulisan ColdFusion terbilang unik dan berbeda dengan bahasa pemrograman tradisional seperti bahasa C. Sayangnya ColdFusion bukanlah open source, bahkan relatif mahal jika dibandingkan dengan kompetitornya.

    Saat ini ColdFusion terus dikembangkan dan akan mencapai versi 8 dengan kode “Scorpio” yang akan dirilis pada akhir tahun 2006 atau awal tahun 2007.

    JavaServer Pages

    JavaServer Pages dikenal dengan singkatan JSP. Dari namanya sudah bisa ditebak bahwa JSP merupakan teknologi dari Java. Sintaks JSP menambahkan tag XML yang disebut dengan JSP actions, yang digunakan sebagai fungsi build-in.

    JSP di compile pada Java Servlet oleh sebuah JSP Compiler. Baik JSP dan servlet awalnya dikembangkan oleh Sun Microsystems. Dimulai dari JSP versi 1.2, pengembangan JSP dilakukan oleh Java Community Process.

    JSP dapat dipecah menjadi:

    1. Data statik, misalnya HTML.
    2. JSP directives, misalnya include directive.
    3. JSP scripting.
    4. JSP actions.
    5. Custom tags.

    Web Server

    Sebuah web server bagaikan sebuah rumah bagi kumpulan file-file aplikasi web. Anda harus meletakkan file-file aplikasi Anda pada web server agar dapat diakses oleh client. Web server bertanggung jawab untuk menerima request melalui HTTP dari web browser pada client.

    Web server mengimplementasikan fitur-fitur:

    1. Konfigurasi terhadap fitur-fitur yang tersedia.
    2. Otentifikasi username dan password sebelum diijinkan menggunakan beberapa atau keseluruhan resource.
    3. Dapat menangani dynamic content dengan mendukung satu atau lebih interface seperti SSI, CGI, PHP, ASP, ASP.NET dan lain-lain.
    4. Menyediakan support modul.
    5. Mendukung HTTPS (oleh SSL atau TLS) untuk koneksi yang aman dan terenkripsi melalui port standard 443, selain menggunakan port 80 yang biasa digunakan oleh HTTP.
    6. Content compression, untuk keperluan mengurangi ukuran response.
    7. Virtual Host, untuk mendukung banyak web dengan menggunakan satu alamat IP.
    8. Large file support, untuk dapat menangani file dengan ukuran lebih dari 2 GB pada sistem operasi 32 bit.
    9. Bandwith throttling, untuk membatasi kecepatan response agar tidak memenuhi lalu lintas jaringan dan dapat menangani lebih banyak client.

    Sebuah web server harus mendefinisikan batas koneksi client, karena per-alamat IP hanya dapat menangani sejumlah koneksi dari client secara bersamaan. Umumnya berkisar dari 2 hingga 60.000, dimana secara default berkisar antara 500 hingga 1.000.

    Web server hanya dapat menangani sekian request setiap detiknya tergantung dari:

    1. Konfigurasi.
    2. Tipe request HTTP.
    3. Content (statik atau dinamis).
    4. Kondisi content merupakan cache atau tidak.
    5. Keterbatasan hardware dan software dari sistem operasi yang digunakan.

    Pada web server dapat terjadi overload jika terlalu banyak terjadi web traffic, misalnya saat ribuan atau bahkan jutaan client mengakses web secara bersamaan atau pada interval waktu yang singkat.

    Cara ini kadang dipergunakan sebagai sebuah trik oleh oknum yang tidak bertanggung-jawab yang memang berniat membuat down sebuah web server. Selain itu juga dapat terjadi serangan DDoS (Distributed Denial of Service).

    Untuk mengantisipasi overload, web server dapat menggunakan teknik-teknik seperti:

    1. Menggunakan web cache sebagai penampung.
    2. Menggunakan nama domain yang berbeda (sub domain).
    3. Menggunakan lebih dari satu web server per-komputer, dimana masing-masing memiliki network card dan alamat IP.
    4. menggunakan lebih drai satu web server yang dikelompokkan sehingga berperan sebagai satu web server yang besar.
    5. Menambahkan hardware pendukung, misalnya RAM.
    6. Melakukan tuning pada parameter sistem operasi untuk penggunaan dan kemampuan hardware.
    7. Menggunakan program web server yang lebih efisien.
    8. Menggunakan metode workaround yang lain.

    Apache HTTP Server

    Merupakan web server open source untuk sistem Unix/Linux, Microsoft Windows, Novell NetWare dan lain-lain. Apache merupakan web server paling populer yang digunakan saat ini. Apache dikembangkan oleh komunitas developer dibawah naungan Apache Software Foundation.

    Pesan kesalahan yang dapat dikonfigurasi, otentifikasi database DBMS-based dan Content negotiation merupakan beberapa fitur-fitur yang terdapat pada Apache.

    Internet Information Services

    Dikenal dengan singkatan IIS, merupakan produk Microsoft dan web server kedua terpopuler setelah Apache HTTP Server. Termasuk didalam IIS adalah FTP, SMTP, NNP, dan HTTP/HTTPS.

    Versi-versi awal IIS sering diserang oleh hacker, tetapi Microsoft terus memperbaiki lubang-lubang keamanannya. IIS versi 7.0 akan disertakan pada Windows Vista dan Windows Server Longhorn.

    Sun Java System Web Server

    Merupakan web server yang didisain untuk aplikasi bisnis skala medium dan besar. Tersedia untuk sistem operasi yang berbeda-beda, Java System Web Server mendukung JSP dan teknologi Java Servlet, ASP, PHP, CGI, dan ColdFusion.

    ASP didukung melalui Sun Java System Active Server Pages yang merupakan satu paket dengan Java System Web Server.

    Bagaimana Untuk Memulai

    Masih terdapat cukup banyak database, bahasa pemrograman dan web server yang dapat digunakan dengan masing-masing kelebihan dan kekurangannya. Baik ditawarkan secara komersial ataupun open source.

    Dengan banyaknya pilihan, mungkin menimbulkan pertanyaan, darimana harus mulai untuk membuat aplikasi web? Sistematika yang umum adalah dengan mengikuti pembahasan pada artikel ini, yang intisarinya adalah:

    1. Pengenalan kemampuan client-side menampilkan dokumen HTML pada web browser.
    2. Mengenal penggunaan script seperti JavaScript dan VBScript sebagai pendukung dokumen pada sisi client.
    3. Setelah mengenali sisi client, saatnya Anda mengenali sisi server. Dimulai dengan penggunaan database, dimana manipulasi query akan diperlukan untuk mengeluarkan hasil yang diinginkan pada web browser.
    4. Mengenal bahasa pemrograman web yang disesuaikan dengan beberapa aspek seperti latar belakang programming dan minat Anda. Misalnya jika Anda telah memiliki latar belakang programming pada C, Anda dapat memulainya dengan Perl atau PHP. Jika Anda memiliki latar belakang Visual Basic, mempelajari ASP bukan merupakan hal yang sulit.
    5. Pengenalan web server.

    Kini saatnya Anda melangkah untuk mewujudkan aplikasi web idaman Anda. Selamat berkarya!

    Sumber: Majalah PC Media edisi 10/2006

    read full version ...

    Perencanaan Dan Pemeliharaan Aplikasi

    Posted by Joko Nurjadi


    Membangun sebuah aplikasi dapat dianalogikan dengan membuat sebuah film ataupun buku yang memiliki cerita. Dimana pada cerita tersebut, Anda menentukan tokoh dan karakter, alur cerita dan skenario, juga menentukan akhir cerita, demikian pula halnya dengan membangun aplikasi.

    Satu-satunya perbedaan yang nyata, jika suatu cerita dapat disengaja berujung sad ending story, maka hal tersebut justru dihindari dalam skenario pembuatan aplikasi. Anda tentu tidak menginginkan akhir dari pembuatan aplikasi Anda menjadi cerita horror atau menguras air mata (dalam arti yang sebenarnya).

    Tahapan Desain

    Tanpa sebuah desain, tidak akan dihasilkan sesuatu yang kita bayangkan. Bahkan sebuah gambaran kasar sudah merupakan sebuah desain yang ingin Anda wujudkan secara nyata. Tetapi Anda tentu tidak akan berhenti hanya pada sebuah gambaran kasar saja, bukan?

    Terdapat beberapa tahapan desain aplikasi:

    1. Conceptual Design Stage (Tahap desain konsep).
    Sebuah cerita membutuhkan skenario, karena itu skenario harus disusun terlebih dahulu sebagai rangka cerita yang akan dimulai. Hal itulah yang Anda lakukan pada Conceptual Design Stage.

    Sesuai dengan namanya, desain yang Anda lakukan bersifat konsep, sebuah skenario merupakan konsep. Pada aplikasi yang akan dibuat, Anda harus membuat skenario penggunaan aplikasi.

    Skenario tersebut berupa penjelasan fungsi-fungsi aplikasi yang diharapkan oleh pengguna.

    Ambil sebuah contoh, Anda ingin membangun sebuah aplikasi penggajian (payroll) untuk suatu perusahaan. Anda harus menentukan skenario yang berkaitan dengan proses penggajian, untuk itu Anda harus menjelaskan fungsi-fungsi yang berhubungan, mencakup fungsi perhitungan pajak, lembur, tunjangan, jamsostek, dan lain-lain.

    2. Logical Design Stage (Tahap desain logika).
    Dengan menggunakan skenario penggunaan aplikasi yang telah Anda buat pada tahap sebelumnya, Anda dapat melangkah pada tahap ini. Disini penjelasan fungsi aplikasi dapat digunakan untuk mengidentifikasi serangkaian business object untuk aplikasi Anda.

    3. Physical Design Stage (Tahap desain fisik).
    Merupakan tahap untuk mendefinisikan interface dan keterkaitan masing-masing business object yang telah dibuat pada tahap sebelumnya.

    Business Object

    Business object merupakan obyek-obyek modul yang merupakan intisari entitas pada lingkupan aplikasi yang akan dihasilkan. Sebagai contoh, sebuah fungsi untuk menghasilkan total gaji karyawan bulanan memerlukan kegiatan pengumpulan data absensi, data lembur, kode karyawan, gaji pokok, tunjangan, dan seterusnya.

    Masing-masing dari kegiatan tersebut direpresentasikan oleh sebuah business object.

    Business object sering disebut juga dengan Domain object, dimana kata “domain” berarti “business”. Business object yang baik akan membungkus data yang berhubungan dengan entitas. Sebagai contoh, sebuah kegiatan lembur memiliki data seperti jam datang, jam pulang, kode karyawan yang lembur, dan seterusnya.

    Masing-masing business object berkaitan satu sama lain membentuk sistem yang besar, Anda harus menentukan hubungan antar business object tersebut. Setelah mengetahui skenario melalui business object dan hubungan antar business object tersebut, maka langkah berikutnya developer akan menciptakan business logic.

    Business Logic

    Jika business object merupakan skenario yang menjelaskan tahapan-tahapan cerita yang saling berkaitan, maka business logic menterjemahkan lebih detail masing-masing tahapan tersebut. Business logic dapat dianalogikan sebagai dialog yang membangun dan menghidupkan cerita.

    Anda dapat mendesign business logic dalam bentuk komponen seperti DLL, OCX dan sebuah service yang dijalankan otomatis.

    Aspek Perencanaan Dan Pemeliharaan Aplikasi

    Beberapa hal yang harus diperhatikan, perencanaan dan pemeliharaan aplikasi Anda harus memperhatikan aspek-aspek sebagai berikut:

    1. Performance (Kinerja).
    Aplikasi diharapkan memiliki kinerja yang optimal dimana Anda harus mempertimbangkan:

    a. Sistem operasi dimana aplikasi Anda akan berjalan.
    Setiap sistem operasi memiliki keunggulan dan kelemahan masing-masing berkaitan dengan software pendukung yang digunakan. Anda juga dapat memperbaiki unjuk kerja sistem dengan penggunaan sumber daya sistem seperti memory dan processor secara efisien.

    b. Pengguna aplikasi.
    Anda harus mempertimbangkan jumlah pengguna aplikasi, terutama pada aplikasi client-server. Jika pengguna aplikasi relatif terlalu banyak bagi resource server yang terbatas, mungkin Anda perlu membagi proses pada workstation yang digunakan user.

    Tetapi pilihan ini akan memberikan pengaruh dari sisi maintenance, melakukan pemeliharaan pada banyak workstation tentu lebih merepotkan dibandingkan melakukan pemeliharaan pada server saja. Karena itu, Anda harus selalu menyeimbangkan antara unjuk kerja sistem dengan pertimbangan-pertimbangan lain yang terkait.

    2. Maintainability (Pemeliharaan).
    Pada saat melakukan perencanaan aplikasi, Anda sudah harus memiliki gambaran bahwa aplikasi tersebut dapat dipelihara dengan baik. Melakukan enkapsulasi semua service dan komponen yang digunakan secara modular dan meletakkannya pada satu area tertentu akan sangat membantu pemeliharaan aplikasi.

    Masing-masing modul komponen harus memiliki interface yang jelas, sehingga akan memudahkan melakukan isolasi dan mengidentifikasi permasalahan yang timbul.

    Jika cara penggunaan dan operasi aplikasi dapat dimengerti dengan jelas, pihak lain juga akan dengan mudah melakukan pemeliharaan pada aplikasi Anda.

    3. Extensibility (Pengembangan).
    Aplikasi yang baik akan terus berkembang sesuai dengan permintaan kebutuhan yang baru. Bertambahnya permintaan kebutuhan oleh pengguna juga merupakan indikasi bahwa aplikasi Anda telah digunakan dan membantu pekerjaan mereka.

    Untuk itu, Anda harus mempertimbangkan potensi pengembangan/upgrade aplikasi di masa mendatang, ataupun sekedar penambahan fungsi yang diinginkan.

    Beberapa tips agar aplikasi Anda mudah dikembangkan:

    a. Pisah/bagi aplikasi Anda kedalam komponen-komponen yang terenkapsulasi.
    b. Jika dimungkinkan, gunakan komponen yang dapat diprogram dengan berbagai platform.
    c. Jika Anda mendevelop aplikasi web based, gunakan aplikasi yang independent dimana tidak mengharuskan client menggunakan aplikasi browser tertentu.
    d. Letakkan seluruh komponen yang digunakan pada sebuah lokasi yang modular.

    4. Availability (Penyediaan).
    Hal ini berkaitan dengan bagaimana aplikasi Anda menangani kesalahan-kesalahan, seperti contohnya jika sebuah file tidak ditemukan oleh aplikasi. Anda harus merencanakan dari awal bagaimana kode Anda menangani berbagai kesalahan.

    Dengan availability yang baik, jika terjadi kesalahan, maka aplikasi Anda tidak crash, tetapi memberikan pesan kesalahan yang jelas dan dapat dimengerti.

    5. Scalability (Skalabilitas)
    Jika performance menyangkut bagaimana aplikasi bekerja dengan pengguna pada saat ini, maka scalability merujuk pada kebutuhan pengguna di masa mendatang. Untuk itu aplikasi Anda diusahakan memiliki skalabilitas seluas mungkin.

    Scalability mengijinkan Anda menambah jumlah pengguna/client yang dapat menggunakan aplikasi Anda secara simultan tanpa mempengaruhi kinerja secara drastis.

    Anda dapat meningkatkan scalability aplikasi dengan memindahkan beberapa proses pada client, sehingga tidak memberatkan kinerja server secara keseluruhan. Bagaimanapun juga, konsekuensinya menyangkut masalah maintainability.

    Untuk memastikan bahwa data server dapat diupgrade dengan mudah, Anda harus membuat partisi data access kedalam sebuah data-tier (tingkatan data). Walaupun hal ini tidak akan meningkatkan kinerja, akan tetapi memudahkan upgrade sistem saat permintaan meningkat.

    Hindari Error Sedini Mungkin

    Untuk membuat sebuah aplikasi berskala besar, bagian yang sangat penting adalah memastikan bahwa aplikasi Anda memiliki error seminim mungkin. Karena memperbaiki error pada aplikasi berskala besar tentu memerlukan waktu dan tenaga yang besar pula.

    Karena itu temukan kesalahan pada aplikasi sedini mungkin dengan melakukan test rutin. Selain itu, pastikan bahwa perbaikan kesalahan tidak menimbulkan kesalahan yang lain.

    Coding Sebagai Aktor Utama

    Setiap cerita lazimnya memiliki aktor sentral yang memegang peranan utama. Bahkan seringkali Anda lebih mengenal nama aktornya dibandingkan judul filmnya. Pada cerita perencanaan dan pemeliharaan aplikasi, sang aktor adalah proses coding, atau bagaimana source code aplikasi Anda diolah.

    Untuk aplikasi berskala besar, Anda memerlukan sebuah team programer yang melakukan development aplikasi, terutama jika aplikasi Anda memiliki target rilis. Rancangan waktu pengerjaan merupakan patokan bagi programer untuk mengerjakan aplikasi sesuai jadwal.

    Masing-masing programer sebagai pelaku proses coding, bisa jadi memiliki gaya tersendiri yang berbeda satu sama lain, karena itu tidak mengherankan jika dunia programer adalah dunia yang memiliki seni tersendiri. Tetapi perlu adanya suatu standarisasi agar pengkodean yang dilakukan menghasilkan aplikasi yang mudah dipelihara.

    Variable

    Coding berkaitan erat dengan variable, bagaimana sebuah variable diproses didalam aplikasi? Setiap kali aplikasi Anda menggunakan variable, maka aplikasi harus melihat isi atau nilai variable tersebut, yang mana memerlukan waktu.

    Untuk mempercepat proses pencarian nilai variable, Anda dapat menggunakan konstanta. Konstanta adalah variable yang selalu memiliki nilai yang sama pada sebuah aplikasi. Konstanta hanya dilihat atau ditetapkan satu kali, yaitu saat aplikasi Anda di-compile.

    Sebuah variable diakses lebih cepat dibandingkan dengan pengaksesan terhadap variable array maupun property. Karena itu gunakan variable array hanya pada saat benar-benar diperlukan.

    Berhubungan dengan hal property, jika aplikasi Anda perlu mengakses sebuah nilai property dengan nilai yang sama berulang-ulang pada sebuah procedure, maka Anda dapat meningkatkan kinerja aplikasi dengan mengakses nilai property tersebut sekali saja, memindahkannya kedalam sebuah variable, dan selanjutkan mengarahkan aplikasi tersebut untuk membaca nilai variable itu saja.

    Hubungan Variable dan Memory

    Variable yang dikenal secara umum berkaitan dengan tipe data yang bervariasi, seperti Boolean, String, Integer, Variant, dan lain-lain. Jumlah memory yang dialokasikan pada variable berkaitan dengan tipe data yang digunakan oleh variable tersebut.

    Untuk melakukan efisiensi penggunaan memory, Anda harus menggunakan tipe data yang tepat untuk variable Anda.

    Sebagai contoh, Anda memerlukan variable untuk menyimpan nilai True atau False, yang mana hanya membutuhkan sejumlah kecil memory untuk menyimpannya. Akan lebih baik jika Anda menggunakan tipe data Boolean yang memerlukan 2 byte memory untuk keperluan ini, daripada menggunakan tipe data Variant yang menggunakan 16 byte memory.

    Hal yang sama berlaku jika Anda harus menentukan tipe data numerik. Terdapat banyak tipe data numerik seperti byte, integer, long integer, ataupun double. Masing-masing menggunakan alokasi memory yang berbeda tergantung kapasitasnya. Pastikan Anda memilih tipe data yang tepat.

    Modul

    Khusus untuk pembangunan aplikasi yang melibatkan banyak programer, diperlukan kerjasama yang baik untuk membuat sebuah modul library yang dapat digunakan bersama-sama.

    Dengan komunikasi dan kerjasama yang baik, sebuah modul library yang dibuat dan digunakan bersama akan mempersingkat waktu pengkodean, tetapi sebaliknya jika komunikasi tidak berjalan, maka akan terjadi modul-modul yang terpecah yang selain menyita waktu, juga dapat menimbulkan berbagai masalah dalam penggabungannya.

    Form

    Anda tentu sering menggunakan form pada aplikasi Anda. Tahukah Anda, bahwa ternyata cara aplikasi menggunakan form juga dapat mempengaruhi kinerja aplikasi?

    Sebagai contoh, memanggil form satu demi satu selagi aplikasi Anda bekerja, akan memerlukan waktu yang intensif. Tetapi jika seluruh form tersebut dipanggil kedalam memory ketika aplikasi mulai dijalankan, maka proses pemanggilan form selanjutnya akan terjadi lebih cepat dan pengguna dapat berpindah antar form dengan cepat.

    Bagaimanapun juga, cara pemanggilan form pada contoh diatas akan menggunakan banyak alokasi memory, yang konsekuensinya dapat memperlambat proses start aplikasi.
    Untuk itu, pada saat design Anda harus menentukan form mana saja yang akan sering digunakan, form-form inilah yang dapat Anda panggil kedalam memory bersamaan dengan saat aplikasi dijalankan.

    Form-form yang jarang digunakan, dapat Anda panggil pada saat dibutuhkan saja.

    Control

    Didalam form terdapat control, dimana Anda harus mempertimbangkan seberapa banyak control diletakkan pada masing-masing form, mengapa? Anda pasti dapat menebak jawabannya, yaitu karena control pun menyita penggunaan memory.

    Anda dapat menentukan control mana saja yang perlu ada dalam sebuah form, jika memungkinkan, Anda dapat memisahkannya kedalam beberapa form yang dapat dipanggil oleh sebuah button atau menu.



    Happy Ending

    Seperti telah disinggung, membangun aplikasi bagaikan suatu seni membangun cerita film atau buku, tetapi khusus cerita dengan tema happy ending. Dimana semua tokoh yang terlibat merasakan kepuasan menggunakan aplikasi Anda. Tentu saja selalu terdapat beberapa rintangan kecil, tetapi dengan pemeliharaan dan perencanaan aplikasi yang matang, semua rintangan tersebut dapat diatasi. Semoga!

    Joko Nurjadi
    Sumber: Majalah PC Media 10/2006

    read full version ...

    Mitos IP Address Yang Keliru

    Posted by Joko Nurjadi

    Dibalik website-website yang mungkin kita kunjungi setiap hari - misalnya google.com, facebook.com, reviewmusik.com (hhhmmmmmm) - tersembunyi sederet angka yang dikenal dengan IP Address, contohnya reviewmusik.com ternyata memiliki IP 119.235.18.68. Yah mirip-miriplah dengan kalau kita mengatakan, rumah si Mamat ternyata ada di Jl. Selamat 313.

    Nah, tulisan ini membahas 2 mitos IP yang keliru, mudah-mudahan bermanfaat bagi pembaca.

    1. IP local/private tidak mungkin dilacak.

    Alkisah, Mr. Nurdin Ngetop datang ke warnet dan mengunjungi website reviewmusik.com, menulis sebuah comment provokatif dan berpikir si empunya reviewmusik.com tidak akan dapat melacak IP komputer warnet yang ia gunakan, paling-paling yang tertangkap adalah IP ISP warnet tersebut (IP publik).

    Nah, mitos tersebut salah. Karena kita masih dapat menelusuri IP local atau IP komputer tersebut. Caranya dengan mengambil paket header HTTP_X_FORWARDER_FOR yang dikirimkan oleh proxy server yang digunakan komputer tersebut. Cara ini berhasil HANYA JIKA 1) komputer client tersebut mengakses internet melalui proxy server, DAN 2) konfigurasi proxy server tersebut mengijinkan informasi HTTP_X_FORWARDER_FOR keluar.

    Cara lain, adalah dengan menggunakan instruksi Java. Salah satu website yang mengimplementasikan hal ini adalah http://ipaddresslocation.org, cara ini berhasil HANYA JIKA Anda menginstall plugin Java dan memperbolehkan Java Applet berjalan pada browser.

    2. IP dari Indonesia selalu berawalan 202.xxx.xxx.xxx

    Alkisah situs ngetop.com kelabakan dengan ulah hacker Indonesia dan memutuskan untuk memblokir seluruh IP yang memiliki format 202.xxx.xxx.xxx karena ngetop.com beranggapan IP dengan awalan (octet) 202 pasti IP dari Indonesia.

    Ini juga mitos yang salah, sebab penomoran IPv4 (yang banyak digunakan saat ini) tidak ada hubungannya dengan letak geografis. Faktanya adalah, 1) tidak semua IP berawalan 202 berasal dari Indonesia, dan 2) IP dari Indonesia bukan hanya berawalan 202. Anda dapat melihatnya daftar IP negara tertentu di http://www.ipaddresslocation.org/ip_ranges/get_ranges.php, pilih negara Indonesia dan Anda akan mendapatkan daftar IP (yang bukan hanya berawalan 202), sebaliknya coba pilih Australia, Anda akan mendapatkan daftar IP yang antara lain berawalan 202.

    http://jokonurjadi.blogspot.com/2009/08/mitos-ip-address-yang-keliru.html

    read full version ...