:: Kunagorn Sirikup :: C# Developer

แสดงบทความที่มีป้ายกำกับ Tips แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ Tips แสดงบทความทั้งหมด

11/8/56

Nuget Package Manager Introduce

วันนี้ขอแนะนำเกี่ยวกับ NuGet ซึ่งหลายๆคนคงรู้จักหรือคุ้นเคยกันมาบ้างแล้ว NuGet ถูกพัฒนาขึ้นมาโดย Microsoft ซึ่งทำหน้าที่รวม Library ต่างๆไว้เป็น Package เพื่อให้ผู้ใช้สามารถดาวน์โหลดและติดตั้ง Library ต่างๆได้สะดวก รวมถึงเมื่อมีการเปลี่ยนแปลงเวอร์ชั่นก็สามารถ Update ได้ง่าย โดยสามารถดาวน์โหลดและติดตั้งที่ http://nuget.codeplex.com

NuGet เป็น add-on ของ Visual Studio ซึ่งสามารถทำงานผ่าน GUI หรือ ใช้ Console ที่มีชื่อว่า Package Manager Console 

NuGet ติดตั้งผ่าน GUI 




















จะแบ่งเป็น 3 หมวด คือ 
- Installed  หมายถึง Package ที่ถูกติดตั้งในเครื่องของเราไว้แล้ว
- Online หมายถึง Package ที่สามารถดาวน์โหลดได้
- Update หมายถึง Package ที่มีการ Update หรือเปลี่ยนแปลงเวอร์ชั่น

สำหรับการติดตั้งก็แค่ค้นหาชือ Package ที่ต้องการ จากนั้นกดปุ่ม Install ก็เสร็จแล้วครับ

NuGet ติดตั้งผ่าน Console




















เริ่มต้นใช้งานโดยเข้าไปที่เมนู Tools >> Library Package Manager >> Package Manager Console 
ให้ใส่ Command Package ที่ต้องการ Install ลงไป โดยสามารถดูได้ที่ NuGet Gallery ในตัวอย่างนี้ผมจะทดลองติดตั้ง Bootstrap กันนะครับ โดยเข้าไปที่ NuGet Gallert ของ Bootstrap ที่ https://www.nuget.org/packages/Twitter.Bootstrap 















จะสังเกตว่าในช่องสีดำจะมี Command สำหรับติดตั้ง Bootstrap Package อยู่ ให้พิมพ์ Command ลงไปที่ Package Manager Console ดังรูป




















NuGet จะเริ่มต้นติดตั้งโดยจะตรวจสอบว่ามี Package Dependency ไหนบ้างที่ต้องติดตั้งด้วย จากภาพข้างล่างจะเห็นว่า NuGet จะทำการติดตั้ง jQuery 1.9.1 ก่อนแล้วค่อยติดตั้ง Bootstrap รวมถึง Remove Package เก่าออกไป




































เมื่อมาดูใน Solution จะเห็นว่า Package จะถูกติดตั้งเรียบร้อย โดยสังเกตว่าจะมี bootstrap.js , bootstrap.min.js และใน Content ก็จะมี css ของ bootstrap ถูกติดตั้งไว้ด้วย




































รวมถึงภายใน Solution ก็จะมีไำฟล์ packages.config ที่ถูกเพิ่มเข้ามา ซึ่งมีหน้าที่สำหรับเก็บข้อมูล XML ของ Package ที่ถูกติดตั้งไว้ในโปรเจคว่ามีการใช้ Package อะไรและเวอร์ชั่นไหน























NuGet เป็นอีกหนึ่งเครื่องมือที่ช่วยให้การพัฒนาระบบทำได้รวดเร็วและสะดวกขึ้นมากเลยนะครับ ยังไงก็ลองเอาไปใช้กันนะครับ

31/7/56

Convert ข้อมูล Image เป็น Byte[] ด้วย MemoryStream

ฐานข้อมูลส่วนใหญ่จะเก็บข้อมูล รูปภาพ หรือ ไฟล์ต่างๆ โดยการเก็บ Path เพื่ออ้างอิงถึง รูปภาพ หรือ ไฟล์ นั้นๆ ซึ่งมีข้อดีคือฐานข้อมูลมีขนาดไม่ใหญ่ และสามารถแก้ไขข้อมูลได้ง่าย แต่ในบางกรณี รูปภาพหรือไฟล์นั้นๆ อาจมีความสำคัญและจำเป็นต้องเก็บลงฐานข้อมูล ในรูปแบบของ Stream ดังนั้น เมื่อต้องการที่จะบันทึกรูปภาพหรือไฟล์ลงฐานข้อมูล จำเป็นต้อง Convert ให้อยู่ในรูปแบบของ Stream โดยใช้ MemoryStream
MemoryStream ช่วยให้สามารถรับข้อมูลที่เป็น Byte Array หรือข้อมูลอื่นๆผ่าน Stream ซึ่งมีความยืดหยุ่นกว่าการเก็บข้อมูลลง Storage ต่างๆ และสามารถเข้าถึงข้อมูลได้เร็วกว่า disk หรือ network
ก่อนจะสามารถใช้งาน MemoryStream ได้ ต้องอ้างถึง System.IO ก่อน
ตัวอย่าง using
1.อ้างอิงถึง namespace System.IO
using System.IO;
2.เขียน Code ตามตัวอย่างนี้ ในที่นี้ขอยกตัวอย่างเป็น Method สำหรับ Convert ค่ารูปภาพเป็น Byte Array
public byte[] imageToByteArray(System.Drawing.Image pImage)
{
    MemoryStream ms = new MemoryStream();
    pImage.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);
    return  ms.ToArray();
}

วิธีการสร้าง DateTime ที่รับจาก Input String

ในกรณีที่ String หรือ TextBox เก็บข้อมูล DateTime ในรูปแบบ dd/MM/yyyy เช่น 26/08/2008 เมื่อนำมา Convert อาจะเกิดข้อผิดพลาดได้ถ้ารูปแบบ Datetime ที่อ้างอิงจาก Regional ของเครื่องมีค่าเป็น MM/dd/yyyy เพราะ MM มีค่าแค่ 12 เดือน แต่ค่าที่รับมาคือ 26 ทำให้ระบบไม่สามารถ Convert ข้อมูล DateTime ได้ ดังนั้น จึงวิธีการแก้ปัญหาโดยการรับข้อมูล DateTime ที่เป็น String แล้วนำมา Split ค่าออกมาเป็น Array ของ String เช่น
string[] dateArr = “26/08/2008″.Split(‘/’); 
จะได้ข้อมูลออกมาเป็น
dateArr[0] = "26"
dateArr[1] = "08"
dateArr[2] = "2008"
ดังนั้น สร้างข้อมูล DateTime โดยกำหนด Parameter ปี เดือน วัน สามารถต่างๆทำได้ ดังนี้
DateTime date = new DateTime(int Year,
                             int Month,
                             int Day,
                             int minute,
                             int second ,
                             int millisecond)
Example Code
string[] dateArr = txtDateTime.ToString().Split('/');
DateTime date = new DateTime(int.Parse(dateArr[2])
                             , int.Parse(dateArr[1])
                             , int.Parse(dateArr[0]), 0, 0, 0);