J.a.i.m’s Diary

Trik menyiasati kodifikasi nomor dokumen yang dinamis

Ada kasus yang cukup menggelitik yang pernah saya temui dalam proses pengembangan aplikasi Invoicing: perusahaan memiliki cukup banyak pelanggan/customer dan dalam menerbitkan dokumen invoice, perusahaan menerapkan bentuk format penomoran dokumen invoice yang berbeda-beda untuk tiap-tiap pelanggan yang ada. Kasus ini aslinya sebenarnya terselesaikan dengan trik yang saya buat dengan menggunakan bahasa pemrograman delphi, namun kali ini saya akan mencoba mengupasnya dengan memanfaatkan python. :)

Studi Kasus

Adalah satu hal yang lumrah dalam penerbitan dokumen invoice perusahaan menerapkan kodifikasi penomoran untuk setiap dokumen invoice yang diterbitkan, sebagai contoh: 30912/INV/EXP/III/2010. Hal ini dilakukan untuk mempermudah manajemen dan pengaturan atas dokumen yang dibuat. Permasalahannya adalah bagaimana jika kodifikasi tersebut bersifat dinamis, dalam artian bergantung pada pelanggan-nya, dalam arti misalnya: untuk pelangan PT. DAUN BUAH menggunakan format dokumen 30912/EXP/MAR/2010, sementara untuk PT. SEGARA PERKASA berformat 30912/EXP/03/2010, dan untuk PT. ABADI NUSA menggunakan format 30912/EXP/INV/2010. Hal ini tentunya akan menjadi kasus yang cukup menggelitik untuk dipecahkan.
(more…)

Dealing with Windows Vista weird behaviour

Yesterday, I was shocked receiving a phone call from my boss reporting the application I wrote were unable to run on Windows Vista. Actually I know there were sort of problems reported on existing applications failed to run on from online developers network, but none that I aware of since we do not have any windows vista ever deployed on our company’s infrastructure, and it continues for years until yesterday. Now, my boss’s notebook were installed with Vista and suppose the application could runs on it also.

It is quite hard to start of, mainly because I do not have any windows vista installed on my desktop, nor on my notebook. The only way is trying to analyze the problem from the exception log file he sent to me, then I can find of and start with the main source line where the problem occured:


  InitializeSecurityDescriptor(@Sd,SECURITY_DESCRIPTOR_REVISION);
  SetSecurityDescriptorDacl(@Sd,true,nil,false);
  Sa.nLength := SizeOf(Sa);
  Sa.lpSecurityDescriptor := @Sd;
  Sa.bInheritHandle := true;
  m_Handle := CreateFileMapping(INVALID_HANDLE_VALUE,
                @Sa, PAGE_READWRITE OR SEC_COMMIT,
                0, m_Size, PChar(FileName));

  if m_Handle = 0 then
    raise EMemoryMappedFileException.Create(SCreateError);

Not knowing what I should do with this line since I can not debug it to know it’s behaviour on Vista, I try to search on google and did find some workaround to deal with, but none of them proved to works. Does diabling the UAC (User Access Control) or run the application on Administration mode is the last solution? i hope not, I still believe there were another better way to deal with.

Any suggestion are welcome.

Delphi: Memanfaatkan LDAP sebagai single-sign-on

Barangkali kita pernah pusing mengalami masalah dengan implementasi system yang terdiri dari beberapa aplikasi dimana tiap-tiap aplikasi memanajemen informasi user secara sendiri-sendiri, pada masa terdahulu dengan menggunakan model Client/Server, kasus yang sama itu sebenarnya bisa diselesaikan dengan memanfaatkan otentikasi RDBMS untuk memfasilitasi kebutuhan penyediaan otorisasi user yang tersentralisir, namun hal ini dapat dikatakan cukup riskan karena membawa resiko security tambahan.

Salah satu solusi yang ditawarkan sebagai pemecahan atas kasus ini adalah dengan memanfaatkan a LDAP sebagai penyedia layanan otentikasi pengguna secara tersentralisir. Dengan memanfaatkan LDAP, manajemen user, password, dan informasi-informasi yang terkait lainnya dapat dilakukan secara tersentralisir, aplikasi hanya menyediakan mapping atas role, dan group yang diijinkan untuk mengakses fitur-fitur tertentu dari aplikasi tersebut. Saat ini ada cukup banyak alternatif perangkat lunak server LDAP yang bisa digunakan:

  • Microsoft Actice Directory Service perangkat lunak ini terintegrasi dengan Windows mulai versi 2000 ke atas.
  • OpenLDAP Pemain lama, stabil dan terbukti berperforma baik, hanya sayang dukungan binary untuk OS Windows nampaknya dianaktirikan.
  • Microsoft ADAM, perangkat lunak Active Directory yang mandiri, ringan, dan memiliki fitur yang cukup untuk memenuhi kebutuhan secara umum.
  • OpenDS, salah satu alternatif pilihan server berbasis Java, pada dasarnya saya sangat suka kemudahan yang ditawarkan OpenDS untuk melakukan manajemen pengguna, control panel bawaannya telah memiliki form-form yang sangat memudahkan pengguna tanpa harus dipusingkan terlebih dulu atribut-atribut yang terdapat pada LDAP.
  • Apache Directory, perangkat lunak ini sederhananya adalah yang paling saya sukai, karena fitur yang ditawarkanny, dan terlebih karena memiliki Apache Directory Studio, tool di sisi client yang sangat ampuh dalam menangani kompleksitas manajemen LDAP secara mudah. Hanya saja versi yang terbaru dari ApacheDS (1.5.x) masih terbilang belum stabil, namun kendati demikian untuk operasional sehari-hari dalam lingkup internal network, sejauh ini saya tidak menemui masalah apapun.

