Aktif Kembali

Prakata

Sudah lama, lebih dari setahun blog ini beku dan tidak bertambah konten, dan dalam setahun ini juga tidak ada perubahan yang signifikan dalam lingkungan hidup saya, kecuali ilmu sedikit bertambah dan berat badan banyak bertambah :D.

[foto perbandingan, tapi jangan dulu aah :D]

Naah, dapat dilihat kan, foto sebelah kiri adalah sewaktu saya masih muda, dan kanan adalah foto saya sekarang, getting bigger, isn’t it!? ahaha..
Setelah banyak yang terlewat, tentang teman-teman lulus wisuda pada 2010, beberapa adik tingkat 2007 juga lulus wisuda pada 2011, sekarang 2012 juga saya masih belum lulus, terhambat administrasi nilai, sayang sekali :(…

Tidak banyak waktu yang tersisa bagi kami angkatan 2006 di UPI, tinggal setahun menuju eksekusi 2013, dimana tidak akan ada lagi kesempatan untuk melanjutkan jika stagnan. Tapi alhamdulillah, masalah administrasi selesai, ramadhan ini akan banyak terjadi bimbingan, skripsi maupun spiritual (agar sedikit dramatis). Dan lebaran tinggal nunggu sidang, jika semua lancar, bismillahirrahmaanirrahiim…

Selanjutnya

Yup, seperti yang sudah saya sampaikan sebelumnya, tahun 2012 ini ada beberapa targetan ketat yang harus segera diselesaikan satu-persatu.

  1. Ramadhan skripsi
  2. Projek Rahasia (baca: menulis)
  3. Nikah #eh, aamiin
  4. Meluncurkan 2 produk sampai bulan desember (kode: #angkot #jalan)
  5. Juga mengelola dengan baik web ini, beserta web pribadi

Sip, tinggal dilaksanakan saja ;)

Stay Tuned!

Nilai Manusia, bukan Nyawanya…

Kembali ke beberapa tahun ke belakang yang saya tidak tahu tepatnya kapan, di zaman SMA, kisaran 2003-2006, yang pasti setelah saya mulai semakin peka terhadap hidup, bagaimana ia berjalan, bagaimana ia punya kejutan, dan bagaimana ia harus kita hadapi. Hidup yang sejak saat itu berjalan seiring dengan pikiran positif dari seseorang, sebuah keteguhan hati.

Saya sering berjalan-jalan dan melihat perbedaan diantara orang-orang yang saya temui, katakanlah ada yang beruntung, dan ada juga yang kekurangan, dan yang kekurangan itu bukan karena kurang usaha, tapi tidak cukup beruntung. Secara bijak kita bisa pandang itu sebagai keseimbangan, ada Sakit/Sehat, Besar/Kecil, Hidup/Mati, Kaya/Miskin.

Kemudian saya teringat berita di televisi, banyak terjadi peperangan, saling membunuh, saya tidak peduli untuk apa itu, tapi itu berlawanan dengan ajaran Islam, yang saya pegang,

Dan janganlah kamu membunuh jiwa yang diharamkan Allah melainkan dengan sesuatu yang benar.” Demikian itu yang diperintahkan kepadamu supaya kamu memahami. (QS. Al-An’am 151)

Oleh karena itu Kami tetapkan (suatu hukum) bagi Bani Israel, bahwa: barang siapa yang membunuh seorang manusia, bukan karena orang itu (membunuh) orang lain, atau bukan karena membuat kerusakan di muka bumi, maka seakan-akan dia telah membunuh manusia seluruhnya. (QS. Al-Maidah: 32)

Berarti nyawa manusia itu berharga, iya?!, itu kesimpulan yang saya dapat. Terpikir juga, kalau nyawa manusia se-berharga itu, sempat saya ingin berkorban, biar nyawa saya membantu orang lain yang kurang beruntung, misalnya saya berikan setahun hidup saya untuk ditukar dengan harta, untuk orang-orang kurang beruntung tersebut, yaah, pikiran sederhana remaja yang baru mengenal hidup, terlalu sederhana, tapi itu tulus.

Dan ternyata, setelah bertahun-tahun kemudian saya kembali berpikir, mana bisa itu terjadi, kejadian di bumi ini adalah sunatullah, dan pikiran tadi jelas diluar itu. Dan bukan nyawa yang ditukar dengan harta, tapi nilai yang ditukar dengan harta. Jika kita bernilai, maka kita bisa membagi hasil dari nilai kita dengan lingkungan kita. Nyawa manusia yang berharga adalah dari manusia yang paling bermanfaat untuk lingkungannya.

Dari Ibnu Umar bahwa seorang lelaki mendatangi Nabi saw dan berkata,”Wahai Rasulullah, siapakah orang yang paling diicintai Allah ? dan amal apakah yang paling dicintai Allah swt?” Rasulullah saw menjawab,”Orang yang paling dicintai Allah adalah orang yang paling bermanfaat buat manusia dan amal yang paling dicintai Allah adalah kebahagiaan yang engkau masukkan kedalam diri seorang muslim atau engkau menghilangkan suatu kesulitan atau engkau melunasi utang atau menghilangkan kelaparan. Dan sesungguhnya aku berjalan bersama seorang saudaraku untuk (menuaikan) suatu kebutuhan lebih aku sukai daripada aku beritikaf di masjid ini—yaitu Masjid Madinah—selama satu bulan. Dan barangsiapa yang menghentikan amarahnya maka Allah akan menutupi kekurangannya dan barangsiapa menahan amarahnya padahal dirinya sanggup untuk melakukannya maka Allah akan memenuhi hatinya dengan harapan pada hari kiamat. Dan barangsiapa yang berjalan bersama saudaranya untuk (menunaikan) suatu keperluan sehingga tertunaikan (keperluan) itu maka Allah akan meneguhkan kakinya pada hari tidak bergemingnya kaki-kaki (hari perhitungan).” (HR. Thabrani)

Wallahu’alam.

OpenGovernment : Negeri di Atas Awan

Di bayang wajahmu
Kutemukan kasih dan hidup
Yang lama lelah aku cari
Dimasa lalu
Kau datang padaku
Kau tawarkan hati nan lugu
Selalu mencoba mengerti
Hasrat dalam diri
Kau mainkan untukku
Sebuah lagu tentang negeri di awan
Dimana kedamaian menjadi istananya
Dan kini tengah kaubawa
Aku menuju kesana
Ternyata hatimu
Penuh dengan bahasa kasih
Yang terungkapkan dengan pasti
Dalam suka dan sedih

Katon Bagaskara ~ Negeri di atas awan

Teringat masa SD dulu, sekitar tahun 90-an akhir saya sering mendengar lantunan mas Katon di radio dengan lagu yang kemudian jadi kesukaan saya ini, ditambah lagi lagu berjudul Dinda, sampai sekarang masih terngiang di telinga, memang lagu yang bermakna.

Mungkin sekilas ada pertanyaan, lalu hubungan dengan OpenGovernment apa?, ya, kalau kita pernah mendengar istilah di zaman ini all on the Cloud, dimana si Cloud ini adalah Internet, kemudian OpenGovernment adalah A Country in the Cloud, saat semua tentang negara ini disimpan di Internet, terbuka untuk konsumsi publik, agar kita tahu si manager (government) membawa kita ke arah mana, kebaikankah, atau mungkin dengan hanya memikirkan diri sendiri menjerumuskan kita.

OpenGovernment sendiri hanyalah sebuah konsep pemerintahan dimana pelaku pengambil kebijakan (disini tentu pemerintah) membuka diri atas apa yang dia lakukan kepada masyarakat, dengan maksud transparansi informasi, karena hey, negara ini bisa bertahan karena pajak pemasukan dari kita juga. Sudah sewajarnya kita tahu apa yang mereka lakukan dengan kerja keras kita bersama. Agar kemudian tidak (lagi) digunakan oleh para koruptor untuk menyimpan kekayaan sendiri, juga tidak ada kasus penggelapan pajak, tidak perlu ada lagi sogok menyogok, kita bangun negara dengan keterbukaan, bersama…

Rakyat, disinilah jawaban untukmu…

Lihat Lebih lengkap spesifikasi(ide)-nya disini..

The Open Government Dialogue

dan sisihkan waktu juga untuk baca ini

Government Steps Into The Cloud

Cappucinno Framework, Aplikasi Web dengan rasa Desktop

Selamat datang hari senin :)

