Month: May 2021

  • [บันทึกกันลืม] แก้ปัญหารัน Shell Script กับมือทุกอย่างสมบูรณ์ แต่พอใช้ cron แล้วพัง

    เรา “จำกันมา” ว่า การเขียน Shell Script นั้น ทำด้วยมืออย่างไร ก็เขียนลงไปในไฟล์ แล้วเอา Shell เช่น Bash ไป Run แล้วเอาไปตั้งในไฟล์ /etc/cron.d/mycron

    ปัญหาคือ

    บางทีเขียนด้วยภาษา Script เช่น python, R แล้วบางที ก็อยากจะเพิ่มภาษาไทยเข้าไป

    ตามสูตร ก็ต้องใช้คำสั่ง locale ตรวจสอบ

    LANG=en_US.UTF-8
    LANGUAGE=en_US.UTF-8
    LC_CTYPE="en_US.UTF-8"
    LC_NUMERIC="en_US.UTF-8"
    LC_TIME="en_US.UTF-8"
    LC_COLLATE="en_US.UTF-8"
    LC_MONETARY="en_US.UTF-8"
    LC_MESSAGES="en_US.UTF-8"
    LC_PAPER="en_US.UTF-8"
    LC_NAME="en_US.UTF-8"
    LC_ADDRESS="en_US.UTF-8"
    LC_TELEPHONE="en_US.UTF-8"
    LC_MEASUREMENT="en_US.UTF-8"
    LC_IDENTIFICATION="en_US.UTF-8"
    LC_ALL=en_US.UTF-8

    ก็จะพบว่า เป็น UTF-8 สวยงาม

    เขียนใส่ข้อมูลที่ประมวลผลมา ก็จะได้เป็นภาษาไทยสวยงาม

    สวัสดีชาวโลก

    แต่ พอเอาไปใส่ Shell Script ผลออกมาเป็นตัวอักษรบนตัวเลข ซึ่งนั่นคือ UTF-8 HEX code

    <U+0E2B><U+0E32><U+0E14><U+0E43><U+0E2B><U+0E0D><U+0E48>

    เหตุของปัญหา

    ก็ลองเอา คำสั่ง locale ไปใส่ใน Shell Script แล้วดูผลในไฟล์พบว่า

    LANG=
    LANGUAGE=
    LC_CTYPE="POSIX"
    LC_NUMERIC="POSIX"
    LC_TIME="POSIX"
    LC_COLLATE="POSIX"
    LC_MONETARY="POSIX"
    LC_MESSAGES="POSIX"
    LC_PAPER="POSIX"
    LC_NAME="POSIX"
    LC_ADDRESS="POSIX"
    LC_TELEPHONE="POSIX"
    LC_MEASUREMENT="POSIX"
    LC_IDENTIFICATION="POSIX"
    LC_ALL=

    สรุปคือ locale ตอนใช้ cron เป็น Default อย่างนี้ (พอดีทำงานบน docker ที่ base image มาจาก debian)

    วิธีแก้ไขปัญหา

    google สิครับ รออะไร ไปพบข้อมูลจาก https://www.logikdev.com/2010/02/02/locale-settings-for-your-cron-job/

    คือ ให้ใส่

    SHELL=/bin/bash
    LANG=en_US.UTF-8
    LANGUAGE=en
    LC_CTYPE=en_US.UTF-8

    ลงไปใน cron ด้วย อย่างเช่น

    SHELL=/bin/bash
    LANG=en_US.UTF-8
    LANGUAGE=en
    LC_CTYPE=en_US.UTF-8
    */3 * * * * /bin/bash /code/somescript.sh

    แล้วก็อย่าลืม

    /etc/init.d/cron restart

    เป็นอันเรียบร้อย

    หวังว่าจะมีประโยชน์ครับ

  • Youtube ~ Checks !!

    Hi ผู้อ่านทุกๆ ท่านนนนนนน ช่วงนี้เป็นช่วงการระบาดระลอกใหม่ ของ COVID-19 ซึ่งเรื่องที่ตามอย่างหลีกเลี่ยงไม่ได้เรื่องนึงเลยก็คือ การต้องทำงานแบบ WFH นั่นเอง !! (เฮ้อ ….)

    ส่วนตัวของผู้เขียนงานหลักๆ ในช่วงนี้ก็จะเป็นการอบรมออนไลน์ และสร้างสื่อวิดีโอ เพื่อแนะนำการใช้งานง่ายๆ ของระบบที่อยู่ภายใต้ความรับผิดชอบ โดยผู้เขียนเลือกจะที่ใช้ช่องทางการเผยแพร่วิดีโอ ผ่าน Youtube ซึ่งสะดวก และง่ายต่อการเข้าถึง

    ล่าสุด Youtube เหมือนจะมีเครื่องมือใหม่คือ Youtube Studio ที่มีส่วนเข้ามาช่วยตรวจสอบการละเมิดลิขสิทธิ์ของวิดีโอ ตั้งแต่ในส่วนขั้นตอนการอัปโหลด ก่อนการเผยแพร่ออกไป ซึ่ง … เฮ้ย มันโอเคเลยนะ ที่เราจะรู้ว่าวิดีโอเรามีการละเมิดลิขสิทธิ์ใดๆ หรือไม่ ไม่ใช่อัปโหลดแล้ว คนอื่นมาดูแล้ว แต่เพิ่งได้รับแจ้งว่าเนื้อหาภายในมีการละเมิดลิขสิทธิ์ !! (ตัวผู้เขียนเองก็เคยโดนอยู่บ่อยๆ แหะๆ)

    แล้วขั้นตอนการตรวจสอบทีว่าเพิ่มเข้ามาเนี่ย มันอยู่ตรงไหน ?

    งั้นไป ไปดูกันเลย …. ขอเริ่มต้นด้วยขั้นตอนหลักๆ ในการอัปโหลดวิดีโอ กันก่อนนะ ทุกคน

    ขั้นตอนที่ 1 เลือก “อัปโหลดวิดีโอ”

    ขั้นตอนที่ 2 เลือกวิดีโอที่ต้องการอัปโหลด

    ขั้นตอนที่ 3 อัปโหลดวิดีโอ เตรียมเผยแพร่

    ทุกคนสังเกตุ เห็นอะไรมั้ย …. นั่นไง ส่วนที่เขียนว่า “ตรวจสอบ” (Checks) เมื่อระบบประมวลผลเรียบร้อยแล้ว หากวิดีโอของเราที่อัปโหลดขึ้นไป ได้รับการตรวจสอบเบื้องต้น และพบว่าผ่าน ตรงส่วน “การตรวจสอบ” ดังกล่าวจะขึ้นเครื่องหมายถูก เหมือนตัวอย่างในภาพ จากนั้นให้เรากดปุ่ม “ถัดไป

    เมื่อเราคลิกมาจนถึงส่วนของการตรวจสอบ ภายในก็จะมีข้อความบอกเราถึงรายละเอียดในการตรวจสอบลิขสิทธิ์ พบ/ไม่พบปัญหา และเราก็ยังสามารถคลิก “ดูข้อมูลเพิ่มเติม” เพื่อศึกษารายละเอียดได้มากยิ่งขึ้นด้วยนะ

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

    ข้อดี ของเจ้าตัวเครื่องมือใหม่นี้ จะช่วยให้เราๆ หรือชาว youtuber, creator ได้มีโอกาสแก้ปัญหาในวิดีโอของเราก่อนที่จะเข้าสู่ขั้นตอนการเผยแพร่ จะแสดงให้เราเห็นรายละเอียดของปัญหา และผลกระทบที่จะมีตามมาได้ หรือง่ายๆ เลย Checks จะช่วยปกป้องตัวเราให้ไม่ต้องไปเผชิญกับปัญหาการร้องเรียนการละเมิดลิขสิทธิ์ด้วยมิได้ตั้งใจนั่นเอง

    ผู้เขียนหวังว่า blog สั้นๆ ที่ได้นำมาเล่าสู่กันฟังนี้จะช่วยให้ผู้อ่านหลายๆ ท่าน ได้รับรู้ข้อมูล และนำไปใช้ประโยชน์ได้ไม่มากก็น้อยแหละเนอะ

    ขอบคุณแหล่งที่มา : youtube.com มานะที่นี้ด้วยแง๊บบบบ

  • Chrome ~ Live Caption

    กราบสวัสดีคุณผู้อ่านทุกๆ ท่านนนน … blog วันนี้ ผู้เขียนจะขอว่าด้วยเรื่องของ Google Chrome Live Caption !!

    คาดว่าหลายๆ ท่านอาจจะเคยเจอปัญหาเช่นเดียวกับผู้เขียน เช่น เมื่อเราต้องการดูข้อมูลวิธีการอะไรสักอย่างนึง เราก็จะ Search google เพื่อหาข้อมูล บ่อยครั้งที่ข้อมูลที่เราได้จะอยู่ในรูปแบบของวิดีโอ ซึ่งมีผู้รู้หลายๆ ท่านมาแชร์เอาไว้

    และก็บ่อยครั้งอีกเช่นเดียวกัน ที่ความรู้เหล่านั้นอยู่ในรูปแบบภาษาอังกฤษ (ซึ่งทักษะภาษาอังกฤษของผู้เขียนก็ … นะ T T)

    ปัญหาของผู้เขียนก็คือ ฟังไม่ทัน ฟังไม่เข้าใจ เค้าพูดอะไร !! 55+ ดังนั้นผู้เขียนจึงหาข้อมูล หาวิธีการต่างๆ ที่จะช่วยให้ตัวเองสามารถเข้าใจในข้อมูลเหล่านั้นได้เพิ่มมากขึ้น ในระยะเวลาที่จำกัด ค้นไปค้นมา นั่นแน่ … ก็มาเจอกับ Feature ใหม่ของ Google Chrome

    ที่มีชื่อว่า Live Caption นั่นเอง

    Live Caption บน Google Chrome แปลง่ายๆ เลยก็คือ มันจะช่วยขึ้น Subtitle ให้เราสามารถอ่านตามไปได้ และสามารถใช้งานได้ดีกับวิดีโอบน youtube หรือแม้กระทั่ง Podcast (แต่ปัจจุบันยังรองรับแค่ภาษาอังกฤษ เท่านั้นนะ)

    คำถามถัดมา แล้วเราจะทำยังไงให้ Google Chrome ของเรา แสดง Live Caption ได้ละ … ไป ไปเริ่มตั้งค่ากันเลย

    step 1 : เปิด Browser google chrome ขึ้นมาก่อน จากนั้นไปที่จุด 3 จุด มุมขวาบนของ Browser —> เลือก Settings

    step 2 : เลือกเมนู Advance

    step 3 : เลือก Accessibility

    step 4 : สุดท้ายเลือก on คำสั่ง live caption ตามในรูปเล้ยยยย

    เมื่อเราตั้งค่าเสร็จเรียบร้อยแล้ว ก็มาดูผลลัพธ์กัน ว่าจะเป็นยังไง หน้าตาที่ได้ก็ประมาณตามวิดีโอตัวอย่างด้านล่างนี้นะ

    จริงๆ แล้วจากที่หาข้อมูลพบว่า Feature Live Caption ตัวนี้เนี่ย เค้าออกแบบมาเพื่อสนับสนุนผู้มีปัญหาทางการได้ยิน แต่เอาจริงๆ นะ ผู้เขียนมองว่ามันมีประโยชน์ไม่น้อยเลยกับคนทั่วไป ถึงแม้ตอนนี้จะยังคงรองรับเพียงแค่ภาษาอังกฤษ แต่นั่นผู้เขียนก็มองว่ามันดีมากๆ แล้ว แถมยังสามารถใช้ได้ทั้งการดูวิดีโอแบบออนไลน์ และ ออฟไลน์ เลยด้วย ดีมากจริงๆ

    ยังไงก็แล้วแต่ ผู้เขียนก็หวังเหมือนเดิมอีกเช่นเคย หวังว่า blog นี้จะยังคงมีประโยชน์กับหลายๆ คน ไม่มากก็น้อย แนะนำให้ลองไปใช้กันดูนะทุกคน

    ขอบคุณแหล่งที่มา : ข่าวไอทีใน https://www.techhub.in.th/ ไว้น่ะที่นี้แง๊บบบบ

  • สร้างไฟล์ PDF จาก Google sheet ที่ใส่รูปได้ ด้วย Library PdfService

    สมมติเรามีแบบสอบถามที่เก็บรูปภาพของผู้กรอกด้วย และเราต้องการให้มัน Gen ข้อมูลที่กรอกเป็น pdf เก็บไว้ แนว ๆ ทำเป็นใบสมัครออกมา มาดูขั้นตอนวิธีทำกันเลย บอกเลยว่าไม่ยาก!!! เริ่มกันเลย

    1. ไปที่ Google Drive ของเรา สร้าง Folder จัดเก็บงาน ในที่นี่ชื่อ PDF Test

    2.สร้าง Form ขึ้นมา 1 form เก็บข้อมูล ดังรูป ชื่อ สกุล อีเมล เบอร์โทร รูป (ทำเป็นอัปโหลดไฟล์)

    3.คลิกแสดงตัวอย่างที่ลูกตา แล้วลองใส่ข้อมูลทดสอบ

    4.ดูตัวอย่างข้อมูลที่แท็บการตอบกลับ

    5.คลิกปุ่ม สร้างสเปรตชีต จะเห็นข้อมูลตัวอย่างที่เราได้กรอกแบบฟอร์มเข้าไป

    จากนั้นนำข้อมูลนี้ไปทำ pdf ได้อย่างไร

    1.ให้ไปที่เมนูเครื่องมือ > โปรแกรมแก้ไขสคริปต์ > ทรัพยากร > ไลบรารี ที่ Add a library ให้ใส่ 1iePjnglUzelAuJJb-QykRcUUWYBSKiNGUWVljnNe03G9zWzSUGIRWLXa แล้วกดปุ่มเพิ่ม

    2.เราจะเห็น PdfService ให้ระบุเป็น Version ล่าสุด จากนั้นกดปุ่ม บันทึก

    ในที่นี้จะขอใช้ google slide เป็น Templete ในการออก PDF

    1.กลับไปที่ Google drive ที่ folder ที่เราได้สร้างไว้คือ PDF Test ให้คลิกขวา > Google สไลด์

    2. ตั้งค่าหน้า slide เป็นแนวตั้ง A4 ไปที่ ไฟล์ > ตั้งค่าหน้ากระดาษ > กำหนดเอง 21 * 29.7 cm

    3.เราต้องการออก PDF ที่เก็บรูปภาพด้วย เพราะมีการตอบรูปภาพเข้ามา ไปที่แทรก > รูปภาพ > อัปโหลดจากคอมพิวเตอร์ จะได้เป็นรูปที่เป็นแม่แบบ เราก็จัดวางตามที่เราต้องการว่าจะให้วางไว้ตรงส่วนไหน ขนาดกว้าง ยาวเท่าไหร่แล้วแต่เรากำหนด

    4.จากนั้นคลิกที่กล่องข้อความ สร้างตามรูป โดยในปีกกา {} ต้องเป็นชื่อเดียวกับฟิลด์ใน google sheet

    5.จากนั้นคลิกที่รูป ขวา > ข้อความแสดงแทน > ที่ชื่อเรื่องใส่ชื่อฟิลด์ที่ตรงกับช่องที่มีรูปภาพตามใน google sheet จากตัวอย่างในที่นี้จะเป็นคำว่า “รูปภาพ” จากนั้นคลิกปุ่มตกลง

    7. ไปที่ Google drive สร้าง folder ใหม่อีกอัน ซึ่งจะให้ไฟล์ PDF ถูกจัดเก็บเข้ามาในนี้ และ folder ที่อัปโหลดรูปในแบบสอบถาม PDF Test (File responses) จะต้องแชร์ folder นี้ด้วย (คลิกขวา แชร์ ทุกคนที่มีลิงค์) ไม่อย่างนั้น script จะ error

    ไปที่ Google drive สร้าง folder ใหม่อีกอัน ซึ่งจะให้ไฟล์ PDF จะถูกเก็บเข้ามาในนี้ และ folder ที่อัปโหลดรูปในแบบสอบถามจะให้มาอยู่ใน folder PDF Test ที่เราได้สร้างไว้ตั้งแต่ตอนแรกสุด จะต้องแชร์ด้วย folder นี้ (คลิกขวา แชร์ ทุกคนที่มีลิงค์) ไม่อย่างไร script จะ error

    จากนั้นเรามาเขียน code กันเล็กน้อย

    จากรูป

    1.เป็น ID ของ google form ให้คัดลอกมาหลัง /d จนก่อนถึง /edit

    2.เป็น ID ของ google slide ให้คัดลอกมาหลัง /d จนก่อนถึง /edit

    3.เป็นชื่อ folder ที่จะเก็บไฟล์ PDF ที่ google สร้างอัตโนมัติให้เมื่อรัน code

    4.ชื่อของแผ่นงานใน google form

    5.ชื่อฟิลด์ที่เก็บรูปภาพตามใน google sheet ของเราใช้คำว่า “รูปภาพ”

    6.ต้องการให้ไฟล์ PDF แต่ละไฟล์มีชื่อว่าอะไร ในที่นี่ให้แสดงฟิลด์ชื่อและสกุล (ใส่ให้ตรงกับฟิลด์ที่เรากำหนดไว้) เสร็จแล้วอย่าลืมกดปุ่ม บันทึก

                จากนั้นมารันดูกันว่ามันจะสร้าง PDF ให้เรายังไง กดปุ่ม Play > ตรวจสอบสิทธิ์ > คลิกที่อีเมลของเรา > ขั้นสูง > ไปที่ PDF Test(ไม่ปลอดภัย) > อนุญาต จะแสดงข้อความว่า “Running function runPDF”

                รันผ่านเรียบร้อยดูจากบันทึกการดำเนินการด้านล่าง จากนั้นเราไปดู folder PDF-test กันเลย ชื่อไฟล์จะตามที่เราให้ดึงฟิลด์ชื่อสกุล

                เมื่อคลิกดูก็จะได้ไฟล์ PDF ที่มีข้อมูลตาม Google slide ที่เราได้ทำไว้ ดังรูป

    ลองกรอกข้อมูลเพิ่มอีกสักคน แล้วรัน script อีกครั้ง จากนั้นไปดูผลลัพธ์กัน

    เราสามารถสร้าง Trigger ให้มันทำงานอัตโนมัติ หรือสร้างเป็นปุ่มที่เรียก function นี้ได้ค่ะ