This Blog

Syndication

News

Awards

Microsoft MVP Logo
Grab this badge here!

Certificates

Transcript ID#: 6724122
Brainbench ASP.NET Certificate
 
Brainbench ASP.NET 2.0 Certificate
 
Brainbench .NET Framework 2.0 Certificate

Ahmad Masykur

var myObject = { "languages" : [ "C#", "VB.NET", "ASP.NET", "Javascript", "SDCC", "Assembler" ] }; //

October 2008 - Posts

  • MSDN Day Event | Continuous Integration with VSTS 2008

     

    Seperti yang tertera dalam pengumuman Microsoft Indonesia tentang acara "MSDN Day | Application Lifecycle Management with VSTS 2008" di Balai Kartini. Saya menjadi pembicara dalam acara tersebut membawakan materi Continuous Integration with VSTS. Acara sangat meriah dengan audience mencapai 100 orang. Berikut beberapa foto yang diambil dari kamera Mbak Fitri.

    IMG_1666 IMG_1668
    IMG_1674 IMG_1683

    Rankuman keseluruhan acara dapat dilihat di blog-nya Wely.

    File presentasi saya dapat diambil di link bawah ini.

    Contoh program (Game TicTacToe dengan Silverlight 2.0) yang saya demokan dapat diambil di

    Share this post: | | | |
    Posted Oct 29 2008, 09:07 PM by cahnom with 1 comment(s)
    Filed under:
  • ReSharper 4.1 License from JetBrains

    Alhamdulillah, kiriman lisensi ReSharper 4.1 dari JetBrains sudah datang.

    Dengan menggunakan ReSharper, penulisan koding menjadi lebih cepat dan terstruktur. ReSharper sangat membantu developer untuk memperoleh kualitas kode yang baik dan minimal bug.

    Perbandingan antara fitur Visual Studio 2008 tanpa dan dengan ReSharper dapat dilihat di http://www.jetbrains.com/resharper/features/ComparisonMatrix_R4.html

    Semoga bermanfaat.

    Share this post: | | | |
    Posted Oct 28 2008, 04:07 PM by cahnom with no comments
    Filed under:
  • Menangkap MouseWheel Event dengan Silverlight 2

    Pada Silverlight 1.0 saya pernah menulis bagaimana mendeteksi event mousewheel (scroll) di Hacking Mouse Scroll Event pada Silverlight 1.0. Setelah keluarnya Silverlight 2, pemprograman tidak lagi menggunakan JavaScript sehingga cara tersebut sudah tidak lagi bisa digunakan. Untungnya Silverlight 2 memiliki mekanisme untuk menangkap event yang terjadi di HTML object yaitu System.Windows.Browser.HtmlPage.Window.AttachEvent. Dengan method tersebut, kita bisa tangkap event untuk mousewheel.

    Event mousewheel masing-masing browser yang didukung oleh Silverlight memiliki perbedaan yaitu:

    • Mozilla dan Safari menggunakan event "DOMMouseScroll" pada element window
    • IE menggunakan event "onmousewheel" pada element document
    • Opera menggunakan event "onmousewheel" pada element window.

    Perbedaan ini mengharuskan untuk menangkap ketiga event tersebut dan menghandle di satu buah event handler.

    HtmlPage.Window.AttachEvent("DOMMouseScroll", OnMouseWheel); HtmlPage.Window.AttachEvent("onmousewheel", OnMouseWheel); HtmlPage.Document.AttachEvent("onmousewheel", OnMouseWheel);

    Setelah event diregister ke handler yang sama, ada lagi perbedaan masing-masing browser pada waktu menangkap nilai property mouse wheel.

    • Pada IE dan Opera, nilai diambil dari property "wheelDelta".
    • Pada Mozilla dan Safari, nilai diambil dari property "detail".

    Selain property-nya berbeda nilai yang dihasilkan juga berbeda.

    • Pada IE dan Opera, setiap scroll akan menghasilkan nilai kelipatan +120 atau -120. Pada Opera terjadi perbedaan dengan IE mengenai tanda plus/minus. Opera menghasilkan nilai kebalikan dari IE. Oleh karena itu, untuk menyamakan nilai keluaran, pada Opera tandanya harus dibalik.
    • Pada Mozilla dan Safari, setiap scroll akan menghasilkan nilai kelipatan +3 atau -3

    Perbedaan nilai antara masing-masing browser perlu disamakan. Untuk menyamakan, digunakan +1 atau -1 sehingga penanganan di aplikasi menjadi lebih mudah.

    private void OnMouseWheel(object sender, HtmlEventArgs args) { double delta = 0; ScriptObject e = args.EventObject; if (e.GetProperty("detail") != null) { // Mozilla and Safari delta = ((double)e.GetProperty("detail")); } else if (e.GetProperty("wheelDelta") != null) { // IE and Opera delta = ((double)e.GetProperty("wheelDelta")); // In Opera 9, delta differs in sign as compared to IE. if (HtmlPage.BrowserInformation.UserAgent.IndexOf("opera") > -1) delta *= -1; } delta = Math.Sign(delta); if (MouseWheelScroll != null) MouseWheelScroll(new MouseWheelEventArgs(delta)); }

    Nilai delta dalam method di atas yang kemudian diambil dalam aplikasi. Supaya method-method ini dapat dipakai di beberapa tempat (reusable). Perlu dibungkus dalam class dan nilai delta dilempar dalam event. Kode selengkapnya dapat dilihat di bawah.

    using System; using System.Windows.Browser; /// <summary> /// Delegate for the MouseWheelScroll event. /// </summary> /// <param name="args">Event data for the MouseWheelScroll event.</param> public delegate void MouseWheelHandler(MouseWheelEventArgs args); /// <summary> /// Event data for the MouseWheelScroll event. /// </summary> public class MouseWheelEventArgs : EventArgs { private readonly double m_delta; public double Delta { get { return m_delta; } } public MouseWheelEventArgs(double delta) { m_delta = delta; } } /// <summary> /// Provides access to the browser-generated mouse wheel scrolling events. /// </summary> public class MouseWheelListener : IDisposable { public event MouseWheelHandler MouseWheelScroll; public MouseWheelListener() { HtmlPage.Window.AttachEvent("DOMMouseScroll", OnMouseWheel); HtmlPage.Window.AttachEvent("onmousewheel", OnMouseWheel); HtmlPage.Document.AttachEvent("onmousewheel", OnMouseWheel); } private void OnMouseWheel(object sender, HtmlEventArgs args) { double delta = 0; ScriptObject e = args.EventObject; if (e.GetProperty("detail") != null) { // Mozilla and Safari delta = ((double)e.GetProperty("detail")); } else if (e.GetProperty("wheelDelta") != null) { // IE and Opera delta = ((double)e.GetProperty("wheelDelta")); // In Opera 9, delta differs in sign as compared to IE. if (HtmlPage.BrowserInformation.UserAgent.IndexOf("opera") > -1) delta *= -1; } delta = Math.Sign(delta); if (MouseWheelScroll != null) MouseWheelScroll(new MouseWheelEventArgs(delta)); } /// <summary> /// Detaches from the browser-generated scroll events. /// </summary> public void Dispose() { HtmlPage.Window.DetachEvent("DOMMouseScroll", OnMouseWheel); HtmlPage.Window.DetachEvent("onmousewheel", OnMouseWheel); HtmlPage.Document.DetachEvent("onmousewheel", OnMouseWheel); } }

    Semoga bermanfaat.

    Share this post: | | | |
  • Install Silverlight 2 Tool for Visual Studio 2008 SP1 (RC1)

    Silvelight 2 Tools for Visual Studio 2008 SP1 (RC1) yang besarnya 72.1MB ternyata belum lengkap. Waktu installasi masih membutuhkan download lagi.

    image

    Kenapa Microsoft membuat installer segede gajah tapi masih juga membutuhkan tambahan download? Entah berapa gede lagi yang harus didownload untuk menginstall mahluk ini. Setelah selesai download terlihat counter bandwidth saya sebesar 7.2MB. Nilai itu tidak jauh meleset dari ukuran byte yang di download karena sebelum install counter hampir tidak bertambah dan waktu install counter terus naik dan saya tidak melakukan aktifitas lain yang menggunakan Internet.

    image

    Bagi yang tidak terhubung ke Internet, instalasi tidak bisa dilakukan. Di akhir instalasi akan ada pesen error. Ketika di buka log file-nya, disebutkan bahwa tidak dapat melakukan koneksi ke Internet.

    WinHttpDetectAutoProxyConfigUrl failed with error: 12180
    [10/15/2008, 6:13:16] (IronSpigot::WinHttpDownloader::GetProxySetting) Auto detection of proxy failed, try to retrieve proxy information via IE.
    [10/15/2008, 6:13:16] (IronSpigot::WinHttpDownloader::GetProxySettingViaIE) Retrieving proxy information using WinHttpGetIEProxyConfigForCurrentUser
    [10/15/2008, 6:13:16] (IronSpigot::WinHttpDownloader::GetProxySettingViaIE) Unable to retrieve Proxy information although WinHttpGetIEProxyConfigForCurrentUser called succeeded
    [10/15/2008, 6:13:16] (IronSpigot::WinHttpDownloader::CreateSession) WINHTTP_ACCESS_TYPE_DEFAULT_PROXY
    [10/15/2008, 6:13:16] (IronSpigot::WinHttpDownloader::StartDownload) Session Created
    [10/15/2008, 6:13:16] (IronSpigot::WinHttpDownloader::StartDownload) Connection Created
    [10/15/2008, 6:13:16] (IronSpigot::WinHttpDownloader::StartDownload) Request Created
    [10/15/2008, 6:13:54] (IronSpigot::WinHttpDownloader::AsyncCallbackInternal) WINHTTP_CALLBACK_STATUS_REQUEST_ERROR error: error=12002, result= 2. Percentage downloaded=0
    [10/15/2008, 6:13:55] (IronSpigot::RetryingDownloaderT<class IronSpigot::WinHttpDownloader,class IronSpigot::BitsDownloader,class IronSpigot::UrlMonDownloader,class IronSpigot::FileAuthenticity>::PerformAction) Download failed at attempt 2 of 4 for http://go.microsoft.com/fwlink/?LinkId=127693 using http:
    [10/15/2008, 6:13:55] (IronSpigot::RetryingDownloaderT<class IronSpigot::WinHttpDownloader,class IronSpigot::BitsDownloader,class IronSpigot::UrlMonDownloader,class IronSpigot::FileAuthenticity>::UseHttp) Determine the protocol to use
    [10/15/2008, 6:13:55] (IronSpigot::RetryingDownloaderT<class IronSpigot::WinHttpDownloader,class IronSpigot::BitsDownloader,class IronSpigot::UrlMonDownloader,class IronSpigot::FileAuthenticity>::PerformAction) Use BITS
    [10/15/2008, 6:13:55] (IronSpigot::RetryingDownloaderT<class IronSpigot::WinHttpDownloader,class IronSpigot::BitsDownloader,class IronSpigot::UrlMonDownloader,class IronSpigot::FileAuthenticity>::PerformAction) Download attempt 3 of 4 for http://go.microsoft.com/fwlink/?LinkId=127693 using BITS
    [10/15/2008, 6:21:8] (IronSpigot::BitsDownloader::JobError) Error from JobError Callback : hr= 0x80072ee2 Context=5 Description=The operation timed out . Percentage downloaded = 0
    [10/15/2008, 6:21:8] (IronSpigot::RetryingDownloaderT<class IronSpigot::WinHttpDownloader,class IronSpigot::BitsDownloader,class IronSpigot::UrlMonDownloader,class IronSpigot::FileAuthenticity>::PerformAction) Download failed at attempt 3 of 4 for http://go.microsoft.com/fwlink/?LinkId=127693 using BITS
    [10/15/2008, 6:21:8] (IronSpigot::RetryingDownloaderT<class IronSpigot::WinHttpDownloader,class IronSpigot::BitsDownloader,class IronSpigot::UrlMonDownloader,class IronSpigot::FileAuthenticity>::UseHttp) Determine the protocol to use
    [10/15/2008, 6:21:8] (IronSpigot::RetryingDownloaderT<class IronSpigot::WinHttpDownloader,class IronSpigot::BitsDownloader,class IronSpigot::UrlMonDownloader,class IronSpigot::FileAuthenticity>::PerformAction) Use WinHttp
    [10/15/2008, 6:21:8] (IronSpigot::RetryingDownloaderT<class IronSpigot::WinHttpDownloader,class IronSpigot::BitsDownloader,class IronSpigot::UrlMonDownloader,class IronSpigot::FileAuthenticity>::PerformAction) Download attempt 4 of 4 for http://go.microsoft.com/fwlink/?LinkId=127693 using http:
    [10/15/2008, 6:21:14] (IronSpigot::WinHttpDownloader::GetProxySettingViaAutoDetect) Auto detecting proxy information
    [10/15/2008, 6:21:28] (IronSpigot::WinHttpDownloader::GetProxySettingViaAutoDetect) WinHttpDetectAutoProxyConfigUrl failed with error: 12180
    [10/15/2008, 6:21:28] (IronSpigot::WinHttpDownloader::GetProxySetting) Auto detection of proxy failed, try to retrieve proxy information via IE.
    [10/15/2008, 6:21:28] (IronSpigot::WinHttpDownloader::GetProxySettingViaIE) Retrieving proxy information using WinHttpGetIEProxyConfigForCurrentUser
    [10/15/2008, 6:21:28] (IronSpigot::WinHttpDownloader::GetProxySettingViaIE) Unable to retrieve Proxy information although WinHttpGetIEProxyConfigForCurrentUser called succeeded
    [10/15/2008, 6:21:28] (IronSpigot::WinHttpDownloader::CreateSession) WINHTTP_ACCESS_TYPE_DEFAULT_PROXY
    [10/15/2008, 6:21:28] (IronSpigot::WinHttpDownloader::StartDownload) Session Created
    [10/15/2008, 6:21:28] (IronSpigot::WinHttpDownloader::StartDownload) Connection Created
    [10/15/2008, 6:21:28] (IronSpigot::WinHttpDownloader::StartDownload) Request Created
    [10/15/2008, 6:22:4] (IronSpigot::WinHttpDownloader::AsyncCallbackInternal) WINHTTP_CALLBACK_STATUS_REQUEST_ERROR error: error=12002, result= 2. Percentage downloaded=0
    [10/15/2008, 6:22:4] (IronSpigot::RetryingDownloaderT<class IronSpigot::WinHttpDownloader,class IronSpigot::BitsDownloader,class IronSpigot::UrlMonDownloader,class IronSpigot::FileAuthenticity>::PerformAction) Download failed at attempt 4 of 4 for http://go.microsoft.com/fwlink/?LinkId=127693 using http:
    [10/15/2008, 6:22:4] (IronSpigot::LogUtils::LogFinalResult) Final Result: Installation failed with error code: (0x80072EE2).

    Setelah dianalisis, ternyata yang didownload adalah Silverlight 2 runtime. Saya coba di komputer lain dengan menginstall Silverlight 2 runtime terlebih dahulu sebelum menginstall Silverlight Tools, proses download dilewati.

    Conclusion

    Sebelum melakukan Install Silverlight 2 Tools for Visual Studio 2008 SP1 (RC1) pastikan.

    • Visual Studio 2008 SP1 sudah terinstall
    • Uninstall Silverlight 2 alpha / beta / RC0.
    • Silverlight 2 runtime sudah terinstall
    • Uninstall semua versi preview dan trial dari Expression Blend.

    Semoga bermanfaat.

    Share this post: | | | |
  • Silverlight 2 Released

    Beberapa jam yang lalu saya sudah menulis "Silverlight 2 Releases Today" tentang keluarnya Silverlight 2 pada hari ini. Malam ini Silverlight 2 sudah bisa diunduh di sini sebagai bagian dari Visual Studio 2008 dan Expression Blend 2 tool. Tulisan ini memang agak terlambat karena tadi beberapa saat sebelum meninggalkan kantor Microsoft Indonesia di BEJ Lantai 18 saya cek Silverlight 2 belum bisa diunduh. Di busway Wely baru ngasih tahu kalo beberapa menit sebelum meninggalkan kantor, Scott Gu mengumumkan bahwa Silverlight 2 sudah rilis. Tak apa lah, informasi tetap perlu disebarluaskan.

    Kini saatnya untuk download kembali Silverlight 2 setelah minggu lalu download Silverlight 2 RC0. Besok pagi siap untuk buat aplikasi dengan Silverlight 2.

    Share this post: | | | |
  • Silverlight 2 RTW (2.0.31005.0) Already Available

    Silverlight 2.0 RTW (Release To Web) detik ini sudah siap diunduh dari http://www.microsoft.com/silverlight/resources/install.aspx.

     

    image

    Bagi yang sudah tidak sabar mencoba Silverlight 2, langsung saja menuju ke TKP.

    Share this post: | | | |
    Posted Oct 14 2008, 04:01 PM by cahnom with no comments
    Filed under:
  • Silverlight 2 Releases Today

    Berdasarkan blog Jesse Liberty di Silverlight 2 Releases Tomorrow menyebutkan bahwa besok (dari kemaren waktu Redmond, atau hari ini WIB) Silverlight 2 akan release. Berita resmi dari Microsoft (http://www.microsoft.com/presspass/press/2008/oct08/10-13Silverlight2PR.mspx) juga menuliskan bahwa Silverlight 2 akan segera dapat dinikmati. Setelah beberapa hari yang lalu install Silverlight 2 RC0, kini saatnya menunggu waktu peluncuran Silverlight 2 dan convert semua applikasi Silverlight lama ke Silverlight yang baru. Silverlight 2 dapat diunduh dari http://www.microsoft.com/silverlight

    Dalam peluncuran Silverlight 2, Microsoft juga akan mengeluarkan programming template yang disebut sebagai Silverlight Control Pack di bawah lisensi Microsoft Permissive Licence. Dengan ini, programmer dapat menulis applikasi Silverlight dengan Visual Web Developer 2008 Express Edition.

    Saatnya bermain dengan Silverlight 2.

    Share this post: | | | |