Reyza

tenang, senang, sederhana
See also: Other Geeks@INDC

Public

September 2010 - Posts

AAT : Automatic Audit Trail

image

Mrs. Smith : Tadi mencet apaan sih? kok sampai hancur begini?

Mr. Smith : Hmmm…..ngga tau…..lupa..

Mrs. Smith : Coba cek, log aplikasinya….gw pengen tahu apa yang tadi lo lakuin.

Mr. Smith : Memang ada log-nya?

Mrs. Smith : What!?!!! Jadi aplikasi yang lo buat tidak ada history setiap yang dilakukan user? Tidak ada Audit Trails???! OMG

Mr. Smith : Habis bikinnya susah, males.

Mrs. Smith : Kata siapa susah? coba liat paparan di bawah ini!

{Audit Trails}

Apaan sih Audit Trails? Secara singkat mungkin bisa dijelaskan sebagai “sesuatu” yang dapat menyimpan data history dari kegiatan CRUD (create, retrieve, update, delete) yang dilakukan oleh user saat menggunakan aplikasi.

Data apa saja yang mestinya disimpan? Data yang disimpan adalah 4W :

  • Who : user mana yang melakukan aksi.
  • What data : table dan record mana yang menjadi “korban” dari aksi tersebut.
  • What happened : aksi apa yang dilakukan, create kah? retrieve kah? update kah? atau delete?
  • When : kapan aksi tersebut dilakuan.

{Media Penyimpanan}

Kejadian-kejadian tersebut mesti disimpan pada media yang gampang digunakan, sebagai contoh dengan memanfaatkan tabel pada database. Kira-kira akan seperti ini struktur tabel yang akan digunakan untuk menyimpan data Audit Trails ini.

image

Kalau malas membuat sendiri, bisa mengunduh script-nya di sini.  Sedangkan dimisalkan salah satu nama tabel yang akan di-log adalah SecretData.image

Dengan detail atribut seperti berikut ini.

image

{DoddleAudit – Audit Trail fot LINQ to SQL}

Biar hidup enak, ngga pusing bikin Audit Trail sendiri, maka segera menuju ke http://doddleaudit.codeplex.com, project ini sangat bermanfaat untuk membuat “audit” secara otomatis. Sesuai titel dari sub-judulnya, maka project ini ditujukan bagi pengguna LINQ to SQL.  Jadi bagi pengguna LINQ to SQL, yang telah mempunyai LINQ to SQL Classes (DBML) tinggal menambahkan Doddle.Linq.Audit sebagai reference pada project tempat file DBML disimpan, sebagai contoh dapat dilihat pada gambar di bawah ini.

image

Kemudian modifikasi agar Base Class dari LINQ to SQL Classes adalah Doddle.Linq.Audit.LinqToSql.AuditableDataContext.

image

Maka akan dapat dilihat baris seperti berikut ini.

image

Selanjutnya dapat ditambahkan barisan kode berikut ke dalam LINQ to SQL Classes.

protected override void InsertAuditRecordToDatabase(EntityAuditRecord record)
{
    AuditRecord audit = new AuditRecord();
    audit.Action = (byte)record.Action;
    audit.AuditDate = DateTime.Now;
    audit.AssociationTable = record.AssociationTable;
    audit.AssociationTableKey = record.AssociationTableKey;
    audit.EntityTable = record.EntityTable;
    audit.EntityTableKey = record.EntityTableKey;
 
    audit.UserName = System.Web.HttpContext.Current.User.Identity.Name;
 
    foreach (ModifiedEntityProperty av in record.ModifiedProperties)
    {
        AuditRecordField field = new AuditRecordField();
        field.MemberName = av.MemberName;
        field.OldValue = av.OldValue;
        field.NewValue = av.NewValue;
 
        audit.AuditRecordFields.Add(field);
    }
 
    this.AuditRecords.InsertOnSubmit(audit);
}

Terakhir adalah menambahkan method untuk mendefinisikan “tabel-tabel” mana saja yang akan di-audit, nama method tersebut adalah DefaultAuditDefinitions, dengan isi seperti berikut ini.

   1: protected override void DefaultAuditDefinitions()
   2: {
   3:     this.Organisasis.Audit();
   4: }

Pada baris ke-3 dapat dilihat bahwa “tabel” yang di-audit adalah “tabel” Organisasi.  Selanjutnya apabila ada “tabel-tabel” lain yang ingin di-audit tinggal menambahkan ke dalam method ini.

{Hasil}

Berikut adalah “hasil” dari audit ini, di bawah ini adalah isi dari tabel utama audit, yaitu AuditRecords.

image

Pada data di atas, dapat dilihat tabel apa, kapan, oleh siapa dan aksinya, aksi direpresentasikan dengan nomor dari 0-2 :

  • 0, adalah aksi insert.
  • 1, adalah aksi edit.
  • 2, adalah aksi delete.

Sedangkan pada tabel AuditRecordField dapat detail dari tabel AuditRecords yang berisi data “sejarah” dari setiap aksi.

image

Sebagai contoh, apabila aksinya adalah insert maka dapat dilihat nama field yang digunakan beserta nilainya.  Apabila aksi yang dilakukan adalah update, maka akan dapat dilihat nama field yang diedit, nilai lama dari field tersebut beserta nilai barunya.  Sedangkan bila terjadi aksi delete maka dapat dilihat nilai dari field-field dari record yang dihapus.

{Tetapiiiiiiiii…………………..}

Sangat mudah bukan? Tetapi…..kalau diperhatikan dari tabel yang di-audit, yaitu tabel Organisasi mempunyai struktur seperti berikut.

image

Dapat dilihat bawah primary-key dari tabel ini yaitu OrganisasiID bertipe int/integer.  Bagaimana apabila tipe data dari field primary-keynya bukan integer? Jawaban dari pertanyaan ini adalah sesuai dari kutipan yang dapat dibawa pada http://doddleaudit.codeplex.com, yaitu :

Limitations
 
Any tables you want to audit must have one (and only one) Primary Key field, which is of type "int".
Depending on demand for this feature I will begin exploring ways around this, including GUID primary keys and composite keys.

Untungnya ini adalah community project yang source-codenya dapat digunakan untuk dimodifikasi sesuai kebutuhan. Sampai nanti di blog selanjutnya yang akan memaparkan bagaimana memodifikasi agar tidak hanya primary-key bertipe integer saja yang dapat di-audit dengan DoddleAudit ini.

Selamat menikmati akhir pekan.

Share this post: | | | |
Posted: Sep 26 2010, 01:06 AM by reyza | with 3 comment(s)
Filed under: , ,
Windows Phone 7 Dev Tool : kalau ada yang offline kenapa harus web installer

Yes…Windows Phone 7 Development Tool sekarang sudah mencapai RTM, bukan CTP…bukan BETA…tetapi (sekali lagi) RTM (release to manufacture). Artinya versi Beta siap di-uninstall dan saatnya menginstall versi RTM.

Tetapi….bagi yang mempunyai bandwidth kaya keong…

image

Maka proses installasi Windows Phone 7 Develompment Tool yang besarnya 350-an MB sungguh menyebalkan, dan harus berpikir puluhan kali untuk melakukannya. Akanlah lebih baik kalau ada installer versi offlinenya, walau ukurannya besar dan bandwidth cekak pasti akan langsung diunduh tanpa pikir panjang lain.

Untunglah dari informasi http://www.windowsvalley.com/windows-phone-developer-tools-final-rtw-offline-iso-image-and-training-kit-download-now/, telah tersedia image ISO agar para developer windows phone 7 bisa membakarnya ke cd dan melakukan installasi secara offline dengan tenang. Selain itu dengan sekali unduh maka dapat dibagi-bagikan ke teman-teman yang lain yang antusias untuk mengembangkan aplikasi untuk windows phone 7.

Berikut adalah link ISO Windows Phone 7 RTM : http://go.microsoft.com/fwlink/?LinkId=201927

Setelah mengunduh dan menginstall, jangan lupa untuk mengunduh training kit :

image

image

Selamat menikmati sambil menonton video-video promo peluncuran Windows Phone 7 di sini.

Share this post: | | | |
Posted: Sep 22 2010, 11:41 PM by reyza | with 3 comment(s)
Filed under:
Latah pakai IE9

Males nulis, jadi cukup foto2 saja dan captionnya :)

01

tarik tab ke taskbar maka web fav anda akan "ter-pin" pada taskbar.

 

02 

tag "video" berjalan dengan lancar di IE9 dibanding FF...nyem nyem...(ada foto, biar ga dikira hoax), di FF ‘rada ngadat’ (baca : cuma berjalan 3 detik dan berhenti).

 

03 

Buat yang suka sombong dengan “GPU” yang kenceng dan OK, bisa centang bagian ini :)

 

04 

Ribuan pengguna MacBook telah dibohongi oleh IE9, developer tools yang akan muncul setelah menekan tombol F12 hoax!! (harusnya tekan fn + F12) :P

 

05

Bagi designer yang selalu dihantui oleh MARGIN dan PADDING di IE, maka anda dapat melihat wujudnya dengan menekan fn + F12 (baca : F12)

 

06 

Bagi yang ingin tahu add-ons mana yang bikin lambat, tinggal buka jendela “Manage Add-ons” nanti ketahuan nilai Load time & Navigation time.

 

07

Wah…IE9 kalah kenceng nih buka halaman ini, masa FF lebih duluan menampilkan icon-icon (padahal IE9 sudah disuruh curang, start duluan :P) Karena mengira karena cache, maka test diulang…tetap FF duluan, tapi untuk tag ‘VIDEO’ … tetep IE9 yang lebih kencang :) soal animasi….IE lebih smoooooooooooooth…….mangstabs!!!!!!!

Animation on IE9….Aweeeeeeeeeeeeesome!!!

 

08 

di IE9, ada video..tinggal klik kanan, maka ada pilihan Save file.

09

di FF, ada video..tinggal klik kanan, maka keluar Silverlight (loooh???!)

 

10

Nge-KASKUS…tetap lebih kenceng pakai IE9 tentunya dibanding FF. Hari gini lelet buka Kaskus, apa kada agan-agan di Kaskus ntar, siap-siap aja ente ditimpuk bata merah.

 

11

IE9…apa yang telah kamu lakukan???! (lihat lingkaran merah) Tetapi setelah tulisan diklik, dengan sendirinya dia berpindah ke arah normal. (ester-egg??!) :)

 

12

Eiiiits….jangan salah, ini bukan Google Chrome loh….tapi IE9 :P

 

13

Terakhir mencoba yang “bener-bener” HTML5, di IE9 berjalan haluuuuuuuuuuuuuuus dan muluuuuuuuuuuuuuus, dibanding tetangga sebelah kanannya, pemakaian memori pun lebih kecil lumayan lebih kecil 50MB :)

Sekarang IE9 telah mencapai BETA, apa jadinya kalau sudah RTM (RTW or RTM ya?)

Share this post: | | | |
Posted: Sep 16 2010, 08:12 PM by reyza | with 4 comment(s)
Filed under: ,