[CR] Just Cut ตัดสบายรวดเร็ว ราคาสบายๆ

หลังจากทำงาน แก้ Defect เพื่อรีบปิดงานส่งลูกค้าไป เสาร์อาทิตย์มานั่งทำ Thesis นั่งอ่าน Paper ไปแล้ว ผมก็ยาว หัวก็ฟูกครับ คิดอะไรไม่ออกเลยยยย

ไปตั้งผมดีกว่าครับ หลังจากปักหลักที่ Emporium FoodHall มาทั้งบ่ายครับ

ทำเลที่ตั้ง

  • BTS ทองหล่อ ทางออก 2 – ไม่ต้องแตะบัตรเค้า BTS นะครับ ร้านอยู่ด้านนอกครับ ตอนแรกติดว่าจะใช้เที่ยวพี่ให้คุ้มซะหน่อย 555
  • BTS สาขา BTS พระโขนงครับ

เมื่อออกจาก BTS ทางหล่อ พบร้านตัวร้านตกแต่งเป็นโทนสีส้ม เด่นสง่ามาแต่ไกลเลยครับ ตัวเรามีขนาดเล็กครับ 3-4 ที่นั่งครับ มีช่างประจำ 3 คนครับ ร้านนี้ตัดผมอย่างเดียวนะครับ ตามชื่อร้านเลย จริงๆดูขนาดร้านแล้วก็ไม่น่าจะทำอย่างอื่นได้แล้ว พื้นที่จำกัดจริงๆ

การจองคิวครับ

เนื่องจากร้านอยู่บน BTS ครับ ทำให้มีวิธีการที่เหมือน BTS ครับ โดยมีขั้นตอน ดังนี้

  • จ่ายเงินครับ ทุกเพศทุกวัย ราคาเดียวครับ 120 บาทครับ เห็นหลายรีวิวบอกว่า 100 บาท อันนั้นข้อมูลเก่านะครับ (ต้องเตรียมเงินมาพอดี ร้านไม่มีให้แลก)
  • ตู้คีออสสำหรับจ่ายเงิน รับเฉพาะแบงค์ 100 และ แบงค์ 20 (เท่าที่ลองแบงค์ใหม่ ก็ใข้ได้นะ)
  • ได้บัตรคิวมาแล้วครับ

ได้เวลาตัดผม

  • ผ่านไป 15 นาที เสร็จแล้วครับ รวดเร็วทันใจจริงๆครับ

 

[BPMN] Service Task with REST-API (PATCH) Example

หลังจาก Blog ตอนก่อน ผมได้ลอง Service Task เชื่อมกับ Web Service ผ่านวิธีการ GET เพื่อที่ดึงข้อมูลมาแสดงผลครับ คราวนี้หลังจาก GET ข้อมูลไปแล้วคราวนี้ เราลองมาทำการแก้ไขข้อมูลครับ ซึ่งการแก้ไขข้อมูลบางส่วน อันนี้ทาง Web Service (REST API) เค้ามีวิธีการที่เรียกว่า PATCH ครับ ส่วนจะทำอย่างไรนั้นมาลุยกันเลยครับ

เตรียมตัวครับ

กระบวนการที่สร้างกันก่อนครับ

  • สำหรับกระบวนการที่สร้างคราวนี้ผมทั้ง JSON Server ขึ้นมาเองครับ โดยใช้ข้อมูล Request ซึ่งผู้ใช้ต้องใส่ ID เพื่อให้ระบบดึงข้อมูล Request ขึ่นมาครับ หลังจากดูเสร็จ แล้วกด Complete ข้อมูลของ Request ในช่อง “requeststatus” ถูกแก้ไขค่าจาก “wait-for-review” เป็น “completed” ครับ

