ข้อแตกต่างระหว่างการลงนามเอกสารด้วย Electronic Signature กับ Digital Signature

ที่ผ่านมาได้มีโอกาสเดินทางไปดูงานระบบเอกสารอิเล็กทรอนิกส์ของหน่วยงานภาครัฐในภาคตะวันออกเฉียงเหนือ และภาคกลางด้วยความอยากรู้ว่าหน่วยงานอื่นๆ เขาพัฒนาระบบนี้กันไปถึงไหนแล้ว เพื่อจะได้นำมาเป็นแนวทางในการพัฒนาปรับปรุงระบบของม.อ.เราต่อไป จากการดูงานที่ผ่านมาพบว่า ระบบที่มีการใช้งานกันส่วนใหญ่ยังไม่ได้รับการพัฒนาให้รองรับงานด้านสารบรรณอย่างเต็มรูปแบบสักเท่าไหร่ บางที่ยังเป็นแค่ระบบที่ใช้ในการเก็บเอกสารแต่ยังไม่สามารถติดตามการดำเนินการต่างๆ ที่เกิดขึ้นกับเอกสารเรื่องนั้นๆ ได้ ซึ่งต่างจากของม.อ. เราที่สามารถติดตามเส้นทางการดำเนินการต่างๆ ที่เกิดขึ้นได้ทั้งหมด และเป็นที่ทราบกันดีว่าวัตถุประสงค์หลักของระบบเอกสารอิเล็กทรอนิกส์คือ การดำเนินการต่างๆ ด้านงานสารบรรณทั้งหมดในรูปแบบไฟล์อิเล็กทรอนิกส์แทนการใช้งานกระดาษ นั่นหมายความว่าเป้าหมายที่สำคัญของระบบนี้คือการดำเนินการทั้งหมดจะต้องดำเนินการผ่านระบบคอมพิวเตอร์ได้ 100% โดยไม่มีการใช้กระดาษเลย แต่ในปัจจุบันระบบยังไม่สามารถทำแบบนั้นได้ โดยเฉพาะในเรื่องของการลงนามเอกสาร เนื่องจากผู้ใช้ยังไม่มั่นใจรูปแบบการลงนามเอกสารในรูปแบบอิเล็กทรอนิกส์เท่าที่ควร จึงเลือกที่จะพิมพ์เอกสารเป็นกระดาษแล้วลงนามกันด้วยปากกาเช่นเดิม อย่างไรก็ตามเทคโนโลยีนี้กำลังจะได้รับการยอมรับมากยิ่งขึ้น เนื่องจากมีกฎหมายออกมารองรับ และสามารถใช้เป็นหลักฐานในชั้นศาลได้แล้ว จากการเดินทางไปศึกษาดูงานพบว่ามีระบบของสถาบันแห่งหนึ่งในภาคกลาง มีความสามารถในการลงนามเอกสาร โดยผู้ใช้จะต้องใช้รหัสผ่านที่ 2 เพื่อยืนยันตัวตนอีกครั้งหนึ่งก่อนการลงนาม จากนั้นระบบจะดึงรูปภาพลายเซ็นของผู้ลงนามมาแปะลงในเอกสารตามตำแหน่งที่กำหนดไว้ ข้อดีของวิธีการนี้คือในเอกสารจะมีรูปภาพลายเซ็นแปะอยู่ ทำให้ผู้อ่านคนอื่นๆ รับทราบได้ทันทีว่าใครเป็นคนลงนาม แต่ข้อเสียคือ รูปภาพลายเซ็นดังกล่าวสามารถคัดลอกแล้วนำไปแปะในเอกสารอื่นๆ ได้ง่าย จึงทำให้การลงนามแบบนี้ยังขาดคุณสมบัติด้านความปลอดภัย จากการศึกษาข้อมูลจากแหล่งต่างๆ พบว่าวิธีการในการลงนามเอกสารแบบอิเล็กทรอนิกส์นั้นมี 2 วิธีหลักๆ คือ  Electronic signature และ Digital Signature ซึ่งมีความหมายและข้อแตกต่างกันดังนี้ Electronic Signature เป็นการทำสัญลักษณ์ หรือลายเซ็นที่อยู่ในรูปแบบอิเล็กทรอนิกส์โดยบุคคล เพื่อเป็นการยืนยันหรือลงนามในเอกสาร สัญลักษณ์ที่นิยมใช้กันได้แก่ รูปภาพลายเซ็นที่เซ็นด้วยหมึกปากกาลงในกระดาษแล้วสแกนเข้าสู่ระบบคอมพิวเตอร์ การใช้เมาส์ หรือนิ้วมือ หรือ stylus วาดรูปลายเซ็นบนหน้าจอคอมพิวเตอร์ ลายเซ็นที่แนบท้ายอีเมล์ การพิมพ์ชื่อด้วยคีย์บอร์ด รูปภาพลายนิ้วมือ การคลิก “I Agree” ใน Electronic form ต่างๆ เป็นต้น Digital Signature Digital Signature เป็น Subset ของ Electronic Signature เนื่องจากเป็นลายเซ็นที่อยู่ในรูปแบบของอิเล็กทรอนิกส์เหมือนกัน แต่ได้เพิ่มเติมคุณสมบัติด้านความปลอดภัยเข้าไป เพื่อให้มีความน่าเชื่อถือมากยิ่งขึ้น คุณสมบัติดังกล่าวประกอบด้วย Signer Authentication เป็นความสามารถในการพิสูจน์ว่าใครเป็นคนเซ็นเอกสาร ตัวลายเซ็นจะสามารถใช้ในการเชื่อมโยงไปยังบุคคลที่เซ็นเอกสารได้ Data Integrity เป็นความสามารถในการตรวจสอบ หรือพิสูจน์ได้ว่ามีการแก้ไขเอกสารหลังจากที่ได้มีการเซ็นไปแล้วหรือไม่ Non-repudiation การไม่สามารถปฏิเสธความรับผิดชอบได้ เนื่องจากลายเซ็นที่สร้างขึ้นมีเอกลักษณ์ สามารถพิสูจน์ในชั้นศาลได้ว่าใครเป็นผู้เซ็นเอกสาร สรุปข้อดีข้อเสียของ Electronic Signatures และ Digital Signature ข้อดี ข้อเสีย Electronic Signature – ใช้สัญลักษณ์ หรือรูปภาพลายเซ็นที่ผู้ใช้สามารถเห็นได้ง่าย ทำให้ทราบได้ว่าใครเป็นเจ้าของลายเซ็น (ทราบได้จากการดูรูปลายเซ็น) – ถูกคัดลอกจากเอกสารฉบับหนึ่งไปยังอีกฉบับหนึ่งได้ง่าย – ไม่สามารถตรวจจับการแก้ไขเนื้อหา หรือข้อความในเอกสารที่เกิดขึ้นหลังจากการเซ็นได้ – วิธีการนี้ยังขาดความชัดเจน ไม่สามารถพิสูจน์ได้ว่าเจ้าของลายเซ็นเป็นผู้ลงนามจริงหรือไม่ จึงอาจโดนปฏิเสธความรับผิดชอบในชั้นศาลได้ Digital Signature – เอกสารที่ผ่านการเซ็นแล้วจะไม่สามารถแก้ไขได้ หากมีการแก้ไขก็จะสามารถตรวจสอบได้ และส่งผลให้ลายเซ็นหมดสภาพไป – ผู้เซ็นเอกสารสามารถกำหนดระดับความน่าเชื่อถือได้ – ผู้เซ็นเอกสารจะไม่สามารถปฏิเสธความรับผิดชอบได้ – สามารถใช้เป็นหลักฐานในชั้นศาลได้เทียบเท่ากับการเซ็นเอกสารในกระดาษด้วยหมึกปากกา – ขึ้นอยู่กับการเข้ารหัสลับ และมีความยุ่งยากในการเชื่อมโยงกับลายเซ็นบนกระดาษ   จะเห็นว่าการลงนามเอกสารแบบอิเล็กทรอนิกส์ทั้ง 2 วิธีนั้น มีข้อดี และข้อเสียต่างกัน การเลือกรูปแบบไหนมาใช้ในการพัฒนานั้นก็ขึ้นอยู่กับว่าเราต้องการให้ระบบเราทำอะไรได้บ้าง เมื่อพิจารณาจากความต้องการของผู้ใช้งานระบบเอกสารอิเล็กทรอนิกส์มหาวิทยาลัยสงขลานครินทร์ พบว่ามีความต้องการให้สามารถลงนามเอกสารผ่านระบบได้ และแนวทางที่เหมาะสมคือการนำข้อดีของทั้ง 2 วิธีมารวมกันเพื่อใช้ในการพัฒนาต่อไป   แหล่งข้อมูลอ้างอิง : https://www.signinghub.com/electronic-signatures/

