Berlanganan Artikel

RSS Feed Berlangganan posting via RSS FEED Atau berlangganan posting via email:

Friday, September 16, 2011

Preview hade-framework development

target pembaca : Advance

Masih tetap berambisi bikin opf/orm framework sendiri cari referensi sana sini,bahkan sampai 2 kali redesign , sekarang saya sudah cukup yakin dengan designnya.
Sekarang hade-framework sudah mampu menjalankan tugas dasarnya :D mari saya contohkan penggunaannya.

- Pertama yang anda lakukan adalah membuat Bussines Objectnya yang merupakan turunan dari THadeObject

uses
   hadeobject;
Type
  TTest = class(THadeObject)
  private
   FAge: integer;
   FLName: string;
   FName: string;
  public
   function Full_Name : String;
  published
   property First_Name: string read FName write FName;
   property Last_Name: string read FLName write FLName;
   property Age: integer read FAge write FAge;
  end;


Property yang ingin di mapping harus berada pada published section, property yang berada pada published section juga tidak harus di mapping ke schema database.
semisal anda hanya ingin First_Name dan Last_Name saja yang di mapping anda tidak perlu meremove property Age.

- Langkah berikutnya adalah melakukan Register Mapping ( uses unit hademapping ).

    GHadeMappingManager.RegisterMapping(TTest, 'person', 'OID', 'oid',
      ftInteger, 0, [ptkPK, ptkReadOnly]);

    GHadeMappingManager.RegisterMapping(TTest, 'person', 'Name',
      'first_name', ftVarchar, 25);

    GHadeMappingManager.RegisterMapping(TTest, 'person', 'Age', 'age', ftInteger);

    GHadeMappingManager.RegisterMapping(TTest, 'person', 'Last_Name',
      'last_name', ftVarchar, 25);


GHadeMappingManager adalah singleton function lebih detil bisa dilihat hademappingmanager.pas
interface dari RegisterMapping adalah

procedure RegisterMapping(const AObjClass: THadeObjectClass;
      const ATable, APropName, AColName: string; const AFieldType: THadeFieldType;
      const ALength: integer = 0; const ASetPtkInfo: TSetPtkInfo = []);


- Selanjutnya Register Connection ( uses unit hadeopfmanager,hadebroker )

    GHadeOPFManager.RegisterConnection('test', 'test.s3db',
      '', '', '', SQLDB_SQLITE);
    GHadeOPFManager.OIDStrategy := oidAutoInc;

code diatas berarti "Registrasikan koneksi dengan nama 'test' , 'nama DB','Host','username','password' dengan menggunakan broker SQLLite"

anda bisa mempunyai lebih dari satu koneksi dalam satu applikasi :D .
OIDStrategy := oidAutoInc berarti anda menggunakan PK(Primary Key) dengan strategy AutoIncrement fitur yang tersedia dihampir semua R/DBMS, anda juga bisa menggunakan oidGUID sebagai OIDStrategy, oidGUID menggunakan GUID(Global Unique Identifier) sebagai primary key nya yang disimpan sebagai string.

- Create/Read/Update/Delete Bussines Object
Untuk Melakukan CRUD pada Bussines Object anda harus menggunakan session, mungkin bagi sebagian orang penggunaan session cuma bikin ribet,tetapi sebenarnya penggunaan session sangat powerfull untuk melakukan transaksi,management koneksi dll.

uses
 hadeobject,
 hadeopfmanager,
 hademapping,
 hadession;
//..some code omitted for brevity
var
 MySession : THadeSession;
 obj : TTest;//class TTest yang tadi
begin
 MySession := GHadeSessionFactory('test');//session dengan koneksi 'test'
 obj := TTest.Create(71);//mengeset OID/pk dengan nilai 71
 Try
   MySession.read(obj);//sekarang obj = record di table person dengan OID = 71
   
   //kita update
   obj.First_Name := 'Test Doank';
   obj.MarkDirty;//tandai object ini adalah dirty( kotor dalam artian tidak sama dengan database )  
   MySession.save(obj);//sekarang record dengan OID 71 sudah terupdate.
end. 
untuk melakukan Create(Insert) sangat mudah dan sama seperti operasi update/delete

  //tanpa OID karena oidAutoInc , jika oidGUID tambahkan(uses) unit hadeoid
  //tmp := GHadeOID.getOID.getGUID; dan pass variable tmp ke TTest Constructor
  obj := TTest.create();
  obj.First_Name := 'Test';
  obj.Last_Name := 'Lagi'
  obj.Age := 76;
  MySession.save(obj);//tersimpan

  //untuk Delete cukup tandai object dengan MarkDelete
  obj.MarkDelete();
  MySession.save(obj);// record terhapus