ลองมือทำ โดยมี Task ที่เกี่ยวข้อง ดังนี้

  • Task “Enter Request Id” เป็น User Task เอาไว้สำหรับกรอก Id ของ Request ครับ
  • Task “Test REST-API (GET)” เป็น Service Task ที่ติดต่อกับ Web Service โดยมี Config ดังนี้
    • Connector Id = “http-connector”
    • Input มีค่าตามตารางด้านล่างครับ
      ์NameTypeScript FormatData
      urlscriptgroovy  “http://localhost:3000/requests/${RequestId}”.toString()
      methodtext  GET
      headermap  Key = “Accept”
      Value = “application/json”
    • Output เนื่องจากข้อมูลที่ได้เป็นอยู่ในรูปแบบ JSON จึงต้องมีการแปลงค่า และยัดลง Process ของ BPMN ได้แก่ id, projectid, requestid, requestby และ requeststatus ครับ โดยมี Code ดังนี้
  • Task “View Result” เป็น User Task ที่เอาผลลัพธ์ที่ได้จาก Task “Test REST-API (GET)” มาแสดงผลครับ
    • Connector Id = “http-connector”
    • Input มีค่าตามตาราง
      ์NameTypeScript FormatData
      urlscriptgroovy  “http://localhost:3000/requests/${RequestId}”.toString()
      methodtext  GET
      headermap  Key = “Accept”
      Value = “application/json”
        Key =”Content-Type”
      Value = “application/json”
      payloadscriptgroovy
  • Task “REST-API(PATCH) request status” เป็น Service Task ที่ทำหน้าที่เปลี่ยน “requeststatus” ถูกแก้ไขค่าจาก “wait-for-review” เป็น “completed” ครับ โดยมี Config ดังนี้ครับ
  • เมื่อสร้าง Task เสร็จแล้ว นำไฟล์ BPMN ที่ได้เตรียมไป Deploy ครับ

ทดสอบ

  • เตรียมข้อมูลสำหรับ Mock Server กันก่อนครับ โดยข้อมูลที่ได้มีหน้าตา ดังนี้ (ถูกเก็บไว้ในไฟล์ db.json ครับ)
  • Start JSON Server ด้วยคำสั่ง  json-server --watch db.json
  • เข้าไปที่ Camunda Task List จากนั้น Execute Task ชื่อ “HttpConnectorRequestPatch”
    • กรอก Request Id = 2
    • ดูรายการ Request จากนั้นกดปุ่ม Complete
    • ลองไปดูที่ Console ครับ พบว่า ช่อง “requeststatus” ถูกแก้ไขค่าจาก “wait-for-review” เป็น “completed” แล้วครับ

[BPMN] Service Task with REST-API (Get) Example

หลังจากงมๆมานานพอสมควรแล้วกับการใช้งาน Service Task กับ Web Service กับ Camunda BPMN Engine ครับ โดยสิ่งที่ผมใช้ คือ ตัว Camunda Connector ที่ช่วยให้เราสามารถ Config Web Service ได้ง่าย ไม่ต้องส่งงานให้ Delegate Code อย่าง BPMN Engine ของค่ายอื่นๆครับ สำหรับ

NOTE: สำหรับเรื่อง Service Task ตัว Spec ของ BPMN ไม่ได้ระบุใน Spec ชัดเจน ว่าต้องมีขั้นตอนการทำงานอย่างไร จึงเปิดให้ BPMN Engine แต่ละเจ้าสามารถเสริมเติมแต่ง Feature ได้เต็มที่ครับ

Camunda Connector

  • มี 3 รูปแบบ อ้างอิงจากเวอร์ชันที่ 7.9.0 ได้แก่
      • HTTP Connector – พวก REST API  ทั้งหลาย ใช้วิธี GET / POST และอื่นๆ แล้วเอา XML หรือ JSON มาใช้งานต่อ
    • SOAP Connector – พวก WSDL หรือ SOAP แบบเดิม
    • Custom – เขียน Code แล้วจัดการเองเลย