Beberapa pekan lalu ada tugas untuk matakuliah DataMining, dan pemrogramannya tidak boleh menggunakan PHP. Hmm, padahal saya sudah cukup terbiasa dengan itu. Solusinya mungkin Java, Web Java, atau apapun lah… Kemudian saya riset, menemukan SproutCore dan Cappucinno, lalu penelitian dimulai.

Cappucinno Web Framework, itu sebutannya. Mengusung bahasa yang baru dan aneh buat saya, turunan dari Javascript, Objective-J. Sintaksnya mirip-mirip dengan Objective-C, dengan maksud bukan untuk meniru Objective-C, tapi untuk menambah Abstraction Layer pada Javascript dan programmernya. Karena turunan dari Javascript, jadi Objective-J bisa menjalankan script Javascript apapun, tapi agar lebih fleksibel (tidak bertabrakan dengan reserved words milik Javascript), maka sintaksnya dirombak total jadi mirip Objective-C. Sayangnya saya bukan programmer asal MacOS, saya bermula dengan Windows, dan sekarang saya di Linux~rasa Ubuntu. Jadi perlu extra efforts untuk mempelajari bahasa asing ini…

Hasil Riset

Naah, dari beberapa pekan itu, kurang lebih 2 pekan saya sudah mulai menyesuaikan diri dengan Objective-J. Ini beberapa hal yang saya dapat.