- Transaction
Katakanlah anda mempunyai 2/lebih object yang harus di save(insert/update/delete) yang mana jika salah satu objectnya gagal maka keseluruhan object tersebut harus di rollback.

begin
 MySession.StartTransaction;
 Try
   //save/read operation
 except
   MySession.Rollback;
   //raise again?
 end;
 MySession.Commit;
end.

Session tidak perlu di free secara manual karena THadeSession adalah interface.
anda juga bisa menaruh Session di constructor suatu class dan session akan hidup sepanjang object dari class tersebut hidup.

well tentunya framework ini masih jauh untuk di release saya masih berhati-hati takutnya gagal lagi :D. nanti tak kabarin lagi kalo ada major improvement.

kalo mau ngulik sourcenya bisa di checkout di http://hd-framework.googlecode.com/svn/trunk/ dengan svn client kesayangan anda :D

Thanks happy coding.

Sunday, April 24, 2011

Good Object pascal book for beginner

Buku berjudul "Start programming using Object Pascal"
sebuah buku bagus dari motaz abdel azeem developer dari sudan,dan juga author dari freespider.
buku ini akan mengajarkan fundamental programming yang kuat untuk pemula,chapter pertama anda tidak akan melihat form designer men drag button lalu menulis code untuk event OnClick button itu :D. tapi anda harus berdarah2 terlebih dahulu memahami basic dari object pascal.
http://code.sd/startprog/index.html

Monday, April 18, 2011

Sepucuk Surat dari Pejuang Hamas (GAZA) Untuk Negeri INDONESIA


image


Untuk saudaraku di Indonesia, mengapa saya harus memilih dan mengirim surat ini untuk kalian di Indonesia. Namun jika kalian tetap bertanya kepadaku, kenapa? Mungkin satu-satunya jawaban yang saya miliki adalah karena negri kalian berpenduduk muslim terbanyak di punggung bumi ini, bukan demikian saudaraku?



Di saat saya menunaikan ibadah haji beberapa tahun silam, ketika pulang dari melempar jumrah, saya sempat berkenalan dengan salah seorang aktivis dakwah dari jama’ah haji asal Indonesia, dia mengatakan kepadaku, setiap tahun musim haji ada sekitar 205 ribu jama’ah haji berasal dari Indonesia datang ke Baitullah ini. Wah, sungguh jumlah angka yang sangat fantastis dan membuat saya berdecak kagum.

Lalu saya mengatakan kepadanya, saudaraku, jika jumlah jama’ah haji asal Gaza sejak tahun 1987 sampai sekarang digabung, itu belum bisa menyamai jumlah jama’ah haji dari negara kalian dalam satu musim haji saja. Padahal jarak tempat kami ke Baitullah lebih dekat dibanding kalian. Wah pasti uang kalian sangat banyak, apalagi menurut sahabatku itu ada 5% dari rombongan tersebut yang memnunaikan ibadah haji yang kedua kalinya, Subhanallah.

Wahai saudaraku di Indonesia,

Pernah saya berkhayal dalam hati, kenapa saya dan kami yang ada di Gaza ini, tidak dilahirkan di negri kalian saja. Pasti sangat indah dan mengagumkan. Negri kalian aman, kaya, dan subur, setidaknya itu yang saya ketahui tentang negri kalian.

Pasti ibu-ibu disana amat mudah menyusui bayi-bayinya, susu formula bayi pasti dengan mudah kalian dapoatkan di toko-toko dan para wanita hamil kalian mungkin dengan mudah bersalin di rumah sakit yang mereka inginkan.

Ini yang membuatku iri kepadamu saudaraku, tidak seperti di negri kami ini. Tidak jarang tentara Israel menahan mobil ambulance yang akan mengantarkan istri kami melahirkan di rumah sakit yang lebih lengkap alatnya di daerah Rafah. Sehingga istri kami terpaksa melahirkan di atas mobil, ya di atas mobil saudaraku.!

Susu formula bayi adalah barang langka di Gaza sejak kami diblokade 2 tahun yang lalu, namun istri kami tetap menyusui bayi-bayinya dan menyapihnya hingga 2 tahun lamanya, walau terkadang untuk memperlancar Asi mereka, istri kami rela minum air rendaman gandum.

Namun, mengapa di negri kalian, katanya tidak sedikit kasus pembuangan bayi yang tidak jelas siapa ayah dan ibunya. Terkadang ditemukan mati di parit-parit, selokan, dan tempat sampah. Itu yang kami dapat dai informasi di televisi.

Dan yang membuat saya terkejut dan merinding, ternyata negri kalian adalah negri yang tertinggi kasus aborsinya untuk wilayah Asia. Astaghfirullah. Ada apa dengan kalian? Apakah karena di negri kalian tidak ada konflik bersenjata seperti kami disini, sehingga orang bisa melakukan hal hina seperti itu? Sepertinya kalian belum menghargai arti sebuah nyawa bagi kami disini.

Memeang hampir setiap hari di Gaza sejak penyerangan Israel, kami menyaksikan bayi-bayi kami mati. Namun, bukanlah di selokan-selokan atau got-got apalagi di tempat sampah. Mereka mati syahid saudaraku! Mati syahid karena serangan roket tentara Israel!

Kami temukan mereka tak bernyawa lagi di pangkuan ibunya, di bawah puing-puing bangunan rumah kami yang hancur oleh serangan Zionis Israel. Saudaraku, bagi kami nilai seorang bayi adalah aset perjuangan kami terhadap penjajah Yahudi. Mereka adalah mata rantai yang akan menyambung perjuangan kami memerdekakan negri ini.

Perlu kalian ketahui, sejak serangan Israel tanggal 27 Desember 2009 kemarin, saudara-saudara kami yang syahid sampai 1400 orang, 600 di antaranya adalah anak-anak kami, namun sejak penyerangan itu pula sampai hari ini, kami menyambut lahirnya 3000 bayi baru di jalur Gaza, dan Subhanallah kebanyakan mereka adalah anak laki-laki dan banyak yang kembar, Allahu Akbar!

Wahai saudaraku di Indonesia,

Negri kalian subur dan makmur, tanaman apa saja yang kalian tanam akan tumbuh dan berbuah, namun kenapa di negri kalian masih ada bayi yang kekurangan gizi, menderita busung lapar. Apa karena sulit mencari rizki disana? Apa negri kalian diblokade juga?

Perlu kalian ketahui saudaraku, tidak ada satupun bayi di Gaza yang menderita kekurangan gizi, apalagi sampai mati kelaparan, walau sudah lama kami diblokade. Sungguh kalian terlalu manja! Saya adalah pegawai tata usaha di kantor pemerintahan HAMAS sudah 7 bulan ini belum menerima gaji bulanan saya. Tetapi Allah SWT yang akan mencukupkan rizki untuk kami.

Perlu kalian ketahui pula, bulan ini saja ada sekitar 300 pasang pemuda baru saja melangsungkan pernikahan. Ya, mereka menikah di sela-sela serangan agresi Israel. Mereka mengucapkan akad nikah diantara bunyi letupan bom dan peluru, saudaraku.

Dan Perdana Menteri kami, Ust Isma’il Haniya memberikan santunan awal pernikahan bagi semua keluarga baru tersebut.

Wahai saudaraku di Indonesia,

Terkadang saya pun iri, seandainya saya bisa merasakan pengajian atau halaqah pembinaan di negri antum (anda). Seperti yang diceritakan teman saya, program pengajian kalian pasti bagus, banyak kitab mungkin yang kalian yang telah baca. Dan banyak buku-buku pasti sudah kalian baca. Kalian pun bersemangat kan? Itu karena kalian punya waktu.

Kami tidak memiliki waktu yang banyak disini. Satu jam, ya satu jam itu adalah waktu yang dipatok untuk kami disini untuk halaqah. Setelah itu kami harus terjun ke lapangan jihad, sesuai dengan tugas yang diberikan kepada kami.

Kami disini sangan menanti-nantikan saat halaqah tersebut walau hanya satu jam. Tentu kalian lebih bersyukur. Kalian punya waktu untuk menegakkan rukun-rukun halaqah, seperti ta’aruf, tafahum, dan takaful disana.

Halafalan antum pasti lebih banyak daripada kami. Semua pegawai dan pejuang HAMAS disini wajib menghapal Surah Al-Anfal sebagai nyanyian perang kami, saya menghafal di sela-sela waktu istirahat perang, bagaimana dengan kalian?

Akhir Desember kemarin, saya menghadiri acar wisuda penamatan hafalan 30 Juz anakku yang pertama. Ia merupakan diantara 1000 anak yang tahun ini menghafal Al-Qur’an dan umurnya baru 10 tahun. Saya yakin anak-anak kalian jauh lebih cepat menghapal Al-Qur’an ketimbang anak-anak kimi disini. Di Gaza tidak ada SDIT (Sekolah Dasar Islam Terpadu) seperti di tempat kalian yang menyebar seperti jamur di musim hujan. Disini anak-anak belajar diantara puing-puing reruntuhan gedung yang hancur, yang tanahnya sudah diratakan, diatasnya diberi beberapa helai daun kurma. Ya, di tempat itu mereka belajar, saudaraku. Bunyi suara setoran hafalan Al-Qur’an mereka bergemuruh dianatara bunyi-bunyi senapan tentara Israel. Ayat-ayat jihad paling cepat mereka hafal, karena memang didepan mereka tafsirnya. Langsung mereka rasakan.

Oh iya, kami harus berterima kasih kepada kalian semua, melihat solidaritas yang kalian perlihatkan kepada masyarakat dunia. Kami menyaksikan aksi demo-demo kalian disini. Subhanallah, kami sangat terhibur. Karena kalian juga merasakan apa yang kami rasakan disini.

Memang banyak masyarakat dunia yang menangisi kami disini, termasuk kalian yang di Indonesia. Namun, bukan tangisan kalian yang kami butuhkan , saudaraku. Biarlah butiran air matamu adalah catatan bukti akhirat yang dicatat Allah sebagai bukti ukhwah kalian kepada kami. Doa-doa dan dana kalian telah kami rasakan manfaatnya.

Oh iya, hari semakin larut, sebentar lagi adalah giliran saya menjaga kantor, tugasku untuk menunggu jika ada telpon dan fax yang masuk. Insya Allah, nanti saya ingin sambung dengan surat yang lain lagi. Salam untuk semua pejuang-pejuang Islam dan ulama-ulama kalian.
Abdullah Al Ghaza
disadur dari : http://adaapasekarang.blogspot.com/2011/04/sepucuk-surat-dari-pejuang-hamas-gaza.html

Saturday, April 16, 2011

Configure freepascal Fast CGI application with nginx

Berawal dari gak mau pake CGI dan Apache yg boros memory...saya cari2 web server yang ringan dan low memory dan akhirnya pilihan jatuh pada nginx web server.
configure fast cgi di nginx tidak terlalu sulit bahkan lebih mudah dari pada fast cgi di apache, oke lets do it.

Sebagai demo Kita akan memakai contoh CGI application dari lazarus yaitu \components\fpweb\demo\echo . demo ini adalah CGI application tapi dengan mudah kita akan ubah menjadi fast cgi application.
buka echo.lpr dan rubah menjadi sebagai berikut :
program echo;

{$mode objfpc}{$H+}

uses
  fpWeb,fpfCGI, wmecho; // <== ubah fpcgi menjadi fpfcgi.

begin
  Application.Initialize;
  Application.Port:=9090; //<== tambahkan Port , Fast CGI app kita akan listening di port ini.
  Application.CreateForm(TEchoModule, EchoModule);
  Application.Run;
end. 
cool bukan?
sekarang kita buka file configuration dari nginx   /conf/nginx.conf
di root http kita tambahkan directive "upstream fastcgi"
    upstream fastcgi {
      ip_hash;
      server 127.0.0.1:9090; //<== address dan port dari fast cgi application
     // kita bisa tambahkan server lain untuk load balancing eg : server
    }
lalu di dalam directive "server" :
location /pas { // <== berarti http://example.com/pas
    fastcgi_pass fastcgi; //<== lihat upstream
    fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
    include fastcgi_params;
}
 simpan.
fast cgi app kita harus dijalankan terlebih dahulu sebelum ada request ke nginx.
simple double klik fast cgi app td.
lalu reload nginx (nginx -s reload) .pada browser ketik "http://localhost/pas".

viola!!


Referensi :
- Nginx HTTP Server ClĂ©ment Nedelcu packt Publishing  2010 ISBN 978-1-849510-86-8

Tuesday, March 8, 2011

hd-framework

Ceritanya lagi mau bikin OPF(Object Persistent Framework) Framework buat Freepascal/Lazarus.
berikut rencana fitur2nya :
- Multiple Connection (sudah)
- Implement Cache (belum)
- Mapping bisa via Config file atau embed di code.via config file sangat fleksible karena Mapping Attribute ke Column bisa dirubah tanpa Compile ulang (belum)
- banyak lg sih ide2 lainnya.

Tertarik mau bantuin? cekidot http://code.google.com/p/hd-framework/