(more…)

Interfacing Delphi dan Java

Java sebagai bahasa pemrograman aplikasi bisnis enterprise menawarkan begitu banyak ragam alternatif solusi yang beberapa di antaranya sudah mencapai taraf kematangan yang cukup baik terutama untuk kebutuhan aplikasi berbasis multi-tier, sebut saja TopLink yang saat ini menjadi standar persistent API di java, kemudian Spring, Atomikos, dan begitu banyak lainnya yang tidak mungkin disebutkan satu persatu dalam blog ini. Java juga menarik digunakan sebagai sarana pemasaran karena plethoria-nya yang begitu luas. Sementara itu Delphi, khususnya untuk digunakan sebagai bahasa pemrograman untuk middleware belum memiliki ragam pilihan seperti yang terdapat di Java, namun demikian, karena sifatnya sebagai native code, Delphi memungkinkan kita membuat middleware server yang memiliki performa dan stabilitas yang mengungguli middleware sejenis yang dibuat dengan menggunakan Java.

Ragam solusi yang terdapat di java sangat menarik dan terlalu sayang untuk tidak dimanfaatkan, namun permasalahannya, bagaimana jika kita sudah memiliki sebuah middleware server yang dibangun dengan delphi? Memportingnya ke java jelas bukanlah sebuah solusi yang mudah karena itu bisa berarti menulis ulang keseluruhan sistem dari awal. Solusi yang paling memungkinkan tentunya adalah menginterfacekan middleware server yang dibuat dengan delphi tersebut dengn Java, dengan kata lain meng-embbed java virtual machine ke dalam middleware server Delphi sehingga memungkinkan kita memanfaatkan java dalam sistem yang kita buat dengan menggunakan Delphi.
(more…)

Membuat Aplikasi Modular secara Dinamis

Aplikasi yang bersifat modular sebenarnya tidaklah asing saat ini, dengan memecah kompleksitas software ke dalam sejumlah modul akan memudahkan developer memaintain lifetime aplikasi yang dibuatnya secara lebih baik, hal ini karena developer dapat lebih memfokuskan permasalahan pada modul-modul yang ada. Delphi secara RAD sebenarnya sudah mempermudah developer untuk menyusun aplikasi ini sebagai modul-modul yang disusun baik dengan memanfaatkan TDataModule ataupun TForm. Namun seringkali pula kita terjebak dalam proses pangil memanggil modul satu dengan modul yang lain yang biasanya dilakukan secara langsung seperti contoh berikut:


  with TForm2.Create(Self) do
  try
    ShowModal;
  finally
    Free;
  end;

Tidak salah sebenarnya, namun proses panggil memanggil seperti ini menjadikan aplikasi menjadi kompleks, karena modul pemanggil sebagai aplikasi utama harus menyertakan pula unit atas modul-modul yang akan dipanggil. Program berskala yang lebih besar semacam dan kompleks akan melibatkan puluhan, ratusan, atau bahkan ribuan modul di dalamnya, apakah untuk program semacam ini semua modul tersebut harus disertakan? tentunya akan lebih baik bila modul-modul itu dapat dipanggil secara dinamis dan otomatis oleh pemanggil dengan mudah. Kita cukup membuat modulnya, meregistrasikannya, dan recompile. Aplikasi utama akan secara otomatis menampilkan modul baru tersebut. :)

Dynamic modular application

(more…)

« Older Posts
 

About Me

Jaimy Azle My name is
Jaimy Azle, hufflepuff, I am a software developer with Delphi and C/C++ as major programming language. Living in Ungaran, Jawa Tengah.

Search

Categories:

Tag Cloud

Friends

Interests

Archives:

Meta:


Get Firefox!
Perhatian: Informasi yang terdapat disini bener-bener hanya merepresentasikan cerita, pengalaman, ataupun pandangan yang merupakan opini pribadi dari saya sebagai ego. Segala hal yang bersifat pandangan ke depan sebenarnya lebih bersifat spekulatif dan bisa saja berobah meski saya bukan bunglon.