เริ่มต้นจากคำถามง่ายๆ เริ่มจากคำถามว่า “ถ้าฝนตกหนักแบบฝน 50 ปี น้ำพื้นที่ RESA จะระบายทันไหม?” คำถามนี้ฟังดูเหมือนเป็นงานของวิศวกรโยธาหรือวิศวกรชลประทาน แต่ถ้าคิดดูดีๆ — คนที่มีพื้นผิวออกแบบ (Design Surface) อยู่ในมือ คนที่รู้ว่าน้ำไหลไปทางไหน และคนทำอาชีพที่วัดพื้นที่และระดับมาตลอด — นั่นคือวิศวกรสำรวจ ผมเรียน Hydrology มาในมหาวิทยาลัย เนื่องจากรู้สึกว่ายากและคิดว่าคงไม่มีโอกาสได้ใช้ เกรดที่ออกมาจึงน่าสงสาร จำได้ว่าได้เกรด C ไปแบบอย่างถูลู่ถูกัง เมื่อสิบกว่าปีที่แล้วได้ใช้ตอนคำนวณขนาดท่อที่จะฝังไว้ใต้ถนนตัดใหม่ โดยคำนวณจากปริมาณน้ำฝนและทราบพื้นที่ที่รองรับน้ำฝนบริเวณที่จะวางท่อนั้นๆ วันนี้จะหยิบมันขึ้นมาทวนความจำอีกครั้ง North RESA…
Tag: Python
#Update ปรับปรุงธีมมืด Surveyor Pocket Tools
นานมากแล้วไม่ได้จับภาษาไพทอนอีกเลยเกือบจะร่วมๆสองปีแล้ว เพราะผมใช้เวลาว่างพัฒนาแอพด้วย Dart/Flutter ส่วนใหญ่ขลุกอยู่กับภาษาดาร์ทตลอดมาสองปี ไม่นานมานี้ได้กลับมาใช้ไพทอนอีกครั้ง นั่งงงกับโค้ดไพทอนที่เขียนไว้ว่าตัวเองมาทำอะไรที่นี่ สักพักใหญ่ๆค่อยๆรื้อฟื้นความจำ ในครั้งนี้ใช้ Visual Studio Code (VS Code) เพื่อแก้ไขโค้ดโปรแกรมแทนเดิมๆที่เคยใช้ Pycharm เพราะหลังจากใช้ VS Code ในการพัฒนาแอพด้วยภาษาดาร์ททำให้ติดใจ ชอบในความเบาและรองรับได้หลากหลายภาษามาก แต่ผมติดตั้งสภาวะแวดล้อม (Env) ไพทอนด้วย Miniconda เหมือนเดิม จากเดิมผมปรับธีมมืดและธีมสว่างใน Surveyor Pocket Tools แบบแมนวลโดยใช้แนว Stylesheet ที่มีคนทำมาให้ใช้แลดูไม่เป็นธรรมชาติเลย…
สร้างไฟล์ยีออยด์โมเดล TGM2017 สำหรับ Hi-Target (*.grd) ด้วย Python
ผมได้แปลงแบบจำลองยีออยด์ TGM2017 ไว้หลากหลายรูปแบบเพื่อให้สามารถนำไปใช้กับเครื่องรับสัญญาณ GNSS หรือโปรแกรมไว้หลากหลายเกือบจะครอบคลุมทั้งหมด ไม่นานมานี้มีผู้ใช้ของ Hi-Target แบรนด์จากจีนต้องการยีออยด์ในรูปแบบไฟล์แอสกี้ (*.grd) สังเกตุก่อนหน้านี้ไฟล์แบบจำลองความสูงยีออยด์จะเป็นไบนารีทั้งหมด เหตุผลที่ใช้ไบนารีคือเป็นไฟล์ที่เปิดอ่านไม่ได้ด้วยโปรแกรมทั่วๆไป นอกจากจะใช้ hex editor เพื่อปิดโอกาสไม่ให้ผู้ใช้เข้ามาแก้ไขไฟล์ ด้วยความเผลอเรอ จะทำให้โครงสร้างไฟล์เสียหาย รูปแบบข้อมูลไฟล์แอสกี้ (*.grd) สำหรับไฟล์แอสกี้ (*.grd) ที่ Hi-Target ต้องการถือว่าแหกกฎ แต่ก็ไม่ใช่เรื่องใหญ่โตอะไร มาดูรูปแบบโครงสร้างไฟล์ ด้านบนบรรทัดแรกจะเป็น header: 3.000000 22.983333 95.000000 107.983333…
Dart & Flutter : เส้นทางขวากหนามกับไลบรารี PROJ แบบเนทีฟบนแอนดรอยด์
เริ่มต้นจากศูนย์ที่ต้นซอยด้วยการพัฒนาแอพด้วยดาร์ทและฟลัตเตอร์ จากที่ยืนหันรีหันขวางแบบยืนงงว่าจะไปทางไหน ตอนนี้ภาษาดาร์ทได้เริ่มซึมซับเข้าสมองมาบ้างแล้ว เริ่มจากคลานตอนนี้พอจะเดินได้แบบเตาะแตะ เคยบอกไปว่าบนฟลัตเตอร์มีไลบรารี Proj4 ชื่อ Proj4Dart แต่มีปัญหาแปลงพิกัดได้คลาดเคลื่อนโดยเฉพาะระบบพิกัดรถไฟความเร็วสูงไทยจีนประมาณ 27 ซม. จนต้องถอยไปตั้งหลักว่าจะเอาไงดีสำหรับการจะใช้ไลบรารี PROJ บนแฟล็ตฟอร์มแอนดรอยด์และไอโอเอส ทางเลือกแรกใช้ปลั๊กอิน “Chaquopy” ทางแรกเท่าที่ลองคือเอาไลบรารีของไพทอนมารันบนฟลัตเตอร์ด้วย plug-in ชื่อ Chaquopy (Python for Android) ผมชอบผู้พัฒนาปลั๊กอินนี้ที่สามารถเอาภาษาไพทอนขึ้นมารันได้บนแอนดรอยด์ใช้ Android Studio คือโค้ดจาวาหรือ kotlin แต่ยังใช้ไม่ได้ iOS นะครับ ผู้พัฒนาชื่อมัลคอร์ม…
เมื่อลมพัดหวน : Kivy framework เครื่องมือพัฒนาแอพสำหรับโทรศัพท์มือถือ
จากที่ผมรอคอยโครงการ Beeware มาจะร่วมๆสามปีแล้ว แต่พบว่าความก้าวหน้าของโครงการมีการเคลื่อนไหวน้อยมากเหมือนจะหยุดนิ่งสนิท สำหรับโครงการ Beeware คือโครงการทำเครื่องมือพัฒนาโปรแกรมข้ามแพล็ตฟอร์มเพื่อให้ผู้ใช้งานพัฒนาซอฟท์แวร์ด้วยภาษาไพธอน ให้สามารถใช้งานได้ทุกแพล็ตฟอร์มอย่างหลากหลายโดยเฉพาะบนโทรศัพท์มือถือแอนดรอยด์และ iOS เป็นโครงการเปิดโค้ด (open-source) ที่อาศัยการระดมทุนเพื่อหาเงินให้โครงการสามารถเดินหน้าต่อไปได้ สำหรับ Kivy framework (ภาษาไทยออกเสียงกีวี เป็นคำพ้องเสียง Kiwi ที่เป็นชื่อผลไม้ชนิดหนึ่ง) ผมได้ศึกษาเบื้องต้นเมื่อเกือบจะสิบปีที่แล้ว เป็นโครงการเปิดโค้ดคล้ายกับ Beeware แต่ตอนนั้นยังไม่ได้สนใจนักเพราะโครงการเพิ่งจะเริ่มต้นช่วงนั้นยังขลุกขลักอยู่มาก เคยเอาโครงการตัวอย่างประมาณ แสดงผลว่า “Hello world!” มา build เป็นไฟล์ APK เพื่อติดตั้งบนโทรศัพท์มือถือแอนดรอยด์แต่พบว่ากระบวนการยุ่งยากมาก…
เพิ่มธีมมืดใน Surveyor Pocket Tools (มาสายดีกว่าไม่มา)
ตามสมัยนิยมก็ต้องมีธีมมีดว่ากันว่าช่วยกันประหยัดพลังงานของหน้าจอแบบ OLED และถนอมสายตาผู้ใช้ รวมทั้งใช้งานได้ดีในบริเวณที่มีแสงน้อย แต่ก็มีบางงานวิจัยกล่าวว่าการอ่านตัวหนังสือบนพื้นดำนานๆก็ทำให้สายตาล้าได้เหมือนกัน อย่างไรก็ตาม Surveyor Pocket Tools ก็เปิดทางเลือกให้ผู้ใช้สามารถปรับได้ว่าจะเปิดหรือปิดธีมมืด จาก PySide2 สู่ PySide6 ระบบการแสดงผลกราฟฟิค (GUI) จากเดิมที่ผมใช้ PySide2 อิมพลีเมนต์มาจาก Qt5 ตอนนี้เปลี่ยนมาใช้ PySide6 โดยอิมพลีเมนต์มาจาก Qt6 ที่ทันสมัยขึ้น การเปลี่ยนผ่านค่อนข้างราบรื่น แก้ไขโค้ดนิดหน่อย พร้อมปรับเปลี่ยนไอคอนใหม่ให้ดีมีมิติขึ้นมานิดหนึ่ง จาก PyInstaller สู่ Nuitka…
ภาษาไพทอนสู่เครื่องคิดเลข HP Prime
ปกติเครื่องคิดเลข HP Prime G2 ที่ผมยกให้เป็นเทพของเครื่องคิดเลขด้านวิทยาศาสตร์ทั้งหลาย ผมเขียนโปรแกรมด้วยภาษา HP PPL หรือ Prime Programming Language คล้ายๆปาสคาลแต่บางอย่างคล้ายไพทอน จากทิศทางที่เครื่องคิดเลขระดับไฮเอ็นต์ของ Casio และ TI ได้นำร่องโดยเอาภาษาไพทอนลงเครื่องคิดเลขไปก่อนหน้านี้ โดยจริงๆแล้วไพทอนในเวอร์ชั่นของเครื่องคิดเลขจะถูกออปติไมซ์ให้ใช้กับเครื่องที่มีความเร็วซีพียูที่ช้าและแรมไม่มากนัก ที่ดังที่สุดได้แก่ ไมโครไพทอน (Micropython) ที่พอร์ตภาษาไพทอนลงไมโครคอนโทรลเลอร์ ทำให้มีไลบรารีจำนวนมากที่ถูกพอร์ตลงมาใช้งานเช่นเดียวกัน อานิสงค์เลยได้มาลงที่เครื่องคิดเลขเช่นเดียวกัน ผมเห็นว่าทีมงานผู้พัฒนาเครื่องคิดเลข Prime ของ HP คงเล็งเห็นแล้วว่าการพัฒนาลากภาษา PPL ให้ใช้ในกลุ่มแคบๆ…
(ฟรี)โปรแกรมภาษาไพทอนบนเครื่องคิดเลขคาสิโอ fx-9750GIII fx-9860GIII และ fx-cg50 โปรแกรมพื้นฐานงานสำรวจชุดที่ 4 (COGO Selected Serie 4)
ตอนนี้มาถึงโปรแกรมพื้นฐานงานสำรวจชุดที่ 4 (COGO Selected Serie 4) สำหรับเครื่องคิดเลขคาสิโอ fx-9750GIII, fx-9860GIII และ fx-cg50 PRIZM สามรุ่นที่รองรับภาษาไพทอนหรือไมโครไพทอน ได้ในขณะนี้ หาซื้อได้ในเมืองไทย ราคาย่อมเยาที่สุดคือ fx-9750GIII ที่ราคาประมาณสามพันบาท ถ้ามีงานการทำเป็นหลักเป็นแหล่งแล้วไม่น่าแพง บางทีเราซื้อโทรศัพท์มือถือได้ราคาเป็นเรือนหมื่นไม่คิดอะไรมาก แต่กับเครื่องคิดเลขคิดแล้วคิดอีก สำหรับผมแล้วราคาขนาดนี้ถือว่าคุ้มค่ามาก ผมไปนั่งพลิกดูด้านหลังเครื่อง fx-9860GIII ปรากฎเห็น “Made in Thailand” ค่อนข้างประหลาดใจพอสมควร พอไปพลิกดูเครื่อง fx-cg50 กลับเป็น…
(ฟรี)โปรแกรมภาษาไพทอนบนเครื่องคิดเลขคาสิโอ fx-9750GIII fx-9860GIII และ fx-cg50 โปรแกรมพื้นฐานงานสำรวจชุดที่ 3 (COGO Selected Serie 3)
ตอนนี้มีเครื่องคิดเลขของคาสิโอสามรุ่นที่สามารถโปรแกรมด้วยภาษาไพทอนหรือไมโครไพทอน (MicroPython) ได้คือ fx-9750GIII, fx-9860GIII และ fx-cg50 ทั้งสามรุ่นสามารถหาซื้อได้ไม่ยากนัก ผมซื้อมาทางออนไลน์สะดวกดี สนนราคาเรียงตามรุ่นตอนนี้อยู่ที่ สามพันบาท สี่พันห้าร้อยบาทและเจ็ดพันกว่าบาทตามลำดับ ผมแนะนำให้สำหรับคนที่เบี้ยน้อยหอยน้อยลงทุนกับ fx-9750GIII เพราะราคาไม่แพง คุ้มค่าเกินราคา ทั้งสามรุ่นสามารถโปรแกรมด้วยภาษาคาสิโอเบสิคและภาษาไพทอน แล้วแต่ความถนัด ความชอบ ถ้าโปรแกรมด้วยไพทอนจะสามารถเขียนโปรแกรมที่ยากๆหรือคณิตศาสตร์ซับซ้อนขึ้นมาได้ นี่เป็นเหตุผลสำคัญ ถึงแม้หน่วยความจำของเครื่องคิดเลขจะน้อยก็เป็นโจทย์ให้ผู้พัฒนาโปรแกรมได้ออปติไมซ์โปรแกรมให้ทำงานได้ แต่สำหรับโปรแกรมพื้นฐานงานสำรวจส่วนใหญ่ก็พื้นๆ ไม่มีอะไรซับซ้อน ชุดโปรแกรมพื้นฐานงานสำรวจ COGO (Coordinate Geometry) ชุดที่ 3 มาถึงโปรแกรมพื้นฐานงานสำรวจชุดที่ 3 (COGO…
(ฟรี)โปรแกรมภาษาไพทอนบนเครื่องคิดเลขคาสิโอ fx-9750GIII fx-9860GIII และ fx-cg50 โปรแกรมพื้นฐานงานสำรวจชุดที่ 2 (COGO Selected Serie 2)
ตอนนี้มีเครื่องคิดเลขของคาสิโอสามรุ่นที่สามารถโปรแกรมด้วยภาษาไพทอนหรือไมโครไพทอน (MicroPython) ได้คือ fx-9750GIII, fx-9860GIII และ fx-cg50 ข้อดีของภาษาไพทอนนั้นคือง่าย ทรงพลัง แต่ข้อจำกัดของเครื่องคิดเลขคือหน่วยความจำที่มีมาน้อย ดังนั้นบนเครื่องคิดเลขจะมีไลบรารีที่นำมาจากเครื่องคอมพิวเตอร์มาใช้งานได้น้อย ต้องปรับกันพอสมควร ไม่มีไลบรารีเทพแบบ Numpy ที่จะมาใช้คำนวณเรื่องเมตริกซ์ (Matrix) ดังนั้นถ้าใช้เมตริกซ์ก็ต้องออกแรงเขียนโค้ดเองมากหน่อย แต่ยังมี Matplotlib ฉบับย่อที่พอกล้อมแกล้มได้เล็กน้อย ชุดโปรแกรมพื้นฐานงานสำรวจ COGO (Coordinate Geometry) ชุดที่ 2 มาถึงโปรแกรมพื้นฐานงานสำรวจชุดที่ 2 (COGO Selected Serie 2)…