[WIN10] ปรับให้ Standard User สามารถแก้ไขวันที่ไดั

สำหรับ Blog นี้ พอดี ระหว่างพัฒนาระบบใหม่ขึ้นมา ทาง BA อยากจะลองแก้ไขวันที่ของ DB Server เพื่อทดสอบการทำงานของ Application ครับ โดยการจะแก้ไขวันที่ได้ มีเงื่อนไข ดังนี้ Windows ต้องเป็นของแท้ Windows ต้องมี Patch Update เกือบล่าสุด  และสุดท้าย User ที่ใช้งานต้องมีสิทธิ์ด้วยครับ  สำหรับหัวข้อสุดท้าย “สุดท้าย User ที่ใช้งานต้องมีสิทธิ์ด้วยครับ” ถ้าจะเพิ่ม User สามารถทำได้ โดยมีขั้นตอนสั้นๆ ดังนี้ครับ WIN + Q จากนั้นพิมพ์ gpedit.msc เพื่อเปิดหน้าจอ Group Policy Editor ครับ เข้าไปตาม Path Computer Configuration > Windows Settings > Security Settings > Local Policies > User Rights Assignments หาหัวข้อ Change the system time จากนั้นเพิ่ม User ที่ต้องการ แล้วกด OK ครับ Restart เครื่องอีกครั้งครับ จบไปแล้วกับอีก Blog ที่หาเวลามาเขียนยากมากก งานเยอะ มา 8 โมง กลับอีกที่ ก็ 5 ทุ่ม T___T

Design Technique for Enterprise Transaction Design

สรุปแนวคิดสำหรับการออกแบบระบบให้ระบบขนาดใหญ่ (Enterprise) และรองรับข้อมูลธุรกรรม(Transaction) จำนวนมาก โดยต้องการให้ขยายระบบ(Scalability) ได้ในอนาคตครับ เลือกรูปแบบ Data Modeling – Transaction – ORM vs ER – พวก Sensitive Data จัดการอย่างไร – Data distribution / Data Centralization เลือกรูปแบบ Architectural Patterns การเลือก Architecture ต้องดูจาก – Resource Handings (POSA-3) ตรงนี้จะเห็นว่า กล่องสีๆ พวก Performance / Scalability คือ พวก Quality Attribute โดยการเอา Pattern (กรอบประ) แต่ละอันมาช่วยเสริม อันไหน เช่น – Resource Management (POSA-2) มีหลายอันเลยครับ ที่มาช่วยในเรื่องต่างๆ Service Access and Configuration Event Handling Synchronization Concurrency LAST UPDATE: 2022-10 Reference

[DB2] SQL30082N Security processing failed with reason “1” (“PASSWORD EXPIRED”). SQLSTATE=08001

IBM DB2

ใช้ DB2 บน Docker มา 7-8 เดือน วันนี้พี่ในทีมบอกว่า เฮ้ยยย Database เป็นอะไร Login เข้าไม่ได้ครับ โดย Error Message คือ SQL30082N Security processing failed with reason “1” (“PASSWORD EXPIRED”).SQLSTATE=08001 ก่อนอื่นมาดูกันก่อนครับ มันเป็นที่ DB2 หรือป่าว ? คำตอบไม่เกี่ยวกับ DB2 เลยครับ เพราะ ตัว DB2 ไม่ได้จดจำ Username หรือ Password ของ Database เลยครับ สิ่งที่ DB2 ทำ คือ เชื่อใน OS ครับ เอาง่ายๆ DB2 ฝากหน้าที่การตรวจสอบตัวตนให้ใช้งานของ OS จากงานข้างต้นแสดงว่าการแก้ปัญหาไม่ได้มาจาก DB2 ครับ ต้องไปจัดการสิทธิของ User ใน OS ครับ อย่างผมใช้ CentOS ใน Docker IBM DB2 ครับ โดยคำสั่งที่ใช้ในการเปลี่ยน Password Expire ของ CentOS มี ดังนี้ครับ แบบที่ 1 : กำหนดไม่ให้ Password Expire เลยครับ – เหมาะสำหรับเครื่อง Development ครับ คำสั่ง  chage -m 0 -M 99999 -I -1 -E -1 <<username>> ตัวอย่าง  chage -m…

[CUSE] ในที่สุดก็แก้ Propasal จาก EThesis มาเป็น IThesis สำเร็จ

งานเยอะ แต่ทรัพย์จางครับ หลังจากทำงานปั่นๆ เพื่อให้มี Product จริงตามที่ Marketing เสนอขายไว้ในช่วงเสาร์-อาทิตย์ อันยาวนานคราวนี้มีเวลามาส่งไฟล์ Propasal ของ Thesis สักทีครับ โดยผมได้ทำเอกสารไว้ในระบบ Ethesis แล้วแหละ แต่พอ Migrate มาเป็น IThesis มันหายครับ จากวันนี้ 2018-11-30 สู้ต่อไปอีกเทอมครับ หวังว่าความเยอะของงานจะลดลงครับ วันที่ต้องหยุดพักเพราะร่างกายรับไม่ไหววันที่ต้องเจ็บใจจนแอบไปสะอื้นกี่ครั้ง

[WINDOWS] กำหนด Password ของ User ให้เป็น Never Expire

Microsoft Windows

หลังจากที่ได้ทำงานที่ท้าทายชิ้นนึง โดยมีเงื่อนไขของระบบว่าต้องเป็น Windows Server แต่งานชิ้นนี้ เป็นงานที่ได้ใช้องค์ความรู้ที่ได้เรียนมาตอนเรียนปริญญาโท ด้าน SE หมดเลยครับ แต่งานกินเวลาทำ Thesis ไปเช่นกัน งอแงมาพอและ มาเริ่มเลยดีกว่า เนื่องจากระบบที่ใช้เป็น Windows Server และด้วยสภาพ Environment ของ Dev เลยไม่จำเป็นต้องกำหนดกฏเยอะแยะด้าน Security ครับ โดยการกำหนดอายุของรหัสผ่านก็เป็นหนึ่งในประเด็นที่ฝั่ง Dev ของมองข้ามไปก่อนครับ โดยสำหรับ OS ตระกูล Windows มีวิธีการ ดังนี้ครับ ใช้ Command เลย มันเร็วดีครับ จากคำสั่ง wmic ครับ รูปแบบคำสั่ง wmic useraccount where “Name='[USERNAME]'” set PasswordExpires=false ตัวอย่าง wmic useraccount where “Name=’Administrator'” set PasswordExpires=false หลังจากที่ลองเขียนคำสั่งไปแล้ว เราต้องตรวจสอบผลจากคำสั่ง net  ครับ รูปแบบคำสั่ง net user [USERNAME] ตัวอย่าง net user Administrator ลดความยุ่งของทีม Dev ไปแล้ว แต่ตอนไป Implement จริง ให้ทำตาม Policy นะครับ เดี๋ยวจะชื่อดังโดยไม่รู้ตัว ^___^

[ENDNOTE] แทรกรายการอ้างอิงในไฟล์ MS Word

หลังจากติดงานที่ทำวันเสาร์ อาทิตย์มาตลอด ตอนนี้ได้เวลามาทำให้มันเสร็จสมบูรณ์สักทีกับระบบ IThesis ที่เปลี่ยนมาจาก EThesis ครับ มาเติมเต็มรายการอ้างอิงในไฟล์ MS Word กันครีบ สิ่งที่ต้องมี รายการข้อมูลอ้างอิง ต้องทำใน EndNote ให้เรียบร้อย ไฟล์ MS Word ที่มีข้อมูลเรียบร้อยแล้ว มาลุยกันเลยครับ เปิดไฟล์ Word วาง Cursor ไว้ในจุดที่ต้องการแทรกรายการอ้างอิง แทรกรายการอ้างอิง ไปที่ EndNote เลือกรายการอ้างอิง จากนั้นเลือก Insert Citation(s) หรือ จะไปที่ Word แล้วเลือก Insert Citation(s) กลับมาดูที่ MS Word กันครับ กรณีที่ต้องการแทรก Reference หลายๆอัน เช่น รายการที่ 5-10 และ 12-20 ทำตามขั้นตอนเดิมเลย แล้วเลือก Reference หลายๆอันแทนครับ ในกรณีที่แทรก  Reference หลายๆอันแล้วในบบรรรณานุกรมลำดับเปลี่ยน สามารถจัดลำดับได้ โดยกำหนดใน “Edit & Manage Citation(s)”

Print A0 ลง A4 หลายๆแผ่นได้ โดยไม่ต้องง้อ Printer ขั้นเทพ

พอดีผมมี Term Project ของที่เรียน ป โท ครับ โดยต้องออกแบบระบบลง Blue Print ขนาดกระดาษ A0 ครับ ซึ่งผมได้ทำบน Draw.IO กับเพื่อนในกลุ่มครับ TIPS: ตอน Export รูป หรือ PDF จาก DRAW.IO ให้เลือก Zoom แบบ 375% ครับ ป้องกันภาพแตกครับ แต่่ถ้าตั้งค่ามากกว่านี้ภาพแตก-ระบบบั๊กครับ เมื่อได้ไฟล์รูปภาพ หรือ PDF ขนาดกระดาษ A0 แล้วต้องทำอย่างไรต่อหละ ถ้าเป็นไฟล์รูปภาพ ให้แปลงเป็น PDF ก่อนครับ Download Adobe Acrobat Reader มาครับ จากนั้นติดตั้งให้เรียบร้อยครับ เปิดไฟล์ PDF ขึ้นมาครับ ดังรูป ตอนกด Print เลือกแบบ Poster ครับ ดังรูป ขั้นที่ 1 : เลือก Property กำหนดค่าของ Printer ให้เรียบร้อย ขั้นที่ 2 : กำหนดขนาดกระดาษให้เรียบร้อย ในที่นี้ผมเลิอก A4 ครับ (หน้าจอนี้แล้วแต่เครื่อง Printer ของแต่ละค่ายนะครับ) ขั้นที่ 3 : กดปุ่ม Poster ครับ พบหน้ากระดาษ A0 ถูกแบ่งตาม A4 เรียบร้อยแล้วครับ ขั้นที่ 4 : กำหนดแนวของกระดาษ แนวตั้ง/แนวนอน ครับ ขั้นที่ 5 : ถ้า OK แล้ว กด Print…

[JAVA] Thread Pool ใน Java

ช่วงนี้งานเยอะครับ ผมได้รับมอบหมายงานให้ลองปรับระบบงานเดิม ให้มันรองรับงานได้มากขึ้น และหนึ่งในเทคนิคที่ผมเลือกใช้ การทำงานแบบ Asynchronous ครับ โดยการทำงานแบบนี้สิ่งคนสั่ง สั่งงานเสร็จปุ๊บ ไม่ต้องรอผลลัพธ์ครับ แล้วให้ระบบมันทำงานต่อไปจนเสร็จ และแจ้งค่อยแจ้งผลลัพธ์ให้ Client รับทราบครับ แล้ว ThreadPool มันเกี่ยวยังไงหละ เจ้า ThreadPool มันเป็นวิธีการนึงที่ช่วยในการจัดการกับ Resource ครับ ถ้าเป็นเมื่อก่อนเวลาเราจะแตกงานให้ใช้ CPU ของเครื่องให้มันคุ้มค่าสิ่งที่ทำกัน คือ การ New Thread แยกเลยครับ ตาม Code ตัวอย่างครับ ปล. Code นี้มีปัญหานะครับ Run ไปเรื่อยๆ จาก Code ในข้างต้น ถ้ามีงานสัก 100 ชิ้น และต้องการแตก Thread จะพบปัญหาของการไปเขียน Thread แยกเอง ถ้าไม่เชี่ยว หรือเชี่ยวแล้วอย่าทำครับ เพราะ ทำอะไรไว้ ต้องไปจัดการให้เรียบร้อยด้วยนะครับ เพราะ เราต้องการคุมเกม แต่ถ้าเกิด Exception ขึ้นมาแล้ว เราต้องจัดการกับ Thread ที่มีปัญหาเองนะครับ ไม่งั้นมันจะแอบกิน Resource ของระบบไปเรื่อยๆจน System Down ลงไปครับ หรือ  ถ้าเราต้องการควบคุมว่ามีแต่ 5 Thread เท่าที่นั้นสามารถทำงานได้พร้อมกัน โอ้ววต้องไปเขียน Semaphore กันวุ่นวายเลย พระเอกของเราครับ แนวคิดของ ThreadPool จึงเกิดขึ้นมาครับ เพื่อมาเป็นตัวช่วยในการจัดการงานทั้งหมดให้งาน หรือใช้ Resouce ได้คุ้มค่า เพราะในแนวคิดของการ Caching Thread ทำงานเดียวกัน แต่ทำไมเยอะแยะสร้างตามที่มันสามารถทำงานได้พร้อมกัน และเมื่อมันทำงานเสร็จ โดย Thread ที่ทำงานเสร็จแล้วก็จะกลับไปเป็นสถานะ Idle และรอการ Reuse หรือถูกทำลายไปครับ สำหรับใน Java มีตัว…

[JWT] Idea การออกแบบ Token สำหรับ Microservice

พอดีลองมาเยอะครับ เลยขอสรุป Pattern ที่ใช้ครับ Blog นี้อาจจะสั้นนิดนึงนะ โดยผมแยก Token ออกเป็น 2 กลุ่ม ได้แก่ Access Token กับ Refresh Token โดยแต่ละอันมีรายละเอียด ดังนี้ Access Token ระยะเวลาสั้น เก็บ Anything เช่น พวกสิทธิในระบบ Size ยิ่งใหญ่ทำให้ Request นานๆ ข้อมูลบางอย่าง เช่น พวกสิทธิ อาจจะต้องแปลงให้เล็กที่สุด โดยอาจจะทำเป็นเลขฐาน 2 แทน ถ้า Expired Return Code 4xx แต่ไม่ได้อยู่ในมาตรฐานนะ แล้วแต่องค์กรจะตกลงกัน Refresh Token ระยะเวลายาว – เก็บว่า User ยังอยู่ในระบบนะ เอาไปขอ Access Token ถ้า Logout ไป Server ต้องเก็บ Token Id ว่ามัน Expired ไปแล้ว มันไม่สามารถมาขอ Token อื่นๆได้ Pettern ของ Return Code 401 403  

[JAVA] ดึงนามสกุลไฟล์ จากไฟล์ที่ถูก Upload เข้ามาผ่าน Multipart file

ดึงนามสกุลไฟล์ จากไฟล์ที่ถูก Upload เข้ามาผ่าน Multipart file โดยสามารถใช้ Code ได้ ดังนี้ครับ เพิ่ม Library Apache Commons IO  ลงในไฟล์ pom.xml  ครับ จากนั้นเรียกใช้ Class FilenameUtils  ที่อยู่ใน Library Apache Commons IO ตัวอย่าง Code ที่ใช้ดึงนามสกุลไฟล์ จากไฟล์ที่ถูก Upload เข้ามาผ่าน Multipart file ครับ String extension = FilenameUtils.getExtension(file.getOriginalFilename());