ข้ามไปที่เนื้อหาหลัก

บทความ

layout คีย์บอร์ดภาษาไทยกับ Phosh

เมื่อปีก่อน หลังผมได้ PinePhone มา ผมพบว่า postmarketos ไม่มี layout คีย์บอร์ดภาษาไทย ทำให้ไม่สามารถพิมพ์ภาษาไทยได้เลย ผมเลยไปถาม postmarketOS สรุปผมเลยต้องไปไล่ดู จนส่ง pull request layout คีย์บอร์ดภาษาไทยไปได้ทาง https://source.puri.sm/Librem5/squeekboard/-/merge_requests/402/ จนได้เข้ารวมกับต้นน้ำ เย้ ผ่านมา 1 ปี ผมไม่ได้ใช้ postmarketOS แล้ว เปลี่ยนไปใช้ mobian แทน แต่ก็ยังได้ใช้ layout คีย์บอร์ดภาษาไทยของตัวเองที่ได้ส่งไปให้ต้นน้ำ :D เอาตามตรงนะ ตอนสร้างไม่ได้ทดสอบอะไรเลย เพราะ sim ที่เขามีให้มันใช้ไม่ได้ เลยมั่วส่งไป กับอ่านโค้ด layout คีย์บอร์ดภาษาอื่น ๆ ที่มีอยู่แล้ว ประกอบ

เรื่องเล่าโปรเจค 1: จะรันโค้ดโปรแกรมยังไง

หลังจากที่เสนอหัวข้อกับอาจารย์ที่ปรึกษาผ่าน แต่ก็ยังมีปัญหา คือ จะรันโค้ดโปรแกรมที่รับมาจาก user แล้วตรวจกับเก็บผลลัพธ์ยังไง ก่อนหน้านี้ ผมบังเอิญไปเจอไลบรารีตัวหนึ่งใน python ที่สามารถยิงคำสั่งโค้ดเข้าไปรันใน docker โดยจำกัดเวลา แรม CPU เครือข่าย ในการทำงานได้ แถมส่งออกมาเป็นผลลัพธ์ได้ ผมจึงเขียนระบบตรวจสอบโค้ดในภาษา python แต่ปัญหายังไม่จบลงแค่นั้น ส่วนหน้าบ้านผมกับเพื่อน ตกลงกันว่าจะใช้ PHP ด้วย laravel ในการเขียนส่วนหน้าบ้านทั้งหมด ต่างภาษากัน จึงต้องเขียน API ให้หน้าบ้านยิงคำสั่งตรวจกับข้อมูลไปหาระบบตรวจที่เป็น python ใช้รูปแบบข้อมูล json ในการยิงและส่ง ปัญหายังไม่จบ คือ จะเก็บข้อมูลยังไง ผมเลยตัดจบปัญหา โดยให้ทั้งระบบหน้าบ้านและระบบตรวจสอบโค้ดใช้ฐานข้อมูลตัวเดียวกันเลย เวลาหน้าบ้านยิงไป จะได้ยิงแค่ไอดีและข้อมูลที่จำเป็นเท่านั้น แล้วผลลัพธ์ลงฐานข้อมูลเลย  

ความหลงใหลจากความสนใจ

จะว่าไปความหลงใหลหลาย ๆ เรื่องมันมาจากบล็อกที่ผมเขียน python3.wannaphong.com มันเป็นบล็อกเดียว ที่ผมเคยคิดจะแยกโดเมนให้มัน แต่ไม่ได้แยกโดเมนสักที ด้วยเหตุผล คิดชื่อมันไม่ออก ความสนใจด้าน NLP AI อะไรต่าง ๆ ก็เริ่มมาจากการเขียนบล็อกนี้ ซึ่งบล็อกนั้นเกิดจากความสนใจในเรื่องต่าง ๆ ณ เวลานั้น ๆ ไปลองเล่น แล้วเขียนบทความ หรือเจออะไรที่น่าสนใจก็เอามาเขียน จึงอาจไม่ต้องแปลกใจ ถ้าไปอ่านบทความเก่า ๆ เจอพวกคำนวณระยะห่างระหว่างดวงดาวในอวกาศ คำนวณแรงโน้มถ่วงของโลก หาข้อมูลธาตุในตารางธาตุ อะไรประมาณนี้ ซึ่งย้อนกลับไปตอนนั้นมันสนุกมาก ๆ แม้จะผ่านมากว่า 7 ปีแล้ว พอไปอ่านบทความเก่า ๆ ก็ยังคงนึกความสนุกตอนนั้นออก การเขียนบทความ chatbot ของผมตอนนั้น กลายมาเป็นจุดเริ่มต้นของโปรเจคที่ยาวนาน (มาก) อีกโปรเจคหนึ่ง คือ PyThaiNLP ซึ่งเกิดจากความสนใจตอนนั้นเหมือนกัน ได้รับรู้ปัญหาหลายอย่าง และลองทำดู กลับกันมีหลายบทความที่ว่าจะต่อ แต่ดองทิ้งไว้ (จำนวนมาก) ซึ่งด้วยเหตุผลเพราะความสนใจเปลี่ยน หรือ ไปต่อไม่ถูก หรือ ไม่มีเวลา อย่าไปถืออะไรกับมันมากเท่าไร เพราะตอนนั้นเป็นแค่เด็กม.ปลายที่เขียนไปตามสนุก ความเป็นวิชาการอา

