Skip to content

Month: July 2018

บันทึกการใช้งาน Serverless application ด้วย AWS Lambda

งานที่ผมทำตอนนี้มีการใช้งาน AWS Lambda เอามาใช้งานในลักษณะ schedule worker ที่ทำงานตามเวลาและ worker ที่ทำงานเมื่อมี event เกิดขึ้นใน service ใดๆ เช่น เมื่อมี request มาที่ API Gateway, มีการสร้าง แก้ไขไฟล์ใน S3, มี trigger จาก CloudWatch ฯลฯ AWS Lambda, Serverless, Function as a Service คืออะไร ? AWS Lambda เป็น Serverless…

Python | แก้ปัญหาการเรียกใช้ module แบบ command line ไม่ได้หลังจากติดตั้งผ่าน pip

ปัญหาคือผมต้องการใช้  Apache Airflow บนเครื่อง  Ubuntu ซึ่งเขียนด้วย  Python และมี cli ให้ใช้ แต่หลังจากติดตั้งด้วย pip install airflow  ไปแล้วปรากฏว่าไม่สามารถใช้คำสั่ง  airflow  ผ่าน terminal  ได้ เจอ  error  แบบนี้

ปัญหาเกิดจาก pip รุ่นใหม่ๆ บน Ubuntu เมื่อเรา pip install เพื่อติดตั้ง module ที่สามารถใช้งานผ่าน command line ตัว execute file มันจะไปอยู่ที่ $HOME/.local/bin ซึ่งบางครั้ง…

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