Should Be Equal ใน Robot Framework

วันนี้จะมาทดลองใช้ Should Be Equal (การเปรียบเทียบ) ใน Robot framework กันค่ะ ก่อนจะถึงคำสั่งเปรียบเทียบ เราก็ต้องเขียน Test Case อื่น ๆ กันก่อน งั้นวันนี้จะเขียนแบ่ง Test Case ให้อ่านง่าย ๆ กันไปเลย เพื่อเพื่อน ๆ จะได้นำไปประยุกต์ใช้งานกันได้ค่ะ สิ่งที่ต้องใช้ในวันนี้ คือ Notpad++ หรือ Tool อื่น ๆ ที่เพื่อน ๆ ถนัด วันนี้เราจะใช้ Visual Studio Code กันค่ะ (เพราะเหนื่อยกับการรันผ่าน command line แล้ว) มาเริ่มกันเลยดีกว่า จะเห็นว่า เรามีการตั้งชื่อ Test Case ให้อ่านง่าย เพื่อจะให้รู้ว่าแต่ละขั้นเราทำอะไร ตอนเป็น Report จะได้ดูง่ายเข้าไปอีก ค่อนไปดู Report ตอนท้าย คำสั่งนี้จะตรวจสอบว่าค่าที่ได้ตรงกันมั๊ย จะเห็นว่าเราเขียน Test Case เป็นภาษาไทยได้นะเออ จากรูปเปรียบเทียบค่าจาก xpath ที่ locator h1 ตามคำสั่ง //h1[@class=”main-header”]  เท่ากับ “ROBOT FRAME WORK/” หรือไม่ Locator ที่กล่าวคือตำแหน่งตามรูปข้างบน คราวนี้เราลองปรับให้ ${expect} ไม่ใช่ค่าเดียวกับ locator ที่เราอ้างถึง จะเห็นได้ว่าที่ log console มีการแสดงผลในการเปรียบเทียบว่าไม่เท่ากัน ไปดู Report กันซะหน่อยว่าเป็นยังไง Report ก็ดูง่ายมากเลยเห็นมั๊ยหล่ะ ^_^

Read More »

อ่านข้อความจากภาพ ด้วย Tesseract-OCR

OCR หรือ Optical Character Recognition จริง ๆ ก็มีใช้กันมานานมากแล้ว แต่การใช้งานก็จะผูกติดกับ Hardware พอสมควร แต่ในปัจจุบัน เราสามารถใช้ความรู้ด้าน Machine Learning / Deep Learning เพื่อให้คอมพิวเตอร์เข้าใจภาพได้ และสามารถนำมาประกอบกับเป็น Software สำหรับใช้งานของตนเองได้ ในบทความนี้ ทดลองใช้ Tesseract-OCR พี่พัฒนาโดย Google อ่านภาพ เอกสารที่ Print จาก Computer เป็นกระดาษ -> มีการเซ็นต์ชื่อ -> นำกลับมา Scan อีกครั้ง *** มันเป็น Paperless ตรงไหน ? กฏหมาย Digital Signature ก็มีแล้วนะ *** เอาเป็นว่า ดูผลงาน อ๊ะ บางคนบอกว่า เคยใช้แล้ว แต่ทำไมไม่ได้ผลอย่างนี้หล่ะ (โดยเฉพาะ ภาษาไทย) อิอิ มันมีรายละเอียดพอสมควร ไว้มีเวลาจะมาเล่าให้ฟัง แต่แบบนี้ ต้องทำอะไรเพิ่มก่อน จึงจะอ่านได้ ผลก็พอจะอ่านได้ แต่ต้องทำอะไรเพิ่มก่อนจะให้ OCR อ่าน –> อันนี้คือยังไม่ทำอะไรเพิ่ม มันไม่มีคำว่า “ก็ง่าย ๆ” หรอก หึ หึ หึ

Read More »

วิธีใช้ Google Calendar เพื่อบันทึกปฏิบัติงาน และใช้ Google Sheets เพื่อรายงานผลการปฏิบัติงาน

บทความนี้ นำเสนอแนวทางที่ผมใช้ในการ “บันทึกการปฏิบัติงาน” และ “รายงานผลการปฏิบัติงาน” เพื่อนำไปกรอกในระบบ TOR ของมหาวิทยาลัยสงขลานครินทร์ เครื่องมือที่ใช้ Google Calendar Google Sheets Google Sheets Add-ons ชื่อ “Timesheet” Google Keep เป้าหมาย การบันทึกผลปฏิบัติงาน เพื่อ รายงานผลการปฏิบัติงานในระบบ TOR ระบบ TOR ของมหาวิทยาลัยสงขลานครินทร์ ผู้ปฏิบัติงาน จะต้องตกลงกับหัวหน้าฝ่าย ว่า รอบ TOR นี้ เราจะทำอะไร และมีเป้าหมายอย่างไรบ้าง เอาเป็นว่า … จะกำหนดเป็น “ภาระงาน” แบ่งเป็น 3 ด้าน ได้แก่1. งานประจำ2. งานเชิงพัฒนา/งานพิเศษ3. ผลงานอื่นๆ(ตามที่คณะกำหนด) ในแต่ละ หัวข้อใหญ่ ก็จะแจกแจงว่า ทำอะไร เป็นสัดส่วนเท่าไหร่ เช่น 1.1 5ส1.2 ประชุมติดตามงานของทีมงาน อะไรทำนองนั้น ซึ่ง นอกจากต้องทำงานในหน้าที่ ประชุม ๆ ตอบคำถาม แก้ไขปัญหา กิจกรรรม … ฯลฯ ก็ต้อง บันทึกว่า ทำอะไรลงไปบ้าง มีเอกสารอ้างอิง และ ต้องสามารถ ให้หัวหน้า (และคณะกรรมการประเมิน) สามารถเข้าไปดูได้ด้วย ขอยกตัวอย่าง หัวข้อ “ภาระงาน” ของผมใน TOR ปี 2562( TwT ) แล้วเราจะบันทึกผลการปฏิบัติงานอย่างไร ให้ ง่าย และสามารถ นำมากรอกใน TOR ได้ด้วย เริ่มจาก Google Keep เอาข้อหัวย่อย ของภาระงานข้างต้น มาสร้างเป็น Note ใหม่ใน Google Keep ตั้งหัวข้อว่า TOR 2562 (หรือใครอยากจะทำไว้ใช้ของ TOR 2563 ก็ค่อยลองทำดู) ต่อไป เราจะสร้าง Label ของแต่ละหัวข้อย่อย โดยการใส่ # ไว้ด้านหน้า หัวข้อย่อย เช่น 1.10 โครงการพัฒนาอะไรสักอย่าง เป็น[Update – สำหรับให้รายงานสวยงามยิ่งขึ้น แนะนำให้ Replace ” ” ด้วย “_”]#1.10_โครงการพัฒนาอะไรสักอย่าง พอใส่ # หน้า 1.10 แล้ว Google Keep จะขึ้น Popup ให้สร้าง Label “1.10” เราก็สร้างไว้ (มันมีเหตุผล ทำตามไปก่อน เดี๋ยวเล่าให้ฟัง) ทำจนครบทุกข้อ เราจะได้ Note ใน Google Keep อย่างนี้จากนั้น ให้คลิก รูป Pin เพื่อปักหมุดเอาไว้แล้วกดปุ่ม Close ด้านล่างได้เลย [Update: ใน Google Keep สามารถเอาภาพ เช่น เกณฑ์การประเมิน การพิจารณาว่าเรื่องนี้ เข้าในส่วน งานประจำ หรือ งานเชิงพัฒนา เพื่อประกอบการตัดสินใจได้ จะได้ไม่ต้องไปค้นหาหลาย ๆ ที่] บันทึกการปฏิบัติงานใน Google Calendar ใน Google Calendar จะมี Panel ด้านขวามือ จะเห็น Icon ของ Google Keep สีเหลือง ๆ คลิกสิครับ รออะไร เราก็จะเห็น Note ของ Google Keep ที่เรา Pin ไว้ตะกี้ อยู่บนสุด

Read More »

วิธีการจองทรัพยากร (ห้องประชุม/รถ/Projector/etc…) ใน Calendar ของ G Suite for Education

ข้อแตกต่างระหว่าง Calendar ของ G Suite for Education กับ Free Gmail สร้าง Event เพิ่มผู้เข้าร่วมประชุม และ จองทรัพยากร คลิกในช่อง วันบนปฏิทิน ที่เราต้องการนัดประชุม กรอกหัวข้อการประชุม แล้ว ใส่รายชื่อ ผู้เข้าร่วมประชุมและเลือกห้องประชุม คลิกที่ See guest availability เพื่อดูว่า ว่างพร้อมกันหรือไม่ ทั้งผู้เข้าร่วมประชุม และ ห้อง หากบางคนไม่ว่างในเวลาที่กำหนด สามารถคลิก Suggested times เพื่อให้ Google Calendar หาเวลาที่ว่างพร้อมกันหมดได้ ใส่คำอธิบาย หัวข้อการประชุมก็ได้ เมื่อกดปุ่ม Save ระบบจะแจ้งว่า ให้ส่ง Email ไปแจ้งผู้เข้าร่วมประชุมหรือไม่ แนะนำว่าควรคลิก Send เพิ่มเติม เมื่อคลิกเข้ามาดูรายละเอียดการนัดประชุม ใน G Suite for Education มีบริการ Hangouts Meet ให้ในตัว (นัดหมายด้วย Free Gmail จะสร้างห้องเองไม่ได้ ทำได้แต่ Join เข้ามา) ซึ่งทำได้ทั้ง Video Call หรือ จะ Phone In ก็ได้ (อันนี้ไม่เคยลอง) ดูได้ว่า ใครตอบรับ/ปฏิเสธ/ยังไม่ตอบ (เค้าเรียกว่า RSVP – Répondez s’il vous plaît – Please respond) มีแจ้งเตือนก่อนการประชุมจะเริ่ม ตั้งค่าได้ว่าต้องการก่อนเวลานานขนาดไหน (ในตัวอย่างตั้งไว้ 10 นาที) Free Gmail ทำได้แค่นี้ ต่อไป เป็นตัวอย่างนัดกับผู้ที่มีตารางนัดหมายแน่น ๆและแสดงการจอง ห้องประชุม และ Projector เลือก จำนวนชั่วโมง (ในที่นี้ 1 ชั่วโมง) แล้วเลื่อนหาช่องที่ว่างตรงกันได้ การทำรายงานการใช้ทรัพยาการ (ยกตัวอย่างห้องประชุม) คลิกที่ รูปแว่นขยาย เลือก ปฏิทินของทรัพยากร (ในที่ คือห้องประชุม) ที่ต้องการดู แล้วเลือก ช่วงเวลาที่จะทำรายงาน (ในที่นี้ เป็นตัวอย่างการทำรายงานการใช้ ห้องประชุม ตั้งแต่ 1 พฤษภาคม – 31 พฤษภาคม) แล้ว คลิก ปุ่ม Search ก็จะได้รายงานอย่างนี้ หวังว่าจะเป็นประโยขน์ครับ

Read More »

ELK #08 Oracle Audit Trail

ต่อจา ELK #07 – Logstash คราวนี้ มาใช้งานจริง โดยใช้ ELK เพื่อเก็บ Log ของ Oracle Audit Trail Oracle Audit Trail บน Database Server เก็บ Log ในรูปแบบ XML โดยแต่ละ Event จะมี tag <AuditRecord> … </AuditRecord> คุมอยู่ ที่แตกต่างจาก Log ทั่วไปคือ ในแต่ละ Event จะมีเครื่องหมาย CRLF (การขึ้นบรรทัดใหม่) เป็นระยะ ๆ ออกแบบให้ Logstash รับข้อมูล (Input Plugin) จาก TCP Port 5515 ซึ่งต้องใช้ Codec ในการรวบ Multiline ในแต่ละ Event เข้าด้วยกัน โดยหา pattern “<AuditRecord>” เป็นจุดเริ่มต้น ส่วนบรรทัดที่ไม่เจอ Pattern ดังกล่าวนั้นการตั้งค่า negate => “true” เป็นการบอกว่า “ให้ดำเนินการต่อไป” โดยจะเอาบรรทัดที่ตามมาจากนี้ ต่อท้าย ด้วยการตั้งค่า what=> “previous” ในส่วนของ Filter Plugin จะอ่านค่าจาก “message” และ ส่งสิ่งที่ถอดจาก XML ได้ ไปยัง “doc” ในส่วของ Output Plugin จะส่งออกไปยัง ElasticSearch ที่ TCP port 9200 ดัง Configuration ต่อไปนี้ จากนั้น ทาง Oracle Database Server ทำการเปิด Audit Trail แล้วเขียน Log ลงไฟล์ แล้วเขียน Cron เพื่อ Netcat ไฟล์ส่งมาให้ Lostash ที่เปิด Port TCP 5515 ไว้รอรับ ผลที่ได้คือ โดยวิธีนี้ จะเป็นการนำ Log ซึ่งจากเดิมเป็น Text Format นำมาเป็น NoSQL ได้ ซึ่งจะสามารถ Query ข้อมูลได้ง่ายยิ่งขึ้น หวังว่าจะเป็นประโยชน์ครับ

Read More »