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" ] }; //

January 2010 - Posts

  • jQuery 1.4.1 Sudah Tersedia di Microsoft CDN

    Setelah jQuery 1.4 dirilis pada tanggal 15 yang lalu, dan jQuery 1.4.1 telah dirilis juga kemaren. Hari ini jQuery 1.4.1 telah tersedia di Microsoft CDN. Bagi Anda yang memiliki website publik, tentunya sangat terbantu dengan adanya jQuery di Microsoft CDN. Situs Anda akan semakin cepat diakses oleh semua pengguna dari seluruh penjuru dunia.

    Untuk menggunakan jQuery dari Microsoft CDN, cukup dengan memuat jQuery dari server CDN seperti contoh berikut.

    <script src="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.1.js" 
    type="text/javascript">
    </script>                        
    
    
    Anda juga bisa menggunakan versi yang sudah termampatkan dengan kode sebagai berikut.
    <script src="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.1.min.js" 
    type="text/javascript">
    </script>
    

    Anda juga bisa menggunakan Microsoft CDN dengan ScriptManager di Visual Studio 2010 seperti yang pernah saya tulis di sini.

    Selamat belajar.

    Share this post: | | | |
  • Named Parameters di C#

    Setelah kemaren saya bahas optional parameter, sekarang saya akan bahas fitur yang melengkapi optonal parameter yaitu parameter bernama (named parameter). Salah satu manfaat dari parameter bernama adalah untuk memecahkan masalah parameter yang ambigu selama ini. Ambil contoh kutipan kode berikut yang memiliki dua parameter string.

    public static void TambahKontak(
        string namaLengkap,
        string telepon = "",
        DateTime? tanggalLahir = null)
    {
        // tulis kode anda di sini
    }

    Jenis data dua parameter parameter untuk method TambahKontak di atas adalah string, namun parameter NamaLengkap bukanlah parameter optional. Perhatikan contoh berikut.

    TambahKontak(
        telepon: "0817240000",
        namaLengkap: "Ahmad Masykur",
        tanggalLahir: DateTime.Now.AddYears(-17)
    );

    Contoh di atas, method TambahKontak diisi dengan parameter yang lengkap namun dengan urutan yang tidak sama dengan definisi methodnya. Dengan parameter bernama, kita tidak harus memasukkan parameter sesuai dengan urutannya. Hal ini bermanfaat bila ada lebih dari satu optional parameter dengan tipe data yang sama. Sebagai contoh, tambahkan satu parameter optional AlamatPosel pada method TambahKontak sebagai berikut.

    public static void TambahKontak(
        string namaLengkap,
        string telepon = "",
        string posel = "",
        DateTime? tanggalLahir = null)
    {
        // tulis kode anda di sini
    }

    Anda dapat memanggil method di atas dengan cara sebagai berikut.

    TambahKontak(
        "Ahmad Masykur",
        "ahmad@localhost.localdomain.com");

    Method di atas tidak akan membuat compile error karena parameter pertama dan ke dua adalah string, dan parameter ke dua dan seterusnya adalah optional. Namun data yang dimasukkan tidak sesuai dengan yang diharapkan. Alamat posel (email) akan masuk ke data nomor telepon karena parameter kedua adalah nomor telepon. Hal ini bisa dihindari dengan menggunakan nama parameter sebagai berikut.

    TambahKontak(
        "Ahmad Masykur",
        posel: "ahmad@localhost.localdomain.com");

    Dengan kode di atas, nilai kedua akan masuk dalam parameter posel. Inilah kelebihan dari optional parameter dan named parameter yang tidak bisa dilakukan dengan overload method pada C# sebelumnya. Coba Anda ganti method di atas dengan overload method, Anda tidak akan bisa melakukannya kecuali membuat method dengan nama yang berbeda.

    Share this post: | | | |
  • C# 4.0 Mendukung Optional Parameter

    Optional parameter sudah dikenal sejak lama di VB, namun sampai C# 3.0 optional parameter belum diterapkan. Untuk membuat optional parameter biasanya para developer C# menggunakan overload method seperti contoh berikut.

    // Overload tanpa parameter
    public static string SelamatPagi() 
    {
        return "Selamat pagi, semua!";
    }
    // Overload method dengan parameter
    public static string SelamatPagi(string nama)
    {
        return "Selamat pagi, " + nama + "!";
    }

    Dengan demikian, kita bisa mengakses method SelamatPagi dengan maupun tanpa parameter. Untuk memanggil method tersebut, perhatikan contoh berikut.

    // nama merupakan optional
    SelamatPagi();
    // overload dengan parameter
    SelamatPagi("agus");

    Jika Anda memiliki method dengan banyak optional parameter, Anda akan membuat overload method sebanyak optional parameter tersebut. Hal ini menjadikan method kode kita semakin panjang. Dengan menggunakan C# 4.0, kita dapat menyingkirkan overload method dengan optional parameter seperti contoh berikut.

    // Method dengan optional parameter
    public static string SelamatPagi(string nama = "semua")
    {
        return "Selamat pagi, " + nama + "!";
    }

    Potongan kode di atas dapat diakses dengan cara yang sama dengan overload method. Ketika parameter tidak diisikan, maka nilai default yang akan digunakan.

    Share this post: | | | |
  • jQuery 1.4 telah dirilis dan akan Masuk dalam Visual Studio 2010

    jQuery 1.4 telah dirilis Jum’at (15 Jan ‘10) kemaren. Seperti yang telah ditulis oleh Scott Guthrie dalam blog setahun silam, bahwa Microsoft akan memasukkan jQuery ke dalam rilis ASP.NET 4. Menurut informasi dari John Resig, jQuery versi 1.4 inilah yang nantinya akan dimasukkan ke dalam ASP.NET 4 ScriptManager. Selain dimasukkannya ke dalam .NET Framework, intellisense untuk jQuery 1.4 juga akan didukung secara native di VisualStudio 2010.

    Anda dapat mengunduh jQuery 1.4 dari sini: http://code.jquery.com/jquery-1.4.js

    Berikut adalah 15 fitur baru di jQuery 1.4

    1. Passing Attribute ke jQuery(...) menggunakan key value pair. http://docs.jquery.com/Attributes/attr#keyvalue
    2. Selector ke sibling dengan prevUntil, nextUntil, parentsUntil
    3. Binding Multiple Event Handlers. Baca lebih lanjut tentang .bind(…)
    4. Per-Property Easing
    5. Penambahan live event baru: “submit”, “change”, “focus” dan “blur”.
    6. proxy untuk mengatur context dalam function. Baca lebih lanjut tentang  jQuery.proxy
    7. Penambahan fungsi delay pada animasi. Baca lebih lanjut tentang .delay(…)
    8. Periksa apakah element mengandung sesuatu dengan fungsi .has(…)dan jQuery.contains(…).
    9. Penambahan fungsi .unwrap(…)
    10. Menghapus element tanpa menghapus data di dalamnya. Baca lebih lanjut tentang .detach(…)
    11. Peningkatan fungsi .index(…)
    12. Manipulasi DOM kini mendukung callback.
    13. Menentukan tipe objek dengan isPlainObject(…) dan isEmptyObject(…)
    14. Peningkatan fungsi .closest(…)
    15. Event baru: focusIn dan focusOut
    Share this post: | | | |
  • Visual Studio 2010 and .NET Framework 4 Training Kit - January Release

    The Visual Studio 2010 and .NET Framework 4 Training Kit had been released and includes presentations, hands-on labs, and demos. This content is designed to help you learn how to utilize the Visual Studio 2010 features and a variety of framework technologies like C# 4.0, ASP.NET 4, Visual Basic 10 and more. This release of training kit can be downloaded from here.

    Share this post: | | | |
  • ExpandoObject Type - C# Semakin Mirip JavaScript

    C# semakin lama semakin mirip JavaScript. Pada C# 3.0, kita kenal yang namanya implicitly local variable (var), anonymous types (ex: var obj = new { Nama = "Ahmad Masykur", Address = "Jakarta"};) dan object and collection initializers. Kesemua syntax tersebut mirip dengan JavaScript.

    C# 4.0 kini datang dengan kemampuan dynamic language sehingga semakin mirip dengan JavaScript yang mana JavaScript adalah dynamic language. Berikut adalah contoh ExpandoObject yang merupakan salah satu bagian dari dynamic language.

    dynamic contact = new ExpandoObject(); contact.Name = "Ahmad Masykur"; contact.Address = "Jakarta";

    Bandingkan dengan code JavaScript berikut.

    var contact = new object(); contact.Name = "Ahmad Masykur"; contact.Address = "Jakarta";

    Mirip bukan? Nah itulah kelabihan dari dynamic language. Kita dapat membuat property object saat runtime. Tidak hanya itu, kelebihan dynamic language dari C# adalah dukungan intellisense dari VisualStudio sehingga bisa dicek saat design time.

    ExpandoObject sangat membantu untuk mengakses COM interop. Biasanya untuk mengkases property COM digunakan myobject.GetProperty("Address"). Hal ini bisa mengakibatkan runtime error karena tidak dapat dicek saat design time.  Berbeda dengan ExpandoObject yang bisa diakses dengan myObject.Address yang bisa dicek saat design time dan support intellisense, sehingga meminimalkan runtime error.

    Selamat menikmati kenyamanan dynamic language.

    Share this post: | | | |
  • Visual Studio 2010 and .NET Framework 4 Training Kit

    Microsoft has released a training kit for Visual Studio 2010 and .NET Framework 4.0 Beta 2 includes presentations, hands-on-labs, demos.

    Training Kit contents:

    • C# 4.0
    • Visual Basic 10
    • F#
    • Parallel Extensions
    • Windows Communication Foundation
    • Windows Workflow
    • Windows Presentation Foundation
    • ASP.NET 4
    • Windows 7*
    • Entity Framework
    • ADO.NET Data Services
    • Managed Extensibility Framework
    • Visual Studio Team System

    Download the training kit from here and launch the self-extracting package. Enjoy learning Visual Studio with hands-on-labs and demos.

    * Has been added in October 2009 release.

    Share this post: | | | |
  • Perubahan Besar pada Visual C++ 2010

    Solution dan project Visual Studio C++ yang dulu menggunakan VCBuild.exe untuk mengkompile project, kini tidak lagi. Semua Visual Studio project termasuk C++ kini menggunakan build tool MSBuild. Dengan menggunakan MSBuild, konfigurasi build menjadi lebih fleksibel karena semua konfigurasi dalam bentuk XML. Integrasi dengan TFS dan setup Continuous Integration juga semakin mudah karena menggunakan build tool yang sama untuk semua project.

    Format file project C++ (.vcxproj) juga menggunakan format XML juga. Visual C++ 2010 akan secara otomatis mengkonversi project yang dibuat dengan Visual Studio sebelumnya menjadi format baru.

    Selain format project yang berubah, Visual C++ 2010 juga datang dengan standar bahasa baru yang dinamakan C++0x. VC++ 2010 juga datang dengan set pustaka yang mendukung parallel programming. Dalam VC++ 2010 dikenalkan Parallel Patterns Library (PPL) yang menyediakan abstraction untuk bembuat aplikasi C++ yang mendukung proses multi-inti (multi-core).

    Anda dapat menyimak berbagai informasi terbaru mengenai perkembangan Visual C++ dari http://blogs.msdn.com/vcblog.

    Share this post: | | | |
  • Fitur Baru ASP.NET 4.0 – Bagian 3

    Melanjutkan seri tulisan Fitur Baru ASP.NET 4.0 bagian 1 dan bagian 2, kini saya paparkan lagi beberapa fitur baru yang lain.

    ASP.NET Chart Control

    ASP.NET Chart control pertama kali dikenalkan dalam .NET Framework  3.5 SP1 dengan mengunduh paket terpisah dari Microsoft Chart Controls for Microsoft .NET Framework 3.5. Kini Chart control telah menjadi bagian dari .NET Framework 4.0. Terdapat 25 jenis chart yang berbeda dengan dukungan chart 3D. Berikut adalah contoh chart control yang dihasilkan.

     image image

    Di Visual Studio 2010, Chart control sudah tersedia di toobox bagaian Data. Untuk menggunakannya, tinggal drag n drop Chart control ke dalam halaman.

    image

    Perbaikan ASP.NET Menu

    Sebelum ASP.NET 4.0, control Menu menghasilkan menu dengan HTML table. Hal ini mempersulit penerapan style CSS. Di ASP.NET 4.0, menu sekarang dirender sebagai unordered list (UL) dan list element (LI) dengan paduan CSS class, seperti contoh berikut.

    <div ud="Menu1">
        <ul class="level1">
            <li><a class="level1" ref="#">Home</a></li>
            <li><a class="level1" ref="#">Auto Parts</a>
                <ul class="level2">
                    <li><a class="level2" href="#">US</a> 
                        <ul class="level3">
                            <li class="level3"><a class="level3" href="#">GM</a></li>
                            <li class="level3"><a class="level3" href="#">Ford</a></li>
                        </ul>
                    </li>
                    <li><a class="level2" href="#>Japan</a>
                        <ul class="level3">
                            <li class="level3"><a class="level3" href="#">Toyota</a></li>
                            <li class="level3"><a class="level3" href="#">Honda</a></li>
                        </ul>
                    </li>
                </ul>
            </li>
        </ul>
    </div>
    

    Dengan demikian, tampilan menu lebih mudah untuk ubah dengan menggunakan CSS.

    Perbaikan RadioButtonList dan CheckBoxList

    Sebagaimana ASP.NET Menu, RadioButtonList dan CheckBoxList juga mengalami perbaikan dari sisi rendering ke HTML. Keduanya kini memiliki property RepeatLayout tambahan yaitu OrderedList dan UnorderedList.

    image image

    OrderedList akan membuat control dirender sebagai element <li> di dalam element <ol>. Sedangkan UnorderedList akan membuat control dirender sebagai <li> di dalam <ul>. Dengan demikian control tersebut dapat diubah dengan style CSS.

    Share this post: | | | |
  • Fitur Baru ASP.NET 4.0 – Bagian 2

    Beberapa waktu yang lalu saya telah memaparkan bererapa fitur baru di ASP.NET 4 di Fitur Baru ASP.NET 4.0 - Bagian 1, kini saya akan paparkan beberapa fitur baru lainnya. Berikut adalah beberapa fitur yang akan datang bersama ASP.NET 4.0

    ViewState

    Bagi developer ASP.NET pasti mengetahui bahwa ViewState memiliki beberapa kekurangan. Semua status control akan disimpan dalam ViewState. Berapa banyak bandwidth yang digunakan untuk ViewState sedangkan kebanyakan informasi itu tidak digunakan. Kita dapat mematikan ViewState di level halaman (default-nya nyala) dan semua control dalam halaman tersebut akan mematikan ViewState. Namun hal itu tidak bisa memecahkan masalah, karena kita acap kali membutuhkan beberapa informasi ViewState dari beberapa control dalam halaman. Kita dapat mematikan ViewState di masing-masing control dan tetap menghidupkan ViewState di halaman dan beberapa control yang dibutuhkan saja. Namun hal ini juga masih menjadi kendala jika dalam internal control yang kita matikan ViewState-nya ternyata memerlukan ViewState. Hal inilah yang menjadi kekurangan ViewState di ASP.NET 2.0 dan sebelumnya.

    ViewState di ASP.NET 4 dapat diatur sedemikian rupa sehingga kita dapat menentukan apakah ViewState akan nyala (Enabled), mati (Disabled) atau mengikuti status ViewState induknya (Inherit). Pengaturan ini dilakukan di property ViewStateMode yang mana memiliki tiga pilihan yaitu Enabled, Disabled dan Inherit (atau kosong). Jika property tersebut kosong maka secara otomatis akan diset menjadi Inherit.

    Anda dapat mengeset property ViewStateMode menjadi Disabled di level direktif @Page dan memilih beberapa control yang akan diset ViewStateMode menjadi Enabled.

    <%@ Page Title="Home Page" Language="C#" 
        MasterPageFile="~/Site.master" 
        AutoEventWireup="true" ViewStateMode="Disabled"
        CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>
    

    Semua control dalam halaman tersebut akan dimatikan jika property ViewStateMode pada control tersebut diset menjadi Inherit atau dikosongkan.

    Anda juga dapat mengeset ViewStateMode di level MasterPage pada control ContentPlaceHolder. Dengan mengeset ViewStateMode di level MasterPage, semua control dalam page yang menggunakan MasterPage tersebut akan mengikuti setting pada MasterPage.

    <asp:ContentPlaceHolder 
    ID="MainContent" 
    ViewStateMode="Disabled" 
    runat="server"/>
    

    Dukungan Routing yang Lebih Baik

    Jika Anda sudah mengenal ASP.NET MVC, maka tidak asing dengan istilah routing. Routing atau lebih tepat disebut sebagai URL routing merupakan mekanisme untuk membelokkan request dari URL virtual ke handler yang sebenarnya. Pada ASP.NET WebForms setiap request ditangani oleh file fisik di server web. Berbeda dengan ASP.NET MVC yang tidak hengharuskan memiliki file fisik untuk menangani setiap request. Request akan dibelokkan berdasarkan pola yang telah didefinisikan.

    Routing bermanfaat untuk memudahkan pembacaan URL oleh manusia dan mesin pencari. Sebagai contoh URL berikut http://server/buku.aspx?penerbit=gramedia&tahun=2009 akan tampak seperti URL berikut  http://server/buku/penerbit/gramedia/2009. Dengan menggunakan URL yang kedua, kita akan lebih mudah untuk mengingat dan juga lebih mudah untuk di-indeks oleh search engine.

    Route didefinisikan dalam pola URL dalam sebuah placeholder yang akan memetakan nilainya setiap kali ada permintaan URL. Placeholder tersebut mengenali parameter URL di dalam tanda kurung kurawal { }. Informasil lainnya di dalam URL dianggap sebagai konstanta. Konstanta dan parameter URL dipisahkan dengan karakter garis miring (/). Route didefinisikan dalam method Application_Start di file Global.asax

    void Application_Start(object sender, EventArgs e)
    {
        RouteTable.Routes.Add("BukuRoute", 
            new Route("buku/{penerbit}/{tahun}",
            new PageRouteHandler("~/buku.aspx")));
    }

    Dalam contoh di atas, route dengan nama “BukuRoute” akan me-routing-kan buku/{penerbit}/{tahun} ke file buku.aspx. Sebagai contoh URL  http://server/buku/penerbit/gramedia/2009 akan dipetakan ke halaman buku.aspx.

    Dalam halaman buku.aspx, nilai dari paramter dapat diambil dari collection RouteData.Values seperti contoh berikut.

    var penerbit = RouteData.Values["penerbit"];
    var tahunTerbit = RouteData.Values["tahun"];

    Dengan demikian, URL yang digunakan menjadi lebih bersih dan mudah dibaca.

    Share this post: | | | |
  • Bug Visual Studio 2010 di VMware dan Solusinya

    Saat petamakali install Visual Studio 2010, kecewa karena tampilan font-nya berantakan. Saya berfikir ini merupakan bug di Visual Studio 2010 karena saat ini masih versi Beta. Saya coba submit feedback ke Microsoft dan baru hari ini mendapatkan jawaban yang jelas.

    Berikut adalah feedback yang saya submit ke Microsoft

    http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=511572

    Dan jawaban dari Microsoft hari ini adalah karena driver grafis yang digunakan oleh VMware masih Beta sehingga tidak dapat menampilkan WPF dengan sempurna.

    http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=482803#details

    Dari informasi tersebut, saya coba untuk mematikan fitur Graphic Accelerator di VMware. Alhamdulillah, kini Visual Studio 2010 dapat ditampilkan dengan baik walaupun tanpa Windows Aero.

    image

    Share this post: | | | |
  • Kemudahan Membuat Extension di Visual Studio 2010

    Satu perubahan yang besar dalam IDE Visual Studio 2010 adalah digunakannya WPF sebagai antarmukanya. WPF merupakan teknologi desktop yang datang bersama .NET Framework 3.0. Dengan mengunakan WPF, pemprograman desktop dapat dilakukan dengan menggunakan markup language selayaknya di web. WPF menyajikan user experience yang lebih bagus dengan beberapa animasi out of the box dan rendering engine yang sudah dioptimalkan dengen GPU (Graphic Processing Unit) modern.

    Belum banyak aplikasi Microsoft yang menggunakan WPF. Dengan digunakannya WPF di Visual Studio generasi baru ini, sepertinya Microsoft ingin menunjukkan bahwa WPF benar-benar dapat digunakan di dunia industri, tidak sekedar untuk dunia hiburan.

    vs2010-splash-screen

    Dengan penggunaan WPF, pembuatan plugin/extension yang terintegrasi dengan IDE Visual Studio menjadi lebih mudah. Pembuatan extension di Visual Studio 2008 sangatlah sulit, kini dengan di Visual Studio 2010 hal itu menjadi sangatlah mudah. Beberapa tulisan dan video tentang pembuatan extension diantaranya:

    Dengan kemudahan pembuatan extension di VS2010, diharapkan nantinya semakin banyak tool peningkatan produktivitas untuk Visual Studio. Beberapa tool produktivitas yang sekarang ada seperti CodeRush dari DevExpress, Resharper dari JetBrain. Dengan penambahan tool tersebut produktivitas dan kualitas kode dapat meningkat.

    Share this post: | | | |