/images/avatar.webp

การแสดงข้อมูลต่างๆบนแผนที่ด้วยไลบรารี Folium

การแสดงข้อมูลต่างๆ เช่น ตำแหน่ง หรือ ขอบเขต บนแผนที่ สามารถทำให้สามารถเข้าใจข้อมูลเหล่านั้นได้ดียิ่งขึ้น แต่ข้อมูลแผนที่ส่วนใหญ่ เช่น กูเกิลแมพ (Google Map)1 หรือ แมพบอกซ์ (Mapbox)2 แม้สามารถใช้งานได้ฟรี แต่ส่วนใหญ่มีข้อจำกัดปริมาณการใช้งาน และจำเป็นต้องให้ข้อมูลบัตรเครดิตเพื่อใช้งาน ผมขอแนะนำไลบรารี (library) ที่สามารถใช้งานได้ฟรีและไม่ต้องให้ช้อมูลบัตรเครดิตก่อนใช้งาน ซึ่งไลบรารีนี้คือ Folium3

โดยบทความนี้มีตัวอย่าง 2 ตัวอย่างในการใช้งานไลบรารี Folium และภาษาไพทอน (Python)

  1. ตัวอย่างการแสดงตำแหน่งที่ระบุด้วยละติจูด (latitude) และ ลองติจูด (longitude) ด้วยสัญลักษณ์ (marker) บนแผนที่
  2. ตัวอย่างการแสดงรูปเซลล์ (cell) หกเหลี่ยม (hexagon) ของ H3 ที่ระบุจากตำแหน่งบนแผนที่

ตัวอย่างการแสดงตำแหน่งที่ระบุด้วยละติจูด (latitude) และลองติจูด (longitude) ด้วยสัญลักษณ์ (marker) บนแผนที่

การแสดงสัญลักษณ์บนแผนที่สามารถทำได้ตามขั้นตอนดังต่อไปนี้

  1. สร้างแผนที่ Folium ด้วยคำสั่ง folium.Map กำหนดพารามิเตอร์ location มีค่าเท่ากับตำแหน่งของสัญลักษณ์ เช่น (13.7305, 100.5172) (เพื่อให้สัญลักษณ์อยู่ในตำแหน่งกึ่งกลางของแผนที่) และ zoom_start มีค่าเท่ากับ 15
  2. สร้างสัญลักษณ์ด้วยคำสั่ง folium.Marker กำหนดพารามิเตอร์ location มีค่าเท่ากับตำแหน่งสัญลักษณ์ เช่น (13.7305, 100.5172)
  3. เพิ่มสัญลักษณ์ที่สร้างขึ้นในข้อที่ 2 ลงบนแผนที่ในข้อที่ 1 marker.add_to(folium_map)

ตัวอย่างการแสดงสัญลักษณ์บนแผนที่ 4

แก้โจทย์ปัญหาการทอนเงินด้วยขั้นตอนวิธีแบบละโมบ (Greedy Algorithm)

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

สร้างแฟลชไดรฟ์ (Flash drive) ที่เข้ารหัสเพื่อเก็บข้อมูลสำคัญ

บทความนี้เขียนขึ้นเพื่ออธิบายการสร้างแฟลชไดรฟ์ที่เข้ารหัสเพื่อเก็บข้อมูลสำคัญ โดยใช้ซอฟแวร์ Linux Unified Key Setup (LUKS) 1

เมื่อก่อนผมใช้งานระบบปฎิบัติการ Windows ผมเลือกเก็บข้อมูลด้วยการเข้ารหัสโดยการใช้ซอฟแวร์ BitLocker 2 เข้ารหัสทั้งพาร์ติชันของฮาร์ดดิสก์ที่ใช้เก็บข้อมูล หรือใช้ซอฟแวร์ VeraCrypt 3 (หรือ TrueCrypt 4 ชื่อในอดีต) สำหรับสร้างไดรฟ์ข้อมูลเข้ารหัสเสมือน (virtual encrypted disk) โดยใช้เก็บสำรองไฟล์เข้ารหัสลงในแฟลชไดรฟ์ และนำไปใช้งานกับเครื่องอื่นๆ ทั้ง Windows หรือ Linux

แต่เมื่อย้ายมาที่ระบบปฎิบัติการ Ubuntu มากขึ้น ผมต้องการสำรองข้อมูล Public และ Private Key 5 จึงมองตัวเลือกอื่น ในการสำรองข้อมูลและเข้ารหัสเพื่อความปลอดภัย โดยได้เลือกใช้ LUKS 1 สำหรับการสำรองข้อมูลแบบเข้ารหัสในแฟลชไดรฟ์

การใช้งานตัวห้อย (Subscript) ใน Markdown ของ Hugo

ผมใช้ Hugo Framework 1 สร้างเว็บไซต์นี้ เพื่อเขียนบล็อคบทความต่างๆ จนกระทั่งวันก่อนต้องการเขียนบทความที่มีตัวห้อย (Subscript) สำหรับแสดงค่า Fibonacci ที่ตำแหน่งใดๆ แทนด้วยตัวอักษร i ซึ่งต้องการให้ i เป็นตัวห้อยของ f เช่น Fibonacci ที่ตำแหน่ง 0 แทนด้วยสัญลักษณ์ f0

รู้จัก Pisano Period ตัวช่วยทำโจทย์ Fibonacci

ทุกคนที่ได้เรียนเขียนโปรแกรมคงคุ้นเคยกับโจทย์หาค่าของ Fibonacci ตำแหน่งที่ i ซึ่งมีสูตรการคำนวณดังนี้ fi = fi-1 + fi-2 โดยที่ f0 = 0 และ f1 = 1

การสร้างกราฟที่มีข้อมูลภาษาไทยด้วย Matplotlib

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