Read More »

Resource Governor แนวคิดการจัดการทรัพยากรใน SQL Server 2014

      Resource Governor เป็นแนวคิดใน SQL Server ซึ่งมีมาให้ใช้ตั้งแต่ SQL Server 2008 โดยมีความสามารถในการจัดการ CPU และ Memory ให้พอเหมาะกับการใช้งานของแต่ละฐานข้อมูลได้ แต่ใน SQL Server 2014 ได้มีเพิ่มเติมการจัดการ I/O เพิ่มเข้ามาทำให้ผู้ดูแลสามารถปรับเปลี่ยนการใช้งานได้       หากจะว่าไปแล้วในการ Tuning ฐานข้อมูลนั้นส่วนใหญ่จะเน้นการทำงานไปที่ CPU และ Memory เป็นส่วนใหญ่ แต่อีกสิ่งหนึ่งที่สามารถปรับแต่งให้ประสิทธิภาพในการทำงานของฐานข้อมูลดีขึ้นได้ ก็คือ I/O นี่เอง ซึ่งทำให้ SQL Server 2014 มีคุณสมบัติในการจัดการทรัพยากรที่หลากหลายและครบถ้วนมากขึ้น ในการจัดการ Resource Governor นั้น มีสิ่งสำคัญที่เราควรรู้ 3 สิ่ง ดังนี้ Resource Pool หลังจากมีการติดตั้ง SQL Server เสร็จสิ้น ระบบจะสร้าง Resource Pool ตั้งต้นขึ้น 2 ตัว คือ internal และ default ไว้คอยสนับสนุนทรัพยากรที่ผู้ใช้กำหนด ซึ่งผู้ดูแลสามารถสร้าง Resource Pool ขึ้นมาใหม่ได้ Workload Group จะมีความสัมพันธ์กับ Resource pool กลุ่มภาระงานแต่ละกลุ่มจะถูกกำหนด Resource Pool ให้ใช้งานได้ Classification คือ การจำแนกประเภทการร้องขอที่เข้ามาในระบบให้อยู่ใน Workload Group ที่ได้กำหนดไว้ และเหมาะสมตามการใช้งาน โดยสรุปการทำงานตามแผนผัง ดังนี้       จากแผนผังจะเห็นว่ามีการจำแนกการติดต่อที่ส่งเข้ามาโดยผ่านเงื่อนไขที่ถูกสร้างไว้ภายใน Classification Function ให้เข้าไปยัง Workload Group ที่กำหนดไว้ ซึ่งในแต่ละ Workload Group ก็จะมี Pool ที่จำกัดทรัพยากรไว้เรียบร้อยแล้ว หากเรารู้ว่าการทำงานของกลุ่มไหนมีความต้องการมากกว่าก็สามารถแบ่งทรัพยากรไปให้ใช้งานได้มากกว่า โดยไม่ต้องเสียทรัพยากรไปกับกลุ่มการทำงานที่มีความสำคัญน้อยกว่า ทำให้ประสิทธิภาพในการทำงานเพิ่มมากขึ้น   ตัวอย่างการจัดการทรัพยากรใน Resource Pool USE master; GO CREATE RESOURCE POOL TestFixIOPool WITH ( MAX_IOPS_PER_VOLUME = 30, MIN_IOPS_PER_VOLUME = 1 — MIN_CPU_PERCENT=0, — MAX_CPU_PERCENT=30, — MIN_MEMORY_PERCENT=0, — MAX_MEMORY_PERCENT=30 ); GO   อ้างอิง : https://technet.microsoft.com/en-us/library/bb934084%28v=sql.105%29.aspx

