Cross-compilation build script

Make mangafmt Run on Windows

หลังจากเดือนก่อนปล่อย mangafmt ซึ่งพัฒนาบน WSL2 และ Build/Run ได้บน Linux เท่านั้น ความตั้งใจถัดมาคือ อยากทำให้มันรันได้บน Windows/OSX ด้วย เพราะคนส่วนใหญ่ใช้ และส่วนตัวก็ใช้ Windows เป็นหลัก หลังจากค้นๆ อยู่แป๊ปนึงก็พบว่า Go มัน cross-compile ง่ายมาก! ตามรูปปกด้านบนเลย แค่ set environment variable ชื่อ GOOS และ GOARCH แค่นั้นก็ build ได้ทั้งข้าม OS และ Architecture แต่โลกไม่สวยงามแบบนั้น ถ้าโค้ดเรามีเรียกใช้ C library อยู่ ชีวิตจะยุ่งยากขึ้นมากในการ build และ lib ที่เราใช้คือ ImageMagick ซึ่งมันทั้งใหญ่และ dependencies ตามมาอีกเพียบ แถมมีเวอร์ชั่น 6 กับ 7 ซึ่งแต่ละ platform อาจจะใช้คนละเวอร์ชันกันอีก หลังจากลองพยายามอยู่ซักพัก ก็ไม่เอาดีกว่า แก้เป็น pure Go ดีกว่า ข้อดีคือ build ง่าย และ executable ที่ออกมา คือรันได้เลย ไม่ต้องลง runtime dependencies เพราะงั้น ต้องเอา ImageMagick ออก...

July 14, 2024 · teerapapc
Example output page on kobo libra 2

Project mangafmt

ช่วง 2-3 อาทิตย์ที่ผ่านมา นั่งทำโปรเจคใหม่ของตัวเอง ชื่อว่า mangafmt เป็นโปรแกรมไว้แปลงไฟล์หนังสือการ์ตูน (บนอินเทอร์เน็ตเรียกตามญี่ปุ่นว่า มังงะ/Manga) เพื่อให้อ่านบน E-ink reader ได้สวยงามและสะดวกมากขึ้น นั่งทำช่วงหลัง 3 ทุ่มเป็นต้นไปของแต่ละวัน เรียกว่าหมกมุ่นได้เลย แทบไม่ได้เล่นเกม/ดูซีรียส์ ขับรถก็คิดถึง ว่าจะทำออกมายังไงดี ใช้วิธีไหนดี บางคืนคิดถึงจนนอนไม่หลับ ไม่ได้สนุกกับการเขียนโปรแกรมแบบนี้มานานมากแล้ว ได้ทำสิ่งที่เราอยากได้เอง กำหนดเองได้ว่าจะทำอะไรหรือไม่ทำอะไร จะทำออกมาแบบไหน โปรแกรมทำอะไรได้บ้าง ตอนนี้ v0.2.1 เสร็จแล้ว สิ่งที่ทำได้คือ (ฟีเจอร์เด็ด) ตรวจจับหน้าคู่ได้ (แบบคร่าวๆ) แล้วเอา 2 หน้ามาต่อกันกลายเป็นหน้าใหญ่หน้าเดียวตามแนวนอนได้ หน้าคู่คือ คนวาดจะวาดใช้พื้นที่ 2 หน้าต่อกัน ซึ่ง e-reader โดยทั่วไปมันแสดงได้ทีละหน้า ทำให้เวลาอ่านจริงๆเสียอรรถรสอยู่พอสมควร เพราะฉากหน้าคู่มักจะเป็นฉากที่มี impact แต่ดันเห็นแค่ทีละครึ่ง ย่อขนาดรูปให้เหมาะกับขนาดจอ รวมทั้งหมุนรูปด้วยถ้าเป็นแนวนอน ตัดขอบพื้นที่สีขาวว่างๆของแต่ละหน้าได้ (เรียกว่า trim) เพื่อจะใช้พื้นที่บนจอเล็กๆได้คุ้มขึ้น ตัวหนังสือจะใหญ่ขึ้นอีกหน่อย ลดจำนวนสีเป็นขาวดำ 16 สี (4-bits grayscale) เพราะจอ e-reader มันแสดงภาพสีไม่ได้ รองรับไฟล์ที่อ่านจากขวาไปซ้าย (เปิดแบบหนังสือการ์ตูนญี่ปุ่น) แปลงไฟล์เป็น EPUB/KEPUB/CBZ มายังไง ทำไปทำไม พอดีเริ่มหันมาอ่านการ์ตูนบน Kobo Libra 2 ที่ตัวเองมี โดยซื้อการ์ตูนจาก Google Play Books แปลงไฟล์นิดหน่อย แล้วได้มาเป็นไฟล์ PDF แต่พอเปิดอ่านในเครื่องก็พบว่า เวลาเปลี่ยนหน้ามัน lag นิดหน่อยเพราะเป็น PDF คนบนเน็ตก็แนะนำให้แปลงไฟล์เป็น EPUB/KEPUB แล้วจะลื่นขึ้น (ซึ่งจริง) ลองใช้โปรแกรมที่เค้านิยมกันชื่อ KCC แปลงดู...

June 3, 2024 · teerapapc