Foto2 n Materi CSA 1 UKDW (Deep Dive Windows Vista)

Pada hari sabtu tanggal 13 Desember 2008, sudah dilangsungkan seminar sehari dengan tema CSA “Deep Dive Windows Vista” yang dilangsungkan di Lab A Universitas Kristen Duta Wacana, adapu materi yang disampaikan adalah :

  • “Now and Future Investment in Windows Vista using WPF” Oleh: Ridi Ferdiana (MIC UGM, MVP Client Dev)
  • “Easy Deployment with Windows Vista Otomation Toolkit” Oleh: Baskoro (MIC UGM)
  • “Deploy ASP.NET Personal Website with IIS7 and Windows Vista” Oleh: Erick Kurniawan (Dosen SI UKDW, MUGI Jogja)
  • “Save The Day,Save Your Data with Windows Vista Recovery Technology” Oleh: Lutfie Royan (MVP Storage System, MUGI Semarang)

image

Lokasi: Lab A Gedung Agape UKDW

 

image

image

Peserta Community Skill Accellerator dari kampus (ugm, uajy, ukdw, dll)

 

image

Pembicara: pak lutfie, mas baskoro, pak ridi, saya (dari kiri ke kanan)

 

Materi:

CSA (Community Skill Accelerator) "Deep Dive Windows Vista Technology Sessions"

Bagi teman-teman developer atau mahasiswa tingkat akhir yang sangat tertarik dengan pengembangan teknologi Microsoft yang berdomisili di kota yogyakarta dan sekitarnya anda dapat mengikuti event ini :

poster

Lokasi pelaksanaan:

Tempat: Universitas Kristen Duta Wacana, Jl. Dr. Wahidin Sudirohusodo No. 5-27 (Lab A, gedung Agape Lt. 2)

Hari / Tanggal : Sabtu, 13 Desember 2008

Jam : 8.30 – 13.30

Untuk mengikuti event ini tidak ditarik biaya alias “FREE

Pendaftaran hubungi : event@micresearch.net dengan mengirimkan identitas (nama, alamat, no hp, dan instansi)

Buruan yaa, tempat terbatas…

NEW ASP.NET Charting Control

Barusan baca blognya mbah scottgu nich..

Microsoft sudah merilis server control baru nan kereeen untuk membuat chart yang support ASP.NET 3.5, anda dapat mendownload komponennya disini :

image

image

image

Atau anda dapat baca artikel lengkapnya di blognya mbah scottgu

selamat mencoba ..

Fitur VB9 (Relaxed Delegates)

Halo, ini adalah posting kedelapan saya tentang fitur dari VB9 yaitu Relaxed Delegates, anda dapat melihat posting saya sebelumnya:

  • Implicitly typed local vaiable
  • Object initializer
  • Anonymous types
  • Nullable types
  • If Ternary operator
  • Partial Method
  • Extension Method

Pada VB8 jika anda mengaktifkan pilihan option strict menjadi “Off” maka compiler VB secara otomatis akan mengkonversi dari satu tipe data ke tipe data yang lain tanpa harus menuliskannya secara eksplisit (casting), misal untuk melakukan narrowing conversion (dari double menjadi integer). Pada VB9 fasilitas semacam itu juga ditambahkan namun untuk signatur delegates.

Pada VB8 jika anda menggunakan delegates seperti berikut:

   1: Delegate Sub Hello(ByVal h As Object)
   2: Module Module1
   3:     Sub Kenalan(ByVal h As String)
   4:         Console.WriteLine("Helloo" & h)
   5:     End Sub
   6:     Sub Main()
   7:         Dim hai As New Hello(AddressOf Kenalan)
   8:         hai("Erick")
   9:     End Sub
  10: End Module

maka compiler VB akan memberikan pesan error bahwa tipe datanya tidak sama beda signatur delegates antara “object” dan “string”

image   

Tapi pada VB9 kasus seperti diatas tidak akan terjadi lagi karena compiler VB9 sudah cukup smart untuk mengkonversi dari “object” ke “string”

image

Fitur VB9 (Extension Method)

Halo, ini adalah posting ketujuh saya tentang fitur dari VB9 yaitu Extension Method, anda dapat melihat posting saya sebelumnya:

  • Implicitly typed local vaiable
  • Object initializer
  • Anonymous types
  • Nullable types
  • If Ternary operator
  • Partial Method

Extension method digunakan untuk menambahkan method kedalam class tanpa harus menulis ulang atau mengoverride class tersebut, biasanya digunakan untuk class-class bawaan dari .NET yang kita tidak bisa memodifikasinya langsung (mis: String). Untuk menambahkan extension method anda harus menambahkan keyword <Extension()>.

Misal anda ingin membuat method untuk membalik kata, padahal pada class String belum disediakan method tersebut maka anda dapat menambahkannya dengan Extension Method.

