Wednesday, August 28, 2019

มาลองสร้าง Web back end ด้วย Flask + Python กัน

แน่นอนว่าใครทำงานด้านเขียนโปรแกรมทางวิทยาศาสตร์สายต่างๆ ก็คงคุ้นเคยกับ python ดี แล้วถ้าต้องการเอา python ไปเขียน web back end ล่ะ ก็จะมี python web framework หลายๆตัวที่ใช้งานได้ เช่น django เป็นต้น

วันนี้เรามาลองเล่น python web framework ที่ชื่อว่า flask ดูกัน เค้าบอกว่าเล็กพริกขี้หนูนะตัวนี้

ก่อนอื่นถ้าอยากดูเอกสารรายละเอียดเกี่ยวกับการใช้งาน flask ไปดูได้ที่ https://flask.palletsprojects.com ผมว่าเค้าเขียนไว้ดีมาก

เอาล่ะ มาสรุปแบบคนขี้เกียจกันดีกว่า ว่าจะติดตั้ง flask ยังไง

  • ถ้ายังไม่มี python 3 ให้ติดตั้งก่อน
  • สร้าง Virtual environment สำหรับงาน web นี้ (การสร้าง virtual env นี้ก็มีประโยชน์คือเราจะสามารถติดตั้ง python package ที่เวอร์ชันต่างๆกัน สำหรับแต่ละ environment ได้)
    • สร้างโฟลเดอร์เอาไว้เก็บงาน web เช่น D:\web
    • เปิด command prompt และเข้าไปที่โฟลเดอร์ข้างต้น พิมพ์คำสั่ง
      python -m venv venv
    • คำสั่งข้างต้นจะสร้าง subfolder ชื่อ venv ซึ่งก็จะเป็นโฟลเดอร์ที่เอาไว้ติดตั้ง python package ด้วย
    • ทำการ activate virtual env. นี้ โดยใช้คำสั่ง
      D:\web\venv\Scripts\activate
      จะเห็นว่า command prompt มีชื่อ virtual env. อยู่ข้างหน้า เช่น <venv>D:\web
    • ติดตั้ง flask โดยพิมพ์
      pip install flask
      เสร็จแล้วจ้า
ต่อมา มาทดสอบกัน
  •  สร้างไฟล์ python เช่น D:\web\server.py
  • เขียนโค้ดตามนี้เลย
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

ถ้าจะรันไฟล์นี้ ก็จะใช้คำสั่ง
<venv>D:\web\set FLASK_APP=server.py

จากนั้นเราก็พร้อมสั่งให้ flask ประมวลผลไฟล์ server.py และทำตัวเองเป็น server ที่ port 5000 ด้วยคำสั่ง
<venv>D:\web\flask run

ถ้าไม่มีข้อความผิดพลาด เปิดเว็บแล้วเช็คที่ localhost:5000 ได้เลย

ที่เหลือลองไปเล่นกันต่อเองนะครับ

ลาเต้ช็อคโกแลต (Chocolatey) ร้อนๆจ้า

ดูจากหัวข้อแล้วน่าจะเกี่ยวกับของกิน แต่จริงๆแล้วไม่ใช่ครับ โพสไปอย่างงั้นแหละ

วันนี้ผมจะมาแนะนำ Software package manager สำหรับ Windows ชื่อว่า Chocolatey ซึ่งคนส่วนใหญ่น่าจะรู้จักดีแล้ว ถ้าเทียบกับระบบปฏิบัติการอื่น Chocolatey ก็คือ brew ใน mac หรือ apt-get ใน linux นั่นเองครับ

คำถามคือ มันจะมีประโยชน์อันใด ใน Windows ลงโปรแกรมง่ายจะตาย ดาวน์โหลดแล้วดับเบิลคลิก จากนั้นก็ Next next next... เป็นอันจบ

คำตอบก็คง
  • ใช้ลงโปรแกรมได้ง่ายแบบออนไลน์ (เฉพาะโปรแกรมที่ Chololatey เตรียมไว้ให้ แต่ก็มีมากอยู่นะ โดยเฉพาะสายนักพัฒนา ดูโปรแกรมทั้งหมดได้ที่ https://chocolatey.org/packages)
  • ลงโปรแกรมแล้ว อัพเดท หรือ ถอนการติดตั้งได้ง่าย
  • บางโปรแกรมลงแล้วไม่ต้องมานั่งกำหนด path เอง
  • มีการตรวจสอบความน่าเชื่อถือของโปรแกรมที่จะติดตั้ง
ตัวอย่างเช่น ถ้าเราต้องการติดตั้งซอฟต์แวร์เพื่อเขียน mobile app โดยใช้ react-native
วิธีปกติ ติดตั้ง JDK + set path, NodeJS, python2 (อันนี้ผมไม่แน่ใจว่าใช้ตอนไหน แต่ในเว็บต้นฉบับบอกมา) , Android-SDK (ถ้าต้องการ app สำหรับ Android) เป็นต้น

ถ้าใช้คำสั่งของ Chocolatey เราก็ทำได้ในบรรทัดเดียวเลย เท่ซะไม่มี (แต่เน็ตต้องดีนะครับ)
choco install jdk8 nodejs.install python2 android-sdk

แต่.... จะใช้งาน Chocolatey ก็ต้องรู้ข้อจำกัด นั่นคือ
  • โปรแกรมหรือ package ที่มีให้ อาจจะไม่ใช่เวอร์ชันล่าสุด แล้วแต่ community จะอัพเดท
  •  ไม่มีตัวติดตั้งโปรแกรมเก็บไว้ใช้
  • path หรือโฟลเดอร์ที่ติดตั้งโปรแกรมนั้น อาจจะไม่ใช้ path ที่เราชอบเสมอไปจ้า
เอาล่ะ ถ้าตัดสินใจอยากลอง ก็ไปติดตั้ง Chocolatey กันก่อนได้โดยดูวิธีการจาก https://chocolatey.org/install หรือผมสรุปแบบสั้นๆก็คือ
  1. เปิด command prompt แบบ Admin
  2. แปะคำสั่ง (ความจริงมันเป็นบรรทัดเดียว ถ้าใช้ไม่ได้ให้ไป copy จาก https://chocolatey.org/install นะ)
    @"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" 
    -NoProfile -InputFormat None -ExecutionPolicy Bypass 
    -Command "iex ((New-Object System.Net.WebClient).DownloadString
    ('https://chocolatey.org/install.ps1'))" 
    && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
รอจนสำเร็จจ้า
ที่เหลืออยากลงโปรแกรมเพิ่มอะไร ก็ไปหาได้ที่ https://chocolatey.org/packages เลย

ส่วนถ้าจะ update โปรแกรมก็แค่
choco update package
เช่น ถ้าต้องการ update JDK8 ให้เป็นตัวอัพเดทล่าสุดของรุ่น 8 ก็ใช้คำสั่ง
choco update jdk8

หรือถ้าจะ uninstall ก็ใช้
choco uninstall jdk8

ดูง่ายดี ลองไปทดลองใช้กันได้ครับ