2015 ผ่านไป Blog นี้มีอะไรบ้างนะ

หนึ่งปีผ่านไปไวเหมือนโกหก จากปีเคยสรุปสิ่งที่ผ่านมาของปี 2014 คราวนี้มาเป็นที่ของปี 2015 ที่เพิ่งผ่านไปครับ ถ้าดูจาก Jet Pack ที่เก็บสถิติแล้วจะพบว่าผมขยันเขียน Blog ที่สุดก็ข่วงต้นปีนะครับ หลังๆก็ว่างเว้นไป เพราะ ยังจัดปล่อยให้งานเข้ามารบกวนเวลาส่วนตัวมาจนเกินไป (เอางานกลับมาทำเพื่อให้โปรเจค มันสามารถ Go Live ได้ ปัญหาหลักๆของกรรมกรไอทีอย่างเราเลย เรื่องการประเมินเวลาทำงานจริง กับเวลาที่ลูกค้าต้องการ) โดยในปีนี้มี Blog ยอดนิยมที่มีผู้ชมทั้งหมด 5 เรื่อง ดังนี้ จากข้อมูลทั้งหมดพบว่า Blog ที่มีคนสนใจจะมีของปี 2015 แค่ 2 ฺBlog เท่านั้นครับ ส่วนที่เหลือจะเป็นของปีก่อนหน้านะครับ ถัดมาดูสถิติการเข้าชมของเว็บ โดยผมได้นำข้อมูลมาจาก 2 แหล่ง ดังนี Google Analytics Jetpack Sitestat Jetpack Sitestat เป็นการสรุปข้อมูลทั้งหมดนะครับ โดยเว็บ Blog ของผมมีผู้ชมมากที่สุดจาก Thailand, USA และ LAOS (ปีที่แล้วเป็น Australia) ตามลำดับ ดังรูปครับ ก่อนจากกัน ผมขอขอบคุณผู้อ่านทุกท่านที่ติตตามอ่าน Blog ผมมาตลอดครับ บางตอนอาจจะเขียนงงบ้าง สับสนบ้าง ผมขออภัยผู้อ่านทุกท่านมา ณ ที่นี้ครับ สำหรับใครที่ยังไม่ Like Fanpage สามารถตามมาได้ที DebuggingSoft ครับ 😀

คิดให้เยอะ ลงมือทำให้น้อยที่สุด

หลายๆคนอาจจะเคยเห็นภาพนี้แล้วนะครับมันสื่อถึงอะไร หละ ?บางคนอ่านแล้ว ก็หัวเราะเลยบางคนยังไม่ Get  จากภาพนี้ในมุมของผม ตีความถึงการมองปัญหาครับ ทุกปัญหา เราไม่สามารถใช้วิธีการเดียวกันจัดการกับมันได้ เราต้องค่อยๆลับปัญหาเปลี่ยนมุมมองบ้าง โดยในแง่ของการพัฒนา Software สิ่งที่มาขยาย ปรับ องศา มุมมองที่มีต่อปัญหา ได้แก่

[DB2] ลองใช้ Execution Plan เพื่อดูว่า Query ที่เขียนนั้นแย่ หรือไม่

IBM DB2

บทความแรกของปี 2016 เลย (จริงๆ Plan ว่าจะเขียนนานแล้ว แต่ติดงานประจำที่ Change บ่อยมากๆ) วันนี้เลยไปเจอ Shell Script ของ AIX ตั้งนึง ที่ทำหน้าดึงข้อมูลมาใส่ใน Temp Table และส่งออกเป็น Text File ไประบบอื่นผ่าน FTP แต่ปัญหา คือ ว่ามันช้ามากกกกกกกกกกกกก รันเกือบ 20 นาทียังไม่ออกเลย จาก Query ตัวอย่าง เราจะพบว่า มัน Self Join เยอะมากก ซึ่งใน DBMS ถ้าตัวเจ๋งๆ มันจะแลาดพอที่จะแปลง Query ให้ดีขึ้น หรืออย่างน้อยมี Execution Plan ช่วยตรวจสอบครับ (ราคา License ของ DB แต่ละเจ้าที่มันแพงๆ ก็เพราะ Feature เหล่านี้แหละ) งานที่ทำอยู่ DB2 เลยลองใช้ Execution Plan บน Toad และกัน ตัว IBM Data Studio มันโคตรกินแรม 5555 Execution Plan ที่ได้ครับ พบว่ามันมีส่วนของ Table Scan เยอะมากกกกครับ จำเป็นที่จะต้องลง Table Scan ให้น้อยที่สุด โดยการเพิ่ม Index ครับ การเพิ่ม Index ที่ดี เราต้องมาดู Query ที่เราใช้กันบ่อยๆก่อนนะครับ เพราะ ถ้าเพิ่ม Index ไม่เหมาะสมมันส่งผลกับการ Insert/Update นะ และตอนนี้จากการ Scan Query คร่าวๆ ดูแล้วพวกว่ามีการ Self join…

[.NET] ปัญหาราวๆ กับตัวเลขจอมแสบ

หากได้ทำงานเกี่ยวกับระบบด้วยการเงินแล้วเนี่ย ตัวเลขสำคัญมากนะครับ ปัญหาของผมเกิดจากการพัฒนาระบบงานบน .NET ด้วย C# แล้วต้องไปเทียบตัวเลขกับ ระบบงานที่เป็น VB6 แล้วปรากฏว่า มันหายไป 0.01 เลขปริศนาที่หายไป แต่ฝ่ายบัญชีไม่ยอมมมมมม ถ้าหายไปสัก 50 ล้าน มันยังหาได้ง่ายกว่าเลย แล้วใครหละที่เป็นโจร ? จริงแล้วมันเป็นปัญหาที่สะสมมานานตั้งแต่ของ VB6 ที่มีการปัดทศนิยมเศษ 5 แปลกๆ ทำให้ทีมที่ทำระบบเดิมในยุคนั้นมีการ Custom Function ขึ้นมาแก้ปัญหาจุจิกนี้ โดยเฉพาะครับ ซึ่งมีแนวคิดว่าเจอ 5 ปัดขึ้น สำหรับแนวคิดนี้นิยมใช้ในการบัญชี การเงินครับ ขอเสริม อีกนิดนึง คือ ในคอม ถ้าเราป้อน 1.50 มันไม่ได้เก็บ 1.50 ลงไปนะครับ มันแปลงเป็นเลขฐาน 2 เนี่ยแหละ โดยอาจจะเป็น 1.4999999999999 แล้วมาใช้อัลกอริทึมในการ Rounding อีกทีนะครับ (เดี๋ยวไปเขียน Blog แยกไปอธิบายอีกทีครับ) จริงๆ .NET กับ VBA ก็ใช้วิธี Banker’s Rounding ในการ Round นะครับ หลายคนคงคิดว่าปัญหาทศนิยม Diff คงไม่จบแล้ว แต่จริง Microsoft .Net Framework ได้แก้ปัญานี้เรียบร้อยแล้ว ตั้งแต่ .NET Framework 2.0 แล้วครับ โดยเพิ่ม Enum อีกตัวนึงให้กับ Function Math.round ชิ้อ MidPointRounding โดยมี Config 2 ตัว ดังนี้ มาลองตัวอย่างการ Round ดีกว่า หวังว่าบทความนี้จะช่วยผู้อ่านหลายๆคนที่ประสบปัญหากับเรื่องเศษทศนิยม Diff นะครับ

[DB2] Set DB2CODEPAGE

CODEPAGE คือ อะไร ? ทำไมภาษาไทย อันเดียวถึงมีหลากหลาย CODEPAGE ? CODEPAGE มีในระดับไหนบ้าง ? มีหลายระดับเลย ได้แก่ DB2 ดู CODEPAGE ได้อย่างไร คำสั่งที่ใช้ในการ SET CODEPAGE เช่น Windows- 874 สำหรับ ERROR CODE ที่ดูแล้วเป็นเรื่อง CODEPAGE มี ดังนี้ SQL0332N  Character conversion from the source code page “874” to the target code page “UNKNOWN” is not supported.  SQLSTATE=57017

[DB2] เปิดใช้งาน Hierarchical Queries

IBM DB2

Hierarchical queries อันนี้จริงๆเป็น Feature ลับของทาง Oracle ครับ โดยนำมาช่วยให้สามารถ Query ข้อมูลยาก และซับซ้อนได้ง่ายขึ้นครับ เช่น มีข้อมูล Company อยากรู้ว่า Company รายการนี้ มีบริษัทลูกกี่ตัว เป็นต้นครับ (อันนี้เดี๋ยวของไปเขียน Blog ยกอีกตอนครับ หุหุ) สำหรับการเปิดใช้ Feature Hierarchical queries สามารถใช้คำสั่งง่ายๆ ดังนี้ ข้อควรระวัง: การเปิดใช้ Hierarchical queries นั้นช่วยให้สามารถ Query ข้อมูลแบบลำดับขั้นได้แล้ว แต่ Performance ของ DB จะช้าลงด้วยนะครับ และ SQL จะมีรูปแบบพิเศษ ทำให้ยากต่อการ Port ไป DBMS ตัวอื่นๆ Reference: Hierarchical Queries

[CR] รีวิวร้านรถ Mother Trucker Burger

รีบกลิ้งจากออมสิน มาเพื่อกินร้านนี้ แต่..จะเรียกว่าเป็นร้าน หรือเป็นรถ โดยร้านนี้ตระเวณขาย Burger รอบกรุงเทพใน Concept “สะใจ ใหญ่ โหด” พอตอนไปถึงร้านที่ Lavilla อารีย์ มีเมนู 2 แบบนะครับ คือ หมู 150 บาท และก็เนื้อ 180 บาทครับ (ถ้าอยากได้แบบ Double ก็ 220 กับ 280 ครับ) จัดไปอย่ารอช้าเลยสั่งเนื้อมา 1 ชุดครับ (อีกสองอันของคนอื่น 5555) Burger ไม่ใหญ่ แต่หนาครับ ต้องค่อยๆกิน ปรับองศาให้พอดีกับปาก หรือจะใช้ช้อนส้อมมาตัดแบ่งก็ได้ครับ แป้งขนมปัง Burger ร้อน + ชีสเต็ม + หัวหอมทอด + เนื้อเข้มๆ ละมุนลิ้น + เบคอน และส่วนผสมอื่นๆ เข้ากันได้อย่างลงตัวครับ ติดอย่างเดียว คือ เรื่องราคาที่แพงไปนิดนึง ไม่งั้นคงได้กิน 3 ชิ้น 55555 ————————————————————————————————————– สำหรับใครอยากรู้ว่าร้านจะไปประจำที่ไหนบ้างคิดตาม FฺB Page ของทางรถ หรือทางร้านได้เลยครับรอปี 2025 Comeback ครับ ————————————————————————————————————–

[AIX] Change Server Date

AIX

สำหรับคนที่ใช้ AIX อาจจะต้องมีการย้อนเวลาที่เครื่อง Server บ้าง เราสามารถใช้คำสั่ง date ได้ครับ โดยถ้าพิมพ์ เพื่อแสดงวันที่ปัจจุบัน แต่ถ้าต้องการแก้วันที่ เราต้องใช้คำสั่ง ดังนี้ครับ จากคำสั่งข้างต้นเป็นการ Set วันที่ให้ AIX เป็นวันที่ 9 กันยายน ปี 2015 (AIX ไม่รู้จัก พ.ศ. นะ) เวลา 15:30 ครับ  

[CR] รีวิวร้าน Marugame Seimen สาขาเซ็นทรัลปิ่นเกล้า

หลังจากไม่ได้มาเขียน Blog เลย 1 เดือนเต็มๆ เพื่อมาจบงาน ฺBOT DataSet Season 1 ก่อน วันนี้หลังจากดูงานที่ค้าง และดูงานใน Season 2 จบแล้ว ผมรีบกระโจนขึ้นรถเมล์มาห้างเซ็นทรัลปิ่นเกล้าเลย ที่เพิ่งเปิดชั้น G ไป จุดประสงค์หลักเลยสำหรับเย็นนี้นะครับ คือ การกิน โดยวันนี้ไปก็ไปแอบส่องร้านดังที่มาเปิดใหม่ครับ แต่ส่วนใหญ่ไม่มีที่นั่งเลย หลังจากสำรวจอยู่นาน และได้กลิ่นหอมๆลอยมา ผมเลยเลือกเข้าร้าน Marugame Seimen (ช่วงนั้นมีที่นั่งว่างพอดีอีก 555) สำหรับการสั่งอาหารให้ร้านนี้ จะแตกต่างจากร้านอื่นๆครับ โดยร้านนี้จะเป็นแบบ Self Service ครับ โดยขั้นตอนสามารถดูได้ตามรูปเลยครับ (น้องคนเก็บตังค์น่ารักด้วย) โดยผมได้ลองเชิงสั่งอุด้งซุปกระดูกหมูสไปซี่ รสชาติเข้มข้นครับ เข้ากับเครื่องเคียงได้ดีครับ กับข้าวปั่นไก่เทริยากินะครับ โดยอันหลังนี่น้ำเทริยากิแห้งไป ส่วนตัวชอบกินแบบน้ำชุ่มๆ ดูรูปยั่วน้ำลายตาม Gallery ได้เลยครับ อันนี้เป็นเมนูอื่นๆของทางร้านครับ และก็ลด 20% ทุกเมนูจนถึงวันที่ 4 ตุลาคม 2558 นะครับ (พรุ่งนี้เย็นแวะไปกินแกงกะหรี่ดีกว่า)