Monday, July 30, 2007

SWF 9 File Specs and Banjir..



Minggu kemarin pulang dari pelosok,
Setelah 20 km naik motor melewati jalan berpasir dan agak rusak.
Akhirnya sampai di jembatan pertama, berhenti sebentar di desa (Lampuyang) itu untuk mencari makan.
Baru turun dari motor, ternyata baru sadar kalo jalan didepan sudah dipenuhi banjir setinggi lutut.
Mestinya selama 20 km berikutnya aku pasti akan terjebak banjir.

Di hari-hari normal pun untuk melewati jalan Desa Lampuyang - Seranggas akan penuh perjuangan, karena rusak berat dan dipenuhi oleh kubangan disana-sini. Dan batang kayu banyak melintang disetiap badan jalan yang tertutup lumpur!
Apalagi sekarang banjir setinggi itu? Kasian motor dinasku! Kalo badan sih gak perlu dikasiani!

Akhirnya gak jadi makan, mending uangnya untuk ongkos nyewa perahu.
Ongkosnya, untuk 1 orang dengan 1 motor ditawarin oleh bapak yang punya perahu Rp. 40.000,-
Sebenarnya bisa ditawar sih. Tapi aku malas saja untuk nawar.
Apalagi bapaknya tahu kalo aku dokter yang tugas dikecamatan ini.

Kemudian selama perjalanan 15 km berikutnya, aku dan motorku numpang perahu, kemudian berhenti di desa Kuin.
Aku kira sudah terbebas banjir. Gak taunya masih ada, setinggi lutut lagi!! Terpaksalah dengan bersusah payah selama 1 jam, akhirnya bisa lega.
Selanjutnya 55 km sisanya bisa menikmati kembali perjalanan pulang yang dihiasi pemandangan kebun kelapa tiada henti-hentinya, diselingi hutan karet.

Katanya spesifikasi file SWF versi 9 sudah mulai di release ya?
(Taunya pas baca blognya Emmy Huang, kemarin).
Aku belum menyimak secara jelas, tapi kalo arsitektur SWF 9 termasuk spesifikasi file abc (actionscript byte code ) sudah diketahui secara jelas oleh publik, jadi akan tinggal menunggu waktu paling lama setengah tahun untuk mendapatkan decompiler file swf ya?

Siapa yang paling beruntung dengan di-release-nya spesifikasi swf-9 ini?

Yang pertama; Vendor-vendor lain yang selama ini mempunyai tool untuk meng-export animasi dan multimedia ke file SWF 8 dan sebelumnya, untuk di upgrade ke SWF 9.

Yang kedua; Para pembuat SWF alternative untuk aplikasi seperti Nicolas Cannase (HaXe), dan OpenLaszlo.

Yang ketiga; Para pembuat decompiler, deassembler, obfuscator flash dari yang proprietary sampai free, seperti Sothink, ASVGuy (Burak. K) dan Igor Kogan (Flasm dan Flare).

Selain itu para developer dan pemerhati flash awam seperti kita perlu mengetahui spesifikasi SWF 9 untuk sekedar menambah wawasan.

Saturday, July 21, 2007

Apa kabar dunia

Sudah agak mendingan sekarang, bisa ketemu koneksi lagi..
Bulan ini agak susah bikin posting baru karena atasan ngotot untuk meresmikan puskesmas baru secepatnya.
BTW puskesmas yang dimaksud berada 90 km selatan kota ku, dipinggir pantai dengan geograpik yang sangat indah.
Jarang jarang kan menemukan kondisi dimana ada tanah pantai selebar 100 meter kemudian tegak lurus sepanjang 2 kilometer, dan kiri kanan-nya pantai!! Yang kanan pantai pasir putih dengan ombak agak gede langsung berbatasan dengan laut jawa, sedangkan yang kiri pantai ditumbuhi rumput hijau halus dengan bunga warna-warni dengan ombak tenang, berbatasan dengan teluk air payau. Tengah-tengahnya penuh dengan pohon cemara. Kedua pantai beda habitat itu membentuk garis sejajar selebar 100 meter , sepanjang 2 kilometer!!
It's beautiful beach, we call it Ujung Pandaran..
Karena aku satu-satunya dokter disini yang mau ditugaskan ke tempat eksotik itu, (tuntutan profesi). Berat sih!!
Tidak ada MXNA disitu, tidak ada Nicolas Cannasse, penduduk tidak ada yang nyambung di ajak ngomong tentang J2ME apalagi diskusi tentang RecordStore.
Yang paling krusial mungkin ngusahain koneksi internet disana, juga GPS devices! Sama Cessna 182 Skylane R/C Engine untuk sekedar park flyer sore-sore dipinggir pantai... :) kalo bisa sih!!, terserah kalo harus sampai menyisihkan sebagian dana operasional ,hahahaha! Apa kata BPK nanti!!
Tapi itu sepadan lah kalo dokter miring kaya aku harus berada dalam kondisi yang 'paradoxal' begitu!
I miss my free time for coding..