Dibandingkan dengan sproutcore, yang harus menggunakan Ruby gem untuk menginstallnya, Cappucinno terhitung lebih praktis, tinggal download di halaman utama, 5.3mb versi 0.8.1.

Disitu disertakan API Documentation, NewApplication, yang aplikasi Hello World yang siap diotak-atik, juga bootstrap.sh yang dapat dijalankan di shell untuk menginstall cappucinno tools (perlengkapan bagi para programmer yang serius :D)

Struktur Cappucinno Starter

Tapi jangan khawatir, tanpa cappucinno tools-pun ini sudah dapat dijalankan, langsung lewat web-browser. Silahkan gunakan Firefox untuk ke direktori file (Tempat Cappucinno Starter)/NewApplication/index.php, atau dengan praktis drag file tersebut, dan drop di Firefox.

Aplikasi HelloWorld bawaan, NewApplication

tanpa disentuh-pun aplikasi ini sudah jalan.

Catatan: Untuk Google Chrome, aplikasi tidak akan berjalan dengan baik tanpa disimpan di web server, hal ini dikarenakan Chrome hanya mau menerima XmlHttpRequest dari web saja, tidak dari file.

Editor

Untuk kemudian mengubah alur program, di direktori yang sama terdapat file AppController.j, file ini yang dapat kita edit, menggunakan TextMate di Mac, Notepad++ di Windows, atau dengan rasa Linux, saya gunakan Gedit. Memang Gedit tidak begitu bagus untuk Objective-J, tapi tak apa lah (baca:bahasa baru).

Untuk langsung melihat apa yang bisa kita ubah, kita cek isi AppController.j


 

/*
 * AppController.j
 * NewApplication
 *
 * Created by You on April 9, 2010.
 * Copyright 2010, Your Company All rights reserved.
 */

@import

@implementation AppController : CPObject
 {
 }

