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!!

Read more

dayPerpus 2.0 Sistem Informasi Perpustakaan





dayPerpus 2.0 Sistem Informasi Perpustakaan

Fitur :
1.Cetak Kartu Anggota

2.Capture Photo via Webcam dan barcode supported. Pengelola perpustakaan bisa menggunakan webcam untuk mengambil Photo Anggota sehingga anggota tidak perlu membawa foto saat mendaftar. Barcode juga bisa digunakan untuk proses peminjaman sehingga mempercepat proses peminjaman buku.

3.Menu ISBN (International Standard Book Number) digunakan sebagai panduan pencatatan buku agar pengindentikasian buku bisa sejalan dengan standar perpustakaan nasional.

4.Pengaturan DENDA yang memungkinkan pengelola perpustakaan mengatur Anggota agar anggota lebih disiplin dalam mengembalikan buku.

5.Otoritas User. Menu yang digunakan untuk proses pengaturan user yang boleh menggunakan program yang dapat diatur sesuai dengan Group atau kelompok pengguna sehingga lebih aman dari proses manipulasi data oleh user yang tidak diberi kewenangan.

6.Backup & Restore database yang mudah sehingga user tidak perlu takut kehilangan data jika terjadi kerusakan pada komputer.

7.Network Supported. dayPerpus dapat digunakan dalam jaringan sehingga bisa digunakan untuk berbagi pakai data perpustakaan dalam satu jaringan komputer.

8.User Friendly

9.dan masih banyak lagi.
Software ini menggunakan Firebird 2.5 sebagai Database nya.
jika ingin menggunakannya dalam jaringan client/server cukup install firebird di komputer servernya saja,lalu dari client tinggal diatur database ke database yang berada di server.

Download
- Manual Penggunaan (Donlot dan baca terlebih dahulu)
- Firebird 2.5
- dayPerpus Setup (Trial 15 hari)
Read more

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.
Read more

FeedReader 3.14 Open Source RSS Feed Desktop



RSS Feed(Really Simple Syndication Feed) ,pada tau RSS Feed donk?yang belum tau silahkan klik link tadi.
disini saya tidak akan menjelaskan apa itu rss feed karena saya yakin anda pasti lebih tau dari saya.saya cuma mau bagi-bagi  feeed reader desktop yang free.nih situs resminya http://feedreader.com ,dengan software ini anda dapat berlangganan artikel situs/blog favorite anda dan di update setiap ada entry baru jadi anda tidak perlu membookmark situs blog/situs favorite anda di browser.cara penggunaannya pun sangat mudah ada dua cara:
1.langsung memasukan alat rss ke feedreader dengan cara menekan tombol F3 lalu masukan alamat rss nya.
2.langsung dari browser,sebuah web yang mempunyai RSS pada  navigation toolbarnya bertanda seperti yang anda lihat di navigation toolbar anda sekarang



Anda tinggal mengklik tanda itu lalu jika situs itu mempunyai 2 rss/atom klik salah satunya: atau biar lebih gampang deh,pada browser anda(Firefox ya)klik Tools-->Option-->Tab Application,perhatikan screen shoot berikut: lalu klik Ok selesai.



silahkan download feedreader nya:



Semoga bermanfaat
Read more

KooMail Alternatif Mail Client



Kenalin nih KooMail sebuah software Mail Client sebagai alternatif Microsoft Office Outlook,saya sendiri sudah lama mengunakan KooMail alasannya KooMail ini lebih ringan dari pada Outlook tapi dengan fitur yang luar biasa.
Interfacenya pun good looking,bisa dipakai untuk Feed reader jga,emoticons,mudah dalam penggunaan,dan yang paling keren KooMail ini Free.KooMail ini buatan Programmer China sepertinya.. ya udah lah gak usah basa-basi silahkan bagi yang berminat download dari server softpedia:
Cetak Artikel Ini
Read more

Firebird embeded server


Firebird embeded server adalah database firebird yang dapat di akses tanpa running service firebird server. firebird embed server ini sangat cocok jika kita mengembangkan aplikasi dengan database firebird yang digunakan untuk satu komputer saja, jadi user tidak perlu menginstall firebird server di komputernya. tapi tidak bisa digunakan untuk arsitektur client-server.
kita hanya perlu mendistribusikan sedikitnya 4 buah File yaitu:
  1. fbembed.dll akan di rename menjadi fbclient.dll.
  2. icuin30.dll.
  3. icudt30.dll.
  4. icuuc30.dll
File-file yang di distribusikan dapat berbeda tergantung versi firebird yang di pakai, contoh pada firebird 1.5 file-file yang diperlukan adalah fbembed.dll dan ib_util.dll . feedreader,Tips Explorer adalah beberapa software yang menggunakan firebird embed server ini.
Untuk mendapatkan fbembed.dll anda bisa mendownloadnya dari sf nya firebird.atau jika anda menggunakan firebird 2.0 anda tidak perlu repot mencarinya karena saya sudah upload fbembed.dll(udah di rename jadi fbclient.dll)+ 3 file yang lainnya.
fbembed.zp(1.20 mb)
Referensi
http://www.firebirdsql.org/manual/fbmetasecur-embedded.html http://www.firebirdsql.org/manual/ufb-cs-embedded.html
Read more

Penjaringan Error secara global (Catching Exception)


Pada saat mengoperasikan windows pasti/mungkin anda pernah mengalami error yang tidak diketahui biasanya windows akan memunculkan sebuah window/jendela/dialog yang bertulisan "sory bla bla bla" lalu ada beberapa buah button kalo gak salah report to microsoft,continue,details>>>.
atau yang aplikasi berbasis web seperti pesbuk dengan kalimat khasnya "maaf terjadi kesalahan,kami akan segera memperbaikinya". dan aplikasi2 lain yang menerapkan "catching exception"  atau apalah itu namanya.
to the point aja(males nulis) berikut ada source code tentang bagaimana menjaring error yang kadang tidak  kita duga sebelumnya. silahkan pelajari source codenya.
Read more

Archive