null

Anuchit Chalothorn

Human Knowledge Belongs to The World

สร้าง AI Agent ด้วย Function Calling ของ Gemini


18 Apr 2025 - 1 min read

ผมเพิ่งได้อ่าน Blog Model Context Protocol (MCP) x Gemini อธิบายการทำงาน พร้อมตัวอย่างโค้ดแบบ Deep-Dive (แนะนำให้อ่าน) พบว่าเราสามารถเชื่อมต่อกับบริการภายนอกกับ Gemini ได้ง่ายๆ ผ่าน function call

อ่านต่อ...

ประสบการณ์เขียนนิยาย


14 Apr 2025 - 1 min read

มา Blog ไว้นิดนึงเรื่องเขียนนิยาย ผมได้ลองเขียนนิยายจากการคิดโครงเรื่องแบบเร็วๆ วางพล็อตเป็นรายตอน เพราะแพลตฟอร์มที่ใช้เป็น readAwrite ก็เลยวางโครงเรื่องเป็นรายตอนไป แต่พอถึงจุดนึงที่เริ่มตัน คิดไม่ออก ก็รู้สีกไม่อยากเขียนต่อละ จนแล้วจนรอดได้ลองวิธีใหม่ๆ เช่น ใช้ AI หลายๆ ตัวมาช่วยเรียบเรียง คิดพล็อต แต่ส่วนใหญ่ก็ไม่ใช่แนวทางที่อยากให้เป็น ความรู้สึกเหมือนมีเรื่องราวในหัวแบบ bullets แต่เขียนเนื้อหาออกมาไม่ได้ สุดท้ายเลยเขียนพล็อตแล้วใช้ AI ขยายเนื้อหา เติมบทสนทนา บรรยายภาพรวมแทน เพราะ AI ก็มีข้อจำกัดหลายๆ เรื่อง

อ่านต่อ...

สิ่งที่ได้เรียนรู้การใช้ AI ในสัปดาห์ที่ผ่านมา


14 Apr 2025 - 2 min read

สัปดาห์ที่ผ่านมา ได้เรียนรู้การใช้ AI หลายเรื่อง เป็นเรื่องที่น่าสนใจ เลยจดไว้สักหน่อย ผมไม่ค่อยสนใจเรื่องเอา AI มาสร้างภาพหรือเนื้อหาอะไรเท่าไร มีใช้ในแอปที่พัฒนาเองอย่าง snThumbnail เช่น คิดหัวเรื่องสำหรับ Video ใน Youtube คิด Keywords สร้างภาพจาก prompt แต่ไม่ได้ใช้ทุกอย่าง ยังเชื่อมั่นว่าความคิดสร้างสรรค์ อารมณ์ และ ความรู้สึกยังเป็นของมนุษย์ ได้ทดลองเอางานเขียนต้นฉบับเอามาให้ AI เรียบเรียงใหม่ พบว่า AI ยังหลอน ทั้งๆ ที่ให้ข้อมูลบริบท (context) ไปแล้ว การควบคุมผลลัพท์ด้วยการกำหนดบริบท (context) มันไม่เพียงพอ เพราะโมเดลยังสุ่มเติมคำตาม pattern ที่มันได้เรียนรู้มา ซึ่งไม่ได้ตรงกับเส้นเรื่องที่ควรจะเป็น ได้พิสูจน์ได้ว่างานที่เป็นความคิดสร้างสรรค์ ศิลปะการถ่ายทอดจิตวิญญานผ่านงานเขียนที่มีความหมายแผง โดยการอ่านระหว่างบรรทัด AI ทำไม่ได้ และที่แย่กว่านั้นคือมันตัดออกไปทั้งหมดเพราะคิดว่าสิ่งเหล่านี้ไม่มีความหมายและไม่อยู่ใน pattern ที่ได้ฝึกมา ทำให้สิ่งที่ศิลปินต้องการถ่ายทอดสูญหายไปด้วย อันนี้รับไม่ได้

อ่านต่อ...

แนวทางในการใช้เครื่องมือ AI เพื่อเขียนโค้ด


13 Mar 2025 - 2 min read

ยุคใหม่ของนักพัฒนามาถึงแล้ว — ยุคที่ AI อย่าง GitHub Copilot, ChatGPT หรือ Claude เข้ามาเปลี่ยนวิธีที่เราเขียนโปรแกรม ไม่ใช่เพื่อแทนที่คุณ แต่เพื่อช่วยคุณ “เข้าโหมดโฟลว์” ได้ไวขึ้น อยู่กับโค้ดได้นานขึ้น และสนุกกับมันได้มากขึ้น นี่คือแนวทางที่เราเรียกว่า "Vibe Coding Architecture" — เฟรมเวิร์กง่ายๆ ที่จะช่วยให้คุณสร้างซอฟต์แวร์ได้อย่างลื่นไหล พร้อมกับ AI ที่เป็นเหมือนเพื่อนร่วมทีมคู่ใจ

อ่านต่อ...

ใช้ Material U ใน Flutter


13 Mar 2025 - 2 min read

Material U เป็นแนวคิดการออกแบบใหม่จาก Google ที่เปิดตัวพร้อมกับ Android 12 ซึ่งมุ่งเน้นการปรับแต่ง UI ตามสีสันและธีมของผู้ใช้โดยอัตโนมัติ Flutter ได้รองรับ Material You (Material 3) ผ่าน Material Design 3 เพื่อให้แอปของคุณสามารถใช้ประโยชน์จากฟีเจอร์การปรับแต่งแบบไดนามิกได้

อ่านต่อ...

สร้าง Dark Mode ง่ายๆ ใน Flutter


13 Mar 2025 - 2 min read