Read More »

Convert Solution Visual Studio 2005 to 2013

ในบทความนี้ ผู้เขียนจะขอกล่าวถึงเครื่องมือในการพัฒนาตัวหนึ่งที่ชื่อว่า Visual Studio โดยจะนำเสนอวิธีการ Convert Solution ASP.NET จากเวอร์ชั่นเก่าไปยังเวอร์ชั่นใหม่โดยไม่ต้องสร้างโปรเจคขึ้นมาใหม่ ตัวอย่างในวันนี้จะแสดงการ Convert Project Solution ที่พัฒนาด้วย Visual Studio 2005 ไปพัฒนาบน Visual Studio 2013 ซึ่งแน่นอนครับว่าจะต้องมีการ config ค่าเพิ่มเติมต่างๆ ผู้เขียนจะกล่าวไว้ช่วงท้ายนะครับ เราเริ่มขั้นตอนการ Convert กันเลยดีกว่าครับ ขั้นตอนแรก : เตรียมข้อมูลให้พร้อม 1. เตรียม solution ตัวเก่าของเราให้พร้อม (ในที่นี้เราใช้ solution ของ Visual Studio 2005 ชื่อ GSMISII ) รูปที่ 1 Folder Project Solution Visual Studio 2005 รูปที่ 2 ไฟล์ Project Solution Visual Studio 2005      2. เตรียม Visual Studio 2013 ให้พร้อม รูปที่ 3 Visual Studio 2013 ขั้นตอนที่สอง : เริ่ม Convert       1. เราจะทำการ Convert Solution โดยคลิกขวาไฟล์ Solution ( xxx.sln ) ตามรูปที่ 2 เลือก Open with… ก็จะปรากฎดังรูป รูปที่ 4 Keep using Microsoft Visual Studio Version Selector   2. เลือก Keep using Microsoft Visual Studio Version Selector รูปที่ 5 Review Project And Solution Changes      3. Visual Studio จะตรวจสอบว่ามีโปรเจคหรือ Solution ใดบ้าง ตามตัวอย่างมีแค่ 1 Solution กด OK รูปที่ 6 Loading solution projects…       กรณีมีการใช้ Crystal Report จะมีการให้ Backup ก่อนที่จะ Convert (ซึ่งหากต้องการใช้ Crystal Report จะต้องลง SAP Version ที่รองรับกับ Visual Studio 2013 ก่อน) รูปที่ 7 Loading solution projects…      กรณีที่มีการใช้ Source Control จะมีให้เลือกว่าจะ remove ออกหรือไม่ รูปที่ 8 Source Control remove      เสร็จเรียบร้อยแล้ว… จริงหรือ??   รูปที่ 9 Solution in Visual Studio 2013      เรามาลอง Build Solution กันดีกว่า… รูปที่ 10 Error Build Solution      Oops! Error!!

Read More »

การใช้ LINQ ในการจัดการข้อมูลอย่างง่าย สำหรับมือใหม่(Ep.2)

          ความเดิมตอนที่แล้ว… ผู้เขียนได้ทิ้งท้ายไว้เกี่ยวกับเรื่องการใช้งาน LINQ ในการจัดการข้อมูลในเบื้องต้น ได้แก่ วิธีการดึงข้อมูลโดยทั่วไป(Select) การดึงข้อมูลแบบมีเงื่อนไข(Where) และการเรียงลำดับ(OrderBy) เป็นต้น หากใครที่ยังไม่เคยอ่านบทความที่แล้ว และต้องการศึกษาในส่วนดังกล่าวสามารถหาอ่านได้จากลิงค์ “การใช้ LINQ ในการจัดการข้อมูลอย่างง่าย สำหรับมือใหม่(Ep.1)” เพื่อเพิ่มความเข้าใจพื้นฐานในการใช้งานเบื้องต้น LINQ เพิ่มเติม และสำหรับในบทความนี้ ผู้เขียนจะขอพูดถึงการใช้งาน LINQ ในส่วนอื่นๆที่นอกเหนือจากการทำงานทั่วไป ที่คิดว่าน่าจะเป็นประโยชน์กับผู้พัฒนาที่มีความสนใจในการใช้งาน LINQ จัดการข้อมูล ดังนี้ การคำนวณค่าร่วม/นับจำนวน ตัวอย่างที่ 1 : การคำนวณค่าผลรวมของฟิลด์ที่ดึงข้อมูลโดยใช้เมธอด Sum decimal sumLineTotal = (from od in orderdetailscollection select od.LineTotal).Sum(); หรือ decimal sumLineTotal = orderdetailscollection.Sum(od => od.LineTotal); คำอธิบาย : จากตัวอย่างข้างต้น เป็นการดึงข้อมูลโดยมีการคำนวณค่าผลรวมที่ได้จากการดึงข้อมูลทั้งหมดในฟิลด์ LineTotal ผ่านเมธอด Sum โดยที่ไม่ต้องมาวนค่าเพื่อหาผลรวมของแต่ละฟิลด์ที่ดึงมาอีกครั้งในภายหลัง ซึ่งถือว่าเป็นการอำนวยความสะดวกและประหยัดเวลาในการพัฒนาให้กับผู้พัฒนาที่ต้องการทำงานในกรณีดังกล่าวได้ ตัวอย่างที่ 2 : เป็นการคำนวณค่าเฉลี่ยตามรหัส double RatingAverage = ctx.Rates.Where(r => r.Id == Id).Average(r => r.Rating); หรือ var RatingAverage = (from a in ctx.Rates where a. Id.Equals(id) select a.Rating).Average(); คำอธิบาย : จากตัวอย่างข้างต้น เป็นการคำนวณหาค่าเฉลี่ยของฟิลด์ Rating โดยใช้เมธอด Average ภายใต้เงื่อนไขรหัส Id ในการดึงข้อมูล ตัวอย่างที่ 3 : เป็นตัวอย่างการคำนวณผลรวม และการนับจำนวนแถวของการอ่านข้อมูลโดยมีการจัดกลุ่มข้อมูลร่วมด้วย var ListByOwner = list.GroupBy(l => l.Owner) .Select(lg => new { Owner = lg.Key, Boxes = lg.Count(), TotalWeight = lg.Sum(w => w.Weight), AverageVolume = lg.Average(w => w.Volume) }); คำอธิบาย : จากตัวอย่างข้างต้น จะเห็นได้ว่าเป็นการจัดกลุ่มของข้อมูลตาม Owner โดยใช้เมธอด GroupBy และมีการนับจำนวนแถวเก็บไว้ในฟิลด์ Boxes คำนวณผลรวมของคอลัมน์ Weight และหาค่าเฉลี่ยของคอลัมน์ Volume ใส่ในฟิลด์ TotalWeight และ AverageVolume นั่นเอง ตัวอย่างที่ 4 : เป็นการนับจำนวนข้อมูลตามเงื่อนไขที่กำหนดโดยใช้เมธอด Count int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; int oddNumbers = numbers.Count(n => n % 2 == 1); คำอธิบาย : จากตัวอย่างข้างต้น จะเห็นว่า เป็นการดึงค่าจากตัวแปรอาร์เรย์ที่ชื่อว่า numbers และนับจำนวนตัวเลขเฉพาะที่เป็นเลขคี่(หารด้วยสองและมีค่าเศษ 1)เท่านั้นด้วยเมธอด Count ซึ่งในส่วนของเงื่อนไขดังกล่าว ผู้อ่านสามารถนำไปประยุกต์ใช้กับงานของตนในการนับจำนวนข้อมูลได้ ผลลัพธ์ : จากการอ่านข้อมูลจากตัวแปร numbers ส่งผลให้ oddNumbers มีค่าเท่ากับ 5 นั่นคือในการดึงข้อมูลพบเลขที่มีค่าเป็นเลขคี่ดังนี้ 5,1,3,9,7 การค่าที่น้อยที่สุดและมากที่สุดโดยใช้เมธอด Min/Max ตัวอย่างที่ 1 : การหาค่าที่น้อยที่สุดโดยใช้เมธอด Min string[] words = { “cherry”, “apple”, “blueberry” };

