Category Archives: VB.NET

VB.NET

เข้ารหัส/ถอดรหัส ด้วย Rail Fence Cipher โดยใช้ VB.NET (Rail Fence Transposition Cipher with VB.NET)

(ผมได้ทำการ implement การเข้าและถอดรหัส Rail Fence Cipher นี้ เป็น project ใน codeplex.com แล้วนะครับ ถ้าต้องการดูตัวอย่าง source code ซึ่งตอนนี้คือ version 1.0 beta กรุณาไป download ที่ http://www.codeplex.com/RailFenceCipher) Rail Fence Cipher หรือที่เรียกกันว่า อัลกอรึทึมแบบแนวรั้ว เป็นอัลกอรึทึมแบบ Transposition หรือแบบสลับตำแหน่งอีกแบบหนึ่ง ซึ่งมีแนวคิดมาจากวิธีส่งข้อความลับทางการทหาร ของชาวสปาตัน (Spartans) ในยุคกรีกโบราณ อุปกรณ์ประกอบด้วย ไม้กระบอกเหลี่ยมกับเส้นหนังสัตว์ยาวที่สลักตัวอักษรไว้ วิธีใช้ต้องนำสายหนังมาพันรอบแท่งกระบอกเหลี่ยม แล้วอ่านตามยาวของแท่งกระบอก ก็ถือเป็นการถอดรหัสแล้ว ดังรูป

Posted in VB.NET | Leave a comment

เข้ารหัส/ถอดรหัส ด้วย Columnar Transposition Cipher (Columnar Transposition Cipher with VB.NET)

Columnar Transposition Cipher เป็นอัลกอริทึมที่คล้ายกับ Rail Fence Cipher ซึ่งมีความแตกต่างกันที่วิธีอ่านและเขียน โดยจะเขียนตามแนวแถว และอ่านตามแนวคอลัมน์ในเมตริกซ์ รวมทั้งลำดับคอลัมน์ในการอ่าน อัลกอรึทึมนี้อาจจะต้องเพิ่มการตรวจสอบ input จาก user ในการกรอก key เพราะต้องเป็นตัวเลขที่ไม่ซ้ำ แต่ต่อเนื่องและไม่ต้องเรียงลำดับ ซึ่งในที่นี้จะให้เริ่มที่ 1 ถึง 9 จากรูปซ้าย เมื่อเข้ารหัสแล้วจะได้ผลลัพธ์ ดังนี้ EVLNE ACDTK ESEAQ ROFOJ DEECU WIREE กรณีเมตริกซ์ไม่เต็ม แบบรูปขวา ให้อ่านข้ามช่องว่าง (ในโค้ดจะใส่ค่า Nothing ลงไป) ไปได้เลย ผลลัพธ์คือ … Continue reading

Posted in VB.NET | Leave a comment

ศิลปะการใช้ If (Art of If Statement)

บางคนอาจจะถามว่า จะเขียนทำไม ไอ้เรื่องกล้วยๆ ขนาดนี้ ซึ่งผมก็ไม่เถียงครับ เพราะมันเป็นพื้นฐานของตรรกะการเขียนโปรแกรมอยู่แล้ว แต่สิ่งที่ผมจะเอามาบอกไม่ใช่มาอธิบาย เรื่อง If ใช้งั้นยังครับ แต่เป็นรูปแบบ If ที่สามารถเขียนได้หลายรูปแบบ บางรูปแบบหลายๆ คนอาจจะยังไม่เคยเห็นเลยนะ้ครับ… น่าสนใจแล้วใช่ไหมครับ งั้นเราลองมาดูกันว่ามีอะไรบ้าง เริ่มจากที่เห็นบ่อยๆ ไปจนถึงที่ไม่ค่อยเห็นครับ

Posted in VB.NET | Leave a comment

Value Types (2) : User-defined value types

User-defined value types ก็คือ การใช้ Structure … End Structure แทน Class … End Class ถ้ามองในอีกมุมนึงก็จะพบว่า Structure คือ keyword ในการทำ encapsulation หรือเป็นการเอา Built-in types มาบรรจุไว้นั้นเอง ซึ่ง Structure แตกต่างจาก Class หลายอย่าง ได้แก่ 1. มีการเก็บค่า (allocate) ในหน่วยความจำเป็นแบบ stack 2. ไม่สามารถ inherit ได้ 3. … Continue reading

Posted in VB.NET | Leave a comment

เข้ารหัสข้อความ แบบ Caesar Shift Cipher โดยใช้ VB.NET (Caesar Shift Cipher with VB.NET)

(ผมได้ทำการ implement การเข้าและถอดรหัส Caesar Shift Cipher นี้ เป็น project ใน codeplex.com แล้วนะครับ ถ้าต้องการดูตัวอย่าง source code ซึ่งตอนนี้คือ version 1.0 กรุณาไป download ที่ http://www.codeplex.com/CaesarShiftCipher ผมได้เขียนไว้ทั้ง 2 ภาษา คือ VB.NET และ C# — update เมื่อ 25 กันยายน 2550) เนื่องจากใน Framework ของ .NET มี class ที่เกี่ยวข้องกับ … Continue reading

Posted in VB.NET | Leave a comment

ฟังก์ชั่นหาวันแรกและวันสุดท้ายของเดือน (Get first and last day of month)

คำว่าวันสุดท้ายของเดือนในที่นี้ หมายถึงวันใน data type แบบ DateTime (หรือ Date) นะครับ ไม่ใช่หมายถึงเดือนนั้นมีกี่วัน เพราะถ้าหาเดือนนั้นมีกี่วันก็แค่ใช้ Method ชื่อ DaysInMonth (พร้อมระบุปีเดือน) ก็ได้คำตอบแล้ว โค้ดข้างล่างเป็นตัวอย่างแนวทางการหาคำตอบเท่านั้น เพราะที่จริงสามารถพลิกแพลงได้หลายวิธีครับ ลองดูกันเลยครับ

Posted in VB.NET | Leave a comment

เพิ่มความสามารถให้ System.DateTime (DateTime Extensions)

จากบทความก่อนๆ ที่ผมเคยเขียนเกี่ยวกับ ฟังก์ชั่นหาวันแรกและวันสุดท้ายของเดือน (Get first and last day of month)ซึ่งเป็น Function ที่สร้างขึ้นไว้ใช้งานเอง แต่วันนี้ผมเจอเว็บของคุณ Fredrik Kalseth ผู้ที่ขยายความสามารถให้ System.DateTime ให้มีฟังก์ชันเหล่านั้นไว้ รวมทั้งอีกหลายๆ ฟังก์ชันที่เราใช้บ่อยๆ มาลองดูตัวอย่างกันครับ (ตัวอย่างข้างล่างทั้งหมด return เป็น DateTime object นะครับ มือใหม่บางคนอาจเข้าใจผิดว่าจะreturn เป็นอักษรวันที่ ซึ่งถ้าอยากได้แบบนั้นจริงๆ ก็ค่อยแปลง DateTime เป็น String อีกทีครับ)

Posted in VB.NET | Leave a comment

Value Types (3) : Enumerations

Enumerations หรือ Sealed value types คือ กลุ่มของค่าคงที่ที่เรากำหนดขึ้นเอง ซึ่งกลุ่มของค่าคงที่เหล่านี้มักจะเป็นข้อมูลที่เกี่ยวข้องกัน และค่าคงที่เหล่านี้จะมีค่าเป็นตัวเลขกำกับไว้ด้วย หรือพูดง่ายๆ ว่ามันคือ (string) Array ในแบบ value type นั้นเองครับ (ปกติ Array ใน java หรือ .net จะเป็น object) ตัวเลขที่กำกับไว้ ก็เปรียบกับ index ใน array ครับ

Posted in VB.NET | Leave a comment

Value Types (1) : Built-in Types

Value Type หรือ Primitive Types คือ ชนิดข้อมูลพื้นฐาน ที่มีการเก็บค่า (allocate) ในหน่วยความจำเป็นแบบ stack และสืบทอด (derive) มาจาก System.ValueType ซึ่งมีความเร็วในการทำงานมากกว่า แบบ Reference Type (type ชนิดนี้แหละครับ ที่เมื่อมีอยู่ในภาษา Object-Oriented ใดแล้ว ภาษานั้นจะถูกเรียกว่า Hybrid Object-Oriected เพราะไม่ถือว่าเป็น OO เต็มรูปแบบ แต่ก็มีข้อดี คือทำงานได้เร็วขึ้น ซึ่งสังเกตได้ว่า value types นี้ จะเป็น type ที่ใช้บ่อยๆ เช่น ตัวเลข เป็นต้น ส่วนถ้าเป็นภาษาที่ใช้ความสามารถ … Continue reading

Posted in VB.NET | Leave a comment