งานสัปดาห์หนังสือแห่งชาติ ปี 58(เด็กดี ?)

ฺBlog ตอนนี้เป็น Blog แรกของเดือนเมษา พาร้อนนะครับ โดยช่วงงานหนังสือปีนี้ ผมได้ไปเดือน 2 วันครับเสาร์ที่ 28 มีนาคม 58 (จริงๆไปเลี้ยงข้าวเพื่อน และแวะมา ฮ่าๆ) และก็วันเสาร์ที่ 4 เมษายน 58 (อันนี้เดินทั้งวันหมดเงินไเยอะเลย) ภาพรวมของงานปีนี้ผมว่าคนมางานเยอะมากกว่าก่อนนะครับ จากการที่ต้องเบียดเสียดผ่าพัไปหาหนังสือในงานครับ สำหรับหนังสือที่ผมได้ซื้อมาเต็มบ้านมี ดังนี้ครับ ชุดแรก เป็นหนังสือจากบูธมติชนครับ หนังสือให้กำลังใจ และให้แง่คิดดีของพี่หนุ่มเมืองจันท์ (มี List รายการหนังสือด้วย) และหนังสือสามก๊ก 26 ยุทธวิธีสู่ชัยชนะครับ ชุดที่สอง อันนี้เป็นหนังสือที่ขายหนังสือเกี่ยวกับการลงทุนครับ แต่ส่วนตัวผมมองว่าหนังสือพวกนี้ เริ่มเต็มตลาดและ และส่วนตัวผมที่เป็นนักลงทุนคนหนึ่งเสียเวลาซื้อหนังสือมาหลายเล่มเหมือนกัน แต่ก็ยังดอยอยู่ดี 555 เลยไปซื้อหนังสือกลุ่ม 4 เล่ม 100 แทนครับ ตามนี้เลย ชุดที่สาม หนังสือภาษาจากดวงกมลสมัยครับ (หวังว่าซื้อมาแล้ว มีเวลาไปอ่านสอบครับ 555 เป็น Developer ต้องอดทน) ชุดที่สี่ สายคอมต้องมีหนังสือ IT บ้างครับ ได้แก่ BigData สร้างแนวทางในการเรียนโท, Java Web เอาไว้อ่านช่วงสงกรานต์ครับ เพราะมีเทรนเกี่ยวกับ Java บนระบบ Cloud ครับ (จริงอยากไปสาย Java นะ 55) และเล่มสุดท้าย Linux administration เอาไว้เผื่อทำ Server ต่อครับ หลังจากทำใช้งานแบบ SOHO กับบริษัทญาติ ชุดสุดท้าย หนังสือด้านการเงินครับ อันนี้ผมแนะนำนะครับสำหรับคนที่สนใจการลงทุน ถ้ามีความแข็งแกร่งพอแล้วแนะนำอ่านครับ (ผมยังลังเลเลือกเรียนโทระหว่างสาย IT กับการเงินนะครับ) สุดท้ายและจบงานนี้ไปหมดค่าเสียหาย 2,325 บาทครับ และปิดท้ายด้วยอาหารญี่ปุ่น Yayoi กันนะครับ

[VMWARE] Attempting to load a 64 bit application this cpu is not compatible with 64 bit mode

พอดีลง VMWare โดยเครื่อง Notebook เป็น Windows 8 Pro 64 bit และ OS ของ Guest เป็น Windows 7 Enterprise 64 bit ครับ โดยเมื่อลง GUEST-OS ไปครึ่งทาง VM ได้ Restart และมี Message แจ้งเตือนว่า vmware attempting to load a 64 bit application this cpu is not compatible with 64 bit mode สาเหตุ เกิดจาก Hardware ของระบบยังไม่เปิด Hardware Virtualization ใน BIOS ครับ การแก้ไข เปิด Hardware Virtualization ใน BIOS ครับ โดยอันนี้ต้องดูตามคู่มือในของเครื่อง แต่ละรุ่นครับ โดยสำหรับเทคโนโลยี Hardware Virtualization สำหรับ CPU ค่ายหลังๆ ก็จะมี ดังนี้ครับ (เผื่อเอาไปคล้ำหาใน BIOS ได้)

[DB2] Grant สิทธิ์ในการใช้งานฐานข้อมูล

IBM DB2

จากบทความที่แล้ว ตรวจสอบ Privileges, Authorities and Authorizations ของฐานข้อมูล น่าจะทำให้ผู้ที่อ่าน Blog ของผมได้เข้าใจอะไรหลายๆอย่างเกี่ยวกับสิทธิของ DB2 แต่การเข้ามาจัดการ Database นั้น เราต้องให้สิทธิ(GRANT) ว่าให้ User ที่ต้องการมีสิทธิในการทำอะไรครับ โดยเรื่องของการ GRANT อันนี้กว้างมากครับ โดยผมขอจะขอยกตัวอย่างจริงที่เกิดขึ้น เมื่อนำ DB ของระบบงานเก่ามาขึ้น เพื่อไล่ Code เดิม และมาสร้างระบบใหม่บน .Net ครับ เมื่อทดสอบ Run ระบบได้แจ้ง Message เตือน ดังนี้ อธิบาย Error Message กันก่อน เพราะ Developer ส่วนใหญ่มักมองข้าม โดยเจ้า Error สามารถอธิบายได้ ดังนี้ การแก้ไข – แบบที่ 1: แก้แบบลูกทุ่ง มันฟ้อง Error อะไร ก็เพิ่มสิทธิตรงนั้น – แบบที่ 2: ถ้าลองได้แกะระบบ หรือถามผู้รู้มาแล้ว พบว่า User นั้นต้องใช้สิทธิระดับที่สูงกว่านั้น  ถ้าลองได้แกะระบบ หรือถามผู้รู้มาแล้ว พบว่า User นั้นต้องใช้สิทธิระดับที่สูงกว่านั้น เราสามารถ Grant สิทธิให้ได้เลย อย่างตัวอย่างนี้ จะลอง Grant สิทธิ User ให้เป็นระดับ DBADM (Database administration authority) ดังนี้ หมายเหตุ: ชื่อ User DSADMIN เป็นชื่อสมมตินะ เนื่องจากชื่อ Database จริงไม่สามารถเปิดเผยได้ 55 – สรุป ท้ายที่สุดนี้ สำหรับคนที่สนใจเพิ่มเติมเกี่ยวกับคำสั่ง GRANT สามารถดูเพิ่มเติมได้ ในแต่ละเรื่องตามสารบัญด้านข้างได้ครับ

[DB2] ตรวจสอบ Privileges, Authorities and Authorizations ของฐานข้อมูล

IBM DB2

บทความนี้จริงๆ คิดจะเขียนมานานและ แต่ลีมเขียน Draft ไว้ วันนี้พอดีลองเอา DB ของระบบเดิมมาขึ้น เพื่อมา Port ออกมาเป็นระบบใหม่บน .Net แต่ดันติดเรื่องสิทธิ์ใน Database ของระบบเก่า ในเมื่อได้โอกาสอันควรมาแล้ว ก็มาเริ่มอธิบายกันเลยครับ เดี๋ยวลืมไปอีก โดยก่อนที่เรามารู้เรื่องสิทธิ โดยคำว่าสิทธ์เนี่ยเป็นคำกว่าๆครับ เรามารู้จักคำที่เจาะจงไปกว่านี้ ดีกว่าครับ รู้จักสามคำนี้แล้ว สิ่งที่เราต้องรู้ คือ ความสัมพันธ์ของ 3 คำนี้ครับ โดยเราเข้าไปจัดการ Database ได้นี่ ต้องมี user ที่ได้รับการให้อำนาจ(Authorizations) ให้มีสิทธิการในการจัดการ(Privileges) และมีอำนาจในการจัดการ(Authorities) ครับ สำหรับ View (หรือ อาจจะเรียกว่าเป็น Catalog) ที่เกี่ยวกับ Privileges, Authorities and Authorizations มี ดังนี้ครับ SYSTEM CATALOG คำอธิบาย SYSCAT.DBAUTH แสดงสิทธิต่างๆใน Database SYSCAT.TABAUTH แสดงสิทธิต่างๆใน Table และ View SYSCAT.COLAUTH แสดงสิทธิต่างๆใน Column SYSCAT.PACKAGEAUTH แสดงสิทธิต่างๆใน Package SYSCAT.INDEXAUTH แสดงสิทธิต่างๆใน Index SYSCAT.SCHEMAAUTH แสดงสิทธิต่างๆใน Schema SYSCAT.PASSTHRUAUTH แสดงสิทธิต่างๆใน Server SYSCAT.ROUTINEAUTH แสดงสิทธิต่างๆในงานที่เป็น routine ได้แก่ Function, Method และ Store Procedures สำหรับ Field ในแต่ละ Catalog สามารถดูได้จาก Command ดังนี้ และท้ายที่สุดครับ คือ Query สำหรับตรวจสอบสิทธิของแต่ละ User ใน Catalog ครับ หมายเหตุ: Column…

[DB2] Export Table Data

ช่วงนี้ UAT มีอะไรแปลกให้เขียนเยอะครับ อย่างตอนนี้เป็นการใช้ DB2 Export เพื่อ Export ค่า mapping ของระบบ Interface จาก DB ของทีม QA ไปยังที่ Site ลูกค้าครับ เพราะลูกค้าบอกว่า Script ที่ได้ Run ไปที่เครื่อง AIX มันไม่ครับ (มีไม่ครบ ก็ยัดจากเครื่อง QA มาเลย 555) มาดูคำสั่ง Export ดีกว่าครับ รูปแบบคำสั่งคร่าวๆ เพราะจริงๆมี Option ให้เลือกยิบย่อยมากมายครับ export to [path และชือไฟล์ที่ต้องการ] of [ชนิดของ File ที่ Export] messages [path และชือไฟล์ log ที่ต้องการ] [คำสั่งSQL ในการดึงมูลมา Export] ชนิดของ File ที่ Export ดังนี้ DEL: delimited ASCII format WSF: work sheet format IXF: Integration Exchange Format, PC version. Binary format มีการเก็บโครงสร้างมาให้ด้วย แต่มีประโยชน์ตอนที่ SELECT * เท่านั้น ตัวอย่างคำสั่ง กรณีแบบ .ixf (ขอเน้นการใช้แบบ .ixf เพราะ ใช้ Import ข้าม Version หรือ Platform ได้ โดยไม่มีปัญหาครับ) [sql]db2 export to C:\I_MAPFIELDVALUE.ixf of ixf…

[DB2] LOCK & UNLOCK Table

บางครั้งเวลาที่เราพัฒนาระบบ เรามีความจำเป็นที่ Lock Table เพื่อบังคับให้มีการ Insert/Update Record ได้ทีละรายการเท่านั้น เพื่อจุดประสงค์บางอย่าง เช่น การ Approve ยืนยันรายการ เป็นต้น โดยรูปแบบของคำสั่ง LOCK มีรูปแบบ ดังนี้ Mode การ Lock มี 2 แบบ ได้แก่ IN SHARE MODE คือ Lock ทุกอย่าง แต่ยังสามารถ Read ข้อมูลใน Table ได้ ดังตัวอย่าง [sql]LOCK TABLE INVEST.COMPANY IN SHARE MODE[/sql] IN EXCLUSIVE MODE คือ Lock ทุกอย่างเลย ดังตัวอย่าง [sql]LOCK TABLE INVEST.COMPANY IN EXCLUSIVE MODE[/sql] สิ่งที่ควรระวัง ถ้าอีก Process นึงที่มีการยุ่งเกี่ยวกับ Table เดียวกัน  และกำหนด Isolation level เป็น Uncommitted Read (UR) แล้ว Process นั้นสามารถอ่านข้อมูลได้ แม้ว่าจะ Lock ในระดับ Exclusive แล้วก็ตาม การระบุชื่อ Table ที่จะ LOCK ควรระบุชื่อ Schema เข้าไปด้วย เพราะเมื่อ Upgrade DB Server หรือ Client จะได้ไม่มีปัญหาที่เกิดจาก Defect ของทาง IBM เอง เพราะเท่าที่พบเคยเจอปัญหาใน 10.5 ครับ เมื่อ Lock…

[DB2] SQL สำหรับตรวจสอบ Version ของ DB2

ช่วงนี้ไป UAT บ่อย เริ่มเจอปัญหาแปลกของ Enviroment ของ Production กับ Enviroment ที่ใช้ในการ Development ที่บริษัท แตกต่างกัน ทำให้เวลาที่เราฝั่งคำสั่งบางตัว อาจจะเกิดปัญหาขึ้นได้ครับ โดยวันนี้ผมขอแปะ Query สำหรับดู Version และ Fix Pack ของ DB Server ดังนี้ครับ [sql] SELECT SERVICE_LEVEL , FIXPACK_NUM FROM TABLE (SYSPROC.ENV_GET_INST_INFO()) AS INSTANCEINFO [/sql] โดยผลลัพธ์ที่ได้ จาก Query มี ดังนี้ครับ

AT Service Protocol Error Code 8 (Interactive Process)

Microsoft Windows

บางครั้งเราอาจจะมีระบบงานเก่าที่ใช้ “AT Service Protocol” พอย้ายมาระบบใหม้เวลาทำงานเจอ Error Message แนวนี้ Error Code 8 (Interactive Process) ครับ สาเหตุ การแก้ไข สุดท้ายนี้ ถ้าใครจะทำระบบงานใหม่ๆที่ต้องมี Schedule แนะนำให้ใช้ตัวนี้ครับ Task Scheduler Managed Wrapper ซึ่งเป็น Third Party ที่ช่วยจัดการเรื่องนี้ครับ ใช้งานได้ง่าย สำหรับผมใช้ทำ App ในการดึงข้อมูลจาก ThaiBMA เพื่อแปลง Format และให้ระบบอื่น Feed ข้อมูลเข้าระบบครับ แต่ถ้าอยากลองไปไล่ Library ของ Microsoft จริงๆ ตามมาดูได้ที่นี่ครับ Task Scheduler นี้ครับ Reference

[DB2] -tvf , -td@ -f คือ อะไร

IBM DB2

จริงๆ บทความนี้ผมดองมานานมาก เพราะเดือนที่แล้ว เดือนกุมภาพันธ์ เดือนแห่งการกุมขมับ เพราะ Project ล่าสุดของออมสินต้องส่ง Software ในส่วนของ Phase1 ภายในเดือนนั้นครับ หลังจากผ่านเข้าสู่ Season 2 เฮ้ยย Phase 2 พอมีเวลาได้หายใจบ้าง เลยจะมาเก็บบทความที่ดองไว้ครับ โดยวันนี้ผมขออธิบายคำสั่งเกี่ยวกับ DB2 คำสั่ง -tvf , -td@ ก่อนครับ เพราะหลายๆคนคงใช้คำสั่งเหล่านี้ โดยหลักการ CPD (Copy and Paster Development  ครับ ฮ่าๆ)  แต่ไม่รู้ว่ามัน คือ อะไร และคำสั่งที่ลองไป มันมีอะไรที่พิเศษ หรือป่าวนะ เจ้าคำสั่ง -tvf , -td@ เป็นคำสั่งที่ใช้ใน DB2 CLP (Command Line Processor) มองง่ายๆว่าเป็น DOS ของ DB2 โดยเอาไว้รันคำสั่งเฉพาะ หรือเป็น SQL ก็ได้นะครับ เพื่อจัดการกับฐานข้อมูล โดยคำสั่งขึ้นต้นด้วย db2 ตามด้วยคำสั่งที่ต้องการ โดยมีรูปแบบ ดังนี้ ตัวอย่างคำสั่งง่ายๆ หลังจากเกริ่นพื้นฐานไปแล้ว มาถึงคิวของคำสั่ง -tvf บ้างนะครับ โดยคำสั่ง -tvf อยู่ในส่วนของ option-flag ครับ Concept ของ option-flag คือ การผสมตัวอักษร ซึ่งแต่ละตัวอักษรมีคุณสมบัติเฉพาะตัวครับ สามารถดูได้จาก Help นะครับ ซึ่งผมได้ Capture มาบางส่วนแล้ว โดยอ้างอิงจาก Version 10.5 นะครับ จาก Option-Flag -tvf สามารถแปลความหมายได้ ดังนี้ครับ สำหรับ -tvf การใช้งานจริงคำสั่งนี้ใช้ เพื่อรัน Script SQL และแสดงผลลัพธ์การ…