Read More »

จับตา Bootstrap 4 Beta

เมื่อช่วงเดือนสิงหาคม 2015 ผู้พัฒนา Bootstrap ได้เปิดตัว Bootstrap 4 Beta ออกมาให้ผู้พัฒนาเว็บไซต์ได้ทดลองใช้งานกัน โดยได้มีการแก้ไข bug ที่เจอในเวอร์ชั่น 3 และเพิ่มเติมความสามารถต่างๆ เข้าไป ทำให้การพัฒนาเว็บไซต์สามารถทำได้ง่าย และเป็นที่น่าสนใจได้มากขึ้น โดยในเวอร์ชั่นนี้มีการปรับปรุงจากเวอร์ชั่น 3 ค่อนข้างเยอะ แต่ที่เด่นๆ ได้แก่   ใช้ Sass แทน Less ทำให้ compile ได้เร็วขึ้น ข้อดีของการใช้ Sass คือการมี community ขนาดใหญ่เป็นตัวช่วยสำหรับนักพัฒนาในการค้นคว้าหาความรู้เพิ่มเติม หรือขอความช่วยเหลือต่างๆ จาก community ได้ ปรับปรุง Grid System ให้รองรับกับขนาดหน้าจอของอุปกรณ์ต่างๆ ให้มากยิ่งขึ้น สนับสนุนการใช้งาน flexbox grid system และ component ใช้ Card component แทนการใช้ wells, thumbnails และ panel รวม HTML Reset ทั้งหมดไว้ใน Module เดียวกันชื่อ Reboot เพิ่ม option ในการ customize ก่อนการดาวน์โหลดมาใช้งาน เช่นการกำหนด gradients, transitions, shadows ให้กับ component ต่างๆ โดยเก็บไว้ในตัวแปร Sass แล้ว recompile เป็น CSS มาใช้งาน ยกเลิกการสนับสนุน IE8 แล้ว ส่งผลทำให้เราสามารถใช้ประโยชน์จาก Style sheet ได้อย่างเต็มประสิทธิภาพ และในเวอร์ชั่นนี้ก็ได้เปลี่ยนการใช้งานหน่วย pixel มาเป็น rems และ ems แทน เนื่องจากหน่วยทั้ง 2 แบบนี้ จะช่วยให้การพัฒนาเว็บไซต์ในรูปแบบ Responsive ทำได้ง่ายขึ้น ทั้งในส่วนของ Typography และ component sizing แต่ถ้าหากยังอยากให้เว็บไซต์รองรับ IE8 ด้วย ทางผู้พัฒนา Bootstrap แนะนำว่าให้ใช้ Bootstrap Version 3 ตามเดิม เขียน Javascript plugin ใหม่ทั้งหมด ปรับปรุง auto-placement หรือการจัดวางตำแหน่งของ tooltips และ popovers ปรับปรุงเอกสาร Documentation ให้อ่าน และค้นหาได้ง่ายขึ้น และอื่นๆ เช่น Custom form control, มีคลาสสำหรับ margin และ padding ให้ใช้งานได้ง่ายขึ้น และ Utility Class สำหรับอำนวยความสะดวกในการพัฒนาเว็บไซต์ เป็นต้น   จะเห็นว่าจากรายการที่เปลี่ยนแปลงต่างๆข้างต้นนั้นมีความน่าสนใจมาก ทางผู้พัฒนาจึงได้สร้างเว็บไซต์ตัวอย่างไว้ให้ดูโดยสามารถดูได้จาก http://expo.getbootstrap.com/

Read More »