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

August 2009 - Posts

  • eBook: Membangun Portal Sendiri dengan DotNetNuke

    Alhamdulillah, dengan rahmat Allah SWT., dalam Bulan Ramadhan ini penulisan ebook "Membangun Portal Sendiri dengan DotNetNuke" telah selesai dengan baik. Buku ini membahas secara singkat tentang teknologi CMS yang berbasis teknologi Microsoft ASP.NET. Pembahasan dimulai dengan pengenalan dan instalasi, dilanjutkan dengan seting sebuah situs. Pada pertengahan bab disajikan teknik pengaturan tampilan situs dengan menggunakan skin. Setelah pembahasan penggunaan skin, tidak ketinggalan juga diterangkan bagaimana membuat sebuah skin tanpa harus mengetahui teknologi ASP.NET. Di akhir pembahasan disinggung bagaimana membuat custom code (kode sendiri) yang sesuai dengan kebutuhan bisnis perusahaan.

    image

    Buku ini tidak hanya cocok bagi para programmer namun berguna juga bagi desainer web. Para desainer web tidak memerlukan keahlian khusus di bidang teknologi ASP.NET untuk dapat membuat skin sendiri. Para programmer di luar .NET seperti PHP dan Java juga dapat memanfaatkan buku ini. Dengan pembahasan yang sederhana, para programmer pemula dan programmer di luar .NET diharapkan dapat mengikutinya dengan mudah.

    Buku ini dapat diunduh secara gratis di sini. Semoga buku ini bisa bermanfaat bagi semua. Amin

    Share this post: | | | |
    Posted Aug 31 2009, 02:11 PM by cahnom with 8 comment(s)
    Filed under:
  • Menambahkan Nomor Urut pada ASP.NET GridView

    Beberapa orang dalam milis .NET menanyakan bagaimana menambahkan nomor urut dalam GridView. Supaya lain kali ketika ada masalah serupa bisa baca solusi yang saya tulis ini. Beberapa orang dalam milis menjawab dengan menggunakan solusi event based dalam menambahkan nomor urut. Hal itu terlihat kompleks dan itu merupakan hal yang sama saya lakukan pada awal belajar menggunakan GridView. Kali ini, saya akan berikan solusi sederhana dengan menggunakan markup tanpa event based. Berikut adalah cara sederhana untuk menambahkan nomor urut dalam ASP.NET GridView.

    Buat satu template field dan isi field dengan <%# Container.DataItemIndex + 1 %>. Kode tersebut akan mengambil index dari row + 1 yang ditampilkan dalam template field.

    Berikut adalah contoh kode secara lengkap dari GridView dengan nomor urut.

    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"> <Columns> <asp:TemplateField HeaderText="No"> <ItemTemplate> <%# Container.DataItemIndex + 1 %> </ItemTemplate> </asp:TemplateField> <asp:BoundField DataField="Tanggal" HeaderText="Tanggal" /> <asp:BoundField DataField="Jumlah" HeaderText="Jumlah" /> </Columns> </asp:GridView>

    Hal yang sama juga dapat dilakukan untuk ASP.NET control lainnya. Berikut adalam template untuk masing-masing control

    GridView
    <ItemTemplate> <%# Container.DataItemIndex + 1 %> </ItemTemplate>
    DataGrid
    <ItemTemplate> <%# Container.DataSetIndex + 1 %> </ItemTemplate>
    Repeater
    <ItemTemplate> <span><%# Container.ItemIndex + 1 %></span> </ItemTemplate>
    DataList

    <ItemTemplate> <%# Container.ItemIndex + 1 %> </ItemTemplate>

    Semoga bermanfaat

    Share this post: | | | |
  • Invoke ASP.NET WebService yang Menggunakan Authentikasi NTLM dari WCF Client

    Ketika kita membuat sebuah applikasi dengan .NET Framework 3.5, untuk mengakses sebuah ASP.NET WebService tidak ada pilihan lain selain WCF Client. Dalam IDE Visual Studio tidak lagi terdapat menu Add WebReference sebagaimana jika menggunakan target Framework 2.0. Padahal kita harus mengkonsumsi service aplikasi lama yang sudah berjalan dengan baik. Tidak mungkin untuk membuat WCF service baru untuk kebutuhan applikasi baru tersebut. Pengaksesan WebService tidak ada masalah selama dapat digunakan tanpa autentikasi. Masalah terjadi ketika service membutuhkan autentikasi seperti Windows, kerberos atau NTLM.

    Pada sebuah Web Service yang menggunakan impersonate user untuk melakukan task tertentu, pemanggilan service tidak semudah yang tanpa impersonate. Jika dalam service membutuhkan hak akses tertentu terhadap client dan ternyata impersonation tidak didapatkan dalam pemanggilans service, maka service tersebut tidak dapat berjalan sebagaimana mestinya (access denied). Untuk mengatasi masalah tersebut kita harus passing credential dari client ke service. Berikut adalah baris kode untuk memanggil service dengan melempar credential ke server.

    EndpointAddress endpointAddress = new EndpointAddress(configuration.ServiceUrl); BasicHttpBinding basicHttpBinding = new BasicHttpBinding(BasicHttpSecurityMode.TransportCredentialOnly); basicHttpBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Ntlm; WorkflowServicesSoapClient service = new WorkflowServicesSoapClient(basicHttpBinding, endpointAddress); service.ClientCredentials.Windows.ClientCredential = CredentialCache.DefaultNetworkCredentials; service.ClientCredentials.Windows.AllowedImpersonationLevel = TokenImpersonationLevel.Impersonation; service.ClientCredentials.Windows.AllowNtlm = true; service.Submit(data);

    Berikut penjelasan contoh kode di atas.

    1. Baris pertama digunakan untuk membuat EndpointAddress berdasarkan Url yang diambil dari konfigurasi.
    2. Baris kedua untuk membuat BasicHttpBinding dengan menentukan security mode yang digunakan adalah TransportCredentialOnly. Dengan security mode ini, authentikasi didasarkan pada protokol HTTP saja.
    3. Baris ketiga digunakan untuk menentukan security binding menggunakan NTLM.
    4. Baris ke empat adalah deklarasi service dengan binding dan endpoint yang ditentukan sebelumnya (baris 1-3).
    5. Baris ke lima untuk meneruskan informasi credential client ke service.
    6. Baris ke enam untuk menentukan bahwa credential client akan digunakan untuk impersonate.
    7. Baris ke tujuh memungkinkan service menggunakan autentikasi NTLM.
    8. Dan terakhir adalah baris untuk men-invoke service.

    Demikian sedikit sharing pengalaman untuk mengkonsumsi ASP.NET WebService dari WCF Client. Semoga bermanfaat.

    Share this post: | | | |
    Posted Aug 27 2009, 07:31 PM by cahnom with 1 comment(s)
    Filed under: ,
  • Software Inventory dengan VBScript

    Sekedar share script untuk melakukan inventory software yang terinstall secara remote. Saya gunakan VBScript karena yang paling mudah dibuat, cukup dengan notepad. Berikut adalah script untuk membaca software terinstall dan menyimpannya ke dalam file dengan format MS Excel.

    ' Software Inventory ' by Ahmad Masykur 2009 ' License : MS-PL Const HKEY_LOCAL_MACHINE = &H80000002 Const FOR_WRITING = 2 Const ForReading = 1 Set objFso = CreateObject("Scripting.FileSystemObject") Set objShell = CreateObject("WScript.Shell") Set oList = objFso.OpenTextFile("servers.txt",ForReading) Do While Not oList.AtEndOfStream strComputername = oList.ReadLine If Left(strComputername,1) <> ";" Then Output ("==========================================================") If HostOnline(strComputername) = True Then Output(strComputername) Inventory(strComputername) Output ("==========================================================") Else Output(strComputername & " is down, skipping..") End If End If Loop '========================================================================== Function Inventory(strComputername) On Error Resume Next Set oTextFile = objFso.OpenTextFile(strComputername & ".xls", FOR_WRITING, TRUE) oTextFile.WriteLine "<html xmlns:x=""urn:schemas-microsoft-com:office:excel"" >" oTextFile.WriteLine "<head>" oTextFile.WriteLine "<!--[if gte mso 9]>" oTextFile.WriteLine "<xml><x:ExcelWorkbook>" oTextFile.WriteLine "<x:ExcelWorksheets>" oTextFile.WriteLine "<x:ExcelWorksheet>" oTextFile.WriteLine "<x:Name>" & strComputername & "</x:Name>" oTextFile.WriteLine "<x:WorksheetOptions>" oTextFile.WriteLine "<x:Print>" oTextFile.WriteLine "<x:ValidPrinterInfo/>" oTextFile.WriteLine "</x:Print>" oTextFile.WriteLine "</x:WorksheetOptions>" oTextFile.WriteLine "</x:ExcelWorksheet>" oTextFile.WriteLine "</x:ExcelWorkbook>" oTextFile.WriteLine "</xml>" oTextFile.WriteLine "<![endif]-->" oTextFile.WriteLine "<title>Software Inventory</title>" oTextFile.WriteLine "</head>" oTextFile.WriteLine "<body>" oTextFile.WriteLine "<table border=""0"" cellpadding=""0"" cellspacing=""0"">" 'oTextFile.WriteLine strComputername Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputername & "\root\cimv2") Set colOSes = objWMIService.ExecQuery("Select * from Win32_OperatingSystem") For Each objOS in colOSes oTextFile.WriteLine "<tr><td style=""width: 150px"">Computer Name</td><td>" & objOS.CSName & "</td></tr>" oTextFile.WriteLine "<tr><td style=""width: 150px"">Caption</td><td>" & objOS.Caption & "</td></tr>" oTextFile.WriteLine "<tr><td style=""width: 150px"">Version</td><td>" & objOS.Version & "</td></tr>" oTextFile.WriteLine "<tr><td style=""width: 150px"">Build Number</td><td x:str=""" & objOS.BuildNumber & """>" & objOS.BuildNumber & "</td></tr>" oTextFile.WriteLine "<tr><td style=""width: 150px"">Build Type</td><td>" & objOS.BuildType & "</td></tr>" oTextFile.WriteLine "<tr><td style=""width: 150px"">OS Type</td><td x:str=""" & objOS.OSType & """>" & objOS.OSType & "</td></tr>" oTextFile.WriteLine "<tr><td style=""width: 150px"">Other Type Description</td><td>" & objOSOtherTypeDescription & "</td></tr>" oTextFile.WriteLine "<tr><td style=""width: 150px"">Service Pack</td><td x:str=""" & objOS.ServicePackMajorVersion & "." & objOS.ServicePackMinorVersion & """>" & objOS.ServicePackMajorVersion & "." & objOS.ServicePackMinorVersion & " </td></tr>" Next Set colProcs = objWMIService.ExecQuery("Select * from Win32_ComputerSystem") For Each objItem in colProcs oTextFile.WriteLine "<tr><td style=""width: 150px"">Number of Processors</td><td x:str=""" & objItem.NumberOfProcessors & """>" & objItem.NumberOfProcessors & "</td></tr>" Next oTextFile.WriteLine vbCrLf & "<tr><td colspan=""4"">Applications:</td></tr>" Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputername & "\root\default:StdRegProv") strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" objReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys For Each subkey In arrSubKeys strSubKeyPath = strKeyPath & "\" & subkey strString = "DisplayName" objReg.GetStringValue HKEY_LOCAL_MACHINE, strSubKeyPath, strString, strDisplayName strString = "DisplayVersion" objReg.GetStringValue HKEY_LOCAL_MACHINE, strSubKeyPath, strString, strDisplayVersion strDisplayName=Trim(strDisplayName) strDisplayVersion=Trim(strDisplayVersion) If strDisplayName <> "" And strDisplayVersion <> "" Then rem Output (strDisplayName & " " & strDisplayVersion) oTextFile.WriteLine "<tr><td style=""width: 600px"">" & strDisplayName & "</td><td x:str=""" & strDisplayVersion & """>" & strDisplayVersion & "</td></tr>" End If Next oTextFile.WriteLine "</table>" objTextFile.close End Function Function Output(sOutput) WScript.echo Date() & " " & Time() & vbTab & sOutput End Function Function HostOnline(strComputername) Set sTempFolder = objFso.GetSpecialFolder(TEMPFOLDER) sTempFile = objFso.GetTempName sTempFile = sTempFolder & "\" & sTempFile objShell.Run "cmd /c ping -n 2 -l 8 " & strComputername & ">" & sTempFile,0,True Set oFile = objFso.GetFile(sTempFile) set oTS = oFile.OpenAsTextStream(ForReading) do while oTS.AtEndOfStream <> True sReturn = oTS.ReadLine if instr(sReturn, "Reply")>0 then HostOnline = True Output("Computer " & strComputername & " is alive!") Exit Do End If Loop ots.Close oFile.delete End Function oList.Close Set objReg = Nothing Set objFso = Nothing

    Simpan script tersebut ke dalam file dengan nama SoftwareInventory.vbs. Sebelum menjalankan file tersebut, buat file text dengan nama server.txt dengan nama servers.txt yang berisi daftar nama komputer dalam jaringan. Sebagai contoh file servers.txt dapat berisi informasi nama komputer sebagai berikut

    pc0001.yourdomain.com pc0002.yourdomain.com pc0003.yourdomain.com pc0004.yourdomain.com pc0005.yourdomain.com

    Untuk menjalankannya buka command prompt dan ketik perintah sebagai berikut

    > cscript SoftwareInventory.vbs

    Setelah script dijalankan, akan terbentuk file MS Excel dengan format nama <computer-name>.xls. Masing-masing nama komputer akan dibuatkan satu file tersendiri. Semoga bermanfaat

    Share this post: | | | |
  • Menyimpan dan Kolaborasi Dokumen dengan Office Live Workspace

    Sala satu fitur yang ada di Microsoft Office 2007 adalah kemampuan untuk menyimpan dokumen dalam office live workspace. Dokumen tersebut akan tersimpan di awan dan dapat diakses dari mana saja kita berada. Tidak perlu menenteng media penyimpanan ke mana-mana untuk bekerja di beberapa tempat. Dengan menyimpan dokumen di awan, kita juga bisa berkolaborasi dengan teman yang berada tidak satu tempat dengan kita.

    Untuk menyimpan dokumen dalam office live workspace, klik menu Office dan Save to Office Live.

    image

    Jika Anda sebelumnya belum pernah menggunakan fitur ini atau di komputer belum terpasang Office Live add-in, maka secara otomatis kita akan diarahkan untuk mendownload add-in office live terlebih dahulu. Setelah install office live add-in, kita diminta untuk sign-up di office live dan membuat workspace baru.

    image

    Klik tombol create a workspace dan buat workspace sesuai dengan yang diinginkan.

    image

    Berikan nama untuk workspace setelah itu Anda bisa mengupload dokumen dan membaginya dengan tim.

    image

    Selain mengupload melalui web, Anda juga bisa save dokumen langsung dari Microsoft Office melalui menu Save to Office Live. Anda akan disajikan folder (workspace) yang ada di office live. Klik workspace yang akan digunakan dan tekan tombol Open.

    image

    Kini dokumen siap disimpan dalam workspace di office live. Tekan tombol Save untuk menyimpannya.

    image

    Untuk membagi kepada tim, klik tombol Share this workspace now. Centang dokumen yang akan dibagi dan isikan alamat email Editor

    image

    Tekan send untuk mengirimkan ajakan untuk berbagi dokumen.

    Kini berbagi dokumen menjadi semakin mudah. Selamat mencoba.

    Share this post: | | | |
  • Harddisk dengan Windows Vista Membengkak Setiap Install Patch

    Tiap hari, harddisk untuk Windows Vista saya semakin habis. Padahal tidak ada penambahan data yang berarti pada partisi tersebut. Selidik, demi selidik ternyata tiap kali install patch dari Windows Update, ruang harddisk yang tersisa semakin sedikit. Mungkin saatnya ganti harddisk dan install Windows 7 RTM.

    image

    Dikarenakan masih ada tugas dengan software yang terinstall di Vista dan belum sempat setup untuk Windows 7, dicari solusi sementara untuk melakukan cleanup file-file yang sudah tidak digunakan. Ada tool tersembunyi yang disediakan oleh Microsoft untuk membersihkan sampah file-file yang telah digantikan oleh patch dan service pack yang terinstall yaitu compcln.exe.

    Untuk menjalankan tool ini, jalankan command prompt sebagai administrator. Klik tombol Start Windows dan ketik “cmd” (tanpa tanda kutip), klik kanan pada cmd.exe dan klik Run as administrator.

    image

    Setelah command prompt terbuka, ketik compcln.exe dan tekan tombol enter.

    image

    Terdapat pertanyaan apakah akan diteruskan untuk melakukan cleanup. Sekali Anda menekan tombol Y, Anda tidak akan bisa melakukan roollback atau uninstall SP/ patch. Tekan tombol Y untuk melanjutkan.

    Setalah proses cleanup selesai, Anda akan mendapatkan ruang kosong dalam harddisk yang lebih banyak.

    image

    Untuk sementara OS Vista masih berjalan bergantian dengan Windows 7. Mulai besok, sedikit demi sedikit porsi untuk Vista akan saya kurangi dan akhir bulan Agustus rencana akan pake Windows 7 sepenuhnya.

    Share this post: | | | |