[RHEL] มาตรวจสอบ Crontab ของทุก User บน RedHat ครับ

ช่วงนี้ต้องมาทำเอกสาร DRS และ Readiness เลยต้องมีการ List Crontab ของ User แต่ละ User ที่ได้กำหนดไว้บน RedHat ดังนี้ครับ

  • ลอง List แบบทั้วไปก่อน ดู Crontab ของ user ตัวเอง โดยใช้คำสั่งดังนี้
crontab -l
  • ตรวจสอบ Crontab ของ User ใดๆ (ต้องเป็น root) โดยใช้คำสั่งดังนี้
crontab -l -u <user>
  • แล้ว Crontab ของ RedHat / CentOS / Fedora ปกติเก็บที่ไหน
    • อยู่ที่ Path /var/spool/cron/
    • ถ้า OS อย่างตระกูล Debian พวก ubuntu อยู่ที่ Path /var/spool/cron/crontabs/

หลังจากรู้ว่า Crontab มีการจัดเก็บที่ไหนแล้ว และดึงมาอย่างไร เรามีแนวทางการเขียน Script เพื่อช่วยในการ List มันออกมาได้ครับ

[CR] Starbucks-Jumbo Sausage Bite & Hokkaido Double Vanilla Cream Puff

วันนี้พิเศษหน่อยครับ ซืื้อเยอะนิดนึง เพราะต้องการจะได้ Starbucks Card เป็น Gold Level พร้อมกับเงินเดือนออกด้วยครับ (มีเงินเพิ่มมา 900 ไม่แน่ใจว่าเป็นค่าวุฒิ ป โท หรือป่าวนะ ?) โดยทั้งสองเมนูที่ผมซื้อมา เน้นที่กินคู่กับชาร้อนๆได้ครับ อิอิ

Jumbo Sausage Bite

  • ราคา 85 บาท
  • รสชาติ
    • อ้วนกลม และสั้นไปนิดครับ อย่าคิดลึกหละ !!!!
    • ไส้กรอกหมูรมควันชิ้นใหญ่จริงๆครับ เนื้อแน่นน กัดแล้วฟินมากกกกก
    • แป้งพัฟเนียนนุ่มดี แต่ไม่เยอะมากครับ เน้นๆไส้ครับ
    • ทานกับซอสมะเขือเทศรสเข้มข้นตัดกันได้ดีครับ
  • พลังงาน 263-280 แคลลอรี่

Hokkaido Double Vanilla Cream Puff

  • ราคา 69 บาท
  • รสชาติ
    • ดูชิ้นใหญ่ดีครับ ต่อไปจะผ่าออกมา อิอิ
    • กลมกล่อมครับ ไม่ได้หวานมาจนเกินไปครับ ตัดคาว จาก Jumbo Sausage Bite ได้ดีเลยทีเดียวครับ
    • ครีมสดจากฮอกไกโด (ช่วงนี้อะไร อะไร ก็ฮอกไกโด)
    • วานิลลาคัสตาร์ด แน่นๆครับ
    • แป้งดีใช้ได้เลย นุ่มไม่แข็งจนเกินไปครับละมุนลิ้นดี
  • พลังงาน 228-335 แคลลอรี่

Reference (พลังงานของแต่ละเมนู)

[CONTAINER] เจ้า Podman มันดู Log อย่างไร ?

หลายคนหากให้เจ้าตัว Podman มาสักพัก อาจจะเกิดปัญหา เช่น Container ดับแบบไม่มีสาเหตุ เป็นต้น นอกจากตัว Log ของ Application ที่ได้เราได้พัฒนาแล้ว ฝั่งของ Podman เองก็มี Log เหมือนกันครับ

ตรวจสอบ Log ของ Container

  • ใช้คำสั่ง podman logs
  • รูปแบบคำสั่ง
podman logs [options] [container… (container id หรือ container name ก็ได้)]
  • ตัวอย่างการใช้งาน : ลองดึง Log ล่าสุด 10 row จาก Container ชื่อ wmsl-app-server
podman logs -f --tail 10  wmsl-app-service
  • ตัวอย่างการใช้งาน : ลอง Export Log ของ Container wmsl-app-server ลง Text File สามารถใช้คำสั่งได้ ดังนี้
podman logs  wmsl-app-service >> logPodman.txt
  • จากนั้นสามารถ FTP เข้าไป ดึง Log File (logPodman.txt) จาก Server ออกมาได้ครับ

ตรวจสอบ Log ของ Podman

  • บางครั้งเราอยากรู้ว่าตัว Podman เองมันมีปัญหาอะไร หรือ เปล่า ก็สามารถสำหรับ Log Level ให้มันได้ครับ โดยมี Level ที่เป็นไปได้ ได้แก่ debug, info, warn, error (ค่า Default)
  • สำหรับคำสั่งในการกำหนดเพิ่ม Parameter –log-level เข้าไปครับ
  • ตัวอย่างการใช้ ตอน Pull Image (อันนี้ต้อง Subscription RedHat หรือ เป็น RedHat Developer ก่อนครับ) โดยใช้คำสั่ง ดังนี้
podman --log-level=debug pull registry.redhat.io/rhel8/support-tools
...
DEBU[0000] Using registries.d directory /etc/containers/registries.d for sigstore configuration
DEBU[0000]  Using "docker" namespace registry.redhat.io
DEBU[0000]   Using https://registry.redhat.io/containers/sigstore
...
  • ตัวอย่างการใช้ ตอน Run Container ครับ
podman run --log-level=debug -it -p 27017:27017 mongodb  
...    
INFO[0000] podman filtering at log level debug          
DEBU[0000] Called run.PersistentPreRunE(podman run --log-level=debug -it -p 27017:27017 mongo) 
DEBU[0000] Ignoring libpod.conf EventsLogger setting "/home/smit/.config/containers/containers.conf". Use "journald" if you want to change this setting and remove libpod.conf files. 
WARN[0000] The cgroupv2 manager is set to systemd but there is no systemd user session available 
...  

Reference

[CR] Starbucks-Classic Tuna

Classic Tuna Sandwich

  • ราคา 85 บาท
  • รสชาติ
    • สำหรับผมยังไม่ว้าวนะ แต่ขนมปังอบร้อนกรุบๆ และไส้ทูน่าเต็มๆ ทานตอนร้อนๆ
    • ช่วงนี้เป็นช่วงโควิตระลอกใหม่ ทางร้านเลยไม่ได้ใส่จานมาครับ ใช้จานกระดาษมาแทนมีความเก๋ไปอีกแบบครับ
  • พลังงาน 333 แคลลอรี่

Reference (พลังงานของแต่ละเมนู)

[DB2] Restrictive Database ทำให้เกิด Error CLI0125E Function sequence error. SQLSTATE=S1010

เนื่องจากทีมที่ได้เข้ามาทำ Hardening ทีมก่อนหน้าได้เปิด Option การสร้าง Database แบบ Restrictive ครับ ทำให้ Application เดี้ยงกับเป็นแถบครับ ก่อนทีจะแก้ปัญหาเราต้องมารู้จักกันก่อนครับ ว่าเจ้า Restrictive มัน คือ อะไร

Restrictive Database

  • Database ที่มีการจำกัดสิทธิของ Publish ออกหมดเลยครับ
  • หากสงสัยะไร สามารถอ่าน Blog ของผมเพิ่มเติมได้เลยครับ

มาดูปัญหาของฝั่ง Application ดีกว่าครับ

  • Application เป็นโปรแกรมที่เก่าอยู่พอสมควรครับ ใช้ ADODB เป็นเทคโนโลยีในการเชื่อมต่อ (VB6 + RecordSet) ครับ
  • การเชื่อมต่อกับฐานข้อมูลใช้เทคโนโลยี ODBC หรือ Open Database Connectivity เป็น API กลางที่ทาง Microsoft เตรียมไว้ให้กับผู้พัฒนา Database ค่ายต่างๆมาเขียนวิธีการเชื่อมต่อกับฐานข้อมูลของตัวเองครับ

ปัญหาที่เกิดขึ้น มัน คือ อะไรกันนะ ?

  • เมื่อลองเปิด Application ขึ้นพบหน้าจอแจ้งเตือน

[IBM][CLI Driver] CLI0125E Function sequence error. SQLSTATE=S1010 

Error ครอบจักรวาล เหมือนเคส Else
  • ซึ่งพอไปดู Doc DB2 แล้ว โอโห้ Error เดียวครอบจักรวาลเลยครับ
  • จริงๆแล้ว Error [IBM][CLI Driver] CLI0125E Function sequence error. SQLSTATE=S1010 มันเป็นของ ODBC ครับ ไม่ใช่ของ DB2 ครับ