Dark Mode เป็นคุณสมบัติที่ช่วยให้ผู้ใช้สามารถเปลี่ยนอินเทอร์เฟซของแอปเป็นโทนสีเข้ม ซึ่งช่วยลดการใช้พลังงานบนอุปกรณ์ที่ใช้จอ OLED และช่วยลดความเมื่อยล้าของดวงตา โดยใน Flutter เราสามารถเพิ่ม Dark Mode ให้กับแอปได้อย่างง่ายดาย

อ่านต่อ...

ลดโค้ดซ้ำใน Flutter ด้วย Widgets


11 Mar 2025 - 2 min read

การเขียนแอปพลิเคชันใน Flutter สามารถทำให้เกิดการเขียนโค้ดซ้ำๆ ในบางสถานการณ์ได้ เช่น การสร้าง UI ที่มีลักษณะคล้ายกันหลายครั้ง หรือการทำงานกับข้อมูลที่มีรูปแบบเดียวกันในหลายๆ ส่วนของแอป หากเรามีวิธีการที่ดีในการจัดการกับการซ้ำซ้อนนี้ จะช่วยให้โค้ดดูสะอาดและสามารถบำรุงรักษาได้ง่ายขึ้น ในบทความนี้เราจะมาดู การสร้าง Widget ช่วยลดโค้ดซ้ำๆ และทำให้โค้ดของเราเป็นระเบียบมากขึ้น

อ่านต่อ...

Refactoring Code ให้สะอาดใน Flutter


09 Mar 2025 - 2 min read

Refactoring เป็นกระบวนการปรับปรุงโค้ดให้สะอาดขึ้นโดยไม่เปลี่ยนพฤติกรรมของโปรแกรม ซึ่งช่วยให้โค้ดอ่านง่าย ดูแลรักษาง่าย และลดความซับซ้อน ในบทความนี้เราจะมาดูกันว่าเราสามารถรีแฟกเตอร์โค้ดใน Flutter ได้อย่างไร

อ่านต่อ...

เทคนิค Deploy แอปให้เร็วขึ้น


09 Mar 2025 - 2 min read

การ Deploy แอปพลิเคชันเป็นขั้นตอนสำคัญที่ส่งผลโดยตรงต่อประสบการณ์ของผู้ใช้และความสามารถของทีมพัฒนา ยิ่ง Deploy ได้เร็วขึ้น ทีมก็สามารถส่งมอบฟีเจอร์ใหม่และแก้ไขข้อผิดพลาดได้อย่างมีประสิทธิภาพ บทความนี้จะนำเสนอเทคนิคที่จะช่วยให้การ Deploy แอปเร็วขึ้น ทั้งสำหรับแอปมือถือ (Flutter) และเว็บแอปพลิเคชัน

อ่านต่อ...

Reskill / Upskill สำหรับนักพัฒนา ที่จะย้ายมาเขียน Flutter


04 Mar 2025 - 2 min read

Flutter เป็นเฟรมเวิร์กสำหรับการพัฒนาแอปพลิเคชันที่ Google พัฒนาและดูแล โดยสามารถใช้เขียนแอปได้ทั้ง iOS, Android, Web และ Desktop ด้วยโค้ดชุดเดียวกัน จุดเด่นของ Flutter คือความเร็วในการพัฒนา UI ที่ยืดหยุ่น และประสิทธิภาพสูงเนื่องจากใช้เอนจินเรนเดอร์ของตัวเอง หากคุณเป็นนักพัฒนาที่ต้องการปรับตัว (Reskill) หรือพัฒนาทักษะเพิ่มเติม (Upskill) ในการสร้างแอปพลิเคชัน การเรียนรู้ Flutter อาจเป็นทางเลือกที่เหมาะสมสำหรับคุณ

อ่านต่อ...

Handle Error ใน Flutter อย่างมือโปร


04 Mar 2025 - 1 min read

การจัดการข้อผิดพลาด (Error Handling) เป็นสิ่งสำคัญสำหรับการพัฒนาแอปพลิเคชันที่เสถียรและใช้งานได้ดี ใน Flutter เราสามารถจัดการข้อผิดพลาดได้หลายรูปแบบ ไม่ว่าจะเป็นการจับข้อผิดพลาดที่เกิดจากโค้ด การจัดการ Exception หรือการแสดงผลข้อผิดพลาดให้กับผู้ใช้ ในบทความนี้ เราจะมาดูกลยุทธ์และแนวทางปฏิบัติที่ดีที่สุดในการจัดการข้อผิดพลาดใน Flutter อย่างมืออาชีพ

อ่านต่อ...

Flutter Performance Boost - ปรับแต่งแอปให้เร็ว แรง ลื่น


03 Mar 2025 - 2 min read

เมื่อแอป Flutter เริ่มช้า หน่วง หรือกระตุก ปัญหาส่วนใหญ่มาจากการบริหารจัดการ Widget และ State ที่ไม่มีประสิทธิภาพ มาดู 5 เทคนิคที่ช่วยให้แอปของคุณทำงานได้ลื่นไหลขึ้น

อ่านต่อ...

Unit Test สำคัญแค่ไหน?


03 Mar 2025 - 1 min read

Unit Test เป็นหัวใจสำคัญของการพัฒนาซอฟต์แวร์ที่มีคุณภาพ โดยเฉพาะใน Flutter ซึ่งเป็นเฟรมเวิร์กยอดนิยมสำหรับการพัฒนาแอปพลิเคชันแบบ Cross-platform การเขียน Unit Test ช่วยให้มั่นใจว่าโค้ดทำงานได้อย่างถูกต้อง ลดโอกาสเกิดบั๊ก และทำให้การพัฒนาแอปมีความยืดหยุ่นมากขึ้น

อ่านต่อ...

เขียน API Call ให้เร็วขึ้นใน Flutter


01 Mar 2025 - 2 min read

การเรียก API เป็นหนึ่งในกระบวนการที่ส่งผลต่อประสิทธิภาพของแอป Flutter หากทำได้ไม่ดี อาจทำให้แอปโหลดช้าและประสบการณ์ใช้งานแย่ลง มาดูวิธีปรับปรุงให้เร็วขึ้นกัน!