หลังจากเกริ่นนำได้ทดสอบ ตัว Connector แต่ละตัวกันแล้ว ตอนนี้มาดูตัวอย่างดีกว่าครับ โดยตัวอย่างที่ผมเขียนเป็นการใช้งาน HTTP Connector โดยใช้วิธี GET และผลลัพธ์ที่ได้ออกมาเป็นไฟล์ JSON ครับ เอาหละมาดูกันเลย ว่าเรา HTTP Connector แบบต้องใส่อะไรไปบ้าง

  • url => บอกว่าให้ไปเอาข้อมูลมาจาก Domain ไหน อะไร ถ้าเป็นแบบ GET ต้องยัด Parameter ลงไปในนี้ด้วยครับ
  • method => อันนี้กำหนดเป็น GET
  • header => บอกว่า Request ของเรามีอะไรบ้าง โดยกำหนดเป็น Key
    • key => Accept
    • value => application/json
  • payload => ไม่จำเป็นสำหรับ Method GET นะครับ ใส่เข้าไป จากการที่ลองไล่ Code ดูมันไม่ได้สนใจนะครับ

มาดูตัวอย่างกันบ้างดีกว่าครับ โดยผมทำเป็น Process ของการดึงข้อมูลของกระทู้ครับ

  • ข้อมูลจะถูก Mock มาจาก Open Source จาก https://jsonplaceholder.typicode.com/ อันนี้ผมเอาข้อมูล Mock จากตัว Web เลยครับ โดยใช้ URL https://jsonplaceholder.typicode.com/posts ซึ่งข้อมูลที่ได้มีผลลัพธ์ ดังนี้
  • Note: แต่เราสนใจเฉพาะ Id นะครับ ไม่ได้ ดึงมาหมด ดังนี้ URL อยู่ในรูป  https://jsonplaceholder.typicode.com/posts/<POST-ID>
  • ตัว BPMN Process – เดี๋ยวจะกล่าวในช่วงถัดไปครับ

มาเจาะลึกที่ BPMN Process ครับ ประกอบด้วย Task ย่อย 3 Task ครับ

  • Task “Enter Post Id” : เป็น User Task ให้ User กรอก Id ของ Post ที่ต้องการเรียกดูครับ
  • Task “Test REST-API (GET)” : สำหรับ Task นี้ เป็น Service Task ครับ โดย Task นี้เป็นพระเอกเลยครับ เพราะใช้เชื่อมกับ Web Service ครับ
    • กำหนด Config เป็น Connector
    • ภาพรวมของข้างในของ Connector
    • มาดูที่ส่วน Input ของตัว Connector ครับ
      • Connector-Id : ต้องเป็น http-connector เท่านั้น ห้ามตั้งชื่อเองนะครับ Engine ไม่รู้จัก
      • URL – สังเกตุว่า ผมไม่ได้ Map เป็น Text ครับ ผมใช้เป็น Script แทน เพราะต้องการเอา Post Id เช่น 1  จากตัวแปรของ Process ${PostId} มาใส่ต่อท้าย URL ตามคำสั่ง ดังนี้

        ภาพรวมของ URL
      • Method
      • Header
    • การจัดการ Output ครับ – ผลลัพธ์ของ Web Service อยู่ในรูปของ JSON ซึ่งผมจะเก็บไว้ใน postResult ครับ

      • แต่เนื่องจาก ผมต้องการเอาผลลัพธ์ที่เป็น JSON มายังลงใน Variable ของ Process ครับ เพื่อเอาไปแสดงผลใน Task ถัดไปครับ เลยต้องทำเป็น Script เพื่อกำหนดค่าครับ
  • Task “View Result” : เอาผลลัพธ์ที่ได้มาแสดงผลครับ โดยมีการ Config ดังนี้
  • BPMN Model สามารถดูได้จาก GitHub เลยครับ

ทดสอบครับ

  • Task “Enter Post Id” : ดึงข้อมูลของ Post Id 2
  • Task “Test REST-API (GET)” : หน้าที่ของ Engine ทำครับ เราต้องจัดการอะไร
  • Task “View Result” :

จบไปแล้วกับการงมๆ Web Service กับ BPMN ครับ โดยผมคิดว่าคงใช้ json-server ซึ่งเป็น Standalone JSON Mock REST-API มาใช้ทำ Thesis ครับ

 

[CR] มาลองใช้ตู้เติมเงินบัตร Rabbit กันครับ

พักหลังๆ ผมย้ายสถานที่ทำงานจากที่บ้าน มาที่เช้าจุฬาฯ บ่ายก็ที่เอ็มโพเรียมแหละครับ เลี้ยวไปอีกฝั่งก็เป็นตู้ปลาครับ  ^__^ ที่บ้านติดใจข้าวกระเพราะเป็ดย่างมากๆครับ สุดท้ายได้รับหน้าที่ซื้อกลับบ้านไปให้หม่อมแม่กินครับ หลังจากทำภาระกิจเสร็จจะกลับบ้านและ โหหคิวเติมเงินเยอะมากๆ ทำไงดี ก็เหลือบไปเป็นเจ้าตู้นี้เข้าครับ

เค้าบอกว่ามันเติมเงินได้ – มันก็เติมได้นะเฉพาะเงินเหมาะกับยุค Cashless แต่ยังขาดในเรื่องของการเติมเที่ยวครับ

มาลองใช้กันดีกว่าครับ ว่าตู้ Rabbit Reward เวอร์ชัน Upgrade มันจะทำได้ดีแค่ไหนครับ

  • เริ่มต้นที่ – แตะจอเพื่อเริ่มการทำงานครับ (อันนี้ผมงงมาก ทำไมให้ระบบ Activate ขึ้นมาจากบัตรครับ)
  • เลือกที่เมนูเติมเงินครับ
  • ตอนนี่้ระบบรองรับแค่การเติมเงิน 100 บาท / 500 บาท และ 1,000 บาท เท่านั้นครับ *** ระบบไม่ทอนเงินนะครับ ***
  • ระบบบอกให้ใส่ธนบัตรครับ เร็วนิดนึงนะครับ ระบบตั้งเวลา Timeout ไว้ไวมาก พลาดทีต้องเริ่มต้นใหม่เลย
  • ยัดเงินตรงนี้นะครับ – เต็มยังงงนะ ว่าถ้าแบงค์มีปัญหาขึ้นมา ระบบจะคืนเงืนยังไง เพราะของ Bluepay มันมีช่อง คืน แบงค์ข้างล่างเลย
  • รอใบเสร็จออกครับ
  • เสร็จแล้วอย่าลืมกด Logout นะครับ เดวจะมีคนอื่นมากดเติมเงินบัตรเราให้

ข้อดี

  • รวดเร็วดีครับ

ข้อเสีย

  • รองรับเฉพาะการเติมเงิน – ไม่รองรับการเติมเที่ยว
  • ระบบไม่ทอนเงิน

 

 

[UBUNTU] Update OS แบบ Command Line

หลังจากใช้ Ubuntu มาสักพัก ลองใช้ Update ผ่าน UI แล้ว ไม่ค่อยประทับใจเท่าไหร่เลย ปล่อยทั้งวันก็ยังไม่เสร็จ มาลองคำสั่งดีกว่าครับ ง่ายเพีบงแค่ 3 บรรทัดเท่านั้น

[CR] ลองมารับบัตรแมงมุมกันครับ

หลังจากมีประกาศมา

นานนนนนนนนนนนนนนนนนนนนนนนนนน

มาาากกกกกกกกกกกกกกกกกกกกกกกกกกกกกก

ถึงตั๋วร่วมที่ที่สามารถใช้ได้กับขนส่งสาธารณะได้ทั้ง MRT สายสีน้ำเงิน, MRT สายสีม่วง, Air-Port Link และ รถเมล์ ขสมก (ส่วน BTS นั้นนอกคอกไป 555) โดยคั๋วร่วมนี้มาแจกฟรีนะครับ ที่สถานีรถไฟฟ้า MRT สายสีม่วง ทุกสถานีครับ

สิ่งที่ต้องเตรียม

  • บัตรประชาชนตัวจริง
  • เวลา – เพื่อเดินทางไปรับบัตร
  • เงิน – เติมลงบัตร

ขั้นตอนการรับบัตรแมงมุม

  • ต้องออกจาก Gate ของสถานีก่อนนะครับ แล้วไปต่อคิวรับบัตรที่ห้องขายตั๋วครับ
  • มีเอกสารมาให้กรอกครับ อันนี้ต้องยื่นพร้อมบัตรประชาชนตัวจริงครับ
  • ถ้ามีบัตร MRT เก่า – สามารถแจ้งให้โอนเงินที่ค้างในนั้นได้ครับ
  • ถ้าไม่มีเติมเงินในบัตรเลยครับ เริ่มต้น 100 บาท ทวีครั้งละ 100 บาท และเติมสูงสุด 2,000 บาทครับ
  • บัตรพร้อมใช้งานครับ

คำแนะนำ

  • สอบถามวันและเวลาแจกบัตรจริงๆนะครับ บางวัน บางสถานี จะแจกบัตรบุคคลทั่วไปก่อน บัตรเด็ก และบัตรผู้สูงอายุยังไม่มีครับ
  • ได้บัตรมาแล้ว แนะนำให้เติมเงินเปิดใช้งานเลยครับ เพราะ ต้องเปิดบัตรที่สถานีรถไฟฟ้า MRT สายสีม่วงเท่านั้นครับ

[EAA] อะไรหละ ที่เรียกว่า Enterprise Application

Ref https://pixabay.com/th/การวิเคราะห์-ข้อมูล-นวัตกรรม-3088958/

เห็นหลายคนมักจะบอกว่าระบบที่ตัวเองดูแล หรือ ที่เห็นมัน มันมีความ Enterprise Application เรามาดูกันว่าจริงๆแล้ว ถ้าเอาตามนิยามของคุณ Martin Fowler อะไรถึงเรียกว่าเป็น Enterprise Application ครับ

  • Involve persistent data
  • A lot of data
  • Access data concurrently
  • A lot of UI screens
  • Integrate with other enterprise applications
  • Complex business rules and keep changing

ต่อมา เรามาดูกันครับ ว่าแต่ละเงื่อนไขที่บ่งบอกว่า ระบบนี้เป็น Enterprise Application ครับ

  • Involve persistent data – ข้อมูลต้องถูกจัดเก็บ ไม่ว่าจะเป็น Database หรือ File
  • A lot of data – อันนี้ แน่นอนครับ ถ้าในยุคนี้ หมายถึง Big Data ครับ ที่ระบบต้องจัดการกับข้อมูลขนาดใหญ่ ซึ่งมีหลาย V โดยผมแบ่งตามปีที่ผมได้ยินคำแหล่งนี้นะครับ
    • 2011 – 3V
      • Volume – ปริมาณของข้อมูล
      • Velocity – ชนิดของข้อมูลที่มากมาย หลากหลาย
      • Variety – ความเร็วที่เกิดขึ้นของข้อมูล
    • 2014-2015 -5V โดยส่วนที่เพิ่มจาก 3V มี ดังนี้
      • Variability – ความไม่เข้ากัน / ความสอดคล้องของข้อมูล เช่น คำนำหน้า นาย ชื่อ สมชาย แต่ดันมีข้อมูลการฝากครรภ์ !!! (อันนี้ผมเคยเจอจริงๆนะ)
      • Veracity – ข้อมูลที่มี มีคุณภาพหรือป่าว จากประสบการณ์ส่วนตัว งานที่ทำเกี่ยวกับ Data Cost ที่เสียไปมากที่สุดน่าจะเกือบ 90% เลยนะ คือ ทำให้ข้อมูลดิบ มันมีคุณภาพ พร้อมเอาไปใช้สำหรับงานด้าน Data Science ต่อไป
    • และ 2018 – มาอีกหลายๆ V เลย
      • Visualization – อันนี้เดี๋ยวไปพูดในส่วน A lot of UI screens
      • Viscosity – ความเร็วในการเข้าถึงข้อมูล จากแหล่งข้อมูลหลากหลายแหล่ง
      • Virality – เนื่องจากข้อมูลมันเยอะ แม้ว่าเครื่องคอมพิวเตอร์ดีมากๆ แต่ Network ไม่ดี มันทำให้การประมวลผลช้าได้ จึงได้มีเรื่อง Virality เข้ามาวัด ว่ามันเกิดคอขวดไหม
      • Value – ไอ้ที่เก็บอยู่ เก็บขยะ หรือเก็บเพชรเม็ดงาม !!!
  • Access data concurrently – ข้อมูลถูกใช้งานร่วมกัน หลายฝ่าย หลายคน ใช้กันเยอะมากๆ เขน่ ระบบ Core Banking ที่ทุกฝ่ายต้องเข้ามายุ่งกับข้อมูล
  • A lot of UI screens – มีหน้าจอเยอะ เยอะแบบเหมาะสมนะครับ ถ้าเยอะแบบที่ไม่จำเป็น อันนี้ไม่นับนะ
    • ถ้าเป็นเรื่องของ Big Data สิ่งที่ต้องมาเกี่ยวข้องด้วย คือ Visualization
  • Integrate with other enterprise applications – มีการเชื่อมโยงกับระบบ enterprise  อื่นๆ ยกตัวอย่างเช่น ระบบ Core Banking เชื่อมกับระบบจัดการสินเชื่อ เป็นต้น
  • Complex business rules and keep changing
    • business rules – กฏของธุรกิจ เอาง่ายๆ เช่น
      • นิสิตไม่สามารถลงทะเบียนได้มากที่สุด 22 หน่วยกิต ต่อ 1 ภาคการเรียน
      • ผู้ลงทุนไม่สามารถส่งคำสั่งซื้อขายกองทุน ที่ระดับคงความเสี่ยงเกี่ยวกว่าที่ได้ทำแบบสำรวจไว้ เป็นต้น
    • keep changing – ฺbusiness rules มีการเปลี่ยนแปลงไวมาก ** ตรงนี้ั อาจจะเป็นที่ทีม Develop มักเจอกัน Requirement Change !!!! **

