Saturday, June 04, 2005

Menggunakan MySQL sebagai database

Kelemahan menggunakan access adalah sangat lambat. sedangkan SQL Server harganya sangat mahal. Kita juga sulit mencari server yang menyediakan SQL Server dengan harga yang murah.
Solusinya adalah dengan memakai MYSQL database yang cukup cepat dan terkenal dan
gratis

untuk menjalankan MySQL kita harus mendownloadnya dulu dan
juga mendownload driver ODBC nya
(pilih Windows Downloads Driver Installer)

untuk connectionstring nya memakai
"DRIVER={MySQL ODBC 3.51 Driver};Server=localhost;Database=testdatabase"


contoh dibawah ini memakai MySql sebagai databasenya
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.Odbc" %>
<%@ Page Language="C#" %>


public void Page_Load(Object sender, EventArgs e) {
DataTable dtRecords = GetDataTable("SELECT * FROM newone");
foreach(DataRow dr in dtRecords.Rows) {
Response.Write(dr["FirstName"].ToString() + " " + dr["LastName"].ToString() + "
");
}
}

private static string GetConnection() {
return "DRIVER={MySQL ODBC 3.51 Driver};Server=localhost;Database=testdatabase";
}
public static DataTable GetDataTable(string sql) {
DataTable rt = new DataTable();
DataSet ds = new DataSet();
OdbcDataAdapter da = new OdbcDataAdapter();
OdbcConnection con = new OdbcConnection(GetConnection());
OdbcCommand cmd = new OdbcCommand(sql, con);
da.SelectCommand = cmd;
da.Fill(ds);
try {
rt = ds.Tables[0];
}
catch {
rt = null;
}
return rt;
}

Beda session dengan application

ini mungkin sudah pernah ditanyakan sebelumnya, tapi berhubung belum ada yang membahas, maka singkatnya perbedaannya adalah:

session itu "seolah" variabel local bagi server dari semua client. pada suatu situs, misalnya untuk login menggunakan session, itu cukup wajar, karena misalnya session("username") dan session ("password") pada client A, client B, client C dan seterusnya secara normal adalah berbeda!
misalnya setelah tombol submit ditekan oleh client A dahulu baru client B (untuk site yang sama) maka server akan menerima session untuk client A usernamenya "AAA" dan paswordnya "passAAA" dan setelahnya session untuk client B usernamenya "BBB" dan passwordnya "pasBBB"
session-session untuk Client A nilainya tetap session("username")="AAA" dan session("password") ="passAAA" tidak terpengaruh oleh isi session client B, dan demikian seterusnya untuk client selanjutnya session untuk client B tidak akan dipengaruhi session client C yang melakukan submit, dan seterusnya lebih jauh lagi...

Sedangkan application, itu seolah adalah variabel global dari server untuk semua client. Misalnya untuk situs lelang, katakanlah application("hargamobilkuno") Misalkan client A menawarkan $1000, maka nilai application("hargamobilkuno")="1000"
Begitu client B mengakses application tersebut, nilainya adalah "1000" bukan null atau undefined. Dan bila client B melakukan penawaran $1500, maka nilai menjadi berubah untuk application("hargamobilkuno")="1500" dan pada saat client A mengakses application("hargamobilkuno") nilainya sudah berubah menjadi "1500" begitu seterusnya. Bila ada client C melakukan perubahan pada application("hargamobilkuno") maka client A dan B akan mengetahui perubahan tersebut, demikian seterusnya...

Jadi kesimpulannya, session digunakan untuk menyimpan nilai yang butuh personalisasi client, dimana setiap client mempunyai nilai yang berbeda (meskipun mungkin juga kebetulan sama). update nilai session dari satu client tidak akan mempengaruhi session client yang lain.

sedangkan application digunakan untuk menyimpan nilai yang "dipublikasikan" di server, dimana update yang dilakukan satu client pada application tersebut berpengaruh pada client-client yang lainnya saat mengakses application tersebut

Property dan Method pada BCL untuk pengaturan warna

Biasanya untuk mengubah warna tampilan, user bisa memakai 3 cara, yaitu yang pertama adalah dengan representasi heksadesimal seperti
"#FFFF00", "#000000"...
Kedua, Menggunakan nilai desimal dalam css seperti rgb(255, 255, 0)" ...
Atau yang ketiga, menggunakan nama warnanya langsung seperti "yellow" .... dan lain sebagainya seperti black, white, ...

pada System.drawing.color tersedia beberapa method dan property untuk "bermain-main" dengan warna. Salah satu properti staticnya adalah seperti Color.red (seperti namanya, warna merah), Color.Black, dan sebagainya. Sedangkan properti-propertinya untuk RGB dan representasi heksadesimalnya menggunakan:

1. Color.FromArgb(red, green, blue)

misalnya untuk membuat background textbox menjadi Dark Hard Yellow contohnya:
'VB.NET...
TextBoxID.BackColor = Color.FromArgb(204, 204, 0)

// C#...
TextBoxID.BackColor = Color.FromArgb(204, 204, 0);

(catatan: saat ini hanya memungkinkan pada browser Internet Explorer)

2. ColorTranslator.FromHtml(string)
Untuk kasus yang sama, misalnya pada label contohnya:
'VB.NET...
LabelID.BackColor = ColorTranslator.FromHtml("#CCCC00")

// C#...
LabelID.BackColor = ColorTranslator.FromHtml("#CCCC00");

Sunday, May 29, 2005

Method pada .NET BCL untuk mendapatkan ekstensi file dan nama lengkapnya

.NET Framework BCL (Base Class Library) memiliki sebuah path class dalam namespace System.IO yang punya banyak sekali method yang berguna, static properties untuk pengolahan filepaths, dimana user dapat lebih "dimanjakan" daripada perlu membuat serentetan coding untuk memotong string hanya untuk mendapatkan ekstensi file dan nama filenya tanpa path lengkapnya. Berikut ini adalah 2 contohnya

Path.GetExtension(string)
Bila user memiliki sebuah filepath dan ingin mengetahui ekstensi file nya, dapat menggunakan method ini:

Pada VB.NET, untuk mendapatkan ekstensi ".jpg" pada variabel EkstensiFile:
Dim EkstensiFile as String = System.IO.Path.GetExtension _("C:\MyApp\Images\Skyline.jpg")

Pada C#, untuk melakukan hal yang sama:
string EkstensiFile = System.IO.Path.GetExtension _
(@"C:\MyApp\Images\Skyline.jpg");


Path.GetFileName(String)
Method pada BCL ini dapat digunakan untuk mendapatkan namafile tanpa direktori-direktori path dimana file tersebut disimpan, dan yang didapatkan adalah hanya nama file sekaligus ekstensinya

Pada VB.NET, untuk mendapatkan "Skyline.jpg" pada variabel NamaFile:
Dim NamaFile as String=System.IO.Path.GetFileName("C:\MyApp\Images\Skyline.jpg")

Pada C#, hal yang sama:
string NamaFile=System.IO.Path.GetFileName(@"C:\MyApp\Images\Skyline.jpg");

Tuesday, May 24, 2005

Mengatur cookie pada ASP.NET

// Cara membuat cookie
// Contoh nama cookie = cakes
HttpCookie myCookie = new HttpCookie("cakes");
// menambahkan key pada cookie-nya
myCookie.Values.Add("muffin", "chocolate");
myCookie.Values.Add("babka", "cinnamon");
// menambahkan cookie ke cookie collection
Response.Cookies.Add(myCookie);
// mengambil nilai dari cookie
Response.Write(myCookie.Value.ToString());
// mengambil nilai dari key pada cookie
Response.Write(myCookie["babka"].ToString());
// set waktu expired dari cookie
myCookie.Expires = DateTime.Now.AddHours(12);
myCookie.Expires = DateTime.Now.AddDays(7);
// men-setting path cookie
myCookie.Path = "/forums";
// men-setting domain untuk cookie.
myCookie.Domain = "forums.geekpedia.com";
// menghapus cookie dengan men-set waktu expire menjadi -1
myCookie.Expires = DateTime.Now.AddDays(-1);
// menghapus key dari cookie
myCookie.Values.Remove("babka");

Mengirim Attachment melalui email

// class-class pada System.Web.Mail
//MailAttachment --> untuk membuat attachment email
//MailMessage --> untuk membuat email message
//SmtpMail --> untuk mengirim email melalui SMTP

// deklarasi system.web.mail

// membuat var dari class MailMessage()
MailMessage MyMail = new MailMessage();
//properti pada class MailMessage
//Attachments ---> daftar file-file attachment yang hendak dikirim dengan email
//Body ---> body untuk email
//From ---> email pengirim
//Subject ---> subject email
//To ---> email tujuan

// mencantumkan path file yang hendak di attachmentMailAttachment
MyAttachment = new MailAttachment("C:\\My Folder\\MyFile.txt");
// menambahkan file attachment yang hendak dikirim
MyMail.Attachments.Add(MyAttachment);
// mengirim email
SmtpMail.Send(MyMail);

Mengirim email dari ASP NET

//Menggunakan Import = "System.Web.Mail"

// Procedure SendMail
Sub SendMail (Obj As Object, E As EventArgs)
Dim mailObj AS new MailMessage
mailObj.From = MsgFrom.text
mailObj.To = MsgTo.Text
mailObj.Subject = MsgSubject.Text
mailObj.Body = MsgBody.Text
SmtpMail.SmtpServer = "localhost"
SmtpMail.Send(mailObj)
End Sub

Send To: (asp:Textbox id="MsgTo" runat="server")
Send From: (asp:Textbox id="MsgFrom" runat="server")
Message Subject: (asp:Textbox id="MsgSubject" runat="server")
Message Body: (asp:Textbox TextMode="multiline" Rows="5" id="MsgBody" runat="server")


(asp:button Text="Send" onclick="SendMail" id="Send" runat="server")

Membuat dynamic image thumbnail

public class ImageHandler : IHttpHandler
{ // ukuran maksimal dari Thumbnailnya
const int MaxDim = 120;
public void ProcessRequest(HttpContext ctx) {
ctx.Response.ContentType = "image/jpeg";
ctx.Response.Cache.SetCacheability(HttpCacheability.Public);
ctx.Response.Cache.SetExpires(DateTime.Now.AddDays(1));

// mencari directory dimana imagenya tersimpan
string imageDir = ConfigurationSettings.AppSettings["imageDir"];
imageDir = Path.Combine(ctx.Request.PhysicalApplicationPath, imageDir);

// mencari image yang dicari
string file = ctx.Request.QueryString["File"];
file = Path.Combine(imageDir, file);
// load image
using (Image img = new Bitmap(file)) {
// mengubah ukuran gambar
int h = img.Height;
int w = img.Width;
int b = h > w ? h : w;
double per = (b > MaxDim) ? (MaxDim * 1.0) / b : 1.0;
h = (int)(h * per);
w = (int)(w * per);
// membuat thumbnail image
using (Image img2 = img.GetThumbnailImage(w, h,
ew Image.GetThumbnailImageAbort(Abort), IntPtr.Zero))
{
// men-save hasilnya menggunakan response stream
img2.Save(ctx.Response.OutputStream,
System.Drawing.Imaging.ImageFormat.Jpeg);
}
}
}
public bool IsReusable { get { return true; } }
private bool Abort() { return false; }}

Thursday, May 19, 2005

Enkripsi... enkripsi...

Ternyata ASP.NET telah menyediakan .NET FCL (Framework Class Library) untuk masalah enkripsi data. Jadi kita (programmer) tidak harus bersusah-susah untuk membuatnya sendiri, dan untuk yang merasa bahwa pembuatan sekuriti bukanlah hal yang sulit, maka dengan adanya FCL ini kita lebih dimudahkan, karena pembuat FCL ini adalah orang-orang terlatih dalam bidang ini, jadi mari kita serahkan saja pada mereka, dan kita tinggal menggunakannya \(^^)/

Disediakan 4 macam cipher oleh .NET FCL, yaitu DES, RC2, Rijndael and TripleDES.
Ini contoh sederhana, penggunaan Rijndael.

class CipherWrapper
{
RijndaelManaged _cipher = null;
public CipherWrapper()
{
_cipher = InitCipher();
}
public CipherWrapper(byte[] key)
{
_cipher = InitCipher(key);
}
public byte[] Key
{
get { return _cipher.Key; }
set { _cipher.Key = value; }
}
public byte[] EncryptMessage(byte[] plainText, out byte[] iv)
{
_cipher.GenerateIV();
iv = _cipher.IV;
ICryptoTransform transform = _cipher.CreateEncryptor();
byte[] cipherText = transform.TransformFinalBlock(plainText, 0, plainText.Length);
return cipherText;
}
public byte[] DecryptMessage(byte[] cipherText, byte[] iv)
{
_cipher.IV = iv;
ICryptoTransform transform = _cipher.CreateDecryptor();
byte[] plainText = transform.TransformFinalBlock(cipherText, 0, cipherText.Length);
return plainText;
}
private RijndaelManaged InitCipher()
{
RijndaelManaged cipher = CreateCipher();
cipher.GenerateKey();
return cipher;
}

private RijndaelManaged InitCipher(byte[] key)
{
RijndaelManaged cipher = CreateCipher();
cipher.Key = key;
return cipher;
}
private RijndaelManaged CreateCipher()
{
RijndaelManaged cipher = new RijndaelManaged();
cipher.KeySize = 256;
cipher.BlockSize = 256;
cipher.Mode = CipherMode.CBC;
cipher.Padding = PaddingMode.PKCS7;
return cipher;
}
}

Sayang sekali saya pribadi bukanlah orang yang langsung mengerti hanya dengan membaca artikel ini, tetapi mungkin rekan-rekan sekalian bisa lebih mengerti
http://www.developerfusion.com/show/4647/1/

----------------------
|Yohan W. (201114282)|
----------------------

Wednesday, April 13, 2005

[OOT] Advice for Computer Science College Students

Ada artikel yang sangat menarik, judulnya Advice for Computer Science College Students yang ditulis oleh Joel Spolsky. Joel ini adalah seorang developer senior yang termasuk pembicara top bidang software engineering di Amerika. Dia dulu pernah jadi programmer Microsoft, tapi sekarang sudah punya perusahaan sendiri.

Nah, artikel ini khusus berisi nasihat-nasihat dia untuk mahasiswa bidang komputer ! Sangat berguna dan sangat dianjurkan untuk dibaca. Artikelnya bisa dilihat di sini.

Bugs pada tombol submit ASP.Net

Tombol Submit pada ASP.NET tidak berfungsi pada pengguna IIS setelah menginstal .NET Framework 1.1 Service Pack 1
Hal ini disebabkan karena file2 script client-side yg terletak di web site tidak disinkron dengan .NET Framework 1.1 sehingga event PostBack pada validasi client-side terhenti. Solusinya adalah dengan menginstall file2 script client-side ke setiap subfolder Aspnet_client dari semua folder site Microsoft IIS (klik run pada start kemudian ketik C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322.aspnet_regiis.exe -c dan klik OK), tetapi jika user menggunakan source control perintah "aspnet_regiis.exe -c" kemungkinan tidak berguna karen file2 script dianggap read only. Jika hal ini terjadi hapuslah folder Aspnet_client dari source control.

by Ariston - 201114136

Tuesday, April 12, 2005

String builder (Append) Vs Concatenation(+) dalam operasi string

ternyata penggunaan String builder(append) dalam operasi penggabungan string jauh

lebih efektif
dibandingkan dengan menggunakan Concatenation(+)
penggunaan append(string builder) hampir 200 kali lebih cepat daripada concat
hal ini disebabkan karena String dalam .Net bersifat immutable
artinya sesungguhnya operasi pada string sesungguhnya mengembalikan nilai copy dari

string yang sudah dimodifikasi
jadi dalam semua operasi string akan dibuat copy string itu terlebih dahulu

sebagai contoh penggunaan String builder(append) dan Concatenation(+)
dalam penggabungan 10,000 substrings

string strSub;
int intLimit = 10000;
for (int i=0; i < intLimit; i++)
{
strSub = i.ToString();
strWhole = strWhole + " " + strSub;
}//waktu yg dibutuhkan 1.9528080 detik

for (int i=0; i < intLimit; i++)
{
strSub = i.ToString();
sb.Append(" ");
sb.Append(strSub);
}//waktu yg dibutuhkan 0.0100144 detik

Source:
http://www.ondotnet.com/pub/a/dotnet/2002/04/22/asptips.html

Friday, March 25, 2005

Resource Access Identities

Proses account pada ASP.Net dapat digunakan untuk mengakses sumber remote network seperti SQL server yang memerlukan windows authentication, dengan membuat local account yang dicerminkan pada server database.
more info : http://msd2d.com/Content/Tip_viewitem_03.aspx

Monday, March 14, 2005

Di manakah tempat mencari info-info tentang ASP.NET ?
Berikut ini beberapa situs ASP.NET yang populer:

http://msdn.microsoft.com/asp.net/
http://www.asp.net/
http://www.codeproject.com/
http://www.gotdotnet.com/
http://www.hotscripts.com/ASP.NET/
http://aspnet.4guysfromrolla.com/

Tentunya masih banyak situs-situs ASP.NET lainnya.

Sedangkan untuk mendownload Starter Kits URL-nya adalah:
http://www.asp.net/Default.aspx?tabindex=8&tabid=47

Ok, selamat mencari !

Thursday, March 10, 2005

[OOT] Bahasa Pemrograman Terlaris

Bahasa pemrograman manakah yang paling banyak lowongan kerjanya ?? Ada seseorang yang sudah merangkum situs-situs lowongan kerja di Amerika dan hasilnya .... di sini. Tapi ini untuk Amerika lho ya ...

Friday, February 25, 2005

[OOT] Haloscan

Haloscan commenting and trackback have been added to this blog.

Monday, February 21, 2005

[OOT] Sphere XP using .NET

Hello, baru blog pertama udah OOT, hehehe.. gpp kan ko Donald.. =p ???
Mungkin ada yang udah pernah tahu, ini program keren (menurutku) : Sphere XP. Program ini membuat tampilan desktop kita jadi 3D Sphere. Walaupun masih tahap BETA, tapi layak dicoba, minim buat pengetahuan aja. Program ini dibuat pake .NET (tapi jelas bukan pake ASP.NET =p ). Mungkin bisa juga jadi ide utk TK. =)
Check this out :
http://www.hamar.sk/sphere/
Thanks.

Monday, February 14, 2005

Welcome to Kuliah-Online !

Dalam blog ini, dapat didiskusikan berbagai hal berkaitan dengan .NET. Yang punya ide-ide baru, mungkin hasil ngubek-ngubek di Internet, boleh di-post ke sini. Dengan begitu kan pengetahuan kita akan makin diperluas dan diperkaya. Rekan-rekan yang lain juga jangan ragu untuk memberikan komentar. Siapa tahu komentar tersebut dapat memberikan solusi yang lebih baik !

Bahasanya juga gak perlu terlalu formal, santai saja. Dan kalau ada info menarik lain yang nggak langsung berkaitan dengan .NET boleh juga di-post-kan ke sini, tapi tolong diberikan tanda [OOT] di depannya. Saya juga kalau post sesuatu yang menarik tapi gak langsung berhubungan dengan .NET akan memberikan tanda [OOT]. Post-post yang ada tanda OOT-nya ini tentu nggak masuk dalam penilaian (termasuk comment-comment-nya), tapi tetap okelah untuk menambah wawasan.

Satu lagi alasan kita nge-blog adalah untuk membiasakan diri dengan digital lifestyle (gaya hidup digital). Digital lifestyle ini ciri-cirinya adalah produktifitas maksimum. Dengan biasa nge-blog kita akan terbiasa men-share pikiran kita dengan orang lain dalam medium yang sangat efisien yaitu Internet. Manfaat dari hal ini pasti akan kita rasakan di kemudian hari.

So, for all of you, happy blogging !