อ่านต่อ...

สายงาน Flutter Developer มีอะไรบ้าง?


01 Mar 2025 - 2 min read

Flutter เป็นเฟรมเวิร์กสำหรับการพัฒนาแอปพลิเคชันที่ได้รับความนิยมอย่างมาก โดยเฉพาะในสายงาน Mobile Development แต่จริง ๆ แล้วการเป็น Flutter Developer ไม่ได้จำกัดอยู่แค่การพัฒนาแอปบนมือถือเท่านั้น แต่ยังสามารถต่อยอดไปสู่การพัฒนาแอปพลิเคชันบนแพลตฟอร์มอื่น ๆ รวมถึงการทำงานในบทบาทที่หลากหลายมากขึ้นอีกด้วย ในบทความนี้ เราจะพามาทำความรู้จักกับสายงานต่าง ๆ ที่เกี่ยวข้องกับ Flutter Developer และแนวทางการเติบโตในอาชีพนี้

อ่านต่อ...

เทคนิค Flutter 5 แนวทางเขียนโค้ดให้สะอาดและมีประสิทธิภาพ


28 Feb 2025 - 2 min read

Flutter เป็นเฟรมเวิร์กที่ช่วยให้การพัฒนาแอปพลิเคชันรวดเร็วและมีประสิทธิภาพ อย่างไรก็ตาม การรักษาคุณภาพของโค้ดให้สะอาดและเข้าใจง่ายเป็นสิ่งสำคัญเพื่อให้การบำรุงรักษาและการขยายโค้ดในอนาคตทำได้ง่ายขึ้น บทความนี้จะกล่าวถึง 5 แนวทางหลัก ที่ช่วยให้โค้ด Flutter ของคุณเป็นระบบและอ่านง่ายขึ้น พร้อมทั้งเสริมรายละเอียดและตัวอย่างเพิ่มเติมเพื่อให้คุณสามารถนำไปประยุกต์ใช้ได้อย่างมีประสิทธิภาพ

อ่านต่อ...

สร้างหนังสือ E-Book จากไฟล์ Markdown (อีกแล้ว)


23 Feb 2025 - 1 min read

ผมเขียนหนังสือเล่มใหม่เอาไว้ทำเป็นหนังสือตัวอย่าง จะได้หาวิธีที่สะดวกในการสร้างไฟล์ EPUB, PDF ให้ออกมาได้สวยๆ สักที หลังจากทดลองกับหนังสือสูตรลัด Bloc ไปก็พบว่าผลลัพท์น่าพอใจ แต่ติดอยู่อย่างเดียวคือ EPUB reader ของแต่แพลทฟอร์มมันแสดงผลออกมาไม่เหมือนกันฟอนต์ที่แปะไปกับไฟล์ EPUB ถูกเอาออกไปด้วย บางแพลทฟอร์มก็เอาไฟล์ไปทำ sample โดยไป render EPUB ออกมาใหม่แถมเปลี่ยนสไตล์ของเอกสารไปด้วย ก็เลยทำให้เละกันไปใหญ่ จากปัญหาที่เจอก็เลยต้องทำไฟล์ให้ครบ แล้วไปลุ้นตอนที่แอปของแต่ละแพลทฟอร์ม render ออกมายังไง

อ่านต่อ...

สรุป commit ใน GitHub


22 Jan 2025 - 1 min read

เมื่อต้นเดือนที่ผ่านมามี developer หลายคนโพสภาพ GitHub Stats ก็เลยไปลองกดเล่นดูบ้าง ได้ผลลัพท์ประมาณนี้ กดไปทำภาพสวยๆ ที่ postspark - https://postspark.app/github-contributions

อ่านต่อ...

จัดการไฟล์ PDF ด้วย pdfcpu


20 Jan 2025 - 1 min read

เมื่อโพสที่แล้วเล่าเรื่องสร้าง ebook จากไฟล์ Makrdown กันไปแล้ว แต่ยังไม่ค่อยสมบูรณ์เท่าไร เนื่องจากยังขาดเลขหน้าและหน้าสารบัญในไฟล์ PDF ถ้าใช้ Calibre สร้างสารบัญให้มันจะไปกองอยู่ท้ายเอกสาร และถ้าให้ Calibre ใส่เลขหน้าให้มันก็จะใส่เลขหน้าไปจนถึงหน้าสารบัญ ก็เลยต้องทำ post process เอง ซึ่งถ้าใช้ Latex ก็ไม่น่าจะยากอะไรเพราะ pandoc สามารถอ่าน template Latex และแปลงไฟล์ออกมาได้ แต่เนื่องจากเราหนีจาก Latex ก็เลยต้องทำ post process แทน วันนี้มาแนะนำ pdfcpu เป็นเครื่องมือเอาไว้ใช้จัดการไฟล์ pdf เขียนด้วยภาษา Go ทำงานได้รวดเร็วมาก มีฟีเจอร์หลายตัวที่น่าสนใจ เช่น สร้างไฟล์, รวมไฟล์, แยกไฟล์, ใส่ stamp ลงเอกสาร ฯลฯ ลองไปดู document กันได้

อ่านต่อ...

ลดแบบไม่ลด


16 Jan 2025 - 1 min read

ลดราคาแบบไม่ลดราคา อยากทำแบบนี้เป็นบ้าง ตามกฏคือ หนังสือที่วางขายภายใน 30 วันก่อนเริ่มแคมเปญ ไม่สามารถนำมาเข้าร่วมแคมเปญได้ หนังสือที่มีการแก้ไขราคาภายใน 30 วันก่อนเริ่มแคมเปญ ไม่สามารถนำมาเข้าร่วมแคมเปญได้ หนังสือที่สมัครเข้าร่วมแคมเปญจะใช้เวลา 1-2 วันทำการในการอนุมัติหนังสือ ถ้าจะทำแบบนี้ต้องมีหนังสือเรื่องเดียวกัน 2 เล่ม ตั้งราคาสูงเอาไว้แล้วเอามาลดราคาช่วงแคมเปญใช่มะ

อ่านต่อ...

จะเขียน Jaspr ต่อกับ Firebase database ยังไง


10 Jan 2025 - 1 min read

ลูกเพจถามคำถามนึงน่าสนใจเลยเอามา blog ไว้สักหน่อย คำถามคิอจะเขียน Jaspr ต่อกับ Firebase database ยังไง ผมคิดว่าคำถามนี้น่าสนใจเพราะหลายคนอาจเข้าใจว่า เขียน Dart แล้วจะเรียกใช้แพคเกจ FlutterFire ใน pub.dev ได้เลย แต่อย่าลืมว่าแพคเกจใน pub.dev มีแพคเกจสำหรับ Dart SDK และ Flutter SDK

อ่านต่อ...

หนังสือที่จะออกในปี 2025


07 Jan 2025 - 1 min read

วางแผนออกหนังสือไว้ตั้งแต่ปีที่แล้วทั้งอัพเดทหนังสือเล่มเก่าและเขียนเล่มใหม่ เปิดต้นปีมาก็ออกหนังสือ สูตรลัด Bloc ไป 1 เล่มแล้ว ที่เหลือที่มีคิวไว้อีก 7 เล่ม ได้แก่ Hasura DDN, AI GenKit, ServerPod 3, Appwrite 2, Jaspr UI Component, GetX 5, FlutterPi ปีนี้เขียนแค่ 8 เล่มก็พอแล้ว ซื้อหนังสือได้ที่ - http://bit.ly/3UJlIYs

อ่านต่อ...

OpenTyphoon Dart Package


04 Jan 2025 - 1 min read

ผมได้ทดลองใช้งาน LLM ภาษาไทยตัวนึง คือ OpenTyphoon จากที่ได้ทดลองพบว่าตอบคำถามได้เร็วมากและเข้าใจภาษาไทยได้เป็นอย่างดี ถามภาษาไทยตอบภาษาไทย ไม่มีหลุดเหมือน LLM ตัวอื่นๆ รู้สึกประทับใจมาก ก็เลยทำ Dart package ไว้ใช้ร่วมกับโปรเจคเก่าๆ เช่น ytThumbnail, snThumbnail และออกแบบวิธีการเรียกใช้เหมือนกับ Gemini แต่ยังขาด 2 ฟีเจอร์ Chat, Stream message คงทะยอยทำไปเรื่อยๆ กดไปลองเล่นกันได้ที่ https://github.com/anoochit/opentyphoon และ https://pub.dev/packages/opentyphoon

อ่านต่อ...

แปลง Mermaid diagrame เป็นไฟล์ภาพ


03 Jan 2025 - 1 min read

เมื่อปีที่แล้วทำ template สำหรับสร้าง E-Book จากไฟล์ Markdown เปลี่ยนเป็น EPUB และ PDF ไป แต่ขาดเรื่อง Diagrame ไปนิดนึงเลยมาเพิ่มให้ เขียน Mermaid diagrame ลงใน Markdown เหมือนเดิม แล้วใช้ Mermain Cli แปลง diagrame ในไฟล์ markdown ออกมาเป็นภาพ และสร้างไฟล์ markdown ที่แก้ไขเรียบร้อยแล้วออกมา และเอาไฟล์นี้ไปสร้างเป็น E-book ตามปกติ

อ่านต่อ...

มาทำ UI Component ให้ Jaspr กัน


31 Dec 2024 - 1 min read

จากที่เคยเล่าให้ฟังในโพสที่แล้วเรื่องไปทำ Jaspr UI Component มาเพิ่ม เนื่องจากออกแบบไม่ค่อยดีเลยทำให้การปรับแต่ง UI ทำได้ไม่ละเอียด ในเอกสารของ Jaspr แนะนำให้ส่งออก DomComponent อยากจะทำ Tag ใส่ stylesheet อะไรก็ใส่ไปได้เลย มีโปรเจคนึง (จำชื่อไม่ได้) ใช้ DomComponent แล้วทำเป็น Tag ที่ใช้งานประจำ เช่น H1, P, Img เป็นต้น ซึ่งก็น่าสนใจดี ถ้าเทียบกับ Flutter Widget มันก็คนละเรื่อง แต่การออกแบบจะคล้ายๆ กัน Widget ใน Flutter จะเป็นการส่งไปวาดบน Skia แต่ Jaspr Component ส่ง Tag ไปวาดใน Browser ก็ขึ้นอยู่กับการออกแบบ Library ให้เหมาะกับการเรียกใช้งานละ

อ่านต่อ...

แปลงไฟล์ backup Wordpress มาเป็น Markdown


30 Dec 2024 - 1 min read

หลังจากยกเลิกบริการ Hosting และ Backup Wordpress เอาไว้นานแล้วจนคิดว่าน่าจะเอามาทำเป็น static web ได้แล้วมั๊ย? เพราะตั้งใจว่าปีหน้าจะเริ่มกลับมาเขียน Blog ในเชิงเทคนิคบ้าง ก็เลยเริ่มจากเรื่องนี้เลยละกันเมื่อต้นปีหาเครื่องมือแปลงได้ละเป็น wordpress-export-to-markdown วิธีการใช้งานก็ง่ายมากๆ

อ่านต่อ...

สำรวจพฤติกรรมโปรแกรมเมอร์ในโซเชียล


28 Dec 2024 - 1 min read

สมัยก่อนผมมักจะคุยกับเพื่อนๆ เรื่องชุมชนออนไลน์แบบที่เป็น web forum ว่า ชุมชน "ขอบคุณครับ" เพราะว่ามีคนมาโพสความรู้ไว้ในกระทู้ แล้วก็มีคนมาโพสตอบกระทู้ว่า "ขอบคุณครับ" ยาวๆ ต่อกันลงไป ไม่มีคน contibute อะไร ถ้าจะมีก็หน้าเดิมๆ จนเลิกเขียนกันไป โดยส่วนตัวผมเขียน blog เป็นหลัก ถึงช่วงหลังๆ ปี 2018-2024 ไม่ค่อยได้เขียนเพราะหน้าที่ตำแหน่งงานเปลี่ยนไปแล้วก็ไม่ได้เขียนอะไรอีกเลย แต่ก็รู้สึกว่าชุมชนออนไลน์แบบเดิมๆ มันหายไป ช่วงนี้ก็เลยนึกสนุกอยากทดสอบพฤติกรรมโปรแกรมเมอร์ว่าจะ willing to share knowledge กันมากน้อยแค่ไหน จะตอบเฉพาะสาวๆ มั๊ย หรือจะหงุดหงิดถ้ามีคนถามคำถามแบบมือใหม่ที่ไม่ค่อยรู้เรื่องอะไร ผลก็ตามนี้

อ่านต่อ...

ทำอะไรบ้างในปี 2024


28 Dec 2024 - 2 min read

สรุปปีนี้เป็นปีที่ทำตามความตั้งใจคือไม่เน้นเรื่องรับงานมากจนเกินไป ปีนี้เลยทำแค่ 2 โปรเจค ใครมาขอคำปรึกษาก็พยายามให้ความรู้ไปตามที่คนมาถามจะรับได้ ถึงแม้ว่าเขาจะมาถามเฉยๆ แล้วไปจ้างคนอื่นก็ไม่เป็นไรถือว่าเป็นวิทยาทาน (แต่จดชื่อไว้นะ) มาสรุปจากความตั้งใจในปีที่แล้วกันก่อน

อ่านต่อ...

สรุปมหากาพย์ EPUB


28 Dec 2024 - 1 min read

สรุปมหากาพย์ EPUB ซึ่ง confirm แล้วว่า แต่ละแพลตฟอร์มเรนเดอร์ออกมาไม่เหมือนกัน ทั้งๆ ที่ไส้ข้างในที่เป็นไฟล์ html, css แตกไฟล์ ใส่ DRM เคลียร์ css ประกอบร่างใหม่ ฟอนต์โดนเอาออก บังคับให้ใช้ฟอนต์ในแอปมาแสดงผล ตั้ง line height ทำให้แอปตั้งค่าระยะห่างระหว่างบรรทัดไม่ได้ ตั้งขนาดตัวอักษรปกติ (12-16) เวลาเพิ่ม/ลดขนาดตัวอักษร แอปจะเพิ่ม/ลดค่าให้ทีละน้อยๆ จะกลายเป็นเพิ่มขนาดตัวอักษรได้อย่างเดียว ลดขนาดตัวอักษรไม่ได้ แพลตฟอร์มที่เรนเดอร์ออกมาดีที่สุด คือ Google Play Books ถึงจะโดนเอาฟอนต์ออก แต่การเรนเดอร์หน้าเอกสารก็ยังดูดีอยู่

อ่านต่อ...

สรุปผลประกอบการใน GitHub สักหน่อย


27 Dec 2024 - 1 min read

ผ่านมา 1 ปีสรุปกิจกรรมใน GitHub สักเล็กน้อย โปรเจคส่วนใหญ่เป็นโปรเจคที่ให้คำปรึกษาลูกค้าและโปรเจคส่วนตัว ระยะหลังใช้ MIT License มากขึ้น ใช้ AGPL, GPL, LGPL น้อยลง ส่วนโปรเจคลูกค้าส่วนใหญ่จะใช้ Repository ของลูกค้าอยู่แล้ว

อ่านต่อ...

ยังไม่สรุปมหากาพย์ EPUB


25 Dec 2024 - 1 min read

ยังไม่สรุปมหากาพย์ EPUB แต่ก็ใกล้ละ หลังจากเปลี่ยนมาเขียนต้นฉบับด้วย EPUB งานก็งอกหลายอย่างเลย ตอนเขียนไม่ลำบากเท่าไร แต่ต้องพก notebook ไว้ด้วย เพราะแก้ไขไฟล์แบบออนไลน์ไม่ได้ ยกเว้นจะไปต่อกับ IDX หรือแก้ไฟล์ผ่าน GitHub อีกเรื่องคือการสร้างไฟล์ EPUB, PDF ผมคิดว่า PDF ปัญหาน้อยกว่านิดหน่อย ถ้าใช้เทมเพลตของ pandoc ก็จบได้เร็ว แต่ถ้าทำเทมเพลตเองก็ต้องไปเขียนสไตล์หรือทำเทมเพตเพิ่มเติมตอนนี้ยังไม่อยากทำขนาดนั้น

อ่านต่อ...

ติดตั้ง SAMBA ใน Raspberry Pi แบบเร็วๆ


23 Dec 2024 - 1 min read