Reference

[BPMN] ลองคิดตัวอย่างของ Completion Condition กัน

พอดีช่วงนี้ได้ลองเล่น BPMN แล้ว ปัญหาที่สำคัญของ Spec ตัว BPMN เอง คือ ตัวอย่างน้อย และไม่ครอบคลุมตามคุณสมบัติที่ได้ระบุไว้ใน Spec ครับ อย่างที่ผมโคตรงง ตอนนี้ คือ Attribute ของ Multi-Instance ของ Task ครับ ลองมาคิดตัวอย่างกันดีกว่าครับ

  • Task “Monitor Shipment” – Completion Condition คือ
    • สินค้าถึงจุดหมายปลายทางแล้ว
  • Task “Approval TOR” – Completion Condition คือ
    • คณะกรรมการ 2 ใน 3 ของทั้งหมดอนุมติ
  • Task “Process Transaction” – Completion Condition คือ
    • ยอดรวมของทุกสินค้า และบริการทั้งหมดต้องเกินจาก Budget ที่ตั้งไว้ หรือ ทุก Transaction สามารถประมวลผลได้ โดยไม่มีปัญหา
    • ** ถ้าเกินจาก Budget เข้า Flow การตัดสินใจของ User
    • ** ถ้าไม่เกินส่งต่อให้ Supplier จัดการ

เดี๋ยวคิดออกอีกแล้วมาเขียนเพิ่มครับ

[DB2] เมื่อ Path ก็มี แต่ทำไมยัง สร้าง Database ไม่ได้ มีแต่ SQL1052N The database path path does not exist.

