December 2007 - Posts

Zero Thinking

Zero thinking...banyak kejadian yang dihubungkan dengan zero mulai dari yang rasional hingga irasional. Zero thinking merupakan salah satu usaha untuk melakukan normalisasi dan archiving semua knowledge yang kita terima. Dari situ lakukan filtering atau segmentasi. Mana yang baik ambil dan keep tapi yang jelek kita buat atau disabled.

Hal ini juga terjadi pada gw. Sudah saatnya melakukan zero thinking mulai meninggalkan kebisingan dan hiruk pikuk kemacetan jakarta menuju ke perkampungan yang sunyi disertai dengan warna hijau yang hampir 90% mendominasi lingkungan sekitarnya. Suara bising dari kendaraan yang tiap hari dijumpai dan didengarkan sekarang sudah saat diistirahatkan karena telingga juga mahluk sehingga perlu didengarkan suara gemercik air dari sela-sela tanah yang menghijau. Sudah saatnya otak kita dilakukan defrag sehingga nanti akan menjadi lebih "kinclong" dan "encer".

Zero thinking tidak berarti duduk manis, bermalas2xan ataupun tidur seharian. Tapi zero thinking dimaksudkan untuk dilakukan clustering knowledge yang sudah kita terima sehingga kita akan dapat knowledge baru dari clustering knowledge kita. Kuncinya adalah intropeksi diri dan akhirnya kita memperoleh derajat "manusia setengah dewa".

Gw sendiri akan melakukan zero thinking sekitar 10 hari di suatu pedesaan ujung selatan jawa barat, suatu perkampung yang masih kental dengan adat sunda yang klasik. Semua serba simple bahkan mungkin terkesan kotor....katanya bersih itu relatif.

Notebook gw sendiri sudah dilakukan archiving dan sudah dimulai di inject dengan Visual Studio 2005/2008 dan juga Matlab. Ada 4 goal yang pingin finalizing disana

  • Finalizing project otak
  • Finalizing PE College
  • Finalizing research
  • Finalizing 3 books

Selain 4 diatas diatas, gw juga melakukan penyegaran untuk perlombaan iMulai. Gw sendiri akan inpeksi di lapangan dan melihat situasi di perkampungan. Harusnya teknologi membantu mereka dan mengangkat pendapatan ke level yang normal, syukur-syukur bisa become a leader on the edge tehnology.

Dari gw, met liburan panjang semoga di tahun 2008 akan jauh lebih baik dari tahun 2007. Jika ditahun 2007 mengalami hal-hal yang tidak menyenangkan, solusinya cukup tekan F5, Refresh your Mind.

 

Share this post: | | | |
Posted by Agus Kurniawan | 4 comment(s)
Filed under:

Demo video - Workshop on Windows SharePoint Services 3.0

 

Seperti yang pernah gw posting tentang workshop WSS 3.0 [V] dan beberapa yang masuk menanyakan demonya sehingga tadi malam gw coba upload demo tetapi resolusinya gw turunkan supaya ukuran file kecil dan disesuaikan dengan bandwidth dial-up di indonesia ini;)

Demo ini dapat dilihat disini: http://www.pecollege.net/demo/wssdemo.html

Informasi selengkapnya dapat diperoleh disini: http://www.pecollege.net/Multimedia/VideoTutorialProfessional/tabid/67/Default.aspx

Semoga berguna infonya.

 

Share this post: | | | |
Posted by Agus Kurniawan | with no comments
Filed under:

Kusemakin terjebak didunia hitam :p

Semakin kuterjebak nih maen2x dengan database terutama Business Intelligence dan Data Mining lantaran terserat dengan kewajiban, jadi ingat dulu yang terserat-serat maen-maen di VB6/VBA/VBScript lantaran ada project hehehee..

Untuk keperluan Business Intelligence dan Data Mining, udah di explore SQL Server 2005 dan 2008 (tapi mostly paling banyak dicoba di SQL Server 2005) akan kemampuan BI dan Data mining. Kayaknya mesti butuh bantuan pakar-pakar MVP SQL Server :p. Ngomongi Business Intelligence dan Data Mining, ada 2 reference buku menarik untuk mengkaji masalah BI dan Data Mining ini yaitu

  • Business Intelligence Roadmap: The Complete Project Lifecycle for Decision-Support Applications, yang ditulis oleh Larissa T. Moss dan Shaku Atre
  • Data Mining with Computational Intelligence (Advanced Information and Knowledge Processing) ditulis oleh Lipo Wang dan Xiuju Fu

    

Menariknya buku ini adalah pembahasannya dilengkapi dengan pendekatan ilmiah dan praktisi sedangan Data Mining yang dihubungkan dengan Computional Intelligence bisa dibaca buku ke-2 yang penulisnya salah satunya adalah Lipo Wang, paper dan buku banyak jadi rujukan researchku selain termasuk paper/buku yang ditulis salah satu prof dari Kobe University, Japan....lantaran mereka research area nya sama :p

Hehehehe..menarik untuk dikaji dan didiskusikan, masalahnya gw blom punya media untuk show sendiri conference/seminar tentang ini..emang ada ya? gw sih biasanya ekspresisasi lewat PE College aja :p

 

Share this post: | | | |

Windows Driver Foundation (WDF)

Windows Driver Foundation (WDF) is the next-generation driver model for the Windows family of operating systems. WDF can help to reduce driver development time, contribute to greater system stability, and improve driver diagnosability and serviceability.

WDF defines a single driver model that supports the creation of object-oriented, event-driven drivers for either kernel mode or user mode. It simplifies driver development and maintenance by:

  • Implementing common features.
  • Providing intelligent defaults.
  • Managing most interactions with the operating system.

With WDF, driver writers can focus on their device hardware, rather than on the operating system. WDF includes frameworks for the development of kernel-mode and user-mode drivers along with several driver verification tools.

More information about WDF, you can look at this URL http://www.microsoft.com/whdc/driver/wdf/default.mspx

 

Share this post: | | | |
Posted by Agus Kurniawan | with no comments
Filed under: ,

Tutorial on Win32 Programming Series – Getting Started (Seri 1)

Aplikasi Berbasis Win32 ? 

Mungkin sebagian orang tidak tahu apa itu aplikasi win32 ? ya..ya..ya, semua aplikasi Windows sebagian besar aplikasi Win32 karena memang mengarah ke 32-bit operation. Itu tidak salah tetapi hal yang dikatakan aplikasi Win32 apabila aplikasi tersebut menggunakn PURE WIN32 API sehingga code dari aplikasi tersebut langsung mengakses API dari OS Windows tersebut sehingga deployment dari aplikasi Win32 tidak memerlukan library/framework lain akibatnya ukuran file nya kecil dan performance jauh lebih bagus. 

Skill Yang Dibutuhkan
Ok, untuk mempelajari pemrograman Win32 application diperlukan skill yang mendasar yaitu (urutan paling atas lebih penting daripada dibawah)

  1. Pemrograman C. Ini wajib dan kalau anda belum bisa bahasa C, mendingan belajar dulu. Banyak buku baik bahasa Indonesia ataupun inggris yang membahas pemrograman bahasa C. PE College juga menyediakan video tutorial , bisa di cek http://www.pecollege.net/
  2. Windows Message. Ini perlu diketahui walaupun tidak perlu dihafal, lama2x hafal sendiri. Kenapa ini perlu? Karena kita harus mengetahui alur-alur command yang terjadi pada OS Windows
  3. Pemrograman C++. Ini optional, jika bisa ini akan mempermudah anda dalam manage object anda dan juga dapat menerapkan full OOP.

IDE yang Digunakan
Banyak IDE untuk C/C++ yang dapat digunakan untuk coding Win32 application. Salah satunya anda bisa menggunakan Visual C++ dari merupakan bagian dari Visual Studio.

Hello World Win32
Biar lebih mantap, kita langsung ke demo. Disini gw menggunakan Visual Studio 2005. Pada IDE ini, buat project dengan tipe Visual C++ dan template Win32 Project seperti gambar dibawah ini


Beri nama dan lokasi untuk project ini, misalkan disini MyFirstWin32App. Jika selesai, klik tombol Ok sehingga akan muncul kotak dialog dibawah ini. Pilih opsi seperti gambar.

 

Setelah itu klik tombol Finish. Selesai deh!!....tinggal run saja dengan klik tombol F5 dan boommm, muncul deh aplikasi kita

 

Membedah Hello World Win32 Application
Kalau kita melihat di solution explorer maka kita akan mendapatkan seperti gambar dibawah ini

Sedangkan Entry point kita ad adi file MyFirstWin32App.cpp yang code nya dapat dilihat disini:

// Global Variables:

HINSTANCE hInst;                                // current instance

TCHAR szTitle[MAX_LOADSTRING];                    // The title bar text

TCHAR szWindowClass[MAX_LOADSTRING];            // the main window class name

 

// Forward declarations of functions included in this code module:

ATOM                MyRegisterClass(HINSTANCE hInstance);

BOOL                InitInstance(HINSTANCE, int);

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

INT_PTR CALLBACK    About(HWND, UINT, WPARAM, LPARAM);

 

int APIENTRY _tWinMain(HINSTANCE hInstance,

                    HINSTANCE hPrevInstance,

                    LPTSTR    lpCmdLine,

                    int       nCmdShow)

{

    UNREFERENCED_PARAMETER(hPrevInstance);

    UNREFERENCED_PARAMETER(lpCmdLine);

 

    // TODO: Place code here.

    MSG msg;

    HACCEL hAccelTable;

 

    // Initialize global strings

    LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);

    LoadString(hInstance, IDC_MYFIRSTWIN32APP, szWindowClass, MAX_LOADSTRING);

    MyRegisterClass(hInstance);

 

    // Perform application initialization:

    if (!InitInstance (hInstance, nCmdShow))

    {

        return FALSE;

    }

 

    hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_MYFIRSTWIN32APP));

 

    // Main message loop:

    while (GetMessage(&msg, NULL, 0, 0))

    {

        if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))

        {

            TranslateMessage(&msg);

            DispatchMessage(&msg);

        }

    }

 

    return (int) msg.wParam;

}

