Month: October 2020

  • อ่านข้อมูลจาก google sheet ด้วย API Service

    เมื่อมีการเก็บข้อมูลแบบสอบถาม ใน google form แล้วต้องการเอาข้อมูลจาก google sheet เพื่อมาตรวจสอบว่านักศึกษาหรือคนที่กรอกแบบสอบถามนั้น ได้ตอบแบบสอบถามไปรึยัง เพื่อนำมาตรวจสอบต่อกับเว็บไซต์หรือระบบของเราที่พัฒนาเอง เช่นนักศึกษาคนนี้กรอกแบบสอบถามรึยัง ถ้ากรอกแล้วจะสามารถดำเนินการต่อในระบบได้ ถ้ายังไม่กรอกต้องไปยังแบบสอบถามก่อน

    ขั้นแรก ต้องเปิดช่องทางการเข้าถึง Google sheet และกำหนดสิทธิ์ให้ Application ที่เราต้องการเข้าถึงข้อมูลนั้น ๆ ก่อน ไปยังลิงค์  https://console.developers.google.com/ และไปที่ปุ่มรูป Hamberger –> IAM & Admin –> Manage Resources

    จากนั้นจะแสดงหน้าจัดการ Resources ให้คลิกเมนู CREATE PROJECT จะแสดงดังรูป

    ตั้งชื่อ Project และคลิกปุ่ม CTREATE เมื่อสร้างแล้วจะแสดงดังรูป

    จากนั้นไปที่ ปุ่มรูป Hamberger –> APIs & Services –> Dashboard จะแสดงหน้า Dashboard ดังรูป

    ให้เลือกเมนู Credentials แล้วคลิกเมนู CREATE CREDENTIALS –> Service account

    สร้างเสร็จแล้วจะแสดงดังรูป จากนั้นคลิกแก้ไข

    จากนั้นคลิก ADD KEY –> Create new key จะเป็นการให้สิทธิ์การเข้าถึงให้กับผู้ใช้ กดปุ่ม CREATE

    จากนั้นแก้ไขไฟล์ JSON ที่โหลดมาให้เป็นชื่อ credentials.json และเปิดไฟล์ดังกล่าว copy ส่วนของ client_email ไว้ และนำไป set ให้เข้าถึง google sheet ที่เราต้องการ

    เปิด google sheet คลิกที่ปุ่ม Share และวาง client_email ที่เรา copy ไว้ จากนั้นคลิกปุ่ม Done

    เราก็จะมาเขียนโปรแกรมดึงข้อมูลกัน ในที่นี้ขอเขียน Python เนอะ เริ่มจาก install library ที่จำเป็นกันก่อนค่ะ เปิด command line แล้วรันคำสั่งนี้กันเลย

    pip install oauth2client gspread

    ที่แสดงในภาพข้างต้นแบบนั้น เนื่องจากเรา install ไปแล้วค่ะ ต่อไปเรามาเริ่ม code กันเล้ย อย่าลืม!! บันทึกไฟล์ไว้ที่เดียวกับ credentials.json เน้อ

    ที่สี่เหลี่ยมสีแดง คือ ลิงค์ของ google sheet ที่เราให้สิทธิ์การเข้าถึงไว้ เรียบร้อยมาลองรันกันดู

    ลืมให้ดูข้อมูลใน google sheet รูปด้านล่างเลยจ้า

    ถ้ารันไม่ได้ ให้ไปที่เมนู Library แล้วค้นหา API Library ของเรา แล้วคลิก Enable เรียบร้อยแล้วลองรันใหม่ดูค่ะ

  • How to apache2 HTTP/2

    • วันนี้อัพเกรตเครื่อง licensing เป็น 20.04.1 เลยมาดูว่ามีอะไรที่ควรเปลี่ยนอีกบ้าง ก็มี HTTP/2 นี่ละ ออกมาหลายปีแล้วยังไม่ได้เริ่มใช้งาน เท่าที่ตรวจสอบเว็บเซิร์ฟเวอร์ฝั่ง windows เป็น http/2 เกือบหมดแล้ว

    https://thanwa.medium.com/http-2-คืออะไร-แตกต่างจาก-http-1-1-อย่างไร-5dfb14e46ae4

    HTTP/1.1 และ HTTP/2 ต่างกันอย่างไร
    • เริ่มได้
    • ตรวจสอบก่อนว่า server ใช้ http/2 หรือไม่ทำได้โดยใช้ web developer tool บน web browser เช่น Firefox กด F12
    Web Developer

    คลิกหัวข้อ Network ซึ่งในครั้งแรกจะไม่สามารถดูได้ว่าใช้ http/2 แล้วหรือไม่ ให้คลิกขวาดังรูป แล้วเลือก Protocol

    Web Developer

    จะได้เป็น

    HTTP/1.1

    จะเห็น http/1.1 ในช่อง Protocol ถ้าเป็น http/2 จะได้ดังภาพ

    HTTP/2
    • ขั้นตอนต่อไปนี้ทำบน Ubuntu 20.04.1 อาจใช้ได้กับ 18.04.x ด้วยเช่นกัน
    • เริ่มด้วยการเปิด module ของ apache2 ที่ชื่อ http2 ด้วยคำสั่ง
    sudo a2enmod http2
    • เมื่อตรวจสอบแฟ้ม /etc/apache2/mods-enabled/http2.conf (ด้วย editor ที่ชื่นชอบ) จะพบว่ามีข้อความต่อไปนี้อยู่แล้ว
    Protocols h2 h2c http/1.1
    • โดยปกติ Http/1 จะถูกเรียกใช้ก่อนเสมอ เว้นแต่ว่า web browser นั้นจะรองรับ http/2 แต่เราต้องการ http/2 ถูกเลือกก่อนจึงต้องกำหนดตามนั้น
    • แต่ web browser ก็มีการเลือก Protocol เองด้วยเพื่อเป็นการบังคับให้เลือก ตามลำดับของ server ให้ใส่ข้อความต่อไปนี้เพิ่มลงไป
    ProtocolsHonorOrder On

    *** จากการทดสอบพบว่า web browser สมัยใหม่เลือก http/2 ก่อนอยู่แล้ว ไม่จำเป็นต้องใส่ก็ได้ เพราะงั้นแค่เปิดดูแล้วก็ออกจากแฟ้ม

    • รีสตาร์ท apache2 ด้วยคำสั่ง
    sudo systemctl restart apache2
    • ตรวจสอบว่า เป็น http/2 แล้วหรือไม่ด้วยคำสั่ง
    curl -I --http2 -s https://domain.com/ | grep HTTP

    ได้ผลดังภาพ

    curl

    แปลว่า http/2 ทำงานแล้ว

    • ทีนี้เว็บเรามันทำด้วย mod_php ต้องเปลี่ยนมาใช้ PHP-FPM
    • ติดตั้ง php7.4-fpm เพิ่มด้วยคำสั่ง
    sudo apt install -y php7.4-fpm
    • ปิดการใช้งาน mod_php ด้วยคำสั่ง
    sudo a2dismod php7.4
    • ปิดการใช้งาน apache mpm_prefork ด้วยคำสั่ง
    sudo a2dismod mpm_prefork
    • หลังจากนั้นเปิด การทำงานของ mpm_event, proxy_fcgi และ setenvif
    sudo a2enmod mpm_event proxy_fcgi setenvif
    • เปิดการทำงานของ php7.4-fpm ด้วยคำสั่ง
    sudo systemctl start php7.4-fpm
    • ให้ php7.4-fpm ทำงานทุกครั้งที่รีสตาร์ท
    sudo systemctl enable php7.4-fpm
    • เปิดการทำงานของ php7.4-fpm ใน apache2
    sudo a2enconf php7.4-fpm
    • เริ่มการทำงานของ apache2 ใหม่
    sudo systemctl restart apache2
    • ทดสอบว่าเป็น http/2 แล้วด้วยคำสั่ง
    curl -I --http2 -s https://domain.com/ | grep HTTP

    ได้ผลดังภาพ

    • จริงๆ ตรวจสอบด้วย web browser ก็ได้ แต่อยากอวด command line
    • จบขอให้สนุก

    อ้างอิง

    https://www.tecmint.com/enable-http2-in-apache-on-ubuntu/

    https://httpd.apache.org/docs/2.4/howto/http2.html

  • มาจัดการข้อมูลซ้ำ ๆ และเอาข้อมูลล่าสุดกัน ใน Excel

    สืบเนื่องจากเมื่อ 2-3 เดือนก่อน มีโอกาสได้ทำแบบสอบถาม เก็บข้อมูลนักศึกษา แล้วนักศึกษากรอกข้อมูลมาซ้ำ ๆ กันหลายคน และเราจะเอาแค่ข้อมูลล่าสุดเท่านั้น ทำไงกันดีนะ….. ในเมื่อแบบสอบถาม export ออกมาเป็น excel ได้ เราก็มาลองดูว่าทำไงได้บ้าง เล่นไปเล่นมา เฮ้ย ง่ายจุง ได้ข้อมูลตามต้องการด้วยสิ มาดูกัน

    จากภาพ เราต้องทำการ Sort รหัสนักศึกษาและ Timestamp ล่าสุด สุ่มดูคร่าว ๆ รหัสนักศึกษา 6110610025 มีรายการซ้ำ เมื่อจัดการข้อมูลซ้ำและให้เหลือเฉพาะข้อมูลล่าสุด ต้องเป็นแถวที่ 42

    จากนั้นคลิกแท็บ Data –> Remove Duplicates เลือกเลือกเฉพาะ รหัสนักศึกษา ซึ่งมันซ้ำกันอยู่ เมื่อเรียบร้อยแล้วจะแสดง Dialog แจ้งบอก

    มี 28 รายการที่ซ้ำและได้ลบออกไปแล้ว 165 รายการที่ไม่ซ้ำ สุ่มดู รหัส 6110610025 จะพบแค่รายการล่าสุดเท่านั้น

    เป็นวิธีที่ง่ายมาก ลองนำไปใช้กันดูนะคะ แล้วพบกันใหม่ค่ะ…..