แนวทางการหาสาเหตุหละ ?

  • วิธีแรก เปิด Trace Log ที่ตัว DB2 Client ครับ ได้ Log มานะ แต่มันไม่ค่อยได้ช่วยเท่าไหร่ เดี๋ยวไว้ผมจะเขียน Blog แยกอีกตอนครับ
  • วิธีที่สอง ลองย้อนกลับไปถึงเรื่อง ODBC ครับ ODBC ของ Microsoft จากการลองค้นหาดูตัว ODBC มี Trace Log ของมันครับ ซึ่งจะช่วยให้เราตรวจสอบบันทึกของการทำงานที่แปลกๆกับ Application ของเราที่ใช้ ODBC ในการเชื่อมต่อฐานข้อมูลได้ครับ

ขั้นตอนการใช้งาน ODBC Trace Log คือ อะไร

  • ตรวจสอบก่อนว่า Application ที่กำลังตรวจสอบกำหนด ODBC ได้ถูกต้อง
  • ตรวจสอบก่อนครับว่าใช้งาน ODBC แบบ 32 bits หรือ 64 bits ครับ เพื่อเปิดหน้าจอ ODBC Data Sources Administrator
    • 32 bits : %windir%\syswow64\odbcad32.exe
    • 64 bits : %windir%\system32\odbcad32.exe
  • มาที่ Tab Tracing จากนั้นกำหนดค่า ดังนี้
    • หมายเลข 1 ติ๊กเลิอกครับ เพื่อให้มันตรวจจับการตั้งค่าให้เรียบร้อย
    • หมายเลข 2 กำหนด Path ที่ให้เก็บตัว ODBC Trace Log
    • หมายเลข 3 เมื่อพร้อมแล้วกดปุ่ม Start Tracing Now ครับ
  • เมื่อตั้งค่าเสร็จเรียบร้อยให้กลับไปเปิด Application ที่มีปัญหาขึ้นมาครับ และทำขั้นตอนซ้ำอีกรอบจนได้ Error ขึ้นมา
  • กลับมาที่หน้าจอ ODBC Data Sources Administrator Tab Tracing และกดปุ่ม Stop Tracing Now ครับ
  • จากนั้นเข้าไปดูที่ ODBC Trace Log ในที่นี้ผมกำหนดไว้ที่ Path E:\Temp ครับ

วิเคราะห์ ODBC Trace Log ค้นหาความจริง

  • เปิดไฟล์ Log ขึ้นมาครับ จากนั้นลองค้นหาข้อ Keyword ที่เกี่ยวข้องกับฐานข้อมูลดูครับ เช่น DB2 / Oracle เป็นต้นครับ
  • อย่างผมใช้ Keyword DB2 และเจอคำที่ช่วยให้เล็กลงอีกอย่าง DB2/LINUXX8664
  • ตอนนี้เราได้ Error จริงๆของ DB2 มาแล้วครับ พอได้ Error นี้ ก็สามารถเอาไปค้นหาคำตอบได้ต่อครับ
  • หลังจากนั้น Try & Error ลองแก้ เปิด Application ทดสอบ และวนกลับมาแก้ไขจนทำงานได้ครบทุกเคสครับ

Script สุดท้ายครับ

GRANT EXECUTE on PROCEDURE SYSIBM.SQLPRIMARYKEYS TO user pingkunga;
GRANT EXECUTE on PROCEDURE SYSIBM.SQLSTATISTICS TO user pingkunga;
GRANT EXECUTE ON PROCEDURE SYSIBM.SQLGETTYPEINFO TO user pingkunga;
GRANT EXECUTE ON PROCEDURE SYSIBM.SQLTABLES TO user pingkunga;
GRANT EXECUTE ON PROCEDURE SYSIBM.SQLCOLUMNS TO user pingkunga;
GRANT EXECUTE ON PROCEDURE SYSIBM.SQLCAMESSAGECCSID TO user pingkunga;

GRANT EXECUTE on package NULLID.SYSSH200 TO user pingkunga;
GRANT EXECUTE on package NULLID.SQLC2O26 to role ROLE_REGULAR_USERS;

