Archive

Archive for October, 2011

Memqiu, PHP Memory Query Helper Using Sqlite

October 30, 2011 Leave a comment

I need a way to do an in memory sql query in PHP. Something like linq. Sqlite has an in memory database feature that exactly can do that.

This class is just a wrapper so that I can focus more in inputing and querying data rather than have to deal with the schema. The motivation is that using SQL statements, in my opinion, are ridiculously way more friendly in data filtering tasks rather than if we create separate functions in codes.

It goes like this..

Read more…

Categories: PHP MySQL

MP3EI

October 25, 2011 Leave a comment

Master Plan Percepatan dan Perluasan Pembangunan Ekonomi Indonesia (MP3EI) 2011-2025 adalah sebuah dokumen yang berisikan strategi kebijakan pemerintah RI dalam ambisinya untuk menjadikan Indonesia masuk ke dalam kelompok negara maju pada tahun 2025 ataupun 2045 (100 tahun kemerdekaan Indonesia).

Artikel ini hanya ingin membagikan tautan ke situs Bappenas dimana kita bisa mendownload beberapa materi tentang MP3EI. Saya juga merasa MP3EI ini akan banyak menjadi referensi baik itu bagi pihak internal pemerintah maupun pihak eksternal masyarakat umum dan swasta. Itu jika konsisten dijalankan.

Dokumen lengkapnya
http://www.bappenas.go.id/node/165/3184/master-plan-percepatan-dan-perluasan-pembangunan-ekonomi-indonesia-mp3ei-2011-2025/

Materi presentasi yang saya temukan dari om google kalau malas baca yang diatas
http://www.bappenas.go.id/get-file-server/node/10638/

Saya tertarik untuk mengetahui bagaimana hubungan perencanaan yang telah dibuat ini dengan demografi dan kapabilitas generasi kita pada masa itu. Generasi yang melek informasi dan teknologi di tahun 2025 apakah akan membawa korelasi positif? Apakah mentalitas kita akan berubah dari negara konsumen menjadi negara produsen dan pengusaha di masa itu? Bagimana teknologi informasi akan semakin berperan untuk mewujudkan Indonesia yang semakin padu? Apakah selalu waktu yang akan menjawab semua pertanyaan ini?

:)

Kompetisi vs Keutamaan

October 7, 2011 Leave a comment

Beberapa minggu terakhir saya banyak berinteraksi dengan dosen di kelas mengenai strategi bisnis utamanya dalam hubungannya dengan strategi IS/IT di perusahaan. Banyak filosofi ternyata yang saya dapati dalam diskusi-diskusi tersebut, dan saat ini saya ingin menyimpan dahulu berbagai teori tersebut untuk menuliskan pendapat saya sendiri tentang kompetisi, terutama setelah membaca tulisan dari Bruce D. Henderson yang berjudul The Origin of Strategy dalam sebuah buku lama dari Harvard Business Review yang saya temukan secara tidak sengaja di perpustakaan pusat Universitas Indonesia.

Persaingan/kompetisi (Competition), awal-awal paragraf artikel tersebut yang menyebut Hukum Gause tentang Kompetisi Penyingkiran (terjemahannya mungkin seperti itu) menyadarkan saya bahwa kompetisi adalah sebuah sifat alamiah manusia sejak sebelum dilahirkan sejak masih berupa sel sperma dalam masa pembuahan dan untuk seumur hidupnya, manusia akan selalu berkompetisi.

Kompetisi menjadi pembahasan dalam bidang manajemen bisnis, karena kebanyakan konsep yang sedang saya pelajari akan bermuara kemari, bagaimana memenangkan kompetisi bisnis. Jika kompetisi memang menjadi naluri primitif manusia, apakah kita tidak terjebak dalam pola pikir alamiah kita tersebut dalam mencari cara untuk memahami bisnis atau apapun itu?

Mungkin artikel dari Alfie Kohn berjudul Competition vs Excellence dapat sedikit mewakili rasa penasaran saya. Artikel tersebut berbicara dalam konteks pendidikan, namun sebagaimana konteks biologi mewakili pemahaman kita di bidang lain, alternatif yang ditawarkan oleh pakar dalam bidang pendidikan mungkin dapat juga mewakili pemahaman saya.

Keutamaan (excellence), bisa jadi merupakan jawaban dari cara kita melihat sesuatu. Beberapa hal dapat kita jadikan pelajaran bahwa motivasi meraih keutamaan lebih dahsyat efeknya dibanding pihak-pihak yang memiliki motivasi sekedar berkompetisi. Ada perbedaan yang mencolok dalam biografi orang besar atau perusahaan besar dengan pihak-pihak yang lainnya, mereka mengejar keutamaan, bukan memenangi kompetisi, namun pada akhirnya menjadi pemenang dalam “kompetisi” yang secara mental nampaknya tidak mereka ikuti.

Konsekuensi dari pertanyaan ini adalah ada kemungkinan dalam pembelajaran saya ke depan, mungkin saya akan semakin yakin melengkapi diri dengan teori keutamaan lebih daripada teori kompetisi.

Sebagai penutup tulisan ini, saya ingin mengajak saudara memikirkan, apakah keutamaan memang dapat dijadikan alternatif ataupun pelengkap konsep kompetisi? Atau adakah konsep lain yang dapat menjadi alternatif dasar pola pikir kita memahami perilaku kita dalam segala bidang?

The Wonder Method in PHP

October 4, 2011 Leave a comment

This just for fun script…

Imagine when we create a mockup for front end script that use a back end class which the methods are not yet to be ready… After a while, back and forth changing editor’s tabs just to create an empty method in that class, we start wondering (thus make the title The Wonder Method) if there some mechanism to call the yet nonexistence method from our script… heck, I even want return value from it!! and as a bonus, execute it when it ready… is it too trivial? but there have to be! it’s php! or is it already something built-in? but anyway, now we have! :)

