อ่านข้อมูลจาก 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 เรียบร้อยแล้วลองรันใหม่ดูค่ะ

Read More »

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 คลิกหัวข้อ Network ซึ่งในครั้งแรกจะไม่สามารถดูได้ว่าใช้ http/2 แล้วหรือไม่ ให้คลิกขวาดังรูป แล้วเลือก Protocol จะได้เป็น จะเห็น http/1.1 ในช่อง Protocol ถ้าเป็น http/2 จะได้ดังภาพ ขั้นตอนต่อไปนี้ทำบน Ubuntu 20.04.1 อาจใช้ได้กับ 18.04.x ด้วยเช่นกัน เริ่มด้วยการเปิด module ของ apache2 ที่ชื่อ http2 ด้วยคำสั่ง เมื่อตรวจสอบแฟ้ม /etc/apache2/mods-enabled/http2.conf (ด้วย editor ที่ชื่นชอบ) จะพบว่ามีข้อความต่อไปนี้อยู่แล้ว โดยปกติ Http/1 จะถูกเรียกใช้ก่อนเสมอ เว้นแต่ว่า web browser นั้นจะรองรับ http/2 แต่เราต้องการ http/2 ถูกเลือกก่อนจึงต้องกำหนดตามนั้น แต่ web browser ก็มีการเลือก Protocol เองด้วยเพื่อเป็นการบังคับให้เลือก ตามลำดับของ server ให้ใส่ข้อความต่อไปนี้เพิ่มลงไป *** จากการทดสอบพบว่า web browser สมัยใหม่เลือก http/2 ก่อนอยู่แล้ว ไม่จำเป็นต้องใส่ก็ได้ เพราะงั้นแค่เปิดดูแล้วก็ออกจากแฟ้ม รีสตาร์ท apache2 ด้วยคำสั่ง ตรวจสอบว่า เป็น http/2 แล้วหรือไม่ด้วยคำสั่ง ได้ผลดังภาพ แปลว่า http/2 ทำงานแล้ว ทีนี้เว็บเรามันทำด้วย mod_php ต้องเปลี่ยนมาใช้ PHP-FPM ติดตั้ง php7.4-fpm เพิ่มด้วยคำสั่ง ปิดการใช้งาน mod_php ด้วยคำสั่ง ปิดการใช้งาน apache mpm_prefork ด้วยคำสั่ง หลังจากนั้นเปิด การทำงานของ mpm_event, proxy_fcgi และ setenvif เปิดการทำงานของ php7.4-fpm ด้วยคำสั่ง ให้ php7.4-fpm ทำงานทุกครั้งที่รีสตาร์ท เปิดการทำงานของ php7.4-fpm ใน apache2 เริ่มการทำงานของ apache2 ใหม่ ทดสอบว่าเป็น http/2 แล้วด้วยคำสั่ง ได้ผลดังภาพ จริงๆ ตรวจสอบด้วย web browser ก็ได้ แต่อยากอวด command line จบขอให้สนุก อ้างอิง https://httpd.apache.org/docs/2.4/howto/http2.html

Read More »

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

สืบเนื่องจากเมื่อ 2-3 เดือนก่อน มีโอกาสได้ทำแบบสอบถาม เก็บข้อมูลนักศึกษา แล้วนักศึกษากรอกข้อมูลมาซ้ำ ๆ กันหลายคน และเราจะเอาแค่ข้อมูลล่าสุดเท่านั้น ทำไงกันดีนะ….. ในเมื่อแบบสอบถาม export ออกมาเป็น excel ได้ เราก็มาลองดูว่าทำไงได้บ้าง เล่นไปเล่นมา เฮ้ย ง่ายจุง ได้ข้อมูลตามต้องการด้วยสิ มาดูกัน จากภาพ เราต้องทำการ Sort รหัสนักศึกษาและ Timestamp ล่าสุด สุ่มดูคร่าว ๆ รหัสนักศึกษา 6110610025 มีรายการซ้ำ เมื่อจัดการข้อมูลซ้ำและให้เหลือเฉพาะข้อมูลล่าสุด ต้องเป็นแถวที่ 42 จากนั้นคลิกแท็บ Data –> Remove Duplicates เลือกเลือกเฉพาะ รหัสนักศึกษา ซึ่งมันซ้ำกันอยู่ เมื่อเรียบร้อยแล้วจะแสดง Dialog แจ้งบอก มี 28 รายการที่ซ้ำและได้ลบออกไปแล้ว 165 รายการที่ไม่ซ้ำ สุ่มดู รหัส 6110610025 จะพบแค่รายการล่าสุดเท่านั้น เป็นวิธีที่ง่ายมาก ลองนำไปใช้กันดูนะคะ แล้วพบกันใหม่ค่ะ…..

Read More »

Robot Framework Puppeteer

Robot Framework Puppeteer คืออะไร เป็น Library ที่ทำมาครอบ Puppeteer เพื่อให้ Robot framework ใช้งานได้ง่าย โดย Keyword ต่างๆจะเหมือนกับการใช้งาน Selenium Library ทำให้ใครที่ใช้งาน Selenium Library อยู่แล้วสามารถปรับตัว รวมไปจนถึง การเปลี่ยนมาใช้ Puppeteer ทำได้ง่ายเลยค่ะ และหมดปัญหาการที่เราต้องมาคอยอัพเดต Web driver อยู่ตลอด ๆ การติดตั้งง่ายมาก ๆ ดูให้ทันหล่ะ 555 รัน Command เดียวเลยจบ ไม่ต้องโหลด Chrome driver หรือ Setup Path เพิ่มเติมให้ปวดหัว เปิด Command line มาเลยค่ะ แล้วพิมพ์คำสั่ง pip install –upgrade robotframework-puppeteerlibrary การใช้งาน เราลองมารัน code เดิมที่เขียนไว้กันดูดีกว่า (selenium2library) อ้าวเฮ้ย!!! Error ซะงั้น Web driver ไม่ support ต้องอัพเดตอีกแล้ว งั้นขอไปอัพเดตแปปนึงนะ ไม่ขอเล่าถึงการอัพเดตแล้วนะ เคยเล่าไว้ตอนนึงแล้ว ไปลองหาอ่านกันดู อิอิ หลังจากอัพเดตแล้วมาลองรันอีกรอบ เปลี่ยนที่ Setting จาก Selenium2Library เป็น PuppeteerLibrary จากนั้นลองรันดู เปรียบเทียบความเร็วในการประมวลผลระหว่างใช้ Selenium2Library กับ PuppeteerLibraryรูปแรกจะเป็นการใช้ Selenium2Library รูปถัดไปจะเป็น PuppeteerLibrary จะเห็นได้ว่า PuppeteerLibrary ทำงานได้เร็วกว่า นี่ขนาดรันคำสั่งขนาดน้อย ๆ ไว้ลองกับคำสั่งที่ซับซ้อนแล้วจะมาเล่าให้ฟังค่ะ

Read More »