Pada VB8 anda dapat menuliskannya sebagai berikut :

Sub Main()
   Dim nama = "Erick Kurniawan"
   Dim balikNama = BalikKata(nama).ToLower().Substring(0, 9)
   'Dim balikNama = nama.ToLower().BalikKata().Substring(0, 9)
   'Console.WriteLine(balikNama)
End Sub
 
 
Function BalikKata(ByVal kata As String) As String
   Dim kar = kata.ToCharArray()
   Array.Reverse(kar)
   Return New String(kar)
End Function

Anda harus memanggil fungsi dengan cara diatas karena memang fungsi BalikKata tidak ada dalam class String, jika anda ingin menambahkan method BalikKata dalam class String maka anda dapat menuliskan:

Imports System.Runtime.CompilerServices
 
Module ExtensionMethod
    Sub Main()
        Dim nama = "Erick Kurniawan"
        Dim balikNama = nama.ToLower().BalikKata().Substring(0, 9)
        Console.WriteLine(balikNama)
    End Sub
 
    <Extension()> _
    Function BalikKata(ByVal kata As String) As String
        Dim kar = kata.ToCharArray()
        Array.Reverse(kar)
        Return New String(kar)
    End Function
End Module

Dengan menggunakan extension method anda dapat melakukan penulisan dengan cara “chaining” yang akan terasa lebih natural:

image

Dim balikNama = nama.ToLower().BalikKata().Substring(0, 9)

Fitur VB9 (Partial Method)

Halo, ini adalah posting keenam saya tentang fitur dari VB9 yaitu Partial Method, anda dapat melihat posting saya sebelumnya:

  • Implicitly typed local vaiable
  • Object initializer
  • Anonymous types
  • Nullable types
  • If Ternary operator

Partial Method pada VB9 adalah fitur yang hampir sama dengan Partial Class yang sudah ada pada VB8, Partial Class pada VB8 sangat berguna terutama untuk memisahkan kode yang digenerate secara otomatis oleh Visual Studio.

Partial method pada VB9 digunakan dengan tujuan memudahkan kita untuk merubah method yang ada pada class yang di generate oleh tools, misal pada penggunaan LINQ to SQL. Karena ketika kita melakukan perubahan terhadap class yang digenerate oleh tools (mis: LINQ to SQL / SQL Metal) maka ketika kita menggenerate class baru lagi dengan menggunakan tools, kemungkinan code kita yang lama akan teroverride oleh code yang digenerate oleh tools tersebut.

Misal class yang digenerate oleh tools sebagai berikut

Class Mahasiswa
    Private _nim As String
    Public Property Nim() As String
        Get
            Return _nim
        End Get
        Set(ByVal value As String)
            _nim = value
        End Set
    End Property
End Class

Kemudian mungkin anda ingin menambahkan method dalam class yang sudah digenerate oleh tools diatas

Class Mahasiswa
    Private _nim As String
    Public Property Nim() As String
        Get
            Return _nim
        End Get
        Set(ByVal value As String)
            CekNim(value)
            _nim = value
        End Set
    End Property
    Private Sub CekNim(ByVal value As String)
        If value = String.Empty Then
            Console.WriteLine("Nim tidak boleh kosong !!")
        End If
    End Sub
End Class

Ketika anda mapping table baru kedalam class (mis: LINQ to SQL) maka class diatas akan degenerate ulang oleh tools, dan method yang anda tambahkan akan hilang karena dioverride oleh code hasil dari tools. Nah bagaimana caranya agar anda dapat menambahkan method pada code hasil geberate dari tools? jawabannya adalah dengan partial method, dengan partial method anda dapat memisahkan method tersebut kedalam file yang berbeda.

Class Mahasiswa
    Private _nim As String
    Public Property Nim() As String
        Get
            Return _nim
        End Get
        Set(ByVal value As String)
            CekNim(value)
            _nim = value
        End Set
    End Property
    Partial Private Sub CekNim(ByVal value As String)
    End Sub
End Class
Partial Class Mahasiswa
    Private Sub CekNim(ByVal value As String)
        If value = String.Empty Then
            Console.WriteLine("Nim tidak boleh kosong !!")
        End If
    End Sub
End Class

Nah fitur partial class ini akan sangat berguna ketika anda menggunakan LINQ to SQL untuk menggenerate code mapping dari table

Selamat Mencoba ^_^

Fitur VB9 (If Ternary Operator)

Halo, ini adalah posting kelima saya tentang fitur dari VB9 yaitu If Ternary operator, anda dapat melihat posting saya sebelumnya:

  • Implicitly typed local vaiable
  • Object initializer
  • Anonymous types
  • Nullable types

Pada VB versi sebelumnya anda pasti pernah menggunakan perintah IIF untuk penggunaan single IF