It make use the officially magic method __call in php that triggered when invoking inaccessible methods in an object context. Below is the example:

<?php
 class Animal
 {
   function __call($name, $arguments) {
     if(substr($name, 0, 5) == 'call_'){
       $name = substr($name, 5);
       if(method_exists($this, $name)){
         return call_user_func_array(array($this, $name), $arguments);
       }
       else{
         $argc = count($arguments);
         if($argc > 0){
           return $arguments[$argc - 1];
         }
        return null;
       }
     }
     else{
       trigger_error("Fatal error: Call to undefined method $name", E_USER_ERROR);
     }
    }
 }
 $animal = new Animal();
 $type = 'dog';
 echo $animal->call_showSound($type, 'the dog is barking wuff wuff (imaginary result)').'<br />';
 ?>

Here, we will havebelow as the result:

the dog is barking wuff wuff (imaginary result)

now add following method when we ready to made changes to the class:

public function showSound($type)
{
 switch($type){
 case 'dog': return "the dog is barking wuff wuff (real result)";
 case 'cat': return "the cat is miauwing miauwww (real result)";
 }
 return 'unknown animal (real result)';
}

Here, it should be return like this:

the dog is barking wuff wuff (real result)

Description, first in the __call method body, we inspect whether there are call to specific method name pattern for this wonder method we defined ourself (call_xxxxxx).

If the method is not existed yet, it will return the last argument as the mockup result from the real method later. As the method has exists, it will executed it and simulate a normal method call from the script. The wonder method name pattern can be useful when we want to keep track for clean up the code later.

I will left the implementation of this wonder thingy for what you think best… my guess, by not implement it at all… :P

Ok, that’s just about it! Happy coding everyone… :)

Categories: PHP MySQL

Catatan Manajemen Data Berdasarkan Environment

October 2, 2011 Leave a comment

Pertama-tama, saya membagi cara manajemen data menjadi 2 jenis:

  1. Pengelolaan secara Offline, misalnya file excel, csv
  2. Pengelolaan secara Online, misalnya RDBMS server

Pengelolaan diatas berarti melakukan aktifitas umum manajemen data seperti dibawah ini dimana masing-masing cara diatas memiliki kelebihan dan kekurangannya:

  • Membuat pengelompokkan data menjadi file atau tabel (cara Offline lebih simple)
  • Memasukkan data (cara Offline lebih simple)
  • Mengupdate data (cara Online lebih mudah)
  • Menghapus data (cara Online lebih mudah)
  • Memvalidasi data (cara Online lebih mudah)

Kedua metode diatas diakses menggunakan aplikasi kostum. Dengan demikian cara Offline cocok digunakan untuk data input saja, namun untuk tugas lainnya, saya lebih prefer menggunakan cara Online. Kelebihan Offline adalah cara input data yang sangat mudah di file excel atau csv, dan manajemen file dalam hirarki file sistem. Sedangkan cara Online (RDMS) kita dipusingkan oleh cara membuat tabel-tabel dalam skala database yang kadang perlu seorang database arsitek berpengalaman untuk membuat struktur data kita bagus.

Hal yang pernah saya lakukan adalah mencoba mengelola cara Offline secara online menggunakan aplikasi, namun hanya bagus untuk menampilkan saja, meskipun mengintegrasikannya kemudian ke server RDBMS tidak sulit, namun tetap memakan waktu.

Metode Alternatif

Menggunakan metode Hybrid adalah salah satu alternatif, yaitu menggunakan file database yang dapat diakses melalui perintah SQL, misalnya SQLite. Namun sekalipun dapat mengeliminasi kelemahan 2 metode lain, ia justru merupakan entitas asing di kedua environment tersebut. Di environment Offline, ia tidak cukup fleksibel untuk dikelola seperti halnya file dan di lingkungan Online, saya lebih memilih langsung dengan sebuah database server. Metode ini cocok memang untuk aplikasi Offline.

Metode lain yang paling tradisional, atau malah tidak tepat dibilang sebagai metode, adalah Integrasi. Metode ini bisa dikatakan memilih menggunakan cara yang paling mudah untuk sebuah environment untuk kemudian dibuat pola migrasi datanya. Menurut saya itu lebih baik jika kita tidak ingin bergantung pada suatu metode tertentu. Hal lain yang paling berperan adalah metode Integrasi adalah Controller/Driver. Untuk masing-masing metode yang hendak diintegrasikan, sebaiknya kita telah memiliki alat kontrol yang dapat digunakan untuk mengelola data sesuai fungsinya.

Tujuan

Meskipun masing-masing teknik sebenarnya memiliki kelebihan dan kekurangannya masing-masing. Tujuan dari catatan ini adalah hendak menemukan sebuah Pattern Normalisasi yang dapat diterapkan dalam RDBMS untuk mengelola data semudah dan secepat metode Offline.

Saya beranggapan bahwa konsep Normalisasi saat ini cukup baik namun tidak praktis sehingga muncul lagi teori denormalisasi dan sebenarnya tersebunyi di dalam logika kita sebuah Pattern Normalisasi lain (dengan konvensi penamaan dan peletakan tabel dan kolom) yang lebih tepat sehingga kita dapat memiliki struktur data relational yang dapat dikelola secara cross-domain hingga level tabel. Dimana distribusi pada level tabel menurut saya adalah yang paling moderat antara machine-friendly dan human-friendly dalam mengelola data (mungkin saat ini dalam ilmu database telah ditemukan model distribusi data hingga level kolom – noSQL?).

Categories: Software Development
Follow

Get every new post delivered to your Inbox.