GRANT SELECT ON SYSIBM.SQLPRIMARYKEYS  TO user pingkunga;
GRANT SELECT ON SYSIBM.SQLSTATISTICS  TO user pingkunga;
GRANT SELECT ON SYSIBM.SQLTABLES TO user pingkunga;
GRANT SELECT ON SYSIBM.SYSTABLES TO user pingkunga;
GRANT SELECT ON SYSIBM.SQLTABLETYPES TO user pingkunga;
GRANT SELECT ON SYSIBM.SQLTABLEPRIVILEGES  TO user pingkunga;
GRANT SELECT ON SYSIBM.SYSCOLUMNS TO user pingkunga;
GRANT SELECT ON SYSIBM.SQLSPECIALCOLUMNS  TO user pingkunga;
GRANT SELECT ON SYSIBM.SQLCOLPRIVILEGES TO user pingkunga;
GRANT SELECT ON SYSIBM.SYSDUMMY1  TO user pingkunga;

GRANT SELECT ON SYSIBM.SQLFOREIGNKEYS  TO user pingkunga;
GRANT SELECT ON SYSIBM.SYSINDEXES  TO user pingkunga;
GRANT SELECT ON SYSIBM.SQLPROCEDURES  TO user pingkunga;
GRANT SELECT ON SYSIBM.SQLPROCEDURECOLS  TO user pingkunga;
GRANT SELECT ON SYSIBM.SYSROUTINES  TO user pingkunga;
GRANT SELECT ON SYSIBM.SYSROUTINEPARMS  TO user pingkunga;
GRANT SELECT ON SYSIBM.SQLTYPEINFO  TO user pingkunga;
GRANT SELECT ON SYSIBM.SQLUDTS  TO user pingkunga;
GRANT SELECT ON SYSIBM.SQLSCHEMAS  TO user pingkunga;
GRANT SELECT ON SYSIBM.SYSRELS  TO user pingkunga;
GRANT SELECT ON SYSIBM.SYSKEYCOLUSE  TO user pingkunga;
GRANT SELECT ON SYSIBM.SYSTABCONST  TO user pingkunga;
GRANT SELECT ON SYSIBM.SYSDATATYPES  TO user pingkunga;
GRANT SELECT ON SYSIBM.SQLSTATISTICS  TO user pingkunga;

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

[CMMI] PCM / PAD / II มันต่างอย่างไรนะ

ตัว CMMI มี Practices Area ใน Capability Area หลายอันนะ แล้ว PCM / PAD และ II มันต่างกันอย่างไรนะ ?

  • สำหรับเจ้า PCM / PAD อยุ่ใน Capability Area : Improve Performance ครับ ซึ่งเน้นการปรับปรุงกระบวนการครับ
  • ส่วน II อยุ่ใน Capability Area : Sustaining Habit & Persistence ทำให้กระบวนการที่ได้ยังคงอยู่ และทำกันจนเป็นนิสัยครับ

กลับมาดูที่ละ Practices Area ว่าเน้นอะไรกัน ถ้าดูจาก Intent และ Value ที่ได้ครับ ผมขอสลับลำดับนะครับ

  • PAD หรือ Process Asset Development
    • อันนี้ผมยอมรับว่าตัวเอง ยังสับสนกับ II/PCM เลยเป็นที่มาของ Blog ตอนนี้ครับ
    • จากรูปที่เป็น Flow Chart ที่มีฟันเฟื่องครับ กระบวนการที่ถูกทำโดยคนในองค์กรนะ ผมเดา 555 เพราะ CMMI ทำให้พัฒนากระบวนการขึ้นมา เพื่อให้เกิด Process Performance ที่ดี และสะท้อนไปยัง Business Performance ครับ
    • สำหรับ Practice Area นี้สิ่งที่ได้ตัว Process Definition ครับ และของอื่น เช่น Work Instruction หรือ Template ที่เกี่ยวข้องครับ ถ้ามัดรวมๆ Process Asset ครับ
    • ทำอย่างไรให้เป็น Organization Process Asset เช่น
      • มี Guideline การทำ Trailering Process
      • Consistent Process Execution ทุกคนใช้งาน Process ไปทางเดียวกัน ถ้ามีอะไรที่ผิดแปลกไปจะเป็นหน้าที่ของ Practice Area PQA (Process Quality Assurance) ที่เข้าไปตรวจสอบ และมาหาว่าอะไรที่ควรปรับปรุงใน Practice Area PCM ที่จะกล่าวถึงต่อไปครับ
  • PCM หรือ Process Management
    • รูปที่แสดงเป็น Flow Chart อันนี้ มันทำให้คนเข้าใจว่า การนิยามกระบวนการอยู่ในนี้ แต่จริงๆ ไม่ใช่นะ Key ที่สำคัญของ Practice Area นี้ คือ continuous improvement of processes / processes improvement
    • ผมเข้าใจว่าส่วนนี้เป็น Practice เพื่อเอามาดูว่ากระบวนการพัฒนา เพื่อตอบสนอง Practice Area ในด้านอื่นๆ มีปัญหาไหม มีแนวทางอย่างไร เพื่อให้เกิดการปรับปรุง แต่การปรับปรุงต้องมีการวัด และการบันทึกสิ่งที่วัด อันนี้จะอยู่อีก Practice Area MPM (Managing Performance and Measurement) ครับ
  • II หรือ Implementation Infrastructure
    • ผมชอบรูปที่แสดงมากครับ อันนี้ผมตีความไปเองนะว่าเป็นรูปสะพาน ซึ่งตัวสะพานเป็นโครงสร้างพื้นฐานที่เชื่อมคนของทั้งสองฝั่งครับ
    • Key ที่สำคัญ persistently and habitually used and improved.
    • มี Process แล้ว ต้องมีโครงสร้างพื้นฐานที่จะช่วยให้กระบวนการที่สร้างขึ้นมาจาก PCM สามารถถูกนำไปใช้ โดยคนในองค์กรได้อย่างเหมาะสม เพื่อเน้นให้เกิดนิสัย
    • ผมชอบตัว Practice II 2.1 นะ Provide sufficient resources, funding, and training for developing and performing processes. บอกตรงดี – ถ้ามันกระบวนการยาก หรือ ไม่มีการสนับสนุน อะไรใครจะเข้ามาใช้งานครับ ไม่มีการสอน แต่ทำให้ถูกต้องมันดูชัดแย้งกันนะ