- (void)applicationDidFinishLaunching:(CPNotification)aNotification
 {
 var theWindow = [[CPWindow alloc] initWithContentRect:CGRectMakeZero() styleMask:CPBorderlessBridgeWindowMask],
 contentView = [theWindow contentView];

var label = [[CPTextField alloc] initWithFrame:CGRectMakeZero()];

[label setStringValue:@"Hello World!"];
 [label setFont:[CPFont boldSystemFontOfSize:24.0]];

[label sizeToFit];

[label setAutoresizingMask:CPViewMinXMargin | CPViewMaxXMargin | CPViewMinYMargin | CPViewMaxYMargin];
 [label setCenter:[contentView center]];

[contentView addSubview:label];

[theWindow orderFront:self];

// Uncomment the following line to turn on the standard menu bar.
 //[CPMenu setMenuBarVisible:YES];
 }

@end
 

dan ubah bagian

 ...
 [label setStringValue:@"Hello World!"];
 ...
 

menjadi

 ...
 [label setStringValue:@"Hai Om!"];
 ...
 

Apa yang kemudian tampil?, Ya!, teks berubah menjadi Hai Om!, ini perubahan paling sederhana yang bisa dilakukan, dan lihat hasilnya :D

Setelah Hello World diubah :)

Kesimpulan

Untuk pengenalan mungkin sekian dulu, pembuatan aplikasinya akan saya kenalkan nanti, setelah beberapa riset kedepan :)

Lanjutkan sendiri

untuk melanjutkan sendiri, saya sarankan untuk melihat daftar tutorialnya di

http://cappuccino.org/learn/tutorials/

http://cappuccinocasts.com/

http://www.nice-panorama.com/Programmation/cappuccino/

 

 

Animasi di Dojo Toolkit

Sebenarnya saya sedikit ragu tentang apa dulu yang saya perlihatkan setelah posting pembuka beberapa waktu lalu, tapi akhirnya saya tentukan saja kalau yang akan kita bahas sekarang adalah Animasi menggunakan Dojo Toolkit. Dari animasi paling dasar, hingga ke animasi tingkat menengah.

Langsung Beraksi

Tanpa basa-basi, dengan hanya memanggil dojo.js saja, sebenarnya kita sudah bisa melakukan animasi dasar. Mari kita buktikan

<html>
<head>
    <title>Animasi Dasar menggunakan Dojo Toolkit</title>
    <script type="text/javascript" src="../js/dojo-toolkit/dojo/dojo.js"></script>
</head>
<body>
    <a href="#" id="hilang">hilangkan</a> | <a href="#" id="tampil">tampilkan</a>
    <div id="teks-1">teks yang akan dihilangkan</div>
    <script type="text/javascript">
        // memastikan jika dojo sudah terpanggil
        dojo.addOnLoad(function(){

            // memasang event handler saat link hilangkan diklik
            dojo.connect(dojo.byId('hilang'), 'onclick', function(){
                // hilangkan teks
                dojo.fadeOut({
                    node: 'teks-1',
                    duration: 500
                    }).play();
            });

            // memasang event handler saat link tampilkan diklik
            dojo.connect(dojo.byId('tampil'), 'onclick', function(){
                // tampilkan teks
                dojo.fadeIn({
                    node: 'teks-1',
                    duration: 500
                }).play();
            });

        });
    </script>
</body>
</html>

Dan inilah hasilnya, jika kita meng-klik link hilangkan maka teks dibawah akan fade out, dan sebaliknya jika kita meng-klik link tampilkan, teks dibawah itu akan tampil kembali dengan efek fade in.

Ini gambarnya:

Efek yang Lain

Efek yang lain bisa menggunakan animateProperty, yaitu animasi manipulasi property css. Tidak jauh berbeda dengan contoh pertama, tapi sekarang kita coba dengan ukuran font

<html>
<head>
    <title>Animasi Dasar 2 (animateProperty) menggunakan Dojo Toolkit</title>
    <script type="text/javascript" src="../js/dojo-toolkit/dojo/dojo.js"></script>