วันนี้ผมได้ไปช่วยน้องในทีมสำหรับอีก Project แต่ก็เจอปัญหามากมายเลยครับ ทั้งเรื่องขึ้น Database ที่ติดปัญหาขนาดของ Table ที่ Field เยอะมากจน Pagesize 4K ไม่พอ ทำให้ต้อง DROP DB แล้ว Import Data เข้าไปใหม่ ซึ่งปรากฏว่า Drive C ที่มันเหลือน้อยมากครับ 25 GB แต่ Database ที่ต้องการเอาเข้าไป มันตั้ง 80 GB ทางเลือกเดียวตอนนี้ คือ ต้องไปสร้าง Database ที่ Drive อื่นครับ ซึ่ง Drive ที่ว่าง คือ Drive E: มีที่ 150 GB เริ่มต้นลุยคำสั่งเลยครับ

อ้าวววววววว

SQL1052N: The database path path does not exist.

เกิดอะไรขึ้น !!!!!

ทางแก้ไขนะครับ

  • ตรวจสอบ Path ที่ต้องการก่อน อันนี้ Path จริงครับ สำหรับเคสนี้  E:\DBUAT  มีจริงนะครับ
  • สำหรับ Windows นะครับ ให้ตรวจสอบ Registry DB2_CREATE_DB_ON_PATH ว่ามีอยู่ หรือป่าวครับ ด้วยคำสั่ง  db2set -all  ผ่านทาง Command line ครับ
    • ถ้าไม่มี Set เพิ่มเลยครับ ด้วยคำสั่ง  db2set DB2_CREATE_DB_ON_PATH = yes  แต่ต้องเป็น User ของเครื่องต้องอยู่ในกลุ่ม db2Admin นะครับ
    • จากนั้น Restart เครื่องครับ

Reference

[Security] กลบทการเข้ารหัสแบบไทย ที่แฝงความนัย แต่คงด้วยความไพเราะสละสวย

พอดีได้ดู หนึ่งดาวฟ้าเดียว ย้อนหลังครับ ตอนนี้ละครน่าจะฉายจบแล้วมั่ง ตอนแรกผมก็กลบท น่าจะเหมือนกับพวกกฏเกณฑ์ของการประพันธ์โครงฉันท์ กาพย์กลอน ให้มีความไฟเราะครับ แต่ตอนนี้ กลบท มันไม่ใช่แฝงความไพเราะ ลองดูได้  ํYoutube ตอนนี้

มาดูความแรกจากในละครกัน

  • เข้ารหัส
  • ถอดรหัส

กลบท “ไทหลง” ที่มีกฏเกณฑ์ของการแทนตัวอักษรโดยขยับไปที่ตัวถัดไปอีก 3 ตัวอย่าง เช่น

  • ก == ง
  • ข == ค
  • ฃ == ฅ
  • ฆ == ฌ เป็นต้น

มันคุ้นๆสำหรับเด็กสายคอมอย่างๆเรา ผมเคยได้ยินตอนเรียนปี 1 วิชา CP121 เรื่องของ

  • Caesar Cipher ที่เป็นอัลกอริทึมในการเข้ารหัสยุคแรกๆ

    ภาพจาก https://flylib.com/books/en/1.2.1.133/1/
  • จนถึงแบบที่น่าจะคุ้นเคยกันดีอย่าง ROT13

    ภาพจาก https://en.wikipedia.org/wiki/ROT13

โอ้โห กลบท มันเป็น Idea การเข้ารหัสที่แฝงไปด้วยความไฟเราะครับ กลบท “ไทหลง” ถ้าเอาตัวอักษรมาทำ Look Up Table ก็จะได้ ดังนี้

ก == ง ข == ค ฃ == ฅ ฆ == ฌ
จ == ย ฉ == ช ซ == ฒ ญ == ฑ
ฏ == ฐ ฎ == ณ ด == ถ ต == น
ท == บ ธ == ฝ ป == ม ผ == พ
ฟ == ฮ ภ == ฬ ร == ล ว == ส, ศ, ษ
ห == อ

มาดูตัวอย่างกันครับ

  • การเข้ารหัส
  • ถอดรหัส

สำหรับรายละเอียดเกี่ยวกับกลบท สามารถดูเพิ่มเติมได้จาก ถอดรหัส “กลบท” จาก กาหลมหรทึก สู่ >> หนึ่งด้าวฟ้าเดียว ที่เว็บ Pantip.com ครับ