Category: ไม่มีหมวดหมู่

  • ในวันที่มหาวิทยาลัยไม่ใช้ Google แล้ว เรามีทางเลือกอะไรบ้าง

    7-Eleven.2022

    จาก Google App for Education -> G Suite for Education -> G Workspace for Education ที่ชูจุดขาย Unlimited Storage ทำให้เกิดการใช้งานกันอย่างกว้างขวาง และความสามารถของ Google Apps ในการทำงานพร้อม ๆ กันได้ ใช้งานกันมาอย่างยาวนาน ตั้งแต่ปี 2011 ถึงปัจจุบัน 2022 เป็นเวลา 11 ปี

    11 ปี ที่อีกนัยยะหนึ่งคือ การคานอำนาจไว้

    และแล้วก็มาถึงจุดที่ ไม่ Unlimited มาเป็น 80 GB/คน (บุคลากร) แต่ไม่จำกัดการใช้งาน Share Drive มาเป็น บุคลากรเหลือ 5 GB และจะไม่ให้ใช้ Shared Drive ซึ่งน้อยกว่า Free Gmail เสียอีก

    ก็เข้าใจนะ ว่าเกิดจากนโยบายของ Google ที่ให้ 100 TB ต่อ องค์กรการศึกษา ในขณะที่ทั้งองค์กรเราใช้งานกัน 1000 TB ด้วยจำนวนบุคลากรกว่า 10,000 คน, นักศึกษา 30,000 คน ไม่รวม Alumni, แต่เท่าที่ทราบมา องค์กรระดับ 10,000 users ขึ้นไป ทาง Google ให้ต่อรองขนาดที่จะให้ได้นะ แต่ก็ … แล้วแต่ผู้มีอำนาจจะตัดสินใจ ไม่ว่ากัน

    หลายคน หลายหน่วยงาน ก็ติดการใช้งานบริการของ Google อย่างช่วยไม่ได้

    ไม่ได้ติดที่ “พื้นที่” แต่ ติดใจ “ความง่าย”, “ความสะดวกสบาย” ของการใช้งาน Google App, การที่จะบอกว่า “ย้ายไป Microsoft OneDrive” สิ มันอาจจะไม่ใช่คำตอบของทุกคน หลายคนใช้งาน Google เชิงลึก มีการเขียน Google App Scripts สร้างระบบบริหารงานภายในด้วย Google Sheets หรืออย่างทางทีมงานผม ประยุกต์ใช้งาน Google Sheets ติดต่อกับ Python/R ทำระบบ Automate กับหน่วยงานภายนอกมาตลอด

    คราวนี้ ทำไงดี คิดว่า คงจะมีหลายหน่วยงานก็ไม่มีปัญหาอะไร ย้ายไป OneDrive ก็ได้ แต่ก็จะมีบางหน่วยงานที่ ต้องการใช้ Google ต่อไป

    การซื้อ Storage บน Gmail ส่วนตัว ก็จะผูกพันกับตัว Account ดังนั้น ถ้าคิดจะซื้อ ขอแนะนำให้ซื้อ Google Workspace สำหรับองค์กร แบบจ่ายตังค์

    เราเลือก Google Workspace Business Standard ซึ่งค่าใช้จ่ายอยู่ที่ 296 บาท/user/เดือน หรือ 3,552 บาท/user/ปี

    https://workspace.google.com/intl/th/pricing.html

    สิ่งที่ได้คือ บริการ “ใกล้เคียง” กับที่เราเคยได้ โดยมีพื้นที่ 2 TB เป็นส่วนกลาง มี Share Drive ให้ใช้ และการย้ายข้อมูลมา เราจะยังได้ File ID เดิมอีกด้วย !!! (สำคัญมาก เพราะทางผมเขียน Code ด้วย Python/R ผูกกับ File ID นี้)

    ข้อดีของการได้ Share Drive มา คือ เราสามารถบริหารจัดการพื้นที่ 2TB เป็น ห้องย่อย ๆ แล้วกำหนดคน “ภายนอก” เข้าไปเป็นสมาชิกได้ (เข้าใจตรงกันนะ)

    สิ่งที่ต้องมีคือ

    • Domain Name เช่น ของ xxx.psu.ac.th หรือ ใครจะไปใช้ Namecheap สร้าง blahblah.xyz ก็ได้
    • จากนั้นเปิดบริการที่
      https://workspace.google.com/business/signup/welcome?hl=th
    • จะได้หน้าตาอย่างนี้
    • กรอกข้อมูล ชื่อ นามสกุล เบอร์โทร
    • กรณีที่มี Domain อยู่แล้ว ต้องมั่นใจว่า สามารถเพิ่ม MX Record ได้นะ ไม่งั้นก็ไปทำให้มี หรือ ไม่ก็ซื้อใหม่เลยก็ได้
    • ถ้ามีก็ กรอกโดเมน ไป
    • Confirm นะ
    • จากนั้น ตั้งชื่อ User คนแรก ซึ่งจะเป็น Admin ของระบบ
    • เสร็จแล้ว
    • ก็เข้าสู่ระบบ
    • จากนั้น ระบบจะส่ง SMS มาที่เบอร์มือถือ
    • ใส่ OTP
    • จากนั้น ก็ยินยอม
    • ก็เข้าสู่หน้า Admin Console
      คลิก “เปิดใช้งาน”
    • คลิก ถัดไป: ไปยังขั้นตอนที่ 2
    • ใส่ MX Record ของ Domain ตามนี้
    • แล้วก็อันนี้ เป็น MX ลำดับความสำคัญที่ 15
    • เมื่อเสร็จเรียบร้อยแล้ว คลิก เปิดใช้ Gmail

    เป็นอันเรียบร้อย ทดลองใช้ได้ 14 วัน หรือ ไม่ก็ใส่บัตรเครดิต จ่ายเงินเลย

    วิธีการย้ายข้อมูลจาก PSU Google Share Drive

    • สมมุติว่าเรา สร้าง user ข้างต้นว่า yyy@xxx.psu.ac.th ก็สร้าง Share Drive สักอัน
    • จากนั้น Share ไปให้คนที่เป็น Manager ของ PSU Google Share Drive
    • แล้วจากใน PSU Google Share Drive ก็ Move to มายัง Share Drive ขององค์กรใหม่ได้เลย

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

  • Tabulator ในการดึงข้อมูลจาก google sheet

    ต้องการนำข้อมูลใน google sheet ไปแสดงบนหน้าเว็บ ด้วย Tabulator ตัวอย่างข้อมูลดังนี้ค่ะ

    จากนั้นให้เราไปสร้าง Apps Script กันค่ะ สร้าง function และสร้าง page index

    จากนั้นค้นใน google ว่า tabulator > คลิก Documentation > คลิก Quick Start > ที่ Install Sources > CDN จากนั้นให้ Copy

    ไปวางที่บรรทัดที่ 4 หน้า index.html ดังรูป

    จากนั้นให้ Copy

    จะได้ code หน้า index.html ดังนี้

    จากนั้นคลิกปุ่ม Deploy > New deployment ที่ setting > Web app ที่ Who has access เลือก Anyone > กดปุ่ม Deploy > Done

    จากนั้นคลิกปุ่ม Test deployment > คลิกที่ URL จะได้ผลลัพธ์ดังนี้ เป็นผลลัพธ์ตาม code ตัวอย่างที่เรา copy มาจากเว็บ Tabulator ค่ะ

    คราวนี้มาทำให้ดึงข้อมูลจาก google sheet กันดีกว่าค่ะ ไปที่ Code.gs กันเล้ย ตามนี้จ้า

    จากนั้นไปที่ index.html จะดึงค่าจาก google sheet หล่ะ

    จากนั้นลอง Refresh หน้าจอดู

    ลองนำไปเล่นกันดูนะคะ ^_^

  • กรณีศึกษา การสำรองข้อมูล Neo4j Graph Database

    สวัสดีครับ

    บทความนี้เป็นกรณีศึกษาเกี่ยวกับการสำรองข้อมูล Neo4j Graph Database เรื่องมันมีอยู่ว่า สำนักนวัตกรรมดิจิทัลและระบบอัจฉริยะ หรือชื่อเดิมคือ ศูนย์คอมพิวเตอร์ ได้พัฒนาระบบเอกสารอิเล็คทรอนิกส์ เวอร์ชั่นใหม่ ซึ่งได้เปลี่ยนเทคโนโลยีในการเก็บข้อมูลมาใช้ Neo4j Graph Database แทนของเดิมที่ใช้ Microsoft SQL Server จึงต้องมีการวางแผนความเสี่ยงในเรื่องของการสำรองข้อมูล คราวนี้ตัวผมเองไม่ได้มีความเชี่ยวชาญหรือรู้จักกับ Neo4j Graph Database มากเท่าไหร่ แต่น้องที่สำนักนวัตกรรมที่เป็นผู้พัฒนาระบบและเรียนรู้การใช้งานก็ได้ไปศึกษา ทดสอบวิธีการส่งออกและนำเข้าข้อมูลจนมีความรู้ ความเข้าใจ ก็ได้มาถ่ายทอดต่อ ส่วนตัวผมเองก็นำวิธีการนี้ไปบวกกับความรู้เรื่อง Batch Script + PowerShell เล็กน้อย ทำเป็นระบบสำรองข้อมูลขึ้นมา ซึ่งขณะนี้ได้ทดสอบมาประมาณ 1 เดือนก็ยังสามารถทำงานได้ จึงจะขอมาเล่าสู่กันฟังในบทความนี้ครับ

    ข้อมูลที่ได้รับมาก็คือ

    1. Neo4j Graph Database ที่ใช้เป็นรุ่น Community ข้อดีคือ ไม่มีค่าใช้จ่ายในการใช้งาน แต่จะมีข้อจำกัดคือ ในการส่งออกและนำเข้าไฟล์ฐานข้อมูลนั้นจะไม่มีเครื่องมือให้ใช้งานมากมายจะต้องใช้คำสั่่งผ่านทาง Command Line

    2. ข้อจำกัดอีกอย่างคือ การส่งออกไฟล์นั้นจะทำในขณะ Neo4j ทำงานอยู่ไม่ได้ ต้องหยุดการทำงานก่อนเสร็จแล้วจึงทำการสตาร์ท Neo4่j ขึ้นมาทำงานใหม่

    นำข้อมูลที่ได้มาวางแผนการเขียน Script

    – เมื่อได้รับวิธีการสำรองข้อมูลมาแล้ว สิ่งหนึ่งที่อยากทราบก็คือ ระยะเวลาในการสำรองใช้เวลาเท่าไหร่ ตั้งแต่เริ่มต้นหยุดการทำงานไปจนถึงเสร็จสิ้นกระบวนการ จึงต้องมีการเขียน Log ไฟล์เอาไว้ด้วย เพื่อแสดงเวลาให้เห็น

    – เนื่องจากมีหลายขั้นตอนในการทำงานจีงใช้วิธีเขียนไฟล์ Script แยกการทำงานออกไป เช่น

    • Batch File ชื่อ neo4j-stop.bat เอาไว้หยุดการทำงาน Neo4j
    • Batch File ชื่อ neo4j-dump.bat เอาไว้ส่งออกไฟล์ฐานข้อมูล Neo4j ออกมา

    เมื่อได้รับข้อมูลและวางแผนการทำงานเรียบร้อยแล้ว จึงเริ่มต้นเขียน Script ตามลำดับขั้นตอนดังนี้

    1. สร้าง Batch File ชื่อ neo4j-stop.bat เอาไว้สำหรับหยุดการทำงานของ Neo4j จะมีคำสั่งที่เขียน ดังนี้

    @echo off

    for /f %%a in (‘powershell -Command “Get-Date -format ‘HH:mm:ss’”‘) do set “TimeStart=%%a”echo === Start Backup Neo4j On %DATE% %TimeStart% === > log.txt

    net stop neo4j >> log.txt

    call neo4j-dump.bat

    อธิบายได้ดังนี้
    – เริ่มต้นจะมีการรับค่าวันและเวลาปัจจุบัน คือ %DATE% และ %TimeStart%
    – จากนั้นจึงเริ่มใช้คำสั่งหยุดการทำงานของ Neo4j
    – สังเกตว่าทุกคำสั่งจะมีการส่งออกไปเก็บที่ log.txt
    – เสร็จแล้วจะมีการเรียก Batch Script neo4j-dump.bat ให้ทำงานต่อ

    2. สร้าง Batch File ชื่อ neo4j-dump.bat เอาไว้สำหรับส่งออกไฟล์ Neo4j จะมีคำสั่งที่เขียน ดังนี้

    @echo off

    for /f %%a in (‘powershell -Command “Get-Date -format ‘HH:mm:ss’”‘) do set “TimeDumpStart=%%a”

    echo == Start Dump Database On %TimeDumpStart% == >> log.txt

    neo4j-admin dump –database=neo4j –to=C:\neo4j_dump\backup_%date:~10,4%%date:~4,2%%date:~7,2%.dump > logtmp.txt 2>> log.txt & call neo4j-start.bat

    อธิบายได้ดังนี้
    – จะมีคำสั่ง dump ฐานข้อมูล Neo4j ออกมาเก็บไว้ที่ C:\neo4j_dump ตั้งชื่อไฟล์ว่า backup ต่อด้วยวันที่สร้าง เช่น backup_20220531.dump
    – เสร็จแล้วจะมีการเรียก Batch Script neo4j-start.bat ให้ทำงานต่อ

    3. สร้าง Batch File ชื่อ neo4j-start.bat เอาไว้สำหรับสตาร์ทการทำงานของ Neo4j จะมีคำสั่งที่เขียน ดังนี้

    @echo off

    net start neo4j >> log.txt

    call backup-to-nas03.bat

    อธิบายได้ดังนี้
    – จะมีคำสั่งสตาร์ทการทำงานของ Neo4j
    – เสร็จแล้วจะมีการเรียก Batch Script backup-to-nas03.bat ให้ทำงานต่อ

    4. สร้าง Batch File ชื่อ backup-to-nas03.bat เอาไว้สำหรับส่งไฟล์สำรองข้อมูล Neo4j ไปเก็บยัง Nas Server Backup จะมีคำสั่งที่เขียน ดังนี้

    @echo off

    for /f %%a in (‘powershell -Command “Get-Date -format ‘HH:mm:ss’”‘) do set “TimeSendNas03Start=%%a”

    echo == Start Send Backup File to Nas03 On %TimeSendNas03Start% == >> log.txt

    net use z: \\nas03.psu.ac.th\backup2\docs /user:[user] [password] >> log.txt

    “C:\Program Files\7-Zip\7z.exe” a -tzip z:\docs_db_%date:~10,4%%date:~4,2%%date:~7,2%.zip C:\neo4j_dump\backup_%date:~10,4%%date:~4,2%%date:~7,2%.dump >> log.txt

    net use z: /delete /yes >> log.txt

    for /f %%a in (‘powershell -Command “Get-Date -format ‘HH:mm:ss’”‘) do set “TimeEnd=%%a”

    echo === Finish All Process Backup Neo4j On %DATE% %TimeEnd% === >> log.txt

    xcopy log.txt C:\admin-scripts\logs\log_%date:~10,4%%date:~4,2%%date:~7,2%.txt*

    Powershell.exe -executionPolicy ByPass -noexit -File C:\admin-scripts\sendmail.ps1

    อธิบายได้ดังนี้
    – จะมีคำสั่งสำหรับสร้าง Map Drive z: ที่ Mount มาจาก Nas Server Backup

       – /user:[user] [password] คือ parameter ที่เป็นการระบุชื่อผู้ใช้และรหัสผ่านที่มีสิทธิ์เข้าถึงพื้นที่ที่กำหนดไว้

    – จะใช้โปรแกรม 7zip ทำการบีบอัดไฟล์ backup ที่ได้สร้างขึ้นจากข้อที่ 2 ตั้งชื่อว่า docs_db ต่อด้วยวันที่สร้าง เช่น docs_db_20220531.zip ไฟล์ดังกล่าวจะไปสร้างที่ Nas Server Backup โดยตรง
    – เสร็จแล้วจะมีคำสั่ง Powershell เรียกไฟล์ sendmail.ps1 ให้ทำงานต่อ

    5. สร้างไฟล์ Powershell ชื่อ sendmail.ps1 เอาไว้สำหรับส่งเมลแจ้งไปยังผู้ดูแลพร้อมกับส่ง log.txt ไปกับอีเมลด้วยเพื่อให้สามารถตรวจสอบได้

    $DateTime = Get-Date -format ‘yyyy-MM-dd’
    $From = “docsdb@psu.ac.th”
    $To = “somchai.wa@psu.ac.th”
    $Copy = “somchai.wanathanasin@gmail.com”
    $Attachment = “C:\admin-scripts\log.txt”
    $Subject = “Server DocsDB Backup Successfully on $DateTime”
    $Body = “Dear Admin,

    The System send log file backup docsdb.Please see details in attached file.

    Thank you”
    $SMTPServer = “smtp.psu.ac.th”
    $SMTPPort = “25”

    Send-MailMessage -From $From -to $To -Cc $Copy -Subject $Subject -Body $Body -SmtpServer $SMTPServer -Port $SMTPPort -Attachments $Attachment

    stop-process -id $PID -Force

    อธิบายได้ดังนี้
    – ใน Powershell จะมีคำสั่งที่ใช้ในการส่งเมลคือ Send-MailMessage ซึ่งจะประกอบไปด้วยพารามิเตอร์หลายค่าที่จะต้องระบุให้ถูกต้อง โดยด้านบนจะมีการสร้างตัวแปรต่าง ๆ เพื่อเก็บค่าไว้ นำไปใช้ในการส่งอีเมล
    – ข้อสังเกตคือ ด้านล่างสุดจะมีคำสั่ง stop-process -id $PID -Force คำสั่งนี้เป็นการสั่งให้ Powershell หยุดทำงานคือปิดตัวลงไปทันทีที่ทำงานเสร็จ เพราะเคยพบปัญหาว่าเมื่อมีการรัน Script นี้แล้ว Process Powershell จะยังคงเปิดอยู่ ทำให้ Script ทำงานผิดพลาด

    6. จะสร้าง Batch File Script ที่ชื่อ backup-docsdb.bat เอาไว้สำหรับระบุพื้นที่เก็บ Script ไฟล์ทั้งหมดและทำการเรียกไฟล์ neo4j-stop.bat ให้ทำงานเป็นลำดับแรก จะมีคำสั่งที่เขียน ดังนี้

    @echo off

    cd C:\admin-scripts

    call neo4j-stop.bat

    อธิบายได้ดังนี้
    – Script ที่เขียนทั้งหมดจะทำงานอยู่ที่ C:\admin-scripts รวมทั้ง log ไฟล์ก็จะเก็บอยู่ที่นี้

    7. เพื่อให้กระบวนการสำรองข้อมูลทำงานอัตโนมัติทุกคืนตอนเวลา 02:00 น. โดยจะต้องไปสร้าง Task Schedule ใน Windows แล้วเรียกไฟล์ backup-docsdb.bat ให้ทำงานอัตโนมัติ

    8. ตัวอย่างเมลที่ส่งมาแจ้งผู้ดูแล มีดังนี้

    ขอจบการเขียนบทความแต่เพียงเท่านี้ หวังว่าผู้อ่านคงได้ประโยชน์ไปไม่มากก็น้อย

    ขอบคุณครับ

  • การสร้าง Visual Studio Project Template

    ความสามารถอย่างหนึ่งที่น่าสนใจของ Visual Studio คือ การนำ Project ที่เราสร้างขึ้นมาใช้เป็นตัวตั้งต้นหรือ Project Template เพื่อสร้าง Project ต่อๆ ไปได้ ทำให้ Project ใหม่ที่สร้างขึ้น มีฟังกชันพื้นฐานพร้อมใช้งานแล้ว ตามที่กำหนดไว้ใน Template เช่น มีระบบเมนู มีตัวอย่างหน้าจอพร้อมการเชื่อมต่อฐานข้อมูล มีระบบ Authentication เป็นต้น ฟังกชันพื้นฐานต่าง ๆ เหล่านี้ จะทำให้เราสามารถเริ่ม Project ใหม่ได้อย่างรวดเร็ว

    วิธีการสร้าง Project Template ด้วย Visual Studio 2022 หลังจากที่เราเตรียม Project ตั้งต้นไว้แล้ว ดังนี้

    1. ไปที่เมนู Project -> Export Template

    2. Export Template Wizard เลือก Project template จากนั้นคลิก Next

    3. ระบุ Template name, Template description, Icon Image จากนั้นคลิก Finish

    เท่านี้ก็จะทำให้ได้ไฟล์ Project Template ไปใช้งานแล้ว โดย Visual Studio จะทำการนำเข้า Project Template ที่สร้างขึ้นมาให้โดยอัตโนมัติ ทำให้เราสามารถใช้สร้าง Project ใหม่ได้เลย

    วิธีการสร้าง Project ใหม่ จาก DIISBlazorTemplate

    1. เปิด Visual Studio 2022 ขึ้นมา แล้วไปที่เมนู File -> New -> Project
    2. จะปรากฏหน้าจอ Create a new project ให้เราพิมพ์ชื่อ DIIS ในช่องค้นหา ก็จะเจอผลลัพธ์ดังรูป ให้เลือก DIISBlazorTemplate และคลิกปุ่ม Next

    3. หน้าจอ Configure your new project ให้ระบุ Project name, Location จากนั้นคลิก Create

    4. ผลลัพธ์ที่ได้จะเป็น Project ใหม่ ดังรูป

    5. ทดลองรัน Project จะพบว่า เราสามารถใช้ฟังกชันพื้นฐานต่าง ๆ ได้ตามที่กำหนดไว้ใน Project ตั้งต้น เช่น การ Authentication, หน้าจอแสดงข้อมูลที่ได้จากการ Query จากฐานข้อมูล เป็นต้น

    หน้าจอเข้าสู่ระบบ
    หน้าจอตัวอย่างการแสดงผลข้อมูลจากฐานข้อมูล
  • สร้าง Dashboard ต้องคิดถึงอะไรบ้าง

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

    รูปแบบการวิเคราะห์ข้อมูลเบื้องต้น

    1.ต้องการแสดงความสัมพันธ์ (Relationship) เพื่อเชื่อมต่อสองข้อมูลตัวแปรที่สนใจ หรือมากกว่านั้น เช่น จังหวัดที่เกิดกับวิทยาเขตที่เรียน

    รูปแสดงตัวอย่างการวิเคราะห์ความสัมพันธ์ (Relationship)


    2.ต้องการเปรียบเทียบข้อมูล (Comparison) ใช้ Bar chart หรือ line chart เพื่อแสดงข้อมูลรับนักศึกษาในแต่ละปี

    รูปแสดงตัวอย่างการวิเคราะห์ข้อมูลแบบเปรียบเทียบ (Comparison)


    3.ต้องการแสดงการเปลี่ยนแปลงข้อมูลตามช่วงเวลา (Trend)

    รูปแสดงตัวอย่างการวิเคราะห์เปลี่ยนแปลงข้อมูลตามช่วงเวลา (Trend)


    4.ต้องการแสดงการจ่ายของข้อมูล (Distribution) โดยการเอาข้อมูลมาจัดกลุ่ม (Grouping) หรือเรียง (Ranking) แล้วนับจำนวนเพื่อดูการกระจายของข้อมูล
    เช่น อายุงานบุคลากรแยกทุก 10 ปีของการทำงาน เพื่อดูว่าบุคลากรส่วนใหญ่อายุงานอยู่ที่กี่ปี เป็นต้น

    รูปแสดงตัวอย่างการวิเคราะห์การจ่ายของข้อมูล (Distribution)

    สิ่งที่ต้องเอาใจใส่

    1. เลือก Data Visualization ให้ตรงกับจุดประสงค์ของการนำเสนอ และผู้ใช้งานต้องเข้าใจ Visualization ที่ใช้ด้วยเป็นสำคัญ
    2. โทนสีที่เลือกใช้งานควรจะไม่มากเกินไป และควรจะเป็นโทนเดียวกัน (ลองค้นหาตารางโทนสีใน Google ดูครับ)
    3. ควรจะคำนึงถึง ขนาด สี ที่มีความสัมพันธ์กัน เช่น ใน 1 Dashboard ใช้สีชมพูแทนเพศหญิง ก็ควรจะใช้สีชมพูในแต่ละ Visualization เพื่อแทนเพศหญิงเหมือนกัน
    4. ทำให้ผู้ใช้งานมองติดตามข้อมูลได้ง่ายและเข้าใจ
    5. การมีเส้นนำสายตาก็จะมีผลต่อการแบ่งกลุ่มข้อมูลโดยอัตโนมัติสำหรับผู้ใช้งาน
    6. (five-second rule) กฏ 5 วินาที Dashboard ควรจะตอบโจทย์ที่ได้รับมาโดยการมองเพียงแค่ 5 วินาที ซึ่งต้องได้คำตอบหลักแล้ว ส่วนถ้าต้องการหาสาเหตุหรือต้องการข้อมูลเชิงลึกก็จะเข้าส่วน
    7. ออกแบบแบบปรามิดคว่ำ คือส่วนบน เป็น indicators ส่วนที่ 2 เป็น Trends ส่วนที่ 3 เป็น รายละเอียด
    8. ใน 1 Dashboard ควรมี Visualization ประมาณ 5-9 Visualization (ตามข้อมูลการศึกษาการรับรู้ของสมองมนุษย์จะเข้าใจภาพได้ประมาณ 7 +- 2)
    9. จำไว้ว่าข้อมูลสมบูรณ์ครบถ้วน ไม่สู่ตอบโจทย์ที่ผู้ใช้ต้องการนะครับ เพราะเราต้องการตอบสนองผู้ใช้งานไม่ใช่ตอบสนองข้อมูลหรือตัวผู้จัดทำ Dashboard

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

    อ้างอิง :

    https://www.sisense.com/blog/4-design-principles-creating-better-dashboards/
    https://realmonkey.co/web-design/principles-of-effective-dashboard-design/
    https://www.netsolutions.com/insights/good-dashboard-design-principles/
    https://wandr.studio/blog/dashboard-design-principles/
    https://medium.com/madt-and-bads-nida/4-principles-of-dashboard-design-%E0%B8%AB%E0%B8%B1%E0%B8%A7%E0%B9%83%E0%B8%88-4-%E0%B8%82%E0%B9%89%E0%B8%AD%E0%B8%AA%E0%B8%B3%E0%B8%AB%E0%B8%A3%E0%B8%B1%E0%B8%9A%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%AD%E0%B8%AD%E0%B8%81%E0%B9%81%E0%B8%9A%E0%B8%9A-dashboard-957b79e0179a

  • การสร้างรหัสผ่านให้ไฟล์ PDF

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

    1. เข้าเว็บ https://www.ilovepdf.com/protect-pdf


    2. คลิก Select PDF

    3. เลือกไฟล์ PDF ที่ต้องการสร้างรหัสผ่าน

    4. ระบุรหัสผ่านให้เหมือนกันทั้ง 2 ช่อง จากนั้นกดปุ่ม Protect PDF

    5. ระบบจะสร้างรหัสผ่าน ให้กดปุ่ม Download protected PDFs เพื่อ Download เอกสารไปใช้งาน

    6. เมื่อ Download เรียบร้อยแล้ว ทดลองเปิดไฟล์ PDF จะพบว่า ไฟล์ของเราปรากฏให้ใส่รหัสผ่านก่อน

    7. เมื่อใส่รหัสผ่านที่เราได้ตั้งค่าไว้ ก็จะสามารถเปิดไฟล์ PDF ได้

    ลองนำไปประยุกต์ใช้กันดูนะคะ ถ้าไม่อยากให้ใคร ๆ ก็เปิดไฟล์ PDF ของคุณได้ วิธีการตั้งค่ารหัสผ่านไว้ก็เป็นอีกทางเลือกที่น่าสนใจค่ะ ^^

  • การสร้าง GenericList Component (Blazor) ตัวช่วยแสดงผลรายการข้อมูล

    การสร้าง User Interface สำหรับแสดงผลลัพธ์จากการ Query ข้อมูลในฐานข้อมูลนั้น โดยปกติ UI จะต้องสามารถกำหนดการแสดงผลเพื่อตอบสนองต่อเหตุการณ์ที่เกิดขึ้น 3 สถานะได้ คือ

    1. ระหว่างที่กำลังรอผลการ Query ข้อมูล UI ควรแสดงให้เห็นว่ากำลังประมวลผล โดยแสดงเป็นข้อความหรือรูปภาพ Loading ก็ได้
    2. กรณี Query แล้วไม่พบข้อมูล ความแสดงผลให้ทราบว่าไม่พบข้อมูล
    3. กรณี Query แล้วพบข้อมูล จะนำข้อมูลมาแสดงผลด้วย Table หรือ List หรือ อื่นๆ ตามความเหมาะสม

    ตัวอย่างเช่น ต้องการสร้างหน้าจอแสดงผลรายการข้อมูลสินค้าโดย Query ข้อมูลเก็บไว้ในตัวแปรชื่อ ProductList จะมีค่าในสถานะต่าง ๆ ดังนี้

    1. ระหว่างที่กำลังรอผลการ Query จะมี ProductList == null
    2. กรณี Query แล้วไม่พบข้อมูล ค่า ProductList.Count == 0
    3. กรณี Query แล้วพบข้อมูล ค่า ProductList.Count > 0

    จะเป็นว่าเราสามารถสร้าง Component พื้นฐานไว้ใช้งาน (Reuse) เพื่อตอบสนองต่อสถานะทั้ง 3 ได้ ในที่นี่จะตั้งชื่อว่า GenericList Component (GenericList.razor) มีโค้ดดังนี้

    วิธีการใช้งาน GenericList Component ทำได้โดยการกำหนด Parameter ชื่อ List และ WholeListTemplate ก็จะสามารถแสดงผลข้อมูลได้ตามต้องการ

    รูปที่  1 ระหว่างที่กำลังรอผลการ Query
    รูปที่  2 กรณี Query แล้วไม่พบข้อมูล
    รูปที่  3 กรณี Query แล้วพบข้อมูล
  • Blazor Server Application : วิธีการ Export ข้อมูลเป็นไฟล์ XML

    แนะนำวิธีการ Export ข้อมูลเป็นไฟล์ XML

    วิธีการเขียน Code
    1) สร้าง Folder xml สำหรับเก็บไฟล์ xml ในกรณีนี้อยู่ใน (wwwroot/files/xml)

    2) สร้าง Razor Component ชื่อ ExportXML.razor ในกรณีนี้อยู่ใน (Pages/ExportXML.razor)
    3) จากนั้นเขียน Code ดังนี้

    4) ผลลัพธ์จากการ Export ข้อมูลเป็นไฟล์ XML

    4.1) กรอกข้อมูล และกดปุ่ม Export XML

    4.2) จะได้ไฟล์ person.xml

    4.3) เมื่อเปิดไฟล์ person.xml จะแสดงข้อมูล ดังนี้

  • Blazor Server Application : การสร้างรูปภาพลายเซ็นโดยวิธีการพิมพ์ข้อความ

    แนะนำวิธีการสร้างรูปภาพลายเซ็นโดยวิธีการพิมพ์ข้อความ

    วิธีการเตรียมฟอนต์
    1) เข้าเว็บไซต์ https://www.f0nt.com/release/worasait/
    2) ดาวน์โหลด ฟอนต์ Worasait (worasait.ttf)

    วิธีการเขียน Code
    1) ติดตั้ง NuGet ชื่อ System.Drawing.Common
    2) สร้าง Folder ชื่อ files สำหรับเก็บไฟล์ฟอนต์ ในกรณีนี้อยู่ใน (wwwroot/files/worasait.ttf)

    3) สร้าง Razor Component ชื่อ SignatureType.razor ในกรณีนี้อยู่ใน (Pages/SignatureType.razor)
    4) จากนั้นเขียน Code ดังนี้

    5) ผลลัพธ์จากการสร้างรูปภาพลายเซ็นโดยวิธีการพิมพ์ข้อความ

    หมายเหตุ: วิธีการเปลี่ยนสีภาพลายเซ็น
    1) graphics.DrawString(Txt, oFont, Brushes.Black, 0, 0);
    2) เปลี่ยนจาก Brushes.Black เป็นสีที่ต้องการ เช่น Brushes.Red เป็นต้น