ช่วงนี้เร่งหนังสือเพราะเปลี่ยนมาใช้ markdown เขียนต้นฉบับแล้ว แต่ยังไม่ได้ทำ build workflow สำหรับ GitHub Action เลยใช้วิธีการเสียบ thumbdrive ก๊อปปี้ไฟล์จาก labtop มา tablet ปกติจะใช้เสียบสายแล้วส่งไฟล์ผ่าน Calibre ตอน gen ไฟล์ แต่ตอนนี้มีแต่ gen script เลยต้องก๊อปปี้ไฟล์แทน :(

อ่านต่อ...

เครื่องมือเขียนหนังสือตัวใหม่อีกรอบ


22 Dec 2024 - 1 min read

ครั้งนี้มาเล่าเรื่องตัวสคริป generate ไฟล์ EPUB, PDF นิดนึง เพราะใช้สูตรโกงไว้ เนื่องจากที่เครื่องไม่มี LaTex เลยใช้การแปลงจาก Markdown ไปเป็น EPUB ก่อน แล้วค่อยแปลง EPUB ออกมาเป็น PDF อีกทีนึง แต่ปัญหามันไม่ได้จบแค่นั้นเพราะ pandoc ที่สร้างไฟล์ EPUB ออกมาดันเป็น EPUB รุ่นเก่า (ต้องไปแก้ template ใหม่) ทดลองเอาไฟล์ขึ้น Google Play Books แล้วไม่รอด ... เหนื่อยใจเลย

อ่านต่อ...

เปลี่ยนเครื่องมือเขียนหนังสืออีกแล้ว


16 Dec 2024 - 1 min read

ผมกลับมาเขียนหนังสือด้วย Markdown อีกรอบรู้สึกคาใจเรื่อง EPUB มาก จริงๆ ส่งไฟล์ docx ไปให้แพลทฟอร์มทำไฟล์ให้ก็ได้ แต่อยากทำเองมากกว่า เพราะยังไงก็เขียน Markdown อยู่แล้วก็เลย ใช้เขียนหนังสือด้วยเลยน่าจะดี จากที่ได้ทดลองแปลงไฟล์จาก Markdown เป็น EPUB นี่ทำได้อยู่แล้ว จะได้ไฟล์ EPUB ที่คลีนมาก ไฟล์ที่ได้มีขนาดเล็กกว่าการแปลงไฟล์จาก docx ไปเป็น EPUB มาก

อ่านต่อ...

ทำ Dart Package เอาไว้เยอะ แต่ลืมว่ามีอะไรบ้าง


10 Dec 2024 - 1 min read

ทำ Dart Package ไว้เยอะ เพราะไล่ patch เอาไว้ใช้สำหรับโปรเจคที่ทำในตอนนั้น ซึ่งโดยปกติก็จะส่ง patch ไปให้ upstream โดยตรง ไม่ได้ fork มาทำ package ใหม่ ส่วนจะได้ merge เข้า upstream ไหม ผมก็ไม่ได้สนใจไปตามดู จริงๆ ก็ไม่ได้สนใจล่ะ และก็มี Dart Package อีกจำนวนนึง ที่เขียนเอาไว้ใช้เอง publish ใน pub.dev และเอาไป "เล่า" ใน Live ได้

อ่านต่อ...

เพจ Dart แบบ Dart Dart Live ครบ 200 ตอนแล้ว


09 Dec 2024 - 1 min read

เพจ Dart แบบ Dart Dart Live ครบ 200 ตอนแล้ว ถ้าจะนับกันจริงๆ ก็คงมากกว่า 200 ตอน เพราะมีช่วงนึงที่โดนขโมยแอคเคาท์ไปก็เลยต้องเปิดเพจใหม่ ตอนแรกที่เปิดเพจมาก็คิดว่าจะทำเป็น VLog มาเล่าเรื่อง Dart, Flutter ทุกวันอังคาร ระยะหลังๆ ไม่ค่อยมีงานจ้าง ก็เลยเอางานเก่าๆ คำถามจากลูกเพจ มาทำเป็นกรณีศึกษา และเพิ่มเนื้อหาสอดแทรกเข้าไป เพื่อให้เหมาะกับการเอาไปเล่าในเพจ

อ่านต่อ...

นึกสนุกไปทำ Jaspr UI Component งานงอกเลย


08 Dec 2024 - 1 min read

ตัดสินใจเขียนหนังสือสูตรลัด Jaspr เพราะคิดว่าโปรเจคนี้แปลกและน่าสนใจดี จนได้ใช้ Jaspr, Tailwind CSS และไปเขียน Component สำหรับ Jaspr มาจำนวนนึง แต่เนื่องจากไม่ได้เขียน Website นานมากแล้ว ก็เลยออกแบบ Component ได้ไม่ดีเท่าไร ตั้งค่าได้น้อยไปนิด แต่ก็ได้ประสบการณ์ที่ดี

อ่านต่อ...

เว็บ UIKits Library รวมตัวอย่าง UI และงาน demo บลาๆ


09 Sep 2024 - 1 min read

มีลูกเพจทักมาบอกว่าอยากให้รวมตัวอย่างแอปใน Live ทุกๆ สัปดาห์ เอาจริงๆ ตัวอย่างมันเยอะมาก Live มา 190 ตอนแล้ว T_T ก็เลยเอาโปรเจค UIKits มาปัดฝุ่นก่อน แล้วทำเว็บ Library แบบกด copy code ในหน้าเว็บได้เลย เอามาใส่ก่อน แล้วค่อยทะยอยเอาตัวอย่างแอปมาขึ้นอีกที ใครสนใจก็กดไปดูกันได้ที่ https://uikits-b7a4f.web.app

อ่านต่อ...

Backup ข้อมูลใน Firebase FireStore และเอามาใช้งานกับ Emulators


21 Aug 2024 - 1 min read

พอดีต้องย้ายข้อมูลจาก Firebase เอามาใช้งาน dev ที่เครื่องตัวเองเพราะว่าติดเรื่อง AppCheck เลยไม่อยากไปตั้งค่า debug บ่อยๆ เพราะเดียวจะลืมเอาออก ก็เลย export ข้อมูลมาทำงานที่เครื่องตัวเองดีกว่า

อ่านต่อ...

แอปแบบ


03 Apr 2024 - 1 min read

เมื่อเดือนมีนาไปก่อเรื่องไว้ พอดีก็อยากได้ความเห็นจากชาวโซเชียล เรื่องของการทำแอปแบบ Agoda, Lazada, Shopee บลาๆ ประเด็นคือ มีคนมาให้วิเคราะห์และทำใบเสนอราคาบ่อย คือ ทำใบเสนอราคาแล้วหายไปเลยก็บ่อยมาก บางทีก็เอาเอกสารที่เราวิเคราะห์เอาไปจ้างคนอื่น ทั้งๆ ที่เราเป็นคนวิเคราะห์ขั้นต้นให้

อ่านต่อ...

EPUB เราไม่เท่ากัน ภาค 3


24 Mar 2024 - 1 min read

พยายามทำไฟล์ EPUB มาหลายรอบ เนื่องจากรูปแบบ EPUB บน Google Play Books และบน meb แตกต่างกัน ก็เลยพยายามไฟล์ EPUB ให้อัพโหลดบน Google Play Books ให้ได้ก่อน ปีที่แล้วใช้วิธีการ export ไฟล์ epub จาก Google Docs มาแก้ไขเรื่อง Table of Content ใน Sigil นิดหน่อย แล้วอัพโหลดไปที่ Meb และ Google Play Books ได้ แต่ยังติดปัญหาเรื่องขนาดตัวอักษรและสไตล์อื่นๆ ที่ฝังมากับไฟล์ EPUB ซึ่งก็แน่นอนว่า Tag มันดูยุ่งเยิงไปหมด

อ่านต่อ...

แก้ Error Ports are not available ใน Windows


23 Feb 2024 - 1 min read

เจอปัญหาเรื่อง Port ชนใน Docker แต่ไม่ได้มีการเรียกใช้ port นั้นเลยสัก service ก็เลยสงสัย ก็ปรากฎว่ามันไปอยู้ใน reserve port ของ WinNAT ซะงั้น

อ่านต่อ...

อัพเดทหนังสือ


23 Feb 2024 - 1 min read

ผมเขียนหนังสือมาครบ 10 เล่มแล้ว ก็เลยได้โอกาสอัพเดทหนังสือเล่มเก่าด้วย ช่วงนี้ก็เลยไล่ทะยอยอัพเดทหนังสือ ตามลำดับดังนี้ สูตรลัด Dart Frog, สูตรลัด Dart 3, สูตรลัด Flutter, สูตรลัด FlutterFire, สูตรลัด GetX, สูตรลัด Hasura, Material Design 3

อ่านต่อ...

เขียนหนังสือสูตรลัด Serverpod


10 Feb 2024 - 1 min read

ช่วงต้นเดือนมกราคมที่ผ่านมา Serverpod ประกาศออกรุ่น 1.2 ก็รู้สึกดีใจที่โปรเจคนี้มันยังไม่เจ๊ง เอ่อ...เจ๊งตอนนี้ก็คงไม่ได้เพราะกวาดเงินนักลงทุนไปหลายราย พอมาดูรายละเอียดที่อัปเดทมาก็ประทับใจ เพราะมีฟีเจอร์ที่ขาดหายไปหลายตัว

อ่านต่อ...

ทำอะไรบ้างในปี 2023


27 Dec 2023 - 1 min read

ปกติปลายปีก็จะเขียน New Year's resolution และทำ After Action Review ของปีนั้นซึ่งในปีนี้ก็ทำงานน้อยมาก และรายได้ก็น้อยลงเช่นกัน

อ่านต่อ...

หมดงาน


09 Oct 2023 - 1 min read

หมดสัญญาจ้างจัดทำรายากรวิทยุซึ่งก็ไม่รู้ว่าจะมีอีกไหม ก็เลยคิดว่าน่าจะได้เวลาเอาโปรเจคที่โดนเทเอามาทำขายบ้างน่าจะดี ซึ่งบางโปรเจคได้เริ่มงานออกแบบไปบางส่วนแล้ว บางโปรเจคก็โดนเทตั้งแต่ส่งใบเสนอราคา แต่ก็ไม่เป็นไรเดินหน้าต่อไป โปรเจคไหนขายได้ก็ทำขาย อันไหนขายไม่ได้อย่างน้อย งานออกแบบก็ขายได้

อ่านต่อ...

อัพเดทโครงการ μLearning


26 Jul 2023 - 1 min read

ตัดสินใจรื้อโครงการ μLearning รอบที่ 3 ซึ่งทำไปทำมาได้เหมือนระบบเหมือนเดิมซะงั้น เอาเป็นว่า μLearning ยังคงแนวคิดเป็นเว็บ eCommerce มากกว่า eLearning ซึ่งก็แน่นอนว่าเอาผลิตภัณฑ์ที่มี มาต่อยอดขายผ่านเว็บ μLearning นั่นเอง ซึ่งมีสินค้าอยู่ 3 กลุ่ม คือ คอร์สเรียนออนไลน์แบบเรียนผ่านวิดีโอ, หนังสือซึ่งปกติก็จำน่ายผ่าน และ โปรเจคสำเร็จรูปพร้อมใช้งาน

อ่านต่อ...

ใช้ Prisma Dart บน Docker


10 Jul 2023 - 1 min read

ตัดสินใจเขียนหนังสือ Dart Frog เพราะเห็นว่าเครื่องมือมันเจ๋งดี คิดว่าจะเอามาใช้งานร่วมกับ Prisma ก็เลยเขียนหนังสือไปด้วย ทดลองอะไรใหม่ๆ ไปด้วย สิ่งที่น่าสนใจของ Dart Frog คือความยืดหยุ่น โดยเฉพาะเรื่อง route นี่เท่ห์มาก ทำ dynamic route จากชื่อไฟล์ได้ด้วย คือเท่ห์สุดละ

อ่านต่อ...

Prisma เราไม่เท่ากัน


06 Jul 2023 - 1 min read

มีน้องแนะนำ Prisma ได้ลองเล่นบน Next.js แล้วชอบมาก พอมีคน port ไป Dart ก็รู้สึกตื่นเต้น เพราะใช้คำสั่งจาก prisma cli ได้ สร้าง schema ทำ migration ได้ และใช้ prisma studio ได้เหมือนเดิม ก็ Prisma แหละ แต่ที่เพิ่มเติมคือ ตอน build client จากเพิ่มที่เป็น JS ก็กลายมาเป็น Dart ORM แทน สั่ง generate client มาใช้งานได้เลย เรียกได้ว่าสุดประทับใจ

อ่านต่อ...

Dart ฝั่ง Server มีโปรเจคไหนน่าเล่นบ้าง


03 Jul 2023 - 1 min read

ช่วงนี้ได้เล่น Dart ฝั่ง Server มาหลายตัว ตั้งแต่ช่วงปลายปี 2018 เป็นต้นมาที่มีนักพัฒนาซอฟต์แวร์โอเพ่นซอร์สหลายคนทำโปรเจคออกมาเยอะ ทั้งไปรอดและไปไม่รอด ก็เลยมารวบรวมไว้สักหน่อย

อ่านต่อ...

EPUB เราไม่เหมือนกัน


24 May 2023 - 1 min read

หลังจากพยายามสร้างไฟล์ EPUB จากหลากหลายวิธี ก็ทำสำเร็จ อัพโหลดไปได้ทั้ง Google Play Books และ Meb ผมก็พยายามใส่ font เข้าไปด้วยจะได้เอาฟอนต์มาใช้ได้เลย กลายเป็นว่า Meb ไม่ render font ที่ใส่เข้าไปซะงั้น แถมยัง render ข้อความออกมาไม่ค่อยจะสวยเท่าไร แต่ใน Google Play Books ออกมาสวยงาม

อ่านต่อ...

ยังคาใจเรื่อง EPUB อยู่


22 May 2023 - 1 min read

หลังจากพยายามเขียน Blog ด้วย Flutter for Web มาสักพัก ก็พอจะเข้าใจล่ะว่า Flutter for Web มันไม่ค่อยเหมาะกับ Web Content โดยเฉพาะ Blog นี้ตรงตัวเลย คือ ไม่เหมาะอย่างมาก

อ่านต่อ...

สร้างไฟล์ EPUB จาก Google Docs


07 May 2023 - 1 min read

ผมใช้ Google Docs เขียนหนังสือเพราะมันสะดวกมาก ใช้ tablet หรือ notebook ก็สามารถเขียนหนังสือได้ที่สำคัญคือใช้งานแบบออฟไลน์ได้ด้วย และ export ไฟล์ได้หลายรูปแบบมี EPUB ด้วย จากที่พยายาม export ไฟล์แบบ EPUB มาหลายครั้ง พบว่ามีปัญหาเรื่องรูปแบบเอกสารที่ไม่ตรงกับ style ที่ตั้งค่าไว้ เอกสารก็เลยดูเละ อีกเรื่องก็เป็นเรื่อง cover และ metadata ของไฟล์ EPUB มันตั้งค่ายากมาก และ Google Docs ไม่รองรับซะด้วย

อ่านต่อ...

เขียน Blog สั่ง Auto Update ผ่าน GitHub Actions


04 May 2023 - 1 min read

หลังจากพยายามเขียน Blog ด้วย Flutter for Web มาสักพัก ก็พอจะเข้าใจล่ะว่า Flutter for Web มันไม่ค่อยเหมาะกับ Web Content โดยเฉพาะ Blog นี้ตรงตัวเลย คือ ไม่เหมาะอย่างมาก

อ่านต่อ...

เขียนหนังสือ


04 May 2023 - 1 min read

ปีที่แล้วตั้งใจเขียนหนังสือ 3 เล่ม และทำสำเร็จตามเป้าหมาย สำหรับปีนี้ตั้งใจจะเขียนเพิ่มอีก 4 เล่ม รวมเป็น 7 เล่ม ซึ่งใกล้ครบแล้ว ปัจจุบันมีหนังสือวางจำหน่ายแล้ว 6 เล่ม และกำลังเขียนเพิ่มอีก 3 เล่ม

อ่านต่อ...

ทดสอบ Blog ใหม่


04 May 2023 - 1 min read

เนื่องจากไม่ได้ต่ออายุ Hosting เลยพยายามหาวิธีเขียน Blog แบบรวดเร็ว ตอนแรกก็คิดว่าจะ redirect ไปที่ Medium แต่คิดไปคิดมา อยากทดลองอะไรใหม่ๆ ก็เลยลองทำ static blog จาก Flutter for Web ดู blog อาจจะดูแห้งๆ แต่ก็คิดว่าน่าจะลองทำดู ถ้าไม่รอดก็คงไปใช้ Medium เหมือนเดิม สิ่งที่พยายามทำคือ พยายามไม่ทำอะไรเยอะ เช่น ไม่อยากทำ backend ทั้ง server ทั้ง web backend, ไม่อยากลง Wordpress, อยากได้ blog สไตล์ Ghost แต่ก็ไม่อยากลง ghost cli เป็นต้น ก็นั่นแหละ ก็เลยตัดสินใจไม่ต่ออายุ Hosting และย้ายมาใช้ Firebase + Flutter for Web แทน

อ่านต่อ...

กลับมาเขียนหนังสือ


10 Sep 2022 - 1 min read

เคยเขียนหนังสือ PHP, MySQL ตอนปี 3 ป.ตรี ตอนนั้นจะเอาไปพิมพ์ที่สำนักพิมพ์ Witty Group แต่ต้นฉบับเขียนเสร็จช้ากว่านักเขียนอีกท่านนึงก็เลยไม่ได้ตีพิมพ์ T_T จากนั้นก็เลยไม่ได้เขียนอะไรออกมาจริงจัง มีเขียน blog บ้าง จนมาทำงานที่ SIPA รับหน้าที่พัฒนาระบบปฏิบัติการ Suriyan Desktop และ Chantra OpenSource Software for Windows และดูแลเครื่อง Server ของโครงการทั้ง Suriyan, Chantra และเว็บ thaiopensource.org

อ่านต่อ...