Tuesday, June 26, 2007

Decorator Pattern

Pada penerapan OOP di Actionscript 3.0, konsep inheritance mempunyai dua kelemahan utama :

  • Kita tidak bisa mengubah ciri bawaan dari suatu object class sewaktu runtime. Contohnya sebuah class DesimalKorektor. Kita tidak akan bisa mengubah sebuah DesimalKorektor menjadi DesimalKorektorDuaDigit sewaktu runtime bila kita memakai konsep inherintace secara klasik.

  • Semakin kita banyak menggunakan permutasi, akan semakin susah memakai beberapa class di package kita. Lebih jelasnya begini ; jika anda ingin meng-extend-kan sebuah class DesimalKorektor supaya lebih scalable, anda mungkin akan membuat subclass ScalableDesimalKorektor dari DesimalKorektor. Untuk membuat DesimalKorektor yang bisa di-undo, anda mungkin akan membuat subclass UndoableDesimalKorektor. Tetapi, bagaimana caranya bila kita ingin mengkombinasikan fitur-fitur dari beberapa subclass tadi menjadi satu subclass (sewaktu runtime)? Dengan inheritance anda harus mendeklarasikan subclass tadi untuk menambahkan fitur baru. Setiap fitur baru akan meningkatkan jumlah class yang diperlukan, sehingga akan diperlukan usaha lebih dalam management-nya.

Pada beberapa “aliran” developer, ada yang melakukan beberapa metode untuk menanggulangi kelemahan dari inheritance ini. Diantaranya dengan menggunakan “Decorator Pattern”. Untuk menambahkan fitur baru pada suatu subclass, Decorator Pattern lebih menerapkan konsep komposisi dibandingkan pewarisan dari inheritance. Sehingga akan menjadi mungkin untuk menambahkan ciri baru dan mengubah perilaku (behavior) dari class tersebut sewaktu runtime.
Prinsip utama dari Decorator Pattern adalah setiap object decorator dengan type tertentu dapat menambahkan atau merubah behavior dari object yang di “decor”. Sang class Decorator dan class yang di “décor” harus meng-implement interface yang sama.

Decorator Pattern terdiri dari :
  • Decorator / decorated (interface)

  • Concrete decorated (class)

  • Absctract decorator (class)

  • Concrete decorator (class-class)


Di posting berikutnya akan kita bahas masing-masing elemen diatas.

Saturday, June 16, 2007

Bookmark June 16 2007

Biasanya, frame rate benar-benar merepotkan bila di Flex. Ada banyak alasan untuk berpendapat seperti itu. Terutama bila dalam membuat sebuah SWF yang mempunyai banyak frame. Flash sudah tentu lebih baik dalam menghasilkan SWF yang tahu bagaimana cara menangani preload dari timeline dengan frame yang banyak, demikian juga dalam menangani playback-nya. Karena Flash lebih baik dalam membuat SWF yang mempunyai content berupa animasi.

Sebaliknya urusan animasi di Flex tidak akan semudah itu, pertama dalam proses pembuatannya tidak dikenal konsep timeline, kemudian dalam playback-nya, akan di-eksekusi “lebih lambat”.
Karena, kita terdogma menerapkan sebuah “state” aplikasi/animasi di Flash berdasarkan frame (frame state navigation) dengan gotoAndStop() atau gotoAndPlay(), atau dengan mengatur visible/ alpha transparansi dari MovieClip.

Tidak demikian dengan Flex, karena Flex mengatur “state” dengan menggunakan DisplayList (Flash Player 9 DisplayList).
DisplayList memungkinkan anda mempunyai sebuah Sprite/MovieClip yang exist, tapi belum di-render di stage. Jadi bila pada animasi yang mempunyai banyak frame di timeline-nya, maka SWF hasil dari Flash akan melakukan preload asset-asset yang akan dimainkan terlebih dahulu. Sedangkan SWF hasil dari Flex tidak menerapkan proses preload seperti itu, sehingga animasi akan dijalankan lebih lambat.

Urusan “state” dalam SWF penting dalam interaksi dengan user, baik untuk navigasi maupun “application state” dan animasi. Di Flash kita terbiasa mengatur sebuah MovieClip dengan visible property ke false, yang artinya MovieClip sudah berada ditempatnya di stage, hanya saja belum terlihat, dan kemudian membuat visible menjadi true pada saat yang diperlukan. Sedangkan pada Flex terdapat mekanisme yang lebih mendasar dalam mengatur state. Pada banyak UI Component di framework Flex mengatur “state” dengan “add” dan “remove children” dari DisplayList. Umumnya sesaat setelah asset di jalankan (di-animasi-kan) akan langsung di “removed” dari DisplayList, dan akan menjadi prioritas utama oleh Garbage Collector untuk disingkirkan dari RAM. Sehingga ketika animasi dijalankan lagi, akan lebih lambat karena asset tadi akan harus di-load lagi ke memory.

Sedangkan di Flash, proses tadi berlangsung simple, karena secara “alami” kita selalu membuat frame awal sebagai preload, untuk memberitahukan Flash Player me-load semua asset – asset animasi sebelum playback. Dan proses “removing asset” yang sudah dimainkan dari RAM oleh Garbage Collector (Flash Player 8) biasanya akan dilakukan secara berkala setiap 60 detik atau ketika penggunaan RAM meningkat 20% atau lebih.

Yang perlu dipertimbangkan lagi adalah sewaktu embedding sound dan image di Flex. Karena di Flex tidak dikenal konsep Library, sehingga anda perlu menggunakan tag embed di code Flex anda untuk meng-asosiasi-kan image dan suara external ke sebuah variable, dan menggunakan variable itu untuk “link” ke asset. Asset-asset external ini di embed ke SWF sehingga anda tidak perlu khawatir tentang preloading misalnya dengan loadMovie atau Sound.loadSound.
Flex membungkus asset ini dengan class-class khusus yang dinamakan Class “Asset”, hampir mirip dengan kondisi ketika anda meng-import sound ke Flash Library dan meng-export-nya dengan linkage.
Bila kita meng-embed sebuah symbol MovieClip dari SWF eksternal, maka Flex akan membungkusnya sebagai class mx.core.MovieClipAsset, dan ketika kita meng-embed sebuah image, Flex akan membungkusnya sebagai class mx.core.BitmapAsset.
Artinya.., akan sulit mengakses class ini di SWF Flash 9. Kecuali dengan menempatkan MovieClipAsset dan BitmapAsset beserta sebagian framework Flex yang terkait di Flash 9 classes directory.

Monday, June 11, 2007

Flasher adalah developer paling sibuk

Boleh suka atau nggak setuju!!
Dibanding developer atau programmer bahasa lain, flasher merupakan developer yang paling kurang tidur karena perkembangan teknologi flash sangat cepat.
Dari September 98 Flash 3, Juni 99 Flash 4, Agustus 2000 Flash 5, Maret 2002 Flash 6, September 2003 Flash 7, Agustus 2005 Flash 8, 2006 Flex, April 2007 Flash CS3 (9).
Tidak sampai setahun selalu muncul versi barunya.
Bandingkan dengan Java (dari seri 1.4 ke seri 1.5 perlu berapa tahun?), juga PHP (dari php 4 ke php 5 perlu berapa tahun), .NET ?, VB ?, Perl?

Hampir tidak bisa menghela nafas sebentar pun sewaktu baru selesai memahami salah satu bagian paling abstrak di Flex 2.0.1 yaitu "Flash ApplicationDomain" sekarang sudah muncul Flex 3 yang datang dengan kemampuan cache Flex Framework. Berbarengan juga dengan Adobe AIR beta (a.k.a Apollo), Adobe Flash Player Update 3 juga, coba cek di lab!

Software proprietary lain yang bikin developernya banyak begadang kebanyakan dari jenis multimedia ya? Seperti 3DSMax? Atau ada yang lain? Sedangkan kalo dari jenis Language Background paling cuma Actionscript ya?

Kemana pun arah perkembangan tool favorit anda, selama masih suka pasti selalu bergairah mengikutinya, gak pernah mengeluh..

Yes!! We're Flash Tech Addict!!

Friday, June 08, 2007

Public Variable, Get/Set, Binding..

Kapan sebaiknya kita memilih menggunakan antara get/set atau public variable di class kita?
Dalam beberapa situasi, penggunaan get/set mempunyai keuntungan tersendiri.
Sebaliknya pada situasi lain public variable akan lebih efektif dibandingkan get/set

Sedangkan dalam penggunaannya, bentuk pemanggilan keduanya mempunyai kesamaan.


//Contoh penggunaan public variable dan get/set
myClass.myPublicVariable = true;
//atau
trace(myClass.myPublicVariable);



Pendeklarasian public variable :

/** 
* Contoh deklarasi public var di myClass
*/


[Bindable]
public var
myPublicVariable:Boolean = true;



Pada kondisi bila tidak ada tindak lanjut tambahan (additional actions) ketika variable berubah value, maka penulisan public variable lebih baik dibandingkan get/set.

