11.8.07

Update..

Pagi ini ada wawancara di stasiun radio swasta yang sama, dengan seseorang dari YLKI. (saya terlambat mendengarkan pembukaan wawancara ini)
Inti wawancara ini kurang lebih sama dengan tulisan saya semalam.
Kenapa kok perlakuan pihak yang berwenang untuk menertibkan penggunaan bahan - bahan berbahaya pada produk yang digunakan oleh masyarakat umum berbeda?
Istilah kerennya, standar ganda.
Apa yang menjadi patokan pihak tersebut?

Anyway, ada tips menarik juga dari YLKI. Lebih baik cari aman saja (dengan kata lain, jauhi produk yang harus dijauhi)
Formalin, ya Formalin! Berita Top!


Sebelum tidur, ada beberapa pikiran yang menggangu (selain masalah pekerjaan tentunya)

1. Kenapa tiba - tiba diberitakan (massively) bahwa penggunaan Formaldehyde diperbolehkan untuk penggunaan luar?

Hari ini sebuah korporasi besar bahkan ikut - ikutan sibuk membuat press release yang meng-counter pernyataan haram untuk penggunaan Formaldehyde. Saya mendengar sendiri press release di salah satu stasiun radio swasta. Penyiar sudah dengan tepat membuka percakapan, dengan pernyataan yang mungkin menohok korporasi tersebut (well, at least sales mereka untuk bulan ini). Kira - kira begini pertanyaannya. "Apakah produk - produk yang dihasilkan mengandung formalin?". Jawabannya tentu saja sudah bisa ditebak: tidak ada jawaban sama sekali. Malah berpropaganda bahwa penggunaan formalin itu tidak masalah dan pada kasus tertentu malah berguna. Ya saya sendiri secara pribadi setuju - setuju saja. Tapi tetap saja.. itu tidak menjawab pertanyaan!

Yang sangat menggangu saya saat ini adalah, kenapa (pasti masih ingat) minggu kemarin sampai heboh penarikan produk china karena tersangkut penggunaan formalin, yang di dalamnya terdapat juga produk pasta gigi. (sekitar awal tahun 90-an saya memakai produk ini)
Sedangkan untuk minggu ini kejadiannya berubah total (yang saya soroti secara khusus adalah produk pasta gigi). Kenapa tidak terulang reaksinya? ditarik dari pasaran dan disosialisasikan di media masa (again, massively!)

Ndak habis pikir saya. Ngaco!

2. From Villain to Hero
Coba ditengok beberapa iklan di TV (secara khusus: iklan "layanan masyarakat" tentang internet masuk desa & iklan oli)
Iklan itu benar - benar membodohi!
Merekalah sebenarnya penjahatnya dan bukan pahlawan!

Sakit jiwa!

7.8.07

Win32 Hello World

Saya paste-kan "beberapa" baris kode di bawah ini.
Kesan pertama yang timbul saat melihat barisan kode ini mungkin mengerikan!
Hanya untuk menampilkan window yang sedemikian sederhananya harus mengetikan sedemikian banyak baris kode?
Jawabannya ya dan tidak.
  • Ya, baris kode di bawah adalah minimal
  • Tidak harus diketik. Saya belom pernah bertemu dengan programmer Windows yang secara "manual" mengetikan baris kode di bawah. Kebiasaannya adalah baris kode tersebut di simpan dalam suatu file dan kemudian dikopi-pastekan saat dibutuhkan :)
Dibandingkan program yang berbasis windows, program DOS hanya membutuhkan ± 5 baris kode untuk ber-"Hello, World" ria. (saya berbicara tentang pemrograman standar, dan bukan pemrograman "hard-core" yang diikutsertakan dalam kontest Obfuscated code.


#include <windows.h>

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
     static TCHAR szAppName[] = TEXT ("HelloWinWorld") ;
     HWND         hwnd ;
     MSG          msg ;
     WNDCLASS     wndclass ;

     /* definisi window class */
     wndclass.style         = CS_HREDRAW | CS_VREDRAW;
     /* opsi redraw */
     wndclass.lpfnWndProc   = WndProc;
     /* window function */
     wndclass.cbClsExtra    = 0;
     /* bytes extra untuk class struct */
     wndclass.cbWndExtra    = 0;
     /* bytes extra untuk window struct */
     wndclass.hInstance     = hInstance ;
     /* window instance */
     wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION);
     /* icon program */
     wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW);
     /* cursor program */
     wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
     /* warna backgroud */
     wndclass.lpszMenuName  = NULL;
     /* window menu   */
     wndclass.lpszClassName = szAppName;
     /* nama class    */

   /* daftarkan window class yang telah kita definisikan di atas */
     if (!RegisterClass (&wndclass))
     {
          MessageBox (NULL, TEXT ("This program requires Windows NT!"),  szAppName, MB_ICONERROR) ;
          return 0 ;
     }
  
   /* buat window dengan nama class yang telah didaftarkan di atas */
     hwnd = CreateWindow (szAppName, /* nama class window      */
TEXT ("The Hello World Program"), /* judul window   */
WS_OVERLAPPEDWINDOW, /* style window    */
CW_USEDEFAULT, /* posisi x window   */
CW_USEDEFAULT, /* posisi y window  */
CW_USEDEFAULT, /* lebar window   */
CW_USEDEFAULT, /* tinggi window   */
NULL, /* handle parent window */
NULL, /* menu window   */
hInstance, /* window instance  */
NULL); /* parameter tambahan  */

   /* tampilkan window yang telah dibuat */
     ShowWindow (hwnd, iCmdShow) ;
     UpdateWindow (hwnd) ;

   /* proses Windows message */
     while (GetMessage (&msg, NULL, 0, 0))
     {
          TranslateMessage (&msg) ;
          DispatchMessage (&msg) ;
     }
     return msg.wParam ;
}

/* window procedure yang akan memproses setiap message yang diterima */
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
     switch (message)
     {
   /* contoh message yang diterima dari Windows adalah WM_DESTROY, yaitu windowakan di-"hancurkan", berdasarkan perintah yang diterima dari pengguna program, biasanya pengguna meng-klik tombol close */

     case WM_DESTROY:
          PostQuitMessage (0) ;
          return 0 ;
     }
     return DefWindowProc (hwnd, message, wParam, lParam) ;
}


Saya tidak membahas lebih lanjut, silahkan diamati saja kode program di atas, dan mulai modifikasi.