</head>
<body>
    <a href="#" id="besar">besarkan</a> | <a href="#" id="kecil">kecilkan</a>
    <div id="teks-1">teks yang akan dimainkan</div>
    <script type="text/javascript">
        // memastikan jika dojo sudah terpanggil
        dojo.addOnLoad(function(){

            // memasang event handler saat link besarkan diklik
            dojo.connect(dojo.byId('besar'), 'onclick', function(){
                // besarkan teks
                dojo.animateProperty({
                    node: 'teks-1',
                    properties:{
                        fontSize: 34
                    }
                    }).play();
            });

            // memasang event handler saat link kecilkan diklik
            dojo.connect(dojo.byId('kecil'), 'onclick', function(){
                // kecilkan teks
                dojo.animateProperty({
                    node: 'teks-1',
                    properties:{
                        fontSize: 16
                    }
                    }).play();
            });

        });
    </script>
</body>
</html>

Ini gambarnya:

Masih Belum Cukup?

Sebenarnya dengan menggunakan animateProperty kita bisa mencoba banyak variasi animasi, tapi jika kita ingin lebih praktis lagi, kita bisa menggunakan fungsi tambahan dari modul dojo.fx (modul untuk easing, wipeIn, wipeOut, slideTo, Toggler, chain, dan combine).

Tapi untuk contoh, kita akan tampilkan animasi wipeOut dan easing dengan chain

<html>
<head>
    <title>Animasi Menengah menggunakan Dojo Toolkit</title>
    <script type="text/javascript" src="../js/dojo-toolkit/dojo/dojo.js"></script>
    <style type="text/css">
        #box-1, #box-2{
            display:block;
            position:relative;
            width:100px;
            height:100px;
            max-height:200px;
            background-color:#d55;
        }
    </style>
</head>
<body>
    <a href="#" id="wipeout">wipeOut</a>
    <div id="box-1"></div>
    <br />
    <div id="box-2"></div>
    <script type="text/javascript">
        // load terlebih dahulu dojo.fx dan easing
        dojo.require('dojo.fx');
        dojo.require('dojo.fx.easing');


        // memastikan jika dojo sudah terpanggil
        dojo.addOnLoad(function(){

            // memasang event handler saat link wipeOut diklik
            dojo.connect(dojo.byId('wipeout'), 'onclick', function(){

                // animasi box-1 disimpan di variabel box1
                var box1 = dojo.fx.wipeOut({
                    node: 'box-1',
                    duration: 500,
                    easing : dojo.fx.easing.quadIn
                });

                // animasi box-1 disimpan di variabel box1
                var box2 = dojo.fx.wipeOut({
                    node: 'box-2',
                    duration: 500,
                    easing : dojo.fx.easing.quadIn
                });

                dojo.fx.chain([box2, box1]).play();

            });

        });
    </script>
</body>
</html>

Ini gambarnya:

Masih Kurang Juga?!

Tapi jika masih kurang memukau, kita bisa menampilkan animasi yang lebih kompleks lagi dengan memanggil modul dari Dojox, yaitu dojox.fx (modul untuk wipeTo, sizeTo, slideBy, crossFade, highlight, fadeTo, dll).

Sebagai contoh, kita coba tampilkan crossFade dan highlight

<html>
<head>
    <title>Animasi Menengah 2 menggunakan Dojo Toolkit</title>
    <script type="text/javascript" src="../js/dojo-toolkit/dojo/dojo.js"></script>
    <style type="text/css">
        #box-1, #box-2{
            display:block;
            position:relative;
            width:100px;
            height:100px;
            max-height:200px;
            background-color:#d55;
        }
    </style>
