Month: December 2020

  • การสร้าง Flow ใน Microsoft SharePoint

    ผมใช้งาน SharePoint สำหรับจัดเก็บ data เพราะว่าเป็นวิธีที่สะดวก เนื่องจากหน่วยงานมีให้ใช้งานอยู่แล้ว ผมได้สร้าง List เพื่อบันทึกรายการ (item) เกี่ยวกับ การจัดการความเสี่ยง เอาไว้ใน subsite ชื่อ RISK เมื่อบันทึกไปสักระยะ พบว่า เมื่อถึงรอบถัดไปในการประเมินเพื่อการจัดการความเสี่ยง หากต้องคีย์ข้อมูลใหม่ทีละรายการ ทั้ง ๆ ที่ ข้อมูลส่วนมากจะเหมือนกับรอบก่อนหน้านี้ จึงคิดว่า น่าจะมีวิธีการ คัดลอกรายการบรรทัดที่ต้องการ ทุกคอลัมน์ มาเป็นรายการใหม่

    ค้นหาดูใน SharePoint จะมีเครื่องมือที่เรียกว่า Flow ซึ่งจะเป็นส่วนที่ SharePoint เรียกว่า Power Automate ให้ใช้งาน แต่เราต้องสร้าง Flow ขึ้นมาก่อน โดยต้องระบุเองว่า เราจะเอาคอลัมน์ไหนบ้าง และ ต้องการใช้สูตรคำนวณ (formula) ด้วยมั้ย เช่น มีคอลัมน์ที่แสดงค่า รอบที่ เมื่อประเมินรอบใหม่จะต้องเพิ่มรอบที่ เช่น เดิมเป็นรอบที่ 8 เมื่อคัดลอกเป็นรายการใหม่ คอลัมน์ที่เก็บ รอบที่ ก็จะกลายเป็น 9 ให้เอง อย่างนี้เป็นต้น หลังจากศึกษาหาทางจาก Google search ก็พบว่า Microsoft SharePoint มีคำแนะนำเยอะพอสมควร จึงคิดว่า อยากจะบันทึกไว้กันลืม วิธีสร้างก็ค่อนข้างยาว มีดังนี้

    การสร้าง Flow

    ขั้นตอน

    1. ที่เมนูด้านบนของ List ที่กำลังใช้งาน ให้คลิกที่ Automate และเลือก Power Automate เลือก See your flows
    2. หากเป็นครั้งแรก ในหน้าต่างก็จะไม่มีรายการ Flow
    3. ที่เมนูด้านซ้าย ให้คลิกที่ Create และเลือก Instant flow
    4. จะได้หน้าต่าง Build an instant flow จะมีช่องให้ตั้งชื่อ flow จะตั้งชื่อว่า Clone Selected Item
    5. ต่อไปก็เลื่อนหารายการ tigger ที่ให้เลือกใช้ ก็ให้เลือกอันที่เขียนว่า For a selected item SharePoint
    6. ใส่ข้อมูลในช่อง Site Address โดยเลือกจาก drop down list
    7. ใส่ข้อมูลในช่อง List name โดยเลือกจาก drop down list
    8. คลิก New step
    9. หน้าต่าง Choose an action ในช่อง search ใส่คำว่า sharepoint เพื่อบีบ scope ให้แคบลง และเลื่อนหารายการจนเจอคำว่า Get item
    10. จะมีหน้าต่างโผล่มาทางขวา ใต้แท็บ Dynamic content ให้เลือก ID จะได้ดังรูปข้างล่างนี้
    11. ต่อไปคลิก New Step
    12. จะได้หน้าต่าง Choose an action อีกครั้ง ที่นี้ในช่อง search ใส่คำว่า sharepoint create เพื่อบีบ scope ให้แคบลง และเลื่อนหารายการจนเจอคำว่า Create item
    13. ทยอยใส่ทีละคอลัมน์ โดยเลือกจาก Dynamic content แต่หากต้องการการคำนวณ ให้คลิกแท็บ Expression จนครบทุกคอลัมน์ที่ต้องการคัดลอก

    การใช้สูตรคำนวณ

    ขั้นตอน

    ในขั้นตอน Create item เมื่อมีคอลัมน์ที่จะคำนวณ เช่น คอลัมน์ “รอบที่” บวกเพิ่ม 1 ให้เลือก Expression แล้วใส่สูตรคำนวณ ตัวอย่าง add(outputs(‘Get_item’),1) เป็นต้น

    การใช้งาน Flow

    เมื่อต้องการคัดลอกรายการที่มีอยู่ สร้างเป็นรายการใหม่อีกอัน พร้อมข้อมูลคอลัมน์ทีจะถูกคัดลอกมาด้วย Flow ชื่อ Clone Selected Item

    ขั้นตอน

    1. เปิด List ที่ใช้งาน คลิกที่รูปวงกลม (เลือก) หน้ารายการ เพื่อเลือกว่าจะคัดลอกรายการนั้น
    2. คลิกที่เมนู (ด้านบน) ชื่อ Automate
    3. คลิกเลือก Clone Selected Item
    4. จะได้หน้าต่าง Popup ทางขวา ชื่อว่า Run flow แจ้งสิทธิการใช้งาน ถ้าได้รับสิทธิ ก็คลิก Continue
    5. แล้วคลิก Run flow
    6. จะได้รายการใหม่ต่อท้าย
    7. คลิกที่รูปวงกลม (เลือก) หน้ารายการ ซ้ำ เพื่อ จบขั้นตอน

  • วิธี Bypass หน้า Privacy Error เนื่องจาก NET::ERR_CERT_INVALID บน Google Chrome

    Google Chrome พยายามปกป้องเราจาก Website ที่อาจจะมีความเสี่ยง ใช่ ดี แต่ว่า บางทีก็จำเป็น แบบว่า เป็นเครื่องทดสอบไรงี้ ยังไม่ได้ติดตั้ง Certificate จริงจัง

    ถ้าเจอหน้านี้ … คลิก Advanced บางทีก็จะเจอปุ่ม Proceed to website ก็จะเข้าได้

    แต่ถ้าไม่มีปุ่มนั้นหล่ะ ?!?!

    วิธีการง่ายสุด คือ พิมพ์คำว่า

    thisisunsafe

    พิมพ์ไปเลย ไม่ต้องเคาะ Enter ก็จะเข้าเว็บไซต์ได้เลย

    *** ใช้ในกรณีเป็น เว็บไซต์ทดสอบของตัวเองเท่านั้นนะ ***

  • ORA-31623: a job is not attached to this session via the specified handle

    • ปัญหา
      • พยายามใช้ expdp แล้วเกิด error

    UDE-31623: operation generated ORACLE error 31623
    ORA-31623: a job is not attached to this session via the specified handle
    ORA-06512: at “SYS.DBMS_DATAPUMP”, line 3905
    ORA-06512: at “SYS.DBMS_DATAPUMP”, line 5203
    ORA-06512: at line 1

    งานมา…
    • เมื่อค้นข้อมูลไปเรื่อย ๆ จะพบว่าอาจเกี่ยวของกับการปรับแต่งค่าต่างๆ เกี่ยวกับ memory ซึ่งก็ได้ทำไปจริงนั่นคือการปรับ shared_pool_size ให้มีขนาดมากขึ้นทำให้หน่วยความจำสำหรับทำเรื่อง expdp ไม่พอ
    • แก้ไขได้ด้วยการลดค่า shared_pool_size ลง ด้วยคำสั่ง
    SQL> alter system set shared_pool_size=5G scope=both;
    • เพื่อปรับขนาด shared_pool_size ให้เป็น 5GB
    • และอาจต้องเพิ่ม streams_pool_size เพราะไม่ได้ลด shared_pool_size ให้เท่าเดิม เนื่องจากมีการเพิ่มหน่วยความจำของระบบให้มากขึ้นแล้ว ด้วยคำสั่ง
    SQL> alter system set streams_pool_size=128M scope=both;
    • เพื่อปรับ streams_pool_size ให้เป็น 128MB
    • และยังมี parameter บางตัวที่อาจเกี่ยวข้อง เช่น db_cache_size เป็นต้น
    • แต่ในครั้งนี้ปรับแค่สองอย่าง คือ shared_pool_size และ streams_pool_size ก็สามารถแก้ปัญหานี้ได้
    • จบ
    • ขอให้สนุก

    อ้างอิง

    ORA-31623: a job is not attached to this session via the specified handle
    UDI-31623: operation generated ORACLE error 31623 / ORA-31623

  • เรื่องเล่าจากการทำ ubuntu do-release-upgrade

    มี ubuntu server 18.04.5 ที่มี open source software ชื่อ fogproject เวอร์ชั่นที่ใช้คือ 1.5.8 ซึ่งใช้สำหรับการ cloning Windows ในห้องบริการคอมพิวเตอร์ บางคนคงได้ใช้งานอยู่ และก็มี freeradius 3.0 ติดตั้งไว้ด้วย

    อยากจะขยับ ubuntu server จาก 18.04.5 ไปเป็น 20.04 ก็เลยทำคำสั่ง do-release-upgrade ในเครื่องทดสอบ ทำจนเสร็จได้ ubuntu 20.04 สมใจ ในระหว่างขั้นตอนการทำ upgrade นั้นก็จะมีหน้าคำถามว่า จะใช้ไฟล์คอนฟิกของโปรแกรมที่ตรวจพบว่าเรามีการไปแก้ไขไว้ จะเลือกที่ใช้อยู่ปัจจุบัน หรือ จะใช้ของใหม่ตาม package ก็เลือกว่า ใช้ของที่ใช้อยู่ ซึ่งก็ค่อยมาแก้ไขว่า ของใหม่มีอะไรใหม่บ้าง ให้ดูเทียบกับ ไฟล์.dpkg-list

    ตอนนี้เราได้ ubuntu 20.04 แล้ว ลองตรวจสอบดูสิว่า fogproject กับ freeradius ใช้งานได้มั้ย เอาหละสิ fogproject รันไม่ขึ้น ลอง reinstall ด้วยคำสั่ง ./installfog.sh -y ก็เจอฟ้องว่า “Stopping web service failed ค้นหาใน google ก็พบคำตอบว่า fogproject รุ่น 1.5.8 ไม่รองรับ ubuntu 20.04 ซึ่งหากใครเจอปัญหาตอนที่ fogproject 1.5.9 ยังไม่ออกมาให้ใช้ –มีหนาวแน่นอน– เพราะมันจะรันไม่ได้เลย ตรงนี้น่ากังวลมาก ๆ และควรระวังมาก ๆ แต่บังเอิญว่า ตอนเวลานี้ fogproject รุ่น 1.5.9 ออกมาเพื่อแก้ปัญหาใช้กับ ubuntu 20.04 ได้แล้ว พร้อมให้ download แล้วที่เว็บไซต์

    จะมีปัญหาเกี่ยวกับ php ด้วย คือ มันจะไม่ได้ php7.4 โดยทันที ซึ่งเป็นรุ่นที่มาพร้อมกับ ubuntu 20.04 หากต้องการลงเพิ่มด้วยคำสั่ง apt install php7.4 อันนี้อยากบอกว่า ซอฟต์แวร์ของคุณอาจจะต้องใช้ php เวอร์ชั่นเก่า ก็ควรระมัดระวังด้วย

    หลังจากนั้นก็ไปเอา fogproject 1.5.9 มาติดตั้ง จะทำการติดตั้ง php7.4 ให้อัตโนมัติหากยังไม่มี php7.4 ซึ่งก็ทำให้ใช้งาน fogproject ได้ดังเดิม

    ต่อมาตรวจสอบ freeradius ก็พบว่ามีการเปลี่ยนเวอร์ชั่นขึ้นเล็กน้อยเช่นกัน และในขั้นตอน upgrade นั้น เราก็เลือกว่าจะใช้ไฟล์คอนฟิกที่เราแก้ไขไว้ ผลคือ ม้นไม่สร้าง symbolic link file ไปยังไดเรกทอรี /etc/freeradius/3.0/sites-enabled ซึ่งจะต้องมี 2 ไฟล์คือ defaults กับ inner-tunnel ซึ่งก็จะสร้างได้ด้วยคำสั่ง ln -s โดยเราต้องสร้างไดเรกทอรีนั้นขึ้นมาก่อน แล้ว cd เข้าไปในไดเรกทอรีนั้น แล้วใช้คำสั่ง ln -s ../sites-available/default default และ ln -s ../sites-available/inner-tunnel inner-tunnel

    ตอนนี้ก็ start service freeradius ได้แล้ว

    มาลองทดสอบ freeradius user ผ่าน webservice ก็เจอว่า SoapClient error เนื่องจากไม่มี php7.4-soap ก็ติดตั้งด้วยคำสั่ง apt install php7.4-soap ทดสอบอีกทีด้วย username กับ password ของมหาวิทยาลัย ใช้กับ freeradius ได้

    (มาเล่าต่อจากเมื่อวาน)

    พอจะใช้งาน PXE boot เอ้าเจอปัญหา Windows Client เปิดเครื่องขึ้นมาแล้ว Boot from network ติดต่อกับ server เราไม่ได้ เกิดอะไรขึ้น ก็ไปเช็คดู dhcp server ในเครื่องซิว่าทำงานมั้ย ด้วยคำสั่ง service isc-dhcp-server status ก็โอเค เช็คดู dnsmasq ที่ทำหน้าที่เป็น proxy dhcp ซิ ด้วยคำสั่ง service dnsmasq status มัน error ต้องออกแรงค้นหาอีกแล้ว ก็ไปเจอเรื่องแรก ตอนที่ทำ do-release-upgrade จะมีคำถามว่า ใน ubuntu 20.04 นี้ จะเปลี่ยนเวอร์ชั่นของ LXD ก็มีบรรทัด recommended ก็เลือกตามนั้น แล้วมันก็ส่งผลมามี symbolic link file ใน /etc/dnsmasq.d/lxd ซึ่งชี้ไปยังไฟล์ที่ไม่มีอยู่จริง แสดงว่ามีการเปลี่ยนแปลงอะไรสักอย่างแล้ว ก็ลบไฟล์ lxd นี้ออก ก็ยังรันไม่ได้ ก็กลับไปดูว่าใน server เวอร์ชันก่อนหน้าที่จะทำ do-release-upgrade นั้น ข้างในไฟล์ lxd เขียนไว้ว่าอย่างไร ก็พบว่ามี 2 บรรทัดคือ

    bind-interfaces
    except-interface=lxdbr0

    ผมก็สร้างไฟล์ชื่อ etc.conf ที่มี 2 บรรทัดนั้น แล้วก็ start dnsmasq ด้วยคำสั่ง service dnsmasq start ก็ผ่าน ใช้งานได้

    เล่นเอาเหนี่อย เพราะว่า options ชื่อ bind-interfaces ทำให้ dnsmasq ทำงานได้ปรกติ มันมาพร้อม lxd ใน ubuntu 18.04 นั่นเอง แต่ใน ubuntu 20.04 เหมือนว่า lxd จะเปลียนอะไรบางอย่าง จริง ๆ lxd เราก็ไม่ได้ใช้นะ ลบออกได้

    (จบส่วนที่มาเพิ่มในวันที่ 2)

    จะเห็นได้ว่า การทำ ubuntu do-release-upgrade นั่น อาจเจออะไรแบบที่เล่ามานี้ครับ ขอให้ระมัดระวังกันด้วยนะ

    สรุปว่าได้ ubuntu 20.04.1, fogproject1.5.9, php7.4, freeradius 3.0.20

    เพจที่บอกว่า fogproject 1.5.8 ไม่รองรับ ubuntu 20.04
    https://forums.fogproject.org/topic/14440/stopping-web-service-failed

    ขอบคุณครับ