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)|
----------------------