</head>
<body>
    <a href="#" id="crossfade">crossFade</a>
    <div id="box-1"></div>
    <div id="box-2" style="opacity:0"></div>
    <script type="text/javascript">
        // load terlebih dahulu dojox.fx
        dojo.require('dojox.fx');

        // memastikan jika dojo sudah terpanggil
        dojo.addOnLoad(function(){

            // memasang event handler saat link crossFade diklik
            dojo.connect(dojo.byId('crossfade'), 'onclick', function(){

                // highlight link crossFade
                dojox.fx.highlight({
                    node: this
                }).play();

                // animasi crossFade box-1 dan box-2
                dojox.fx.crossFade({
                    nodes: ['box-1', 'box-2'],
                    duration: 500,
                }).play();


            });

        });
    </script>
</body>
</html>

Ini gambarnya:

Tambahan Eksperimen

Dojox sudah menyediakan modul dojox.fx yang lengkap, tapi jika anda masih ingin tahu lebih dalam lagi, silahkan anda cek di halaman test animasi dojo toolkit, bagian dojox.fx (tersedia juga scroll, Shadow, flip, split, text, dan masih berkembang).

Kemana Lagi Setelah Ini?

Masih banyak yang bisa dibongkar tentang animasi menggunakan Dojo Toolkit ini, semuanya bisa diatur sesuai dengan keperluan kita. Tapi jangan berhenti disini, untuk lebih lanjut saya sarankan untuk ke sumber-sumber berikut:

Menggabungkan Query Menggunakan Union di MySQL

ilustrasi

Prakata

Mungkin kita pernah membuat model tabel yang rumit seperti ini, tabel yang bisa memiliki atribut sama namun sengaja dipisahkan, tapi pada akhirnya kita harus menjalankan 2 query terpisah untuk memanggilnya. Sebut saja kita mempunyai tabel bukutamu dengan atribut (id, alamat_ip, nama, judul, pesan, tanggal), namun pada masa penggunaan ternyata banyak yang mengirimkan pesan spam yang tidak kita inginkan, dan solusi yang terpikir pada saat itu adalah membuat tabel spam (dengan atribut yang sama dengan tabel, tapi kita menyortir terlebih dahulu dengan filter anti-spam yang kita buat, atau mungkin menggunakan Akismet), dengan maksud agar si spam bisa ditinggalkan saat backup, dan tabel bukutamu dalam keadaan bebas spam.

Di sistem pengelolaan (backend), kita bisa melakukan query masing-masing terhadap kedua tabel untuk ditampilkan terpisah, tapi melihat dua halaman terpisah untuk maksud yang sama (dalam hal ini membedakan yang mana buku tamu dengan spam) bukanlah solusi yang bagus.

Dibuat tabel pengelolaan terpisah
kedua tabel dibuat terpisah dengan pengelolaan terpisah

Solusi

Dalam kasus seperti ini bisa dilakukan tiga solusi;

  1. Gabungkan kedua tabel secara fisik menjadi satu dan ditambah atribut (…, is_spam) sehingga nantinya query akan dibatasi dengan ‘ WHERE is_spam = 0‘ (dimana kita memilih hanya bukan spam)
  2. Gabungkan kedua tabel dalam query menggunakan UNION sehingga yang kita lakukan hanya sekali query saja
  3. Lakukan dua query untuk mengambil data dari kedua tabel dan menggabungkannya nanti di pemrograman.

Tapi sesuai judul, kita akan menggunakan pilihan nomor 2 saja.

UNION Beraksi

Jadi, setelah kita sepakat dengan memilih solusi nomor dua diatas, maka tinggal kita selesaikan dengan sihir UNION saja.
Meskipun sudah dibahas sedikit, tapi sebelum lebih jauh biar saya jelaskan tambahan mengenai UNION.
Pada dasarnya, union adalah fungsi untuk menggabungkan dua atau lebih query SELECT dalam satu hasil keluaran saja. Dengan catatan kedua query SELECT tersebut harus memiliki jumlah field yang sama.
Langsung kita coba, struktur tabel bukutamu dan spam yang saya gunakan adalah sebagai berikut

CREATE TABLE bukutamu
(
    id INT PRIMARY KEY AUTO_INCREMENT,
    alamat_ip VARCHAR(16),
    nama VARCHAR(50),
    judul VARCHAR(50),
    pesan VARCHAR(250),
    tanggal TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
)

Begitu pula dengan tabel spam, tidak ada yang dirubah selain nama tabelnya.
Untuk itu, dengan query ini…

(SELECT id, nama, judul, pesan, tanggal, '0' as is_spam FROM bukutamu)
UNION
(SELECT id, nama, judul, pesan, tanggal, '1' as is_spam FROM spam)
ORDER BY tanggal DESC;

kedua SELECT akhirnya akan bersatu dan menambahkan satu field is_spam yang bernilai 0 jika datang dari tabel bukutamu, dan bernilai 1 jika datang dari tabel spam.
Sifat normalnya UNION adalah selalu DISTINCT, jadi jika ditemukan record yang sama tidak akan ditampilkan kedua-kalinya.

pengelolaan terpusat pada satu tabel
Pengelolaan Bukutamu dan Spam disatukan

Kesimpulan

Jadi UNION berguna untuk menggabungkan beberapa query SELECT untuk menghasilkan satu keluaran saja.
Batasan/aturan yang dapat kita simpulkan diantaranya…

  • Query yang disatukan harus menghasilkan jumlah field yang sama.
  • Nilai record yang sama dalam UNION akan disatukan, dan tidak akan tampil dua kali (sama ketika kita menggunakan DISTINCT)
  • Statement ORDER menggunakan alias pada setiap SELECT, bukan nama field sebenarnya.
  • Statement ORDER (tanpa LIMIT pada salah-satu SELECT) harus disimpan di akhir, karena jika disimpan didalam salah-satu SELECT tidak akan berpengaruh.
  • Jika menggunakan statement LIMIT (dan atau ORDER), harus ditentukan didalam salah-satu SELECT atau LIMIT total.

Untuk batasan standar penggunaan saya rasa ini cukup memenuhi, namun jika anda merasa ini masih kurang, saya pastikan informasi lebih lengkap terdapat di MySQL Manual : Union Syntax.

Kemana Lagi Setelah Ini

MySQL Manual : Union Syntax

Dijit Theme Tester

Sekilas Mengenai Dojo Toolkit

Dojo Toolkit Logo
Dijit Theme Tester

Penggugah Selera

Siapa yang sekarang tidak tahu bahwa perkembangan web sangatlah pesat, juga bagian-bagiannya, CSS sudah sampai ke CSS3, HTML sudah HTML5, juga Javascript masing-masing dikembangan sesuai dengan kebutuhan manusia, yang ringan namun esensi, seperti membaca koran, ensiklopedi, bahkan sampai kehidupan sosial kini bisa dilakukan lewat Internet.

Semuanya dapat dilakukan dengan teknologi web 2.0, yang diantaranya Javascript untuk meningkatkan Pengalaman / Kesan Penggunaan (UX ~ User eXperience)

Javascript memang sudah lama berkembang, setelah dianggap anak tiri dalam dunia pemrograman sebelum tahun 2000, akhirnya penggunaan Javascript kembali dilirik setelah Google mempopulerkan AJAX (Asynchronous Javascript and XML) di fitur Google Suggest-nya.

Awal dari Dojo Toolkit

Beberapa tahun setelah kebangkitan Javascript, 25 April 2004, ditulislah kode yang kemudian menjadi cikal bakal Dojo Toolkit, sebuah Javascript Framework yang menyediakan penyederhanaan fungsi scripting dengan javascript sampai ke pembuatan RIA (Rich Internet Application) yang kompleks.

Lisensi dari Dojo Toolkit yang memungkinkan agar komunitas dapat berkontribusi dan dimasukkan kedalam versi resmi menyebabkan Dojo Toolkit menjadi kesatuan yang utuh, yang bisa dikatakan unggul pada bidangnya.

Paket modular sangat membantu para web developer untuk membuat web yang interaktif dengan struktur yang mudah dimengerti. Ditambah lagi sebuah kesatuan antara Javascript library, dengan Widgeting system memperkokoh posisi Dojo Toolkit sebagai Javascript Framework sebenarnya.

Penyederhanaan Javascript

Selain Dojo Toolkit, mungkin kita pernah mendengar ataupun bahkan mencoba jQuery, mootools, prototype, scriptaculous, ExtJS (sekarang Sencha), YUI, dll. Yang kesemuanya adalah mengenai javascript. Tapi masing-masing memiliki kelebihan dan kekurangan dalam satu sisi dan lainnya.

Pada penggunaan praktis dan cepat jQuery terhitung paling populer, namun yang disediakan oleh jQuery ini terbatas pada fungsi DOM, Ajax, animasi, dan fungsi dasar lainnya, untuk widget harus menggunakan jQuery UI, sedangkan fungsi lainnya terdapat banyak plugin yang tersebar di penjuru internet.

Mootools, prototype, scriptaculous, berperan kurang lebih sama dengan jQuery, menyediakan fungsi dasar DOM, Ajax, animasi dan beberapa fungsi dasar lain, dan bisa diberikan fungsi lain dengan menyisipkan plugin yang tersebar di internet.

ExtJS (Sencha) dan YUI bisa dikatakan lebih mirip dengan Dojo Toolkit, menyediakan fungsi-fungsi dasar, juga menyediakan widgeting system.

Dojo Toolkit di Dunia Nyata

Didukung penuh oleh SitePoint dalam pengembangannya, juga disisipkan dalam Zend Framework sebagai library javascript, berarti kemampuannya sudah tidak bisa dianggap remeh lagi. Digunakan juga oleh IBM, AOL untuk bagian dari infrastuktur mereka.

Dilihat dari jumlah pengguna yang banyak dari perusahaan menengah keatas, maka Dojo Toolkit cocok bila dikatakan sebagai Ajax Framework untuk enterprise.

Dojo Toolkit untuk Mobile

Dengan terus berkembangnya teknologi web ini, juga tren yang mulai mengarah ke mobile device, Dojo Toolkit semenjak versi 1.5 menyertakan dojox.mobile agar pengguna mobile device merasa betah dan nyaman dalam menggunakan aplikasi yang dibangun dengan Dojo Toolkit. Meskipun dojox.mobile baru lahir, tapi dengan kekuatan komunitas, dan konsistensi paket bundel, Dojo Toolkit tidak bisa dianggap remeh.

Mari Mulai

Memanggil Dojo Toolkit bisa dikatakan sangatlah mudah untuk komputer yang terkoneksi ke internet, cukup dengan satu baris kode saja di file HTML.

<script src="http://ajax.googleapis.com/ajax/libs/dojo/1.5/dojo/dojo.xd.js"></script>

Dengan memanggil dari sumber CDN Google, sekarang fungsi Dojo sudah bisa digunakan.

<script type="text/javascript">
dojo.ready(function(){
    // disini fungsi dojo bisa dipanggil
});
</script>

tapi jika anda tidak terkoneksi ke internet, yang bisa dilakukan adalah mendownload terlebih dahulu paket Dojo Toolkit di dojotoolkit.com, dan panggil dalam baris kode berikut

<script src="<i>path_ke_dojo</i>/dojo.js"></script>

Dengan begitu, dojo sudah bisa digunakan, tapi mengingat bahwa dojo digunakan untuk empowering the web, alangkah baiknya jika path tersebut mengarah ke http web server (Apache, Nginx, IIS).

Ke Mana Lagi Sekarang

Jika anda masih belum puas tentang awal ini, sumber-sumber dibawah ini juga bisa digunakan sebagai referensi lanjutan.

Sebenarnya anda tidak perlu mencari lagi referensi lain, karena setiap pekannya saya akan jelaskan satu dan lain hal tentang Dojo Toolkit di blog ini.

Ikuti

Get every new post delivered to your Inbox.

%d blogger menyukai ini: