ทำ Data Pipeline กับ SFTP Server ด้วย GitLab และ Google Cloud Platform

เมื่อวานลองทำ Data Pipeline ท่าใหม่ที่ไม่เคยทำมาก่อน โดยลูกค้าจะเอาไฟล์มา Drop ไว้ให้บน SFTP แล้วเราจะต้องดูดจาก SFTP ส่งไปหา BigQuery คิดไปคิดมาได้ Solution แปลกใหม่น่าสนใจ เลยเอามาแชร์ให้อ่านกันเล่นๆ

Concept โดยคร่าวคือ เราจะต้อง Sync ข้อมูลจาก SFTP ลงมาใน Local ให้ได้ก่อน แล้วก็เลือกเฉพาะไฟล์ที่มีการเปลี่ยนแปลงส่งขึ้นไปบน Google Cloud Function (GCF) แล้วไปรัน Data Pipeline ต่อบนนั้น ซึ่งข้างบน GCloud นี่ไม่น่าเห็นห่วง เครื่องมือเขาพร้อมอยู่แล้ว แล้วน้องๆ ก็ช่วยกันดำเนินการจนสำเร็จสวยงามไปแล้ว เหลือแต่ส่วนที่เรารับผิดชอบเนี่ยแหละยังไม่ได้ทำ ทุกคนรออยู่ 555 สิ่งที่ต้องคิดเพราะยังไม่เคยทำมาก่อนคือ เรา Sync ไฟล์ลงมาจาก SFTP ได้ยังไงนี่ล่ะ แล้วจะเลือกส่งเฉพาะไฟล์ที่มีการอัพเดทได้อย่างไร

Continue reading

สรุปเรื่อง Kubernetes Services บน GKE หลังศึกษาและทดลองอย่างเอาจริงเอาจัง

Kubernetes เป็นระบบจัดการ Container ที่เป็นที่นิยมสูงมากในตอนนี้ ส่วนตัวผมแล้วก็พยายามเรียนรู้และใช้งานอยู่จริงเช่นกัน ในเรื่องของการ Deploy พวกนี้ผมถือว่าไม่มีปัญหาอะไร มีตัวอย่างให้ดูกันบนอินเทอร์เน็ตมากมาย จนกระทั่งมาถึงจุดที่ต้องการจะส่ง Traffic ออกมานอก Cluster เมื่อนั้นก็เริ่มเกิดความสับสนว่าตกลงมันต้องทำแบบไหนกันแน่ ซึ่งปัญหาทั้งหมดทั้งปวงมันเกิดจากผมไม่เข้าใจเรื่อง Service อย่างถ่องแท้นั่นเอง จะเนื่องจาก Official Doc เขียนไม่เคลียร์ หรือเป็นเพราะผมพื้นฐานไม่ดีพอที่จะอ่านมันแล้วเข้าใจก็สุดแล้วแต่ สุดท้ายเมื่อไม่นานมานี้ผมก็เลยเปิดการทดลองใช้งาน Service อย่างเอาจริงเอาจัง หลังจากใช้มั่วแบบงูๆ ปลาๆ มานาน เอาให้รู้กันไปว่าตกลงอะไรมันทำอะไรกันแน่ แต่จะประเภทมันต่างกันอย่างไร Configuration แต่ละตัวที่ใช้อยู่ประจำมันส่งผลยังไงกันแน่ จึงได้มาเขียนสรุปเรื่อง Services ชนิดต่างๆ บน Kubernetes ไปจนถึงการเอาไปใช้งานจริงว่า เมื่อไหร่ ควรจะใช้แบบไหนกันแน่ เผื่อจะช่วยล่นเวลาคนที่กำลังสับสนอยู่เช่นกัน

Continue reading

หนึ่งสัปดาห์ผ่านไปกับ Manjaro KDE

หนึ่งสัปดาห์ผ่านไปกับ Manjaro KDE
วันนี้เพิ่งรัน AutoKey สำเร็จแล้ว ติดมานาน
ปิดฉากการติดตั้งครบเซททุกอย่างที่ต้องการละ
ยิ่งใช้ Linux ยิ่งเข้าใจถึงแก่นของคอมพิวเตอร์

Continue reading

PHP function สำหรับตรวจเลขบัตรประจำตัวประชาชน

ล่าสุดผมเขียนโปรแกรมหาเลขบัตรประจำตัวประชาชนหลักสุดท้ายด้วย JS พร้อมใช้งานเลย เข้าไปใช้กันได้ที่นี่เลยครับ https://spicydog.gitlab.io/thai-national-id-checker/


รอบนี้มาเขียนเลขฟังก์ชั่นสำหรับตรวจเลขบัตรประจำตัวประชาชนบน PHP อีกครั้ง

เนื่องด้วยหลังๆ มานี่ฝึกโดยใช้ map มากขึ้น ก็เลยลองเขียนใหม่แบบรวบๆ ดู ก็ได้หน้าตาประมาณนี้

รหัสไปรษณีย์ทั้งหมดในประเทศไทย พร้อมพิกัดตำบล

พอดีกำลังทำ Project จะต้องใช้รหัสไปรษณีย์ทั้งหมดในประเทศไทยเพื่อระบุจังหวัด อำเภอ และตำบล แต่พอไปหาดูบนอินเทอร์เน็ตมักจะเป็นเว็บสำเร็จรูปที่ไม่ได้เป็นข้อมูลดิบ ก็เลยต้องเอามาแกะทำเป็นข้อมูลดิบเอง ไหนๆ ทำแล้วก็เลยแชร์ผ่าน Google Sheet ซะเลย เข้าไปโหลดกันได้ที่นี่เลยครับ Thailand Zip Code Continue reading

การใช้งาน Cloud Storage กับ ข้อมูลส่วนบุคคลให้ปลอดภัย

สืบเนื่องจากเหตุข้อมูลสำเนาบัตรประจำตัวประชาชนหลุดจาก iTrueMart และ Truemove H รวมถึง Tweet ของท่านผู้ใหญ่ที่อ่านแล้วทำให้ทนไม่ไหว ต้องมาขอเขียนระบายความในใจหน่อย ถ้าสภาพเป็นแบบนี้ต่อไปเห็นที Data Privacy ประเทศไทยจะต้องเละแน่นอน

Continue reading

My collaborative note taking website

SPICYDOG’s Note เป็นเว็บเอาไว้จดโน้ตอย่างง่ายๆ ที่สามารถเข้ามาเขียนพร้อมๆ กันได้แบบ Google Drive แต่อยากใช้งานแบบไม่ Login แล้วก็ต้องเปิดได้เร็ว ใช้งานได้จริง ซึ่งแต่ก่อนใช้ Titanpad ซึ่งตอนนี้ปิดไปแล้ว ก็เลยเปิดเองซะเลย เข้าไปลองใช้งานกันได้ที่

 

https://note.spicydog.org

Continue reading

GitLab CI บทที่ 2 GitLab Runner

ก่อนจะเริ่ม GitLab CI เราก็ต้องมารู้จักกับ GitLab Runner กันเสียก่อน GitLab Runner คือ Agent ที่จะคอยรันงานที่ส่งมาจาก GitLab นั่นเอง บางคนอาจคิดไปถึงว่า เราจะ Test โปรแกรมของเราได้อย่างไรในเมื่อ Environment ของเราไม่เหมือนกันคนอื่น บางคนเขียน Ruby บางคน Java บางคน Python อย่างนี้ก็ต้องสร้างเครื่องมาเฉพาะหมดเลยหรือเปล่า คำตอบก็คือ ใช่ และ ไม่ใช่ ที่บอกว่าใช่ ก็เพราะว่า เวลาจะทดสอบระบบอะไรนั้น เราก็ต้องทำ Environment ขึ้นมาแน่นอน อันนี้หลีกเลี่ยงไม่ได้ แต่ที่บอกว่าไม่ใช่ก็ตรงที่ว่า เราไม่ต้องสร้างเครื่องใหม่หลายๆ เครื่อง อย่าลืมว่ายุคนี้มี Docker แล้ว การจะตั้ง Containner ที่มี Environment อย่างที่เราต้องการเป็นเรื่องหมูๆ เอาจริงๆ แทบจะ Copy สคริปที่ชาวบ้านทำๆ กันเอาไว้มาใช้ ส่วนใหญ่ก็แทบจะใช้งานได้ทันทีถ้าเราพัฒนามาในรูปแบบที่คนส่วนใหญ่ทำกัน ซึ่ง GitLab Runner ก็อาศัยพวก VM เนี่ยล่ะในการในการทำให้เครื่องหนึ่งเครื่องเป็น Enviromment อะไรก็ได้ ซึ่งสำหรับผมจะเลือกใช้ Docker เป็นหลักครับ

อ่อ สำหรับคนที่ใช้ GitLab ที่มี Runner พร้อมใช้อยู่แล้ว อย่างเช่นคนที่จะใช้ Share Runner บน gitlab.com ก็สามารถข้ามบทนี้ไปได้เลยครับ Continue reading