'penggunaan iif pada VB 
Dim bil1 As Integer = 999
Dim ket As String = IIf(bil1 Mod 2 = 1, "Ganjil", "Genap")
Console.WriteLine(ket) 'menghasilkan output Ganjil

Apakah ada yang salah dari kode diatas? memang tidak sih, outputnya benar dan sesuai yang kita harapkan. Tetapi sebenarnya IIF pada VB bukan merupakan built-in function tetapi hanya fungsi biasa yang dipanggil dari library. Seperti halnya regular fungsi maka ketika fungsi tersebut dipanggil maka semua argumen dalam fungsi tersebut akan dicek oleh VB compiler sebelum dijalankan.

Sub Main()
    Dim bil1 = 999
    Dim ket As String = IIf(bil1 Mod 2 = 1, Ganjil(), Genap())
End Sub
 
Function Ganjil() As String
    Return "Ganjil"
End Function
 
Function Genap() As String
    Throw New Exception("Error...")
    Return "Genap"
End Function

image

Jika kode diatas dijalankan maka akan menghasilkan error karna ada perintah Throw Exception pada function Genap(), meskipun hasil dari IIF diatas Ganjil() namun oleh Genap() juga dibaca oleh VB sehingga Throw Exception dipanggil. Jadi jika anda selama ini menganggap bahwa IIF sama dengan perintah IF biasa anda salah sangka :). Kode dibawah ini tidak sama dengan kode diatas

Sub Main()
   Dim bil1 = 999
   Dim ket = ""
   If bil1 Mod 2 = 1 Then
       ket = Ganjil()
   Else
       ket = Genap()
   End If
   Console.WriteLine(ket)
End Sub

Kode diatas tidak akan menghasilkan error ketika dijalankan, karena fungsi Genap() tidak dicek ketika IF dieksekusi. Ini juga sama dengan perintah IF Ternary pada VB9 (yang ini benar-benar ternary asli gak seperti IIF)

Sub Main()
    'Real IF Ternary pada VB 9
    Dim bil1 = 999
    Dim ket = If(bil1 Mod 2 = 1, Ganjil(), Genap())
    Console.WriteLine(ket) 'menghasilkan output Ganjil
End Sub

Kode diatas juga tidak akan menghasilkan error jika dijalankan karena menggunakan IF Ternary pada VB9. Dengan IF Ternary pada VB anda juga dapat menuliskan hanya 2 argumen dengan saja misal:

Dim nama As String = Nothing
Dim strnama = If(nama, "Kosong")
Console.WriteLine(strnama) 'outputnya Kosong
nama = "Erick Kurniawan"
strnama = If(nama, "Kosong")
Console.WriteLine(strnama) 'outputnya Erick Kurniawan
 
Dim bil1 As Integer? = Nothing
Dim nilai = If(bil1, -1)
Console.WriteLine(nilai)

Harap diperhatikan bahwa tipe data yang dihasilkan dari IF harus kompatibel dengan nilai yang dibandingkan, jika anda menulis kode sperti dibawah ini maka akan menghasilkan error

image

Fitur VB9 (Nullable types)

Halo, ini adalah posting keempat saya tentang fitur dari VB9 yaitu Nullable type, anda dapat melihat posting saya sebelumnya:

  • Implicitly typed local vaiable
  • Object initializer
  • Anonymous types

Seperti kita ketahui pada CLS terdapat dua tipe data yang disupport yaitu value type (integer,double,boolean,etc) dan reference type (String, StringBuilder, etc), untuk tipe reference jika anda tidak mau memberi nilai maka anda dapat mengesetnya menjadi “Nothing”, tapi lain halnya dengan value type anda tidak bisa tidak meberi nilai, anda harus memberi nilai yang sesuai dengan range nilainya (misal untuk tipe short dari -32000 sd 32000). Ini akan dapat menimbulkan masalah ketika kita melakukan mapping dan mengambil data dari database, misal pada table Mahasiswa field Ipk bernilai null, nah kita akan kesulitan untuk merepresentasikan nilai data field yang kosong tersebut dalam object Mahasiswa.

Nullable types digunakan agar anda dapat memberi nilai null pada value type, sebenarnya pada VB8 anda juga sudah dapat menggunakan nullabe type dengan generic Nullable(Of T)

Sub Main()
        'pada VB8
        Dim bil1 As Nullable(Of Integer)
        bil1 = Nothing
 
        Dim cek As Boolean = bil1.HasValue 'akan bernilai false
        bil1 = 999
        cek = bil1.HasValue 'akan bernilai true
End Sub

Tetapi dengan menggunakan nullable type di VB9 penulisannya menjadi lebih mudah

'nullable pada VB9
Dim i As Integer?
Console.WriteLine(i.HasValue) 'akan bernilai false
i = 999
Console.WriteLine(i.HasValue) 'akan bernilai true

Nullable types akan sangat berguna ketika anda melakukan mapping table pada LINQ to SQL