December 2005 - Posts

I don't understand why Microsoft Puts Web Control Library template Project on Windows Project...grrr..@#$%@@

Kalau kita perhatikan ketika membuat project baru pada VSTS 2005 maka muncul project Web Control dibagian Windows template projects, perhatikan gambar dibawah ini

Menurutku template project Web Control itu ada dibagian project-project web sehingga bentuknya seperti gambar dibawah ini


Any comment ?

Share this post: | | | |
Posted by Agus Kurniawan | 5 comment(s)
Filed under: ,

New Features on .NET Framework 2.0 for Networking Programming

Kalau kita perhatikan di website ataupun blog sudah banyak para MVP, SA, Dev ataupun architect membahas fitur-fitur baru dibagian language dan fitur Generics paling banyak dibicarakan. Kali ini saya mencoba membahas fitur baru dari .NET Framework 2.0 dari sudut Networking library. Semua kelas-kelas barunya ada didalam namesapace System.Net dan System.Net.NetworkInformation.

Ping
.NET Framework 2.0 sudah menambahkan kelas Ping untuk mengijinkan aplikasi untuk menentukan apakah komputer yang ada dijaringan itu dapat diakses atau tidak.Ini mirip seperti kita melakukan ping pada commandline. Kelas Ping ini juga support untuk pemanggilan synchronous and asynchronous. Berikut ini contoh synchronous Ping :

using System;
using System.Text;
using System.Net;
using System.Net.NetworkInformation;


namespace ConsoleTestApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Ping ping = new Ping();
            PingOptions config = new PingOptions();
            config.DontFragment = true;

            string data = "test";
            byte[] buffer = Encoding.ASCII.GetBytes(data);
            int timeout = 60;
            PingReply reply = ping.Send("192.168.0.5", timeout, buffer, config);

            if (reply.Status == IPStatus.Success)
            {
                // success
                // do something
            }

        }
    }
}

Berikut ini contoh Asynchronous Ping :
using System;
using System.Text;
using System.Net;
using System.Net.NetworkInformation;

namespace ConsoleTest2
{
    class Program
    {
        static void Main(string[] args)
        {
            Ping ping = new Ping();
            PingOptions config = new PingOptions();
            config.DontFragment = true;

            string data = "test";
            byte[] buffer = Encoding.ASCII.GetBytes(data);
            int timeout = 60;
            ping.PingCompleted += new PingCompletedEventHandler(ping_PingCompleted);
            PingReply reply = ping.Send("192.168.0.5", timeout, buffer, config);
        }

        static void ping_PingCompleted(object sender, PingCompletedEventArgs e)
        {
            if (e.Error != null)
            {
                // success
                // do something
            }
        }
    }
}


Computer Network Configuration
YEah..it's new feature. Dengan fitur ini kita dapat memperoleh konfigurasi networking yang ada di komputer yang dapat dilakukan dengan kelas-kelas yang ada di namespace System.Net.NetworkInformation . Ini mirip dengan kita lakukan yaitu ipconfig pada commandline dan kalau di .NET 2.0 bisa dilakukan pada kelas NetworkInterface
Berikut ini contoh code nya:

using System;
using System.Net.NetworkInformation;

namespace ConsoleTest3
{
    class Program
    {
        static void Main(string[] args)
        {
            NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
            foreach (NetworkInterface adapter in adapters)
            {
                Console.WriteLine(adapter.Description);
                Console.WriteLine("");
            }

            Console.ReadLine();

        }
    }
}


FTP Support
Sekarang .NET Framework 2.0 sudah dilengkapi dengan FTP client yang dapat dilakukan oleh kelas FtpWebRequest dan FtpWebResponse.
contoh implementasi code nya:
using System;
using System.IO;
using System.Net;
using System.Text;

namespace ConsoleTest4
{
    class Program
    {
        static void Main(string[] args)
        {
            FtpWebRequest request = (FtpWebRequest)WebRequest.Create("
ftp://akur/mydata");
            request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
          
            // ambil response
            FtpWebResponse response = (FtpWebResponse)request.GetResponse();
            Console.WriteLine("Response: {0}", response.StatusDescription);

            // ambil list file + directory
            Stream stream = response.GetResponseStream();
            StreamReader reader = new StreamReader(stream);
            string responseFromServer = reader.ReadToEnd();
            Console.WriteLine(responseFromServer);
          
            reader.Close();
            stream.Close();
            response.Close();

            Console.ReadLine();
        }
    }
}

hasil contoh outputnya:


Processing HTTP Requests from Within Applications
Wow..dengan fitur ini kita bisa membuat aplikasi Web server...do you know? kalau VS 2005 menggunakan fitur ini untuk membuat web server ketika membuat project ASP.NET 2.0 sehingga ASP.NET dengan tool VS 2005 tidak perlu menggunakan IIS ;). .NET Framework 2.0 memberikan "gula surga" ini melalui kelas HttpListener. Berikut ini contoh cara membuat web server
using System;
using System.Net;

namespace ConsoleTest5
{
    class Program
    {
        static void Main(string[] args)
        {
            if (!HttpListener.IsSupported)
            {
                Console.WriteLine("Windows XP SP2 or Server 2003 is required to use the HttpListener class.");
                return;
            }
         
            HttpListener listener = new HttpListener();
            listener.Prefixes.Add("
http://localhost:2005/agus/");
          
            listener.Start();
            Console.WriteLine("Server is listening...");

       
            HttpListenerContext context = listener.GetContext();
            HttpListenerRequest request = context.Request;
            HttpListenerResponse response = context.Response;
          
            string responseString = " Selamat Datang!
Salam dari Agus Kurniawan :p
";
            byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString);
           
            response.ContentLength64 = buffer.Length;
            System.IO.Stream output = response.OutputStream;
            output.Write(buffer, 0, buffer.Length);
           
            output.Close();
            listener.Stop();

            Console.WriteLine("Server stopped");
            Console.ReadLine();
        }
    }
}

berikut ini output server

kemudian kita buka browser dan ketik http://localhost:2005/agus maka akan muncul seperti dibawah ini


Detecting Changes in Network Connectivity
Dengan memanfaatkan kelas NetworkChange, aplikasi kita dapat menerima notifikasi jika IP address komputer kita berubah bahkan sampai disconnected. Berikut ini cara penggunaannya:

using System;
using System.Net;
using System.Net.NetworkInformation;

namespace ConsoleTest6
{
    class Program
    {
        static void Main(string[] args)
        {
            NetworkChange.NetworkAddressChanged += new NetworkAddressChangedEventHandler(IPChanged);
            NetworkChange.NetworkAvailabilityChanged += new NetworkAvailabilityChangedEventHandler(AvailabilityChanged);
        }

        static void AvailabilityChanged(object sender, NetworkAvailabilityEventArgs e)
        {
            if(e.IsAvailable)
                Console.WriteLine("Connected");
            else
                Console.WriteLine("Disconnected");

        }

        static void IPChanged(object sender, EventArgs e)
        {
            Console.WriteLine("IP Address berubah");
        }
    }
}

Authenticated Streams
.NET Framework 2.0 juga memberikan perhatian pada security pada networking yaitu dengan adanya kelas NegotiateStream dan SslStream yang memungkinkan untuk authenticate ke server via protocol SSL. Disamping itu, kita bisa tukar-menukar public key. Untuk implementasi code..next, I'll provide code;)


IPv6 Address Support
.NET Framework 2.0 sudah support untuk protocol yang berbasis IPv6 artinya aplikasi kita bisa melakukan koneksi ke server yang menerapkan IPv6. Tidak hanya kelas-kelas socket yang support IPv6 tetapi juga .NET Remoting juga support untuk protocol TCP based on IPv6.

 

Share this post: | | | |
Posted by Agus Kurniawan | 1 comment(s)
Filed under: ,

New Face on Class View from Visual C++ 2005

Bagi yang sudah mencoba VSTS 2005 terutama yang bekerja dalam lingkungan Visual C++ maka akan terasa hawa yang berbeda yaitu dibagian Class View nya...yeah, mungkin bagi para C# dev jarang sekali bekerja dengan model Class View dan lebih banyak bekerja pada Solution View tapi para C++ Dev lebih banyak enak dan “sreg” menggunakan Class View ketimbang Solution View.

Pada VSTS 2005, Class View pada Visual C++ mengalami enchancement sehingga memudahkan kita dalam menganalisa class yang dibuat dalam aplikasi

Share this post: | | | |
Posted by Agus Kurniawan | 1 comment(s)
Filed under:

The Confusion on Visual C++ 2005 and .NET

Beberapa developer maupun partisipan VC++ di forum maupun beberapa blogs ramai soal .NET, sebagai contoh Microsoft mengeluarkan

  • .NET 1.0 --> tool Visual C++.NET 7.0
  • .NET 1.1 --> tool Visual C++.NET 7.1
  • .NET 2.0 --> tool Visual C++ 2005

Ditambah lagi pihak marketing Microsoft membesar-besarkan .NET sehingga menjadi confusing para Dev VC++ bahwa mereka (Dev VC++) takut kalau-kalau VS 2005 hanya bisa coding C++ dengan .NET Framework padahal mereka ingin develop dengan native code. Mungkin mereka terjebak ketika mencoba menginstall VC++ 2005 Express Edition dimana memang Microsoft tidak shipping Win32 API/MFC/ATL/WTL framework pada VC++ 2005 Express Edition sehingga mereka berpikir “weleh, di VC++ 2005 tidak bisa coding native“....No..No, jangan berpikiran seperti itu, jika anda ingin coding VC++ dengan native code anda bisa menggunakan tool Visual Studio 2005 pada Standard/Professional/Team System atau kalau tidak mau beli, install aja SDK nya kemudian maenkan commandline compiler.

Mungkin untuk para MVP, Student Ambassador, .NET Speaker maupun Microsoft Evangelist bisa lebih “Bijaksana” dalam menjelaskan kedudukan dari VC++ 2005 dimana VC++ bisa melakukan coding baik .NET maupun tidak pakai .NET (native code) so ini dapat membuat para dev VC++ tidak menjadi gunda hati;)

Share this post: | | | |
Posted by Agus Kurniawan | 1 comment(s)
Filed under: ,

Do you Know What .NET Framework Version on your IIS ?

Berbicara lagi mengenai ASP.NET, mungkin kita pernah tersirat ingin mengetahui versi .NET Framework yang diinstall di IIS ....kalau ini ada dalam pemikiran anda, grap it...berikut ini contoh code bagaimana mengetahui versi .NET Framework yang diinstall di IIS

  • Buka notepad dan tulis code dibawah ini

<%@ Page Language="C#" %>

<script runat="server">
protected void Page_Load(Object Src, EventArgs E)
{
 
 Response.Write("Version : " + Environment.Version.ToString()); 
}
</script>

  • Simpan file menjadi Version.aspx
  • letakan file ini didalam root dari wwwroot dari IIS

Hasilnya akan seperti ini

Share this post: | | | |
Posted by Agus Kurniawan | 3 comment(s)
Filed under:

I can Debug ASP.NET 2.0 using VS 2005 but I can't Do that on ASP.NET 1.1 using VS 2003

Jika kita menginstall .NET 2.0 dan 1.1 dalam satu komputer dengan asumsi menginstall .NET 1.1 selanjutnya install .NET 2.0 maka kita kadang menemukan bahwa kita bisa melakukan debugging ASP.NET melalui VS 2005 tetapi dengan VS 2003 tidak bisa. Kenapa ini terjadi ? jawabannya simple sekali, seperti kita ketahui karakteristik dari IIS sendiri bahwa IIS hanya dapat load satu .NET Framework artinya IIS tidak dapat load .NET Framework 1.1 dan 2.0 secara bersamaan.

Solusi simple untuk mengatasi ini adalah melakukan uninstall ASP.NET 2.0 dari IIS dan kemudian install ASP.NET 1.1 pada IIS, berikut ini caranya:

  • Untuk Uninstall ASP.NET 2.0 dari IIS, jalankan Visual Studio .NET 2005 Command Prompt dan ketik aspnet_regiis -u   dan jika selesai lakukan reset IIS yaitu ketika iisreset
  • Untuk Install ASP.NET 1.1 ke IIS, jalan Visual Studio .NET 2003 Command Prompt dan ketik aspnet_regiis -i   dan jika selesai lakukan reset IIS yaitu ketika iisreset

Jika anda kepikiran untuk develop ASP.NET 2.0 dan supaya bisa melakukan debugging maka lakukan Uninstall ASP.NET 1.1 dan install ASP.NET 2.0, berikut ini caranya:

  • Untuk Uninstall ASP.NET 1.1 dari IIS, jalankan Visual Studio .NET 2003 Command Prompt dan ketik aspnet_regiis -u   dan jika selesai lakukan reset IIS yaitu ketika iisreset
  • Untuk Install ASP.NET 2.0 ke IIS, jalan Visual Studio .NET 2005 Command Prompt dan ketik aspnet_regiis -i   dan jika selesai lakukan reset IIS yaitu ketika iisreset

Well, semoga info ini berguna..

Share this post: | | | |
Posted by Agus Kurniawan | with no comments
Filed under:

Data Warehouse on SQL Server, Oracle, and DB2

Seperti kebawa arus yang besar dan susah dilepaskan. Tak lain dan tak bukan adalah arus data. Semakin kita terjun didunia Enterprise Application, data merupakan hal yang wajib diperhatikan baik dari keamanan maupun pengolahan datanya.

Ngomongin masalah pengolahan data, banyak trend didunia distributed system yaitu Data Warehouse. Banyak buku, website, seminar dan workshop berbicara mengenai Data Warehouse mulai hanya sekedar iseng hingga wacana sampai implementasi..semua memang menuju sebuah titik.....WHERE DOES YOUR DATA TODAY ?.

Data banyak database yang menawarkan Data Warehouse, sebagian besar memang didominasi oleh database yang berbau komersial, sebut 3 contoh database yang support  Data Warehouse...yaitu Oracle, SQL Server dan DB2. Disini saya gak ngomongin mana yang bagus dan mana yang baik ataupun mana yang buruk. Tinjauan kali ini adalah sebagai besar CARE vendor database ini memberikan support pada end user dan lebih-lebih pada Developer.

Saya pribadi menilai bahwasannya vendor database tidak hanya melengkapi feature-feature yang canggih tapi juga harus melengkapi dokumentasi dari database.Kelengkapan dokumentasi database meliputi

  • Cara instalasi
  • Cara Administrasi dan pemakaian
  • Tunning Database
  • Sample pemakaian dengan bahasa pemrograman
  • Issue dan limitasinya
  • Knowledge base + paper

Disamping itu, disediakannya fasilitas untuk para komunitas untuk saling kolaborasi dan share experience.

Share this post: | | | |
Posted by Agus Kurniawan | 1 comment(s)
Filed under: