ปัญหาคือผมต้องการใช้ Apache Airflow บนเครื่อง Ubuntu ซึ่งเขียนด้วย Python และมี cli ให้ใช้ แต่หลังจากติดตั้งด้วย pip install airflow ไปแล้วปรากฏว่าไม่สามารถใช้คำสั่ง airflow ผ่าน terminal ได้ เจอ error แบบนี้ zsh: command not found: airflow ปัญหาเกิดจาก pip รุ่นใหม่ๆ บน Ubuntu เมื่อเรา pip install เพื่อติดตั้ง module ที่สามารถใช้งานผ่าน command line…
Tag: python
Python | จัดการ Python หลาย version ด้วย pyenv และ virtualenv (virtualenvwrapper)
ช่วงนี้ผมมีโอกาสใช้งาน Python และ contribute open source โปรเจกต์หนึ่งอยู่ ปัญหาที่โคตรจะเบสิกของ developer อย่างเราๆ ที่ต้องเจอคือ environment (ต่อไปขอย่อเป็น env ละกัน) บนเครื่องที่ใช้พัฒนากับ env ที่โปรเจกต์ต้องการเป็นคนละ version กัน เราอาจจะติดตั้ง env สำหรับโปรเจกต์นั้นบนเครื่องเราก็ได้แต่ก็จะเกิดปัญหาต่อมา เช่น
- version ของชุดซอฟต์แวร์ที่โปรเจกต์ต้องการกระทบกับ version ของซอฟต์แวร์หลักของระบบ
- version ของชุดซอฟต์แวร์ที่โปรเจกต์ต้องการอาจจะเก่าเกินไปจนติดตั้งบน OS version ปัจจุบันของเราไม่ได้
แม้ว่าเราจะมี Docker ซึ่งสามารถสร้าง container ที่มี env แยกจากระบบหลักได้ แต่บางครั้งก็ไม่สะดวกนักเพราะในระหว่างพัฒนาเราอาจจะต้องใช้ tool chain ต่างๆ ร่วมด้วย เช่น ถ้าผม develop ด้วย Python ก็อาจจะต้องใช้ pip ด้วย เป็นต้น
ภาษา Python เองก็มี virtualenv ซึ่งช่วยให้เราจัดการ env ของ Python โดยสามารถรัน Python version ต่างกันกับแต่ละโปรเจกต์ได้โดยไม่กระทบ version หลักในเครื่อง ส่วนอีกตัวที่จะช่วยให้เราทำงานกับ virtualenv ได้ง่ายขึ้นคือ pyenv
Python | Abstract Class และ Interface
ภาษาโปรแกรมคอมพิวเตอร์ที่เราคุ้นเคยในปัจจุบันอาจจะมีแค่ไม่กี่ภาษา แต่ความจริงแล้วมีเป็น 100 ภาษาเลยนะครับ แต่ละภาษาถูกสร้างขึ้นให้ทำงานเฉพาะทางและเพื่อแก้ปัญหาบางอย่างเท่านั้น ภาษาไหนที่ถูกออกแบบมาให้ใช้แบบ general purpose หรือเป็นที่นิยมเราจะได้ยินชื่อบ่อยหน่อย เช่น C/C++, Java, C#, Python, Ruby, JavaScript, Go etc.
การทำ TDD สำหรับ Python
ภาษาโปรแกรมสมัยใหม่ (หมายถึงยุคนี้ซึ่งอาจจะมีอายุ 10-20 ปีแล้วก็ได้) บางภาษาทุกวันนี้มักจะ built-in ไลบรารี่ unit testing framework มาให้อยู่แล้วอย่างเช่น Golang Python เองก็มีมาให้ด้วยเหมือนกัน
โพสต์นี้ผมอธิบายเป็น step ตามนี้ละกันครับ
วาด map ด้วย Python และ Matplotlib
เรียนวิชา Environment Control System มี part ที่ prof. พูดถึงแผนที่เลยให้การบ้านเขียนโปรแกรมวาดแผนที่จาก Map database ที่เป็นไฟล์ binary
ผมเลยเลือกใช้ Python กับ Matplotlib มาทำ เขียนโค้ดง่ายๆ ไม่กี่บรรทัดก็วาดแผนที่ออกมาได้แล้ว ตอน plot อาจจะช้านิดนึงคอขวดอยู่ที่ matplotlib ครับถ้าว่างๆ อาจจะลองเปลี่ยนไปใช้ตัวอื่นดู
เขียน script เพื่อ ping process บน Linux
ส่วนหนึ่งของงานที่ทำอยู่ของผมมีโปรแกรมที่ต้องรันเอาไว้ตลอดเวลาเขียนด้วย Java รันเป็น executable jar แต่มีปัญหาคือเกิด exception และตายบ่อยต้องคอย start เองอยู่เรื่อยๆ
โจทย์ของผมคือโปรแกรมที่คอยตรวจว่าโปรแกรมต้องการยังรันอยู่หรือเปล่าถ้าไม่ได้รันอยู่ก็ start ขึ้นมา ผมเลยเขียน script เล็กๆ เพื่อทำงานตรงนี้จะได้ไม่ต้องมา monitor เอง
งานแค่นี้จริงๆ จบได้ด้วย shell script แต่ผมเขียนไม่คล่องเลยใช้ Python แทนได้โค้ดประมาณนี้