Pada contoh diatas bila myPublicVariable diubah value-nya maka binding akan di-update, dan segala object component yang ter-bound dengan binding variable tadi juga ter-update. Sehingga tidak perlu menggunakan get/set disini.

Pendeklarasian get/set function :

/** 
* Contoh deklarasi public get/set di myClass
*/

[Bindable(event="publicVarUpdated")]
public function set
myPublicVariable(val:Boolean):void{
_myVar = val;
_counterSet++;
otherFunction();
dispatchEvent(new FlexEvent("publicVarUpdated"));
}


public function get myPublicVariable():Boolean{
_counterGet++;
otherFunction2();
return _myVar;
}

private var _myVar:Boolean;
private var _counterSet:int;
private var _counterGet:int; 



Pada contoh diatas baris [Bindable(event="publicVarUpdated")] menunjukkan bahwa setiap component / object lain yang ter-bound ke property myPublicVariable akan langsung meng-update value-nya ketika event dengan type "publicVarUpdated" di-dispatch. Anda perhatikan di function setter-nya terdapat baris untuk dispatchEvent ketika myPublicVariable di-set, yang akan langsung memberitahukan ke semua component/ object yang ter-bound ke property myPublicVariable ini untuk segera meng-update value sesuai nilai terbaru.

Keuntungan utama dari get/set adalah mereka memungkinkan serangkaian perintah tambahan dieksekusi dalam satu pemanggilan function get/set. Anda dapat membuat class/component anda untuk langsung memanggil fungsi tertentu ketika get/set dipanggil, seperti contoh diatas.

Dalam framework Adobe Flex component, get/set banyak dipakai terutama untuk dispatch custom event, mengganti style component, layout, measure dan lain-lain.

Friday, May 25, 2007

Seumur hidup sekali, semoga

(flash player 8-latest required, get flash here).


If you are unable to attend, we ask your presence in thought and prayer, or (at least) give us a comment below..

Regard

Deden
Yenie

Tuesday, May 22, 2007

NSAID + Kemoterapi + Radioterapi poten untuk kanker

Para peneliti di University of Iowa Roy J. dan Lucille A. Carver College of Medicine menemukan fakta lain tentang penggunaan obat-obatan Anti Inflamatory Non Steroid yang dikombinasikan dengan Kemoterapi dan Radioterapi dalam penanganan penyakit kanker.
Sebelumnya telah diketahui kegunaan kombinasi 3 terapi ini pada dua aspek. Pertama lebih menggunakannya sebagai pencegahan (preventif kanker) tetapi berpengaruh pada efek jangka panjang. Aspek kedua untuk penggunaan pengobatan (kuratif) kanker.
Pada salah satu penelitian di UI (University of Iowa) ditemukan bahwa celecoxib (salah satu NSAID) dan sulindac sulfide (Clinoril sulfide) ternyata memperlambat proliferasi sel kanker dan membunuh sel kanker (pada beberapa prosentase).
Sedangkan sampel NSAID jenis lain (aspirin, naproxen (Aleve) atau rofecoxib (Vioxx) yang ikut dipakai pada penelitian tersebut terbukti tidak terlalu bermakna sebagai anti kanker.
Pada penelitian lebih lanjut pengaruh celecoxib sebagai anti kanker ternyata terdapat dalam intervensi-nya dalam siklus sel.

Seperti diketahui (ingat kuliah biokim nih!!) : Sebuah sel akan melewati 3 fase sebelum mereka membelah diri. Yaitu : fase G1, ketika sel membesar dan mempersiapkan cadangan protein; Fase S, ketika sel mulai mempersiapkan rantai DNA dan mereplika khromosom; kemudian fase G2, ketika sel mempersiapkan pembelahan. Siklus sel ini juga terdiri dari beberapa "Check point" penting untuk memutuskan apakah pertumbuhan sel berhenti dan apakah suatu fase sudah siap untuk memasuki fase berikutnya.
Para peneliti menemukan bahwa celecoxib merubah ekspresi salah satu protein di "Checkpoint" fase G1 , sehingga secara bermakna menurunkan aktivitas protein E2F1 (protein jenis ini diperlukan sel untuk bergerak ke fase tertentu di siklus sel, dan juga sangat penting pada aktivitas S fase seperti perbaikan DNA). Dan ini memberi harapan pada pada metode penanganan suatu kanker di masa depan.

Yang mesti diperhatikan : Syukur kalo fenomena ini di-patenkan oleh sebuah akademi (Iowa University), dan tidak oleh sebuah pabrik farmasi. Kalo nggak harga obat makin gak karuan (Jadinya lagi-lagi "kita-kita" cuma jadi agen farmasi)