Ok, apa yang terjadi di Entry Point ini ? Let’s start….Awalnya kita deklarasikan global variable instance untuk aplikasi windows kita

HINSTANCE hInst;

Selanjutnya kita lakukan initialisasi data dan juga object windows kita, ingat OS Windows dibangun dengan menerapkan OO sehingga apa yang kita buat mesti inline dengan architecture OS Windows.

// Initialize global strings

LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);

LoadString(hInstance, IDC_MYFIRSTWIN32APP, szWindowClass, MAX_LOADSTRING);

MyRegisterClass(hInstance);

Diatas tertulis pemanggilan MyRegisterClass() yang fungsinya untuk register object windows kita. Didalam function ini kita menentukan fitur-fitur windows dialog kita 

WNDCLASSEX wcex;

 

wcex.cbSize = sizeof(WNDCLASSEX);

 

wcex.style            = CS_HREDRAW | CS_VREDRAW;

wcex.lpfnWndProc    = WndProc;

wcex.cbClsExtra        = 0;

wcex.cbWndExtra        = 0;

wcex.hInstance        = hInstance;

wcex.hIcon            = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MYFIRSTWIN32APP));

wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);

wcex.hbrBackground    = (HBRUSH)(COLOR_WINDOW+1);

wcex.lpszMenuName    = MAKEINTRESOURCE(IDC_MYFIRSTWIN32APP);

wcex.lpszClassName    = szWindowClass;

wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));

Hal yang terpenting dari register object windows kita adalah dibagian wcex.lpfnWndProc = WndProc; dimana WndProc merupakan callback function yang akan menerima Windows Message yang dikirim oleh OS Windows ke aplikasi kita. Call function WndProc dideklarasikan sebagai berikut

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

{

    int wmId, wmEvent;

    PAINTSTRUCT ps;

    HDC hdc;

 

    switch (message)

    {

    case WM_COMMAND:

        wmId    = LOWORD(wParam);

        wmEvent = HIWORD(wParam);

        // Parse the menu selections:

        switch (wmId)

        {

        case IDM_ABOUT:

            DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);

            break;

        case IDM_EXIT:

            DestroyWindow(hWnd);

            break;

        default:

            return DefWindowProc(hWnd, message, wParam, lParam);

        }

        break;

    case WM_PAINT:

        hdc = BeginPaint(hWnd, &ps);

        // TODO: Add any drawing code here...

        EndPaint(hWnd, &ps);

        break;

    case WM_DESTROY:

        PostQuitMessage(0);

        break;

    default:

        return DefWindowProc(hWnd, message, wParam, lParam);

    }

    return 0;

}

Parameter passing message menunjukkan nilai dari Windows Message. Disini tergantung dari kita mau menangani Windows Message apa saja. Yang wajib ada adalah WM_PAINT untuk drawing windows dialog dan juga WM_DESTROY untuk keluar dari aplikasi.

Setelah kita deklarasikan object windows maka kita lakukan register dengan menggunakan API RegisterClassEx()

RegisterClassEx(&wcex);

Object windows kita sudah di register terus selanjutnya baru kita kita buat windowsnya

HWND hWnd;

 

hInst = hInstance; // Store instance handle in our global variable

 

hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,

   CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

Sedangkan untuk mengaktifkan/menampilkan windowsnya cukup kita panggil ShowWindow()

ShowWindow(hWnd, nCmdShow);

UpdateWindow(hWnd);

Supaya aplikasi kita tidak keluar dari entry point maka kita lakukan looping dan sekalian menerima Windows Message kita 

// Main message loop:

while (GetMessage(&msg, NULL, 0, 0))

{

    if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))

    {

        TranslateMessage(&msg);

        DispatchMessage(&msg);

    }

}

Kalau diperhatikan aplikasi windows kita terlihat ada menu Help->About, nah untuk memanggil kotak dialog About cukup panggil dengan method DialogBox() yang dipanggil ketika meneriman windows message WM_COMMAND dengan menu id IDM_ABOUT (ini tergantung dari deklarasi menu  Help->About)

case IDM_ABOUT:

    DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);

    break;

Pada DialogBox(), kita lakukan passing callback function yaitu About() untuk menerima windows message yang dideklarasikan sebagai berikut

INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)

{

    UNREFERENCED_PARAMETER(lParam);

    switch (message)

    {

    case WM_INITDIALOG:

        return (INT_PTR)TRUE;

 

    case WM_COMMAND:

        if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)

        {

            EndDialog(hDlg, LOWORD(wParam));

            return (INT_PTR)TRUE;

        }

        break;

    }

    return (INT_PTR)FALSE;

}

Itu aja sebagai perkenalan aplikasi Win32, next kita akan bekerja dengan Dialog Form dan meng-handle windows message yang terjadi..kalau ada hal yang ditanyakan saja posting disini..see you

Source code aplikasinya dapat didownload dibawah ini

 

Share this post: | | | |
Posted by Agus Kurniawan | 7 comment(s)
Filed under: ,