ย้ายระบบ IT ของตัวเอง วันที่ 1 Password Manager กับ 2FA

วันที่ 1 ย้ายระบบ IT ตัวเอง ส่วน Password Manager กับ 2FA จากเดิมที่ใช้ Firefox Password Manager ที่ซิงค์ระหว่างเครื่อง ทั้งบนคอมและทุกอุปกรณ์ และ Google Authenticator ไปใช้ตัวอื่น

เบื้องหลัง Enhanced Thai Character Cluster (ETCC) ใน PyThaiNLP

ETCC เป็น subword ของภาษาไทยตัวหนึ่งที่อยู่มากับ PyThaiNLP มานานตั้งแต่ปี 2017 และเพิ่งสมบูรณ์ใกล้เคียง paper จริง ๆ เมื่อต้นปีที่ผ่านมา . ช่วงแรก ผมพยายามเขียนตามกฎที่ผมไปเจอที่บทความวิจัยอ้างอิงส่วนหนึ่งมาอีกที ด้วยตอนนั้นผมยังหากฎที่สมบูรณ์จริง ๆ ไม่ได้ เลยโค้ดเอาไว้แค่นั้น จนเวลาผ่านมา . ปี 2019 คุณแคน เห็นว่า ETCC ใน PyThaiNLP ยังไม่สมบูรณ์ เลยส่ง pull requests พร้อมระบุชื่อและที่มา paper ของ ETCC นั้นมาด้วย ต่อมา ผมเลยตามหา paper นั้นบนอินเทอร์เน็ตก็ไม่เจอ แต่ผมเจอว่า paper ที่ต้องการอยู่ที่ KMITL ผมเลยไปติดต่อบรรณารักษ์ห้องสมุดวิทยาเขตหนองคาย มข. ให้ติดต่อขอ paper นี้ (มีการค้น ETCC ในอินเทอร์เน็ต เจอของ PyThaiNLP อันดับแรก แถมคนเขียนเป็นผมด้วย - -) จนในที่สุด ทางห้องสมุดมข. ติดต่อมา เขาส่งอีเมลไฟล์สำเนา paper งานวิจัย ETCC นั้นมา ผมจึงได้ทำ ETCC ต่อ จนผลลัพธ์ออกมาใกล้เคียงกับ paper แล้ว push เข้า PyThaiNLP ช่วงก.พ.ต้นปีที่ผ่านมา

Open Source แสนดี: ช่วยเหลือผู้สูงอายุที่บ้านด้วยการสั่งการด้วยเสียงและ IoT

หลังจากได้รับเงินสนับสนุน NSC รอบ 2 เราก็ได้โอกาส Open Source โค้ดกับเอกสารที่ทำทั้งหมดในการแข่งขัน NSC ที่ผ่านมา ในโครงการ "แสนดี: ช่วยเหลือผู้สูงอายุที่บ้านด้วยการสั่งการด้วยเสียงและ IoT" เข้าไปดูโค้ดกันได้ที่ แสนดี: ช่วยเหลือผู้สูงอายุที่บ้านด้วยการสั่งการด้วยเสียงและ IoT

GitHub Actions ครอง PyThaiNLP (เกือบทั้งหมด)

วันนี้เป็นวันเสาร์ธรรมดาที่ไม่ธรรมดา คือ อยู่ดี ๆ ตัว Travis CI ก็พังแบบไร้สาเหตุ ... ซึ่งเป็นตัวสำหรับทดสอบการทำงานโค้ด PyThaiNLP และ เชื่อมกับ coveralls (เราใช้ coveralls.io) เป็นตัวรับประกันว่าโค้ดทดสอบสามารถทดสอบโค้ด PyThaiNLP ไปได้ทั้งหมดก็ % ผมเลยลองเปลี่ยน coveralls จากเดิมที่รันส่งผลจาก Travis CI มาเป็น GitHub actions แทน ซึ่งง่ายกว่าที่คิด แถมรู้ผลเร็วกว่าเดิม ก่อนหน้านี้ ระบบออกรุ่นใหม่ (เราใช้อัตโนมัติ) แค่กด releases ของ GitHub ตัว Travis CI จะ build และส่ง PyThaiNLP รุ่นใหม่เข้า PyPI ให้เองอัตโนมัติ ไม่ต้องเสียเวลาพิมพ์ cmd เอง ตรงนี้เราก็ย้ายมา GitHub Actions แล้วปัจจุบัน Test จากเดิม Travis CI ปัจจุบันก็กลายเป็น GitHub Actions โดยตอนนี้เหลือแค่ appveyor สำหรับ Test บน windows เฉพาะ ซึ่งทำงานได้ดีและเสถียรกว่า Travis CI สรุป ตอนนี้ GitHub Actions ครอง PyThaiNLP เกือบทั้งหมดแล้ว และ ปิดการทำงาน Travis CI ของ PyThaiNLP (ตั้งแต่ปี 2016 (มั้ยนะ) - 2020) เรียบร้อย ป.ล.ตอนที่ Travis CI พัง ตัว GitHub Actions กับ appveyor ที่รัน test ก็ทำงานปกติ ...