จบไปแล้วกับการอธิบาย Practice Area PAD / PCM และ II ตามแบบฉบับของผมครับ ถูกผิดอะไรทักมาคุยได้ครับ

[RHEL8.X] แก้ปัญหา SSH / SFTP พบ sign_and_send_pubkey no mutual signature supported

ช่วงนี้ผมได้ไป Implement HW ที่ SITE นึงด้วย RedHat 8X ครับ พบปัญหาว่าตัว FTP Server ของลูกค้าไม่ได้สักทีครับ ติด ERROR

sign_and_send_pubkey no mutual signature supported

ทบทวนกันก่อนว่าทำอะไรบ้าง

  • Generate Private / Public Key เพื่อใช้สำหรับ SSH และ SFTP เพื่อทดสอบ
  • การทดสอบ
    • ทดสอบเชื่อมระหว่าง RedHat 8.X สามารถใช้งานได้
    • เมื่อส่ง Public Key ไปใช้ FTP Server ของลูกค้า ปรากฏว่าเจอ Error sign_and_send_pubkey no mutual signature supported
  • ทดสอบเพิ่มเติม
    • ทดสอบเชื่อมระหว่าง RedHat 8.X กับ RedHat 7.X สามารถใช้งานได้
    • ทดสอบติดตั้ง serv-u บน Windows Server ตามลูกค้าก็ใช้งานได้นะ
    • หมายเหตุ : serv-u เจ้าของเดียวกับ Solar Wind ที่มีข่าวหลุดๆกันแหละครับ

หนทางสุดท้ายลองพ่น Log ออกมาครับ

  • ตัว ssh ที option -vvv เอาไว้ใช้ให้ระบบมันพ่น debug log ออกมาครับ โดยการใช้งานไม่ได้ยากครับ ทดสอบทำได้เลย ยกตัวอย่าง เช่น
[invsbch@invsuatapp01 ~]$ ssh -vvv invsfile@10.22.160.30
  • สิ่งที่ผมทำดู Log จากเครื่องที่ใช้งาน Key กับเครื่องที่ใช้งาน Key ไม่ได้ และนำ Log มาเทียบกันครับ
  • ผลที่ได้เราจะพบว่า
    • เครื่องที่ใช้งาน Key ได้ มีอัลกอริทึม ECDSA
    • แต่เครื่องที่ใช้งานไม่ได้ ยังใช้อัลกอริทึม RSA โดยมีการกำหนด Key EXchange (kex) คือ diffie-hellman-group14-sha1
  • RSA VS ECDSA มันต่างกันอย่างไร
    • RSA เป็นการเข้ารหัส โดยใช้หลักของจำนวนเฉพาะ เป็นแนวคิดแรกๆที่ริเริ่มมาเลยครับ
    • ECDSA เป็นการเข้ารหัส โดยใช้หลักการ Elliptic Curve ซึ่งมีข้อดี คือ
      • ใช้พื้นที่น้อยกว่า แต่ได้ความแข็งแกร่งเทียบกับ key มาจาก RSA ครับ
      • เมื่อใช้พื้นที่น้อย นั้นแสดงว่าใช้พลังของ CPU ในการประมวลผลน้อยด้วยครับ
      • ถ่วงเวลาจากการถอดรหัสได้ช้ากว่า RSA (ที่ใช่คำว่าถ่วงเวลา เพราะ Security มันไม่มีอะไรที่ปลอดภัยตลอดครับ)
      • พวก Crypto Currency อย่าง Bit Coin / Ethereum ใช้ Algorithm นี้ด้วยนะครับ

ECDSA มันดีแบบนี้แล้ว เราก็ถูกสิ

  • ก็ไม่เชิงครับ เพราะ ถ้าเราจะไปบังคับให้เครื่องลูกค้า Upgrade OS หรือ Software ใหม่ๆ มันมีค่าใช้จ่ายตามมาด้วยครับ
  • ทางแก้ง่ายๆ ยอม Config เฉพาะ User@Host ใช้ยอมใช้ KEX เก่าไปก่อนครับ

แก้ไขปัญหา

  • สร้างไฟล์ ~.ssh/config
  • กำหนด Config เฉพาะ User@Host ใช้ยอมใช้ KEX เก่าไปก่อนครับ
Host 10.2X.YY.ZZZ
   User TEST_APP
   IdentityFile ~/.sgh/id rsa
   KexAlgorithms diffie-hellman-group14-shal
   PubkeyAcceptedKeyTypes +ssh-rsa
  • จากนั้นลองทดสอบ SSH หรือ SFTP ครับ (บางที่อาจจะ SSH ไม่ได้ อย่าง เช่น Windows Server รุ่นเก่าๆ เป็นต้นครับ

Reference (เขียน Blog ตอนนี้ได้ความรู้เยอะมากครับ)

[VM] วิธีการ Mount DVD บน Virtual Box ครับ

สำหรับใครที่ใช้งาน Virtual Box เพื่อสร้าบ VM และ ทดสอบงานต่างๆบน Environment Develop ครับ บางครัั้ง อาจจะต้องมีการ Mount DVD เข้าไป ยกตัวอย่าง เข่น การ Mount DVD ISO เพื่อ Update ตัว CentOS8 หรือ RHEL8 เป็นต้น โดยวิธีการ Mount จะเป็นอย่างไรมาลองดูกันครับ

  • เปิดโปรแกรม Virtual Box เลือก VM ที่สนใจ จากนั้นกดปุ่ม Setting
  • ที่หน้าจอ Setting เลือกที Tab System ปรับ Boot Order ให้ Optical (CD/DVD) ลำดับอยู่หลังจาก Harddisk ครับ
  • จากนั้นเลือกที่ Tab Storage เลือกไฟล์ ISO ที่ต้องการ mount ตามขั้นตอน ดังรูป
  • หลังจากเพิ่ม DVD เรียบร้อย อย่างลืมติ๊ก Live CD/DVD ออกครับ
  • เปิด VM และ log-in root ให้เรียบร้อย
  • สร้าง Folder DVD และ Mount CD-ROM (/dev/cdrom) เข้ามาที่ Folder DVD ด้วยคำสั่ง
mkdir dvd
mount /dev/cdrom dvd
  • ผลลัพธ์ที่ได้ครับ แต่มี Warning เพราะ DVD Readonly ครับ
[root@localhost ~]# mkdir dvd
[root@localhost ~]# mount /dev/cdrom dvd
 mount: /root/dvd: WARNING: device write-protected, mounted read-only.
  • หลังจากนั้นลองเข้าไปใน Folder DVD ครับ เราพบว่าข้อมูลเข้ามาแล้วคร้บ
  • เมื่อใช้งานเสร็จแล้ว สามารถใช้คำสั่ง umount <ขื่อ Folder> ออกได้ อย่างกรณีนี้ เราเอา mount folder dvd ออกไปครับ
umount dvd

ทุกคนพอเข้าใจการ Mount เอา Resource อื่นๆ เข้ามาให้ตัว OS รู้จักกันแล้ว สำหรับ Blog ถัดไป ผมคงทำต่อหลังจากที่ Mount DVD RHEL8 เข้ามาแล้ว คือ สร้าง Local Repository แล้ว Update OS ครับ

[CR] S-Pen ของ Samsung มีปัญหาให้ระวังเรื่องการประกันด้วยครับ

วันนี้จริงๆ ผมควรจะมาเขียน Review ของ Samsung Tab S7 มา 1 เดือน มันโอเคไหม หรือติดปัญหาอะไร ซึ่งผมใช้มา 1 เดือน ปรากฏว่าประชุม และเขียนๆจดข้อมูลอยู่ปรากฏว่าหัวปากกาหักคาด้านในเลย และพอสอบถามไปประกันไป

ปากกาหัวหักใน ไม่อยู่ในประกัน !!!!

ต้องรอดูต่อไปครับ ว่าถ้าเสียเวลาไปศูนย์จริง แล้วเคลมไม่ได้จริงๆ เครื่องหน้า ผมต้องเอา Blog นีั้ประกอบการตัดสินใจ ซื่อผลิตภัณฑ์ของ Samsung ต่อไปครับ

สำหรับ Blog ผมเขียน เพื่อ Share ให้ทุกคนที่กำลังตัดสินใจซื้อสินค้าที่มี S-PEN ประกอบการตัดสินใจไปครับ สำหรับผมเครื่องนี้คงใช้งานต่อไป แต่คงสั่งปากกาใหม่ และใช้งานคู่ไปกับปากกาจีนแทนครับ

[DB2] Restrictive Database

หลายคนอาจจะสงสัยว่า Restrictive Database ตัว Option นี้มันมาทำให้ชีวิตเราสบายขึ้น หรือ แย่ลงกันนะ มาลองดูที่ผมอธิบายครับ

  • ปกติแล้วตัว DB2 เวลาสร้าง Database ขึ้นมา มันจะสร้าง Public เข้ามาด้วยครับ ซึ่งจะมีสิทธิต่างๆ ให้มาโดย Default ครับ
  • ตัว DB2 เองพวก User ที่เข้าจัดการ Database ตัว DB2 มันไม่ได้จัดการนะครับ งานในส่วนนี้เป็นหน้าที่ของ OS ที่ติดตั้ง DB2 ครับ อย่างพวก AIX Linux Windows
  • ดังนั้นถ้ามี User ใหม่เกิดขึ้นบนเครื่อง Database Server มันได้สิทธิเข้าจัดการ DB2 ได้อัตโนมัติ เพราะสิทธิ Public ครับ อันตรายใช่เล่นเลยนะครับ
  • ดังนั้นทาง IBM DB2 เลยตัดปัญหาว่า เพิ่ม Option Restrictive เข้าไปครับเวลาสร้าง DB ให้มันไปตัดสิทธิของ Public ออกให้หมด

Restrictive Database สร้างอย่างไร ?

  • สร้างโดยการเติม Option Restrictive ต่อท้ายเข้าไปเลยครับ
  • การตรวจสอบสามารถใชั Query นี้ตรวจสอบครับ
  • หากยังเป็น Non-Restrictive Database อันนี้เราจะพบว่ายังมีข้อมูลของ PUBLIC ค้างอยู่ครับ รวมๆประมาณ 900 กว่าข้อ (ทดสอบบน DB2 11.5.4 นะครับ)

ข้อดีของ Restrictive Database

  • ไม่มี Public ทำให้มีความปลอดภัยมากขึ้น เพราะการเข้าถึงฐานข้อมูลทุกอย่างต้องมีการกำหนดสิทธิการเข้าถึงครับ

ข้อเสีย Restrictive Database

  • หาแหล่งข้อมูลยากมากครับ บางครั้งหลังจะสร้างฐานข้อมูลด้วย Option นี้ไปแล้ว พบว่า Application ของเราอยู่ๆ
  • แหล่งข้อมูล หรือ คำแนะนำของ Restrictive Database มีน้อยมากครับที่เจอมีเพียงเล่มเดียวเองครับ A practical guide to restrictive databases – IBM Community
  • การจะแก้ปัญหาต้องไล่ดู Log เท่านั้นครับ เป็นการที่ถึกอยู่พอสมควรเลยครับ
  • มันเปลี่ยนไประหว่าง Restrictive กับ Non-Restrictive ไม่ได้นะครับ ต้อง Drop DB และสร้างใหม่เลยครับ