24 Agu 2008

Windows Vista dan PDA



Pada umumnya Windows Vista sudah built-in driver dan konektivitas dari Mobile Device ke Windows Vista. Pada dasarnya "tinggal colok", jadilah PDA Anda modem. Tapi jika Anda menggunakan Windows XP? Saat koneksi, Anda akan ditanyakan mengenai driver Generic RNDIS yang tidak built-in di dalam sistem Anda. Dimana mencari driver Generic RNDIS? Microsoft menyediakan Microsoft ActiveSync yang didalamnya sudah ada driver Generic RNDIS. Dan sama seperti saat menggunakannya di Windows Vista, "tinggal colok saja...".

Download Microsoft ActiveSync

21 Agu 2008

Sharepoint Development Issue

VISUAL STUDIO EXTENSION FOR WSS v1.2 (Visual Studio 2005)

Error "Object reference not set to an instance of an object" saat Deploy WebPart


Saat proses Deploy Web Part, memang sedari awal tidak disarankan Deploy secara "Remote", artinya Web Part cuma bisa di-Deploy kalau Visual Studio 2005 berada satu mesin dengan Sharepoint, entah WSS ato MOSS. Hal ini yang gak pernah aku sadari dari awal deploy aplikasi.

Dari banyak blog yang aku baca tentang masalah ini, kemungkinan karena credential user login di komputer deploy dan development berbeda. But, It's just an issue. Belum ada pemecahan masalah ini ketika aku mencoba nge-Lab sendiri, menggunakan VPC lengkap dg AD, dan Server, plus Notebook Acer kesayangan ini Join Domain ke server VPC. User login di Notebook dan user administrator (yang digunakan saat instalasi WSS 3.0) adalah sama.

Licensing Issue
Dari blog yang sering muncul di Microsoft, kebanyakan bilang bahwa hal ini tidak dipungkiri karena mslh licensing. Apa alasannya, aku tak tahu. Hanya Bill Gates dan Tuhan yang tahu. Bahkan, saat kamu coba develop aplikasi Windows Based, dengan notabene aplikasi untuk mengakses List di WSS 3.0, tidak akan berhasil ketika jalan di beda server / mesin. Jika aplikasi windows based itu berjalan 1 mesin dengan engine WSS 3.0 ataupun MOSS 2007, aplikasi itu jalan. Ketika berada di luar mesin yang tertanam core engine Sharepoint, aplikasi itu akan tiba-tiba menganggap bahwa URL tidak ditemukan.
Entry dari Windows Based Application saat mengakses portal, umumnya mendefinisikan fungsi ini, tetapi yang terjadi jika diakses diluar mesin, berakibat pada aplikasi menganggap bahwa URL tidak ditemukan. (Gilaaa.... Microsoft mata duitan...lisensi...lisensi...dan lisensi melulu). Maklum, WSS 3.0 kan barang gratisan. Tapi masih sama dengan MOSS 2007, tetap tidak bisa diakses.

Mengambil Sharepoint Core Assembly File


Konyol juga kalo ada beberapa assembly yang sudah merasa kita ambil (saat develop assembly file berbeda mesin dengan WSS 3.0) ternyata masih ada assembly yang tidak terambil. Saat develop aplikasi untuk WSS 3.0 di mesin berbeda, saat awal setelah melakukan copy assembly di folder Program Files\Common Files\Microsoft Shared\Web Server Extension\12\BIN akan keluar error bahwa VS 2005 tidak menemukan assembly Microsoft.Sharepoint.intl.dll. Pada dasarnya, GlobalAssemblyCache (letaknya berada di C:\Windows\Assembly) merupakan folder biasa. Sekilas dg Windows Explorer Search, tidak akan menemukan file Microsoft.Sharepoint.intl.dll.

Practice
Buka Command Prompt, tuju C:\Windows\Assembly, ketik DIR. Masih kurang jelas? Assembly itu folder biasa. Karena tipe Microsoft.Sharepoint.* family adalah MSIL, maka tuju GAC_MSIL. Cari Microsoft.Sharepoint.intl.dll. Masih ada folder lagi di dalamnya? Pasti ada, tapi cuma ada 1 folder. Buka dan BINGO, dapat file DLLnya.



Kesimpulan
Pertama,
Sharepoint WebPart tidak bisa dibangun di dalam machine yang berbeda dari machine Sharepoint itu sendiri. Install WSS 3.0 atau MOSS 2007 di mesin / server A, ya running aplikasinya (Windows Based) di server itu sendiri. Kecuali, WSS 2.0 (yang dulu namanya adalah SPS 2.0).

Kedua,
VSeWSS juga tidak bisa diinstall di machine yang berbeda dengan machine utk WSS 3.0 atau MOSS 2007. Saat develop, VSeWSS menggunakan user yang ada di machine terinstall, dan untuk develop, dia butuh akses full control ke WSS server. Teori ini bisa dibantah, karena pembuktian bahwa ketika aku join domain ke server WSS 3.0, login dengan user yang sama yang digunakan saat install WSS 3.0, develop tetap gagal.

That's all, Folks...!

17 Jul 2008

Dual Monitor Programming on .NET



Introduction

Dual monitor programming, mungkin banyak dari kamu-kamu jarang temuin kasus kayak gini. Tapi be cool aja, kalo kamu pernah kerjakan project di karaoke, pasti mereka minta seperangkat komputer plus output ke layar televisi. Jadi komputer sebagai alat kontrol dari Karaoke, dan televisi untuk display lagu-lagu karaoke. Pastinya butuh effort banyak untuk wujudkan aplikasi Karaoke. Tapi gak juga lah. Pada dasarnya, aplikasi karaoke sekarang pake dual display yang ada di graphic card komputer client (per room tentunya). Mo diakalin pake apa? SLI? Boleh juga, tapi perlu diingat, 2 display menampilkan display yang berbeda tapi 1 machine.

Implementation
Di Notebook standard sekarang sudah punya dual output, 1 output ke layar, 1 output ke eksternal, bisa ke projector, ato ke monitor lain. Set aja displaynya jadi Extended Desktop. Kalo di notebook yang support Intel Graphics Media, biasanya di desktop ada icon "Intel(R) Graphics Media Accelerator Driver for Mobile" Di Display Settings ada 2 tipe display, Single Display ato Multiple Display. Multiple Display ini dibagi 2 lagi, Dual Monitor (2 monitor menampilkan tampilan sama) atau Extended Monitor (2 monitor yang pada dasarnya adalah 1 display, hanya saja dibagi 2).

Dan jangan dikira bahwa gak bisa dilakukan di .NET. .NET (2005 keatas) menyediakan class Screen untuk keperluan ini.

Coding
Satu contoh jika aku mo buat aplikasi karaoke, ada 2 form, 1 untuk kontrol panel, 1 untuk display video. Konsep Extended Monitor di notebookku adalah sbb, display 1 menggunakan area (X,Y,W,H) sebagai berikut (0,0,1280,800), dan display 2 (tergantung settingan display 2), adalah (1281,0,800,600). Settingan bisa berbeda tergantung dari masing-masing driver itu sendiri.
Lempar ke variabel array s() saat application mulai initialize. Screen.AllScreens ini gunanya retrieve jumlah display di komputer. Bisa dilempar ke module, ato di event Form_Load
Public s() As Screen = Screen.AllScreens
Kemudian var array s() ini bisa dilempar utk berbagai macam tujuan. Misal untuk aplikasiku, aku pake untuk ambil dimensi dari display 1 dan 2, sehingga saat startup, dialog1 bisa diposisikan di area display 1 dan dialog2 bisa diposisikan di area display 2.
Form2.Left = s(1).WorkingArea.X

Hal ini akan membuat Form2 diposisikan di display area 2. Form1 gak perlu di-set apa-apa, karena defaultnya akan muncul di display 1 ato display utamanya.

Preety Simple, right? Modifikasi terserah kamu, gimana imajinasimu, kembangkanlah....

That's all for today...







14 Jun 2008

First Post

Well, kurasa ini posting pertama yang bisa aku lakukan untuk hari ini, setelah seharian training bersama bang Risman Adnan. Harapan dan impian cerah berharap bersama skill yang aku pelajari hari ini. I hope, posting-posting di sini bisa bantu nubie untuk memuaskan hasrat keinginan terhadap simple programming, sampe ke hard programming.

Things can't be happen without praying right?