Showing posts with label logic. Show all posts
Showing posts with label logic. Show all posts

12/16/2007

Update FlySoft dan Situs X, Dec16, 2007

Perubahan pada situs FlySoft reservation system pada teknik validasi yang digunakan. Ini mengatasi problem banyaknya field yang tak terhandle oleh inisiasi variabel dengan query string ataupun dengan javascript karena adanya exception pada beberapa field input. Perubahan pada Situs X pada teknik pemanggilan / query. Pembatasan Query Pembatasan query selain dengan paging juga dengan menghindari pemanggilan wildcard bintang untuk mewakili 'segala field' pada tabel yang dimaksud. Efek sampingnya adalah script yang lebih panjang karena harus menyebut sebanyak jumlah field yang diperlukan, tapi dengan pengurangan waktu pemanggilan halaman, meskipun tidak terlalu signifikan. Caching by Files Perubahan lain pada metode caching halaman per username. Caching diperlukan untuk menentukan mana konten yang sudah dibaca dan mana yang belum. Sebelumnya digunakan tabel caching yang akan bertambah isinya saat seorang user membuka halaman. Tetapi penambahan tidak akan dilakukan jika user tsb sudah pernah membukanya, melainkan hanya diupdate isinya saja. Secara matematis, perbandingan jumlah cache dengan satu isi konten adalah sebanyak jumlah username per isi konten. Ini yang ikut andil dalam memperberat halaman. Saat ekspor tabel terakhir, total file hasil ekspor cache adalah 1.67 MB. Dengan pengubahan metode caching yang meng-generate ke file, dihasilkan jumlah file sebanyak jumlah konten dikali jumlah user yang telah membuka, tetapi dengan size yang jauh lebih kecil (isinya hanya sebaris per file). Checking terakhir menemukan ukuran total file hanya berkisar 100-an kilobyte (satu berbanding lebih dari 10 kali lipat!). Script exporter dari tabel cache ke file telah dibuat, yang dengan sangat terpaksa harus di-run dua kali (ascending dan descending) disebabkan banyaknya isi yang melebihi waktu eksekusi script maksimal (setting pada Apache httpd). Cara validasi baru mulai digunakan. Cara ini mengecek input-input tanpa meninggalkan halaman form. Jadi, saat dilakukan validasi, halaman form tetap terbuka sehingga tak perlu memanggil ulang halaman form-nya dengan mempersiapkan nilai-nilai inisial -- untuk mengurangi pengetikan ulang -- tentunya. Cara ini mirip dengan ajax dalam hal menghindari terjadinya pemindahan halaman kecuali memang benar-benar urgent, dan dalam hal set errorMessage pada satu bidang textField (ajax biasa menggunakan non text-field, melainkan SPAN atau DIV). How It Works?

Secara teknis, proses yang dibutuhkan dalam validasi ini adalah :

  • Mendefinisikan iframe yang digunakan sebagai lokasi validasi. Nama variabel ditentukan. Visibility dibuang dengan mengganti ukurannya saja (1x1 piksel sudah cukup tersembunyi).
  • Mengganti target dari form menuju iframe tersembunyi, yang mana default seharusnya adalah ke halaman baru pada window yang sama atau _self.
  • Membuat text-field readonly pada halaman yang berisi form, yang mana text-field ini digunakan untuk menampilkan pesan respon. Pesan respon ini diset dari halaman validasi berdasarkan hasil pengecekan dan ditampilkan pada halaman yang berisi form. Text-field ini cukup diberi warna merah saja sebagai hilite dari pesan respon.
  • Disediakan satu fungsi lagi yang berfungsi me-redirect halaman form yang mana redirect ini dikendalikan dari iframe tersembunyi. Fungsi ini menggunakan JavaScript yang dihasilkan dari command output PHP.

12/07/2007

Yang ke-sekian tentang Friendster : review?

Ini tak bisa dikatakan sebagai review karena seringnya ditemukan cacat pada situs jaringan sosial ini. Friendster yang populer tetap saja belum meningkat signifikan dalam hal error handling. Kenapa? Terlalu kompleks kah strukturnya? bukankah dengan banyaknya staff dan developer, seharusnya mereka bisa jauh lebih baik? Well, menurut kecamata saya sebagai pengguna dan sebagai sesama developer, si populer Friendster perlu berbenah lagi dalam hal : Error Handling - ini sudah sangat jelas. Terbukti beberapa kali ditemukan respon yang salah pada penggunaan yang benar. Sebagai contoh adalah kegagalan saat menampilkan halaman inisial dengan hanya menyebutkan error yang kurang manusiawi. Bisa saja kesalahan terjadi saat pemanggilan query atau saat sinkronisasi dynamic content dengan template, tapi tak ada keterangan spesifik. Atau -- yang baru sehari lewat -- bulletin dengan label, judul, dan pengirim yang benar akan menyesatkan kita ke masa tahun 1970 dengan isian yang kosong dan pengirim yang juga kosong setelah diikuti link judulnya. Kelihatannya error handling memang harus jadi point utama perbaikan dibanding kelengkapan apps/widget atau kekayaan template skin. Konsistensi yang Kurang ataukah plin-plan? - pada banyak kasus, sering ditemukan bahwa kode-kode HTML ditampilkan apa adanya, sedangkan pada saat lain ditampilkan dengan filter limitasi tag tertentu, tetapi saat lain pun muncul utuh tanpa filter. Ini disebut inkonsistensi yang akan membingungkan pengguna awam -- bahkan pengguna mahir sekalipun. Announcement pada Group - kelihatannya sepele. Tapi situs apapun -- terlebih lagi situs group seperti Friendster Group ini -- seharusnya memberikan announcement pada email dan halaman inisial untuk segala aktivitas. Bayangkan jika aktivitas group sudah tergolong tinggi dan kita perlu terus menerus memelototi halaman depan group hanya untuk memeriksa apakah ada aktivitas baru. Sungguh sayang dengan mutakhirnya teknik announcement saat ini -- bahkan friendster sendiri menggunakan beberapa email subdomain yang berbeda untuk announcement reguler -- justru friendster Group belum menggunakannya. Baiklah, rasanya tak adil jika hanya mencela. Di luar itu semua, kecangihan Friendster sudah saya akui sejak dulu -- setidaknya teknologi-teknologi yang belum berhasil saya pelajari (atau saya yang termasuk lambat ya:p). Sebut saja importer account yang bisa mengembat friendlist kita di Y!messenger, MSN, GMail, dan beberapa penyedia account lain -- tentu saja dengan memasukkan password kita pada masing-masing account tersebut. Tapi saya tak menyarankan fitur ini, karena -- masih menurut saya -- Friendster tak bisa dipercaya. No reason to tell ya, maaf! Kelengkapan daftar filternya untuk kata-kata indah juga lumayan bagus. Contoh saja, posting bulletin kita akan ditolak jika mengandung kata-kata f*ck, s*ck atau kata-kata sejenis lainnya (tanpa sensor loh). Sayangnya filter ini tidak diapply pada Friendster Blog dengan alasan yang belum jelas (bagi saya khususnya). CSS Generator juga termasuk teknologi yang masih saya kagumi sampai saat ini, meskipun naga-naganya dibuat oleh pihak luar. Okelah, harapan terakhir terhadap situs yang makin hari makin marak ini hanyalah perbaikan saja. Jangan malu untuk lebih bercermin pada beberapa "rekan sejawatnya", seperti FaceBook, Multiply (yang katanya mengedepankan kualitas, bukan kuantitas), atau bahkan situs forum sekalipun. Berbesar hatilah karena kian hari penggunamu kian banyak -- yang terpantau secara iseng saja -- yang mana efek sampingnya adalah tingkatkan space dan bandwith quota (hehea). Peace man... Good Luck Friendster team!

10/16/2007

Next Item pada Detailed Message

Detailed message adalah single page yang dipanggil berdasarkan id entry pada table, seperti http://mgk.com/x9/View/Detail?id=4935 yang menampilkan isi table dengan id 4935. Pengguna internet telah terbiasa dengan kemudahan Yahoo!Mail yang menyediakan link ke Pevious Message dan Next Message untuk menuju pesan tepat di sebelahnya, jadi tak perlu bolak-balik kembali ke inbox dan membuka judul pesan lainnya. Previous Message: Didapatkan dengan memanggil SATU entry pada tabel pesan YANG MANA id-nya lebih kecil dari id yang sedang aktif, dan dilimit hanya satu entry saja. Sebagai contoh: $qprev="select * from content where con_id<'$_GET[id]' order by con_id desc limit 0,1"; Itu hanya contoh simulasi saja. Next Message didapatkan dengan cara yang sama, tetapi dibalik pada persyaratan dan pengurutannya: $qnext="select * from content where con_id>'$_GET[id]' order by con_id asc limit 0,1"; Wokeh baiklah.. selanjutnya tentu saja memeriksa output. Jika berisi, maka id berikutnya dijadikan parameter untuk link Next ataupun previous, tapi jika hasil query adalah kosong, tentu kita perlu membuat text mati tanpa link, sekedar untuk menunjukkan pada pengguna bahwa pesan berikut atau sebelumnya telah kosong (yang berarti sudah mencapai pada penghujung list message). if (mysql_num_rows($xprev)) { $lprev=mysql_fetch_assoc($xprev); $target=$lprev[con_id]; $main.=$body->href("Detail?id=$targetAction=View","[Previous]","prevNext"); } else { $main.="[Previous]"; } Itu saja. sementara saya memakai cara ini pada situs kecil yang saya kelola. Any comment, suggestion, would be appreciated.
عبد العزيز

Create your badge