[บันทึกกันลืม] วิธีแก้ปัญหาข้อมูลประเภท timedelta64[ns] ใน Pandas ไม่สามารถเขียนลงฐานข้อมูล field ที่เป็น Time ได้

เหตุ: ผลคือ: ซึ่ง ref_visit_time นั้น ใน MySQL/MariaDB ใช้ชนิดเป็น Time เช่น 08:00:00 หมายถึง 8 นาฬิกา อะไรทำนองนั้น ปัญหา: อยู่ที่ตอนเอา Dataframe นี้ ไป Write ใส่อีก Table นึง ซึ่ง table2 นั้น มีโครงสร้างเหมือนกับ table1 เลย โดยเฉพาะ ref_visit_time มีชนิดเป็น Time เช่นกัน แต่ถ้า run code นี้จะได้ Error/Warning ว่า เหตุเพราะ แทนที่จะเก็บเป็น Time มันดันเปลี่ยนเป็น Integer ที่เป็นจำนวน Nanosecond แทนนั่นเอง วิธีแก้ไข ต้องตรวจสอบว่า มี column ใน destination table มีชนิดเป็น Time (timedelta64[ns]) ให้เอาไปบวกกับเวลาเริ่มต้น แล้ว เปลี่ยนชนิดเป็น Time แทน ดังนี้ เราก็จะได้ข้อมูลที่ถูกต้องกลับมา ตามนั้นครับ

Read More »

[บันทึกกันลืม] วิธีย้ายทั้ง Folder จาก Google Drive ไปยัง Shared Drives ขององค์กร

จากที่ Google Apps for Education หรือ Google Workspace for Education ปัจจุบัน ซึ่งจากเดิม ชูนโยบาย Unlimited Storage มาเป็น 100 GB ต่อ คน และ 100 TB ต่อ องค์กร — เพียงพอ ต่อการใช้งานเพื่อการศึกษาจริง ๆ ถ้าจัดการให้ดี เหตุแห่งการเปลี่ยนแปลง ผมว่า ก็เรา ๆ นี่แหล่ะ ใช้พื้นที่เค้าแบบไม่ใช่เพื่อการศึกษา ต้องยอมรับก่อน แล้วเรามาแก้ไขกัน มีบางคนในองค์กร เอาไปเก็บไฟล์หนัง ไม่เกี่ยวกับการศึกษา จริงหรือไม่ รู้อยู่แก่ใจ, เรื่องนี้ Super Admin ขององค์กรตรวจสอบได้ ด้วย Google Vault จัดการให้เด็ดขาด (Super Admin รายงานได้ ผู้มีอำนาจต้องตัดสินใจ … กล้าไม๊ ค่อยมาดูกัน) บางองค์กรไม่มีมาตรการควบคุมบัญชี สร้างมากเกินความจำเป็น แล้วบางคนเอาบัญชีไปขายใน Lazada, Shopee จริงไม่จริง รู้อยู่แก่ใจ บางคน เอาแต่ประโยชน์ส่วนตน ได้สิทธิ์ แต่เอาพื้นที่ Shared Drives ไปปล่อยให้ เว็บโป๊ เว็บหนังซีรี่ ใช้พื้นที่ซะงั้น ก็เป็นธรรมดา Google ลงทุนทรัพยากร แต่ไม่ได้ใช้ให้ถูกตามวัตถุประสงค์ ก็ต้องมีการควบคุม งานส่วนตัว ใช้ My Drive, งานของหน่วยงาน ใช้ Shared Drives จบ (บางคนบอกว่า ย้ายไป Microsoft OneDrive ก็ได้วะ 5TB … ทำเหมือนเดิม เดี๋ยวก็จะได้ผลเหมือนเดิม) ผมได้เล่าไว้บ้างแล้ว เกี่ยวกับการใช้พื้นที่ของ Shared Drives มาดูวิธีแก้ปัญหากันดีกว่า จากเดิม คนในสำนักงานก็จะชอบใช้ My Drive แล้ว Share ให้คนในหน่วยงานใช้กัน ก็เข้าใจได้ เพราะตอนแรกไม่มี Shared Drives เคยทำอย่างไรก็จะทำอย่างนั้น ไม่ชอบเปลี่ยนแปลง ถึงเวลาต้องเปลี่ยนแล้ว คือ งานส่วนรวม เอาไปเก็บใน Shared Drive เอาหล่ะ สมมุติว่า เราเคยใช้ Folder หนึ่ง เก็บสารพัดสิ่งที่เกี่ยวกับงานจริง ๆ แต่มันอยู่ใน My Drive (พื้นที่ส่วนตัว) สมมุติใช้ Folder ชื่อ parent ในนั้นมี Sub folder ย่อย และมีไฟล์ย่อย ๆ ซ้อน ๆ ลงไปจำนวนมาก แนะนำว่า แต่ละหน่วยงาน เช่น ระดับภาควิชา หรือ ระดับหน่วยงาน ไปสร้างพื้นที่ไว้บน Shared Drives ปัญหาคือ … การย้ายไฟล์จาก​ Google Drives ไปยัง Shared Drives นั้น ทำได้ในระดับไฟล์ ไม่สามารถย้ายทั้ง Folder ได้ ใครใคร่ย้าย ก็เลือกไฟล์ แล้วคลิกขวา Move to ไป แต่กรณี ของผมมีไฟล์ ที่สร้างจากอุปกรณ์ ขนาด 400-800 kb จำนวน …. 60 GB คิดคร่าว ๆ 2 ไฟล์ เป็น 1 MB ก็ราว ๆ 60 x 1024 x 2 = 122,880

Read More »

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

เรา “จำกันมา” ว่า การเขียน Shell Script นั้น ทำด้วยมืออย่างไร ก็เขียนลงไปในไฟล์ แล้วเอา Shell เช่น Bash ไป Run แล้วเอาไปตั้งในไฟล์ /etc/cron.d/mycron ปัญหาคือ บางทีเขียนด้วยภาษา Script เช่น python, R แล้วบางที ก็อยากจะเพิ่มภาษาไทยเข้าไป ตามสูตร ก็ต้องใช้คำสั่ง locale ตรวจสอบ ก็จะพบว่า เป็น UTF-8 สวยงาม เขียนใส่ข้อมูลที่ประมวลผลมา ก็จะได้เป็นภาษาไทยสวยงาม แต่ พอเอาไปใส่ Shell Script ผลออกมาเป็นตัวอักษรบนตัวเลข ซึ่งนั่นคือ UTF-8 HEX code เหตุของปัญหา ก็ลองเอา คำสั่ง locale ไปใส่ใน Shell Script แล้วดูผลในไฟล์พบว่า สรุปคือ locale ตอนใช้ cron เป็น Default อย่างนี้ (พอดีทำงานบน docker ที่ base image มาจาก debian) วิธีแก้ไขปัญหา google สิครับ รออะไร ไปพบข้อมูลจาก https://www.logikdev.com/2010/02/02/locale-settings-for-your-cron-job/ คือ ให้ใส่ ลงไปใน cron ด้วย อย่างเช่น แล้วก็อย่าลืม เป็นอันเรียบร้อย หวังว่าจะมีประโยชน์ครับ

Read More »

[บันทึกกันลืม] วิธีซ่อน choice ที่ไม่จำเป็น ด้วย jQuery

ปัญหามีอยู่ว่า ในการเขียน Web Application ด้วย django แบบฟอร์มที่ซับซ้อนหน่อย จะมีประมาณว่า ถ้าเลือกข้อนี้ ให้ขึ้นคำถามอีกข้อขึ้นมาถาม เช่น ถ้าเลือกข้อ “รพ.สงขลานครินทร์” ให้ขึ้นคำถาม “ลักษณะการทำงาน” ซึ่งก็ไม่ได้ยากอะไร แต่ว่า คำตอบของข้อนี้ ในกรณีนี้ จะต้องบังคับตอบ แต่ ถ้าเลือก “สถานพยาบาลอื่น ๆ” จะต้องไม่บังคับตอบ ปัญหาคือ เจ้า Choice ที่ เมื่อไม่จำเป็นต้องตอบ มันต้องไม่มีค่า แต่ตอนที่มันต้องใช้ตอบ (อย่างในภาพ) มันควรจะหายไป แต่มันไม่หายไป (เข้าใจยากหน่อยนะ) ลองใช้ ก็ไม่หาย วิธีแก้คือ ไป hide label เวิร์คเลย จบ

Read More »