วันเสาร์ที่ ๒๒ กันยายน พ.ศ. ๒๕๕๐

การขึ้นบรรทัดใหม่ในข้อความ (Newline in string)

เรื่องการขึ้นบรรทัดใหม่ในข้อความนี้ ก็ถือเป็นเรื่องพื้นฐานที่ควรทำความเข้าใจสำหรับมือใหม่นะครับ ถ้าจะพูดกันจริงๆ ก็ต้องพูดตั้งแต่ระบบปฏิบัติการ เพราะในอนาคตอาจจะต้องใช้ .NET บน Unix ก็เป็นได้ โดย syntax การขึ้นบรรทัดใหม่บน Unix ส่วนใหญ่ จะเป็น \n (backslash n) เช่น korn shell, bash shell, ภาษา C เป็นต้น ส่วน c shell นั้น ใช้ \ ตัวเดียวซึ่งมีเงื่อนไขการใช้เหมือนกัน ถ้าสนใจศึกษาก็ลองดูจากลิ้งค์ข้างล่างนะครับ

แต่สำหรับ DOS จะใช้ \r\n (\r แทน return ซึ่งมาจากปุ่ม return บน keyboard ของเครื่อง mini computer หรือ mainframe ปุ่มนี้บน keyboard ของเครื่อง PC ในปัจจุบัน คือ ปุ่ม enter ส่วน \n คือ newline นั้นเอง) ซึ่งก็สืบทอดมาใช้บนระบบ Windows จนถึง .NET Framework ด้วย

สำหรับรายละเอียดของ \r และ \n ก็มีที่มาจาก ASCII code โดยถ้าดูจากตาราง (กรุณาดูในลิ้งค์ข้างล่างประกอบ) จะพบว่ารหัสที่ 1-32 และรหัสที่ 127 เป็นรหัสที่ไม่มีการแสดงผลบนหน้าจอ ซึ่ง \r และ \n ก็คือ หนึ่งในนั้น


\r เรียกว่า CR (carriage return) แทน ^M เลขฐานสิบเป็น 13 (เลขฐานสิบหกเป็น 0D)
\n เรียกว่า LF (line feed) แทน ^J เลขฐานสิบเป็น 10 (เลขฐานสิบหกเป็น 0A)

ใน .NET Framework ได้มีพร็อพเพอร์ตี้ NewLine ในคลาส Environment ให้เลือกใช้ ซึ่งจำเป็นต้องใช้ในกรณีที่ต้องการ cross platform เพราะ NewLine ให้ค่าบรรทัดใหม่ตาม OS ที่ .NET Framework ติดตั้งอยู่ ถ้าไม่ใช้ Environment.NewLine การเขียนโปรแกรมก็จะขึ้นอยู่กับแต่ละภาษา ดังตัวอย่างข้างล่าง

สำหรับภาษา VB.NET

Dim NewlineTesting As New System.Text.StringBuilder

'Convert number of ASCII to Charecter
'Char(เลขฐานสิบใน ASCII) คือ การแปลงรหัส ASCII เป็น Charecter
NewlineTesting.Append("This is first line" + Chr(13) + Chr(10))

'vbCr, vbLf and vbCrLf คือค่าคงที่ใน Namespace ชื่อ Microsoft.VisualBasic
'vbCr, vbLf and vbCrLf are constant value in Microsoft.VisualBasic
NewlineTesting.Append("This is second line" + vbCr + vbLf)
NewlineTesting.Append("This is third line" + vbCrLf)

'For implement in Windows Form
'กรณีเขียน Win. App. สามารถใช้ Keys.Return และ Keys.LineFeed ได้ ซึ่งช่วยกรณีที่จำรหัส ASCII ไม่ได้
NewlineTesting.Append("This is forth line" + Chr(Keys.Return) + Chr(Keys.LineFeed))

'Environment.NewLine is platform independence new line
'Environment.NewLine เป็นการขึ้นบรรทัดใหม่โดยใช้ได้กับทั้ง VB และ C# ซึ่งไม่ขึ้นกับ OS ด้วย
NewlineTesting.Append("This is fifth line" + Environment.NewLine)

NewlineTesting.Append("This is sixth line")

สำหรับภาษา C#

StringBuilder newlineTesting = new StringBuilder();
newlineTesting.Append("This is first line \r\n");
newlineTesting.Append("This is second line" + Environment.NewLine);
newlineTesting.Append("This is third line");

แหล่งข้อมูล :
ASCII Table
ASCII Code Table
VB.NET string method to handle escape sequences
Using CR and LF: The Options. (VB.NET)
Top Ten Reasons not to use the C shell
Learning the Korn Shell, 2nd Edition
\n ไม่เท่ากับการขึ้นบรรทัดใหม่บน Windows

วันอังคารที่ ๑๘ กันยายน พ.ศ. ๒๕๕๐

Northwind อยู่ไหน (Where is northwind in SQL Server 2005?)

สำหรับคนที่ใช้ผลิตภัณฑ์ฐานข้อมูลของไมโครซอฟต์ ไม่ว่าจะเป็น MS Access, SQL Server 7.0, 2000 คงคุ้นเคยกับฐานข้อมูลตัวอย่างที่มีมาให้ในชื่อ Northwind และ แต่สำหรับ SQL Server 2005 กลับหายไป ผมเพิ่งสังเกตตอนจะใช้ทดสอบโปรแกรม พอหาข้อมูลก็รู้ว่า ทางไมโครซอฟต์เก็บไว้ในลิ้นชักไปแล้วครับ เพราะว่าไม่ใช่ตัวอย่างที่ดีพอในการ implement ตัว analysis services หรือ reporting services (แต่ในรุ่น SQL Server Compact Edition ยังใช้ northwind อยู่ครับ) แต่ก็พอหาโหลด northwind ได้ที่ Northwind and pubs Sample Databases for SQL Server 2000 แต่กระนั้นทางไมโครซอฟต์ก็แนะนำว่าถ้าใช้ SQL Server 2005 ก็ใช้ฐานข้อมูลตัวอย่างตัวใหม่ดีกว่า ในชื่อ AdventureWorks ซึ่งไปเก็บไว้ใน codeplex ตามไป download ได้ที่ Microsoft SQL Server Samples and Community Projects ในโครงการนี้ยังพบตัวอย่างอีกหลายๆ script หรือข้อมูลที่ใช้กับ Analysis Services, Integration Services (DTS), Reporting Services, Transact SQL Scripts, XML etc. ถ้าขี้เกียจอ่านอะไรมากมายก็มาลิ้งนี้เลยดีกว่าครับ Sample Databases for Microsoft SQL Server 2005 SP2 licensed with the MS-PL license.

ปล. การใช้ northwind ใน SQL Server 2005 ต้องเซต properties ฐานข้อมูลให้ใช้ 90 compatibility level ก่อนนะครับ หรือลองอ่านเพิ่มเติมที่ NorthWind Database for SQL Server 2005 and installation method

แหล่งข้อมูลเพิ่มเติม :
Download details: SQL Server 2005 Compact Edition Developer SDK
Where is the Northwind SQL scripts for SQL server 2005
Sample Databases in SQL Server 2005 - Jeff Atwood blog
SQL SERVER - 2005 NorthWind Database or AdventureWorks Database - Samples Databases - Pinal Dave