Requirement ผิดแค่ลบหนึ่งวัน !!!!

เมิ้อลูกค้าสั่งแก้โปรแกรม

ว่าจะไม่เขียน Blog นี้แล้ว แต่มันอดเขียนไม่ได้จริง กล่าวถึง DataSet LQ1 ของ BOT เข้าระบบ BOTDMS แหละ Site ที่จ้างบริษัทที่ผมรับเงินเดือนไปทำเนี่ย ไม่รู้ว่าที่ต้องส่ง BOT จริงๆ ต้องส่งอย่างไร มันเลยเป็นปัญหาที่ว่า UAT บน Production เนี่ยแหละ แล้วมันมีช่วงการ UAT ไปทำไม ในเมื่อ User ต้องเซ็นผ่านให้ตรงกับ KPI องค์กร จากนั้นมาทวงบุญคุณวนไปเรื่อยไป มาที่ Timeline ของ DataSet ชุดนี้ก่อน มาที่ฝั่ง User ก่อน มาฝั่งทีม BA บ้าง Dev ผู้รับกรรม จากปัญหาเปลี่ยนแนวคิดของระบบบ้าง มันก่อปัญหาอะไรบ้าง จากปัญหาทั้งหมดรวมถึงเรื่องที่ User ชอบไป UAT บน Production เนี่ย ส่งผลอะไรกับองค์กรบ้าง และปิดท้ายด้วยตำนานของ DataSet ทำเสร็จแล้ว ออกยกทีม 55555 ตอนนี้ BA ก็ออกไปแล้วนะ

[JS] Functional Programming

จดๆ Note ไว้ เกี่ยวกับ Functional Programming โดยใช้ JavaScript เป็นต้วอย่าง function เป็น Input หรือเป็น Parameter ได้ จาก Code ด้านล่างจะเป็นตัวอย่างที่แสดง ยกตัวอย่างอีกเคสนึง อย่างตัว EmailValidator เมื่อมี function หลายๆอัน เรายุบรวมมันว่าเป็น Service เช่น EmailValidator เกิดจากการเอา Function หลายๆตัวอย่าง hasAtSymbol / hasValidDomain / hasNoSpaces / matchesPattern มาทำงานร่วมกัน สรุป Key Functional Programming Principles

[JS6] มาลองเล่น ECMAScript 6

หลังจาก Blog ตอนก่อน ก้าวเข้าสู่โลกของ Frontend เริ่มเล่น Nodejs ลงเพื่อให้ได้ตัว NPM มานะครับ คราวนี้ผมลองศึกษาตัว ECMAScript 6 โดยดูจาก GitHub ECMAScript 6 Tutorial ใส่ตัวอย่างจาก Git เข้ายก Mortgage Calculator ที่มี amortization และเราลองทำตามขั้นตอนที่ผู้เขียนแนะนำครับ ECMAScript 6 คือ JavaScript แหละ ที่ปรับเปลี่ยนให้ตามยุคสมัยมากขึ้น – Use Strict อันนี้มีมาตั้งแต่ ECMAScript 5 แล้ว แต่ถ้าใครมาจากภาษาที่แบบเคร่งอยากให้เปิดไว้ เช่น จริงๆ เรื่องนี้มีอีกหลายอันเลย เรื่อง use strict แต่เอาเท่านี้ก่อน JavaScript ใช้ reference pointer – เราไปยุ่งตรงๆไม่ได้ แต่มันอยู่เบื้องหลังให้เราใช้งาน – การประกาศตัวแปร ของเดิม var แล้วจะทำอะไรก็ได้ แต่ปัญหาของมัน คือ ตัวแปรประเภท var มี Scope เป็น Global ครับ ของใหม่เพิ่ม let / const เข้ามา let เหมือน var แต่มี Scope อยู่ใน Block ของการทำงานครับ จะเป็นโมดูล หรือ Function อีกตัวเป็น const เก็บค่างคงที ห้ามแก้ไขหลังประกาศ – Data Type ใหม่ Destructoring  – ดึงข้อมูลบางส่วนมาจาก Array ใหม่  template string แทนที่เราต้องเอาตัวแปร + เชื่อม String…

ก้าวเข้าสู่โลกของ Frontend เริ่มเล่น Nodejs

หลังจากทำงานในส่วนของ Backend พวก Web Service กับ WinApp มานาน เกือบๆ 3 ปี คราวนี้เริ่มลองก้าวออกมาฝั่ง Frontend บ้างครับ โดยตัวที่ผมเริ่มลงตัว Nodejs เพราะ Nodejs เป็น JavaScript ฝั่ง Server นะครับ มันดูขัดๆกับที่ผมจั่วหัวว่า “โลกของ Frontend” จริงๆ ส่วนทำไมผมถึงลงก่อน เพราะ มันมีตัว Package Manager อย่าง NPM มาในตัวครับ สำหรับในค่ายอื่นมีตัวที่คล้ายกัน เกริ่นนำมาแล้วไป Download กันเลยครับ สำหรับผมเลือกลงแบบ 64 bits ครับ ของ Windows ครับ สำหรับการลงง่ายครับ ตามแบบ Windows กด Next ไปเรื่อยๆครับ ลองดูรูปได้จาก Gallery นะครับ หลังจากลงเสร็จทดสอบ Version เลยครับ ด้วยคำสั่ง แต่ถ้าใครอยากลองเล่น ES6 อย่า่งลืมไปตรวจสอบ Feature ที่ http://node.green/ ด้วยนะ

[.NET] Share Pattern Parallel.ForEach ที่ผมใช้ครับ

จาก Blog ตอนที่แล้ว เรื่อง [.Net] มาทำให้ Parallel.ForEach Debug ง่ายกันเถอะ มาวันนี้ผมขอ Share Pattern ที่ได้ลองใช้ Parallel.ForEach เจ็บมาเยอะครับ เดี๋ยวผมลองแปะโครง Code แล้วมาอธิบายทีละจุดครับ ลองอ่านตาม Comment ได้ครับ จาก Comment ผมมีใช้คำสั่งหลายตัวเลย ได้แก่ ลองนำไปปรับใช้กันดูได้นะครับ ^___^ นอกจากนี้ลองดู Blog เกี่ยวกับ Parallel.ForEach ตาม Tag ได้ครับ

กลิ้งมินิมาราธอนครั้งแรก Globe-Athon 2016 ที่ The Sense Pinklao

หลังจากซุ่มออกกำลังกาย วิ่งแถวบ้านทุกๆวันเสาร์ กับลองเล่นเครื่องเดินอากาศ ตั้งแต่ช่วงต้นปีครับ และเมื่อต้นเดือนผมได้ไปเห็นประกาศงานวิ่งครับ แต่พอกลับไปปั่นงาน เอ้า ลืม ซะและ แต่โชคดีที่วันอาทิตย์ที่แล้วมีบูธที The Sense ให้สมัครหน้างานครับ 300 บาท โดยของที่ได้มี ดังนี้ครับ และมาถึงวันนี้ 25 ก.ย. 2559 ถึงวันจริงแล้ว ผมได้มาถึงที่ The Sense

[.NET] มาทำให้ Parallel.ForEach Debug ง่ายกันเถอะ

หลังจากหายไปพักนึง หลังากลองตบตีกพวก Thread มาสักพักใหญ่แล้ว วันนี้ขอประเดิม Blog เลยและกันครับ สำหรับตัว Microsoft .Net Framework ถ้าใครได้ใช้ตั้งแต่ 4.0 เป็นต้นไป มันมีชุดคำสั่งสำหรับทำงานแบบ Parallel ด้วยครับ ซึ่งหนึ่งในนั้น คือ Parallel.ForEach นั้นเองครับ แล้ว Parallel.ForEach คือ อะไร มันเหมือน ForEach แหละ แต่ต่างกันที่ ForEach ทำคนเดียว แต่ Parallel.ForEach ช่วยกันทำครับ มันก็ดีช่วงกันทำนี่ แล้วมันมีปัญหาอะไร ก็ตอนมี Bug ไงครับ ยิ่งเป็น Runtime Exception แล้ว จับได้ยากครับ เพราะ Parallel.ForEach มันแบ่งงานกันทำ เราจะรู้ได้อย่างไรว่า งานที่แบ่งกันทำ งานขิ้นไหนที่มันมีปัญหาครับ พระเอกของเรา มันอยู่ที่คู่มือครับ ลอง Google ไปดูรูปแบบตัวอย่า่งการเรียกใช้ Parallel.ForEach ดูสิครับ พบว่ามันมี Parameter อยู่ตัวที่น่าสนใจครับ คือ ตัว ParallelOptions ครับ เมื่อมาดูตัว ParallelOptions มี property ตัวนึงที่น่าสนใจครับ MaxDegreeOfParallelism สำหรับ Property นี้เป็นการกำหนดงานที่ทำพร้อมๆกัน (Concurrent) ว่าทำได้สูงสุดเท่าไหร่ สำหรับค่า Default คือ -1 (no limit) ครับ หลังจากความหมายแล้ว ด้วยความอยากรู้ผมเลยลองกำหนดค่าเป็น 1 ใน Mode Debug ครับ ผลปรากฏว่า ผมสามารถ Debug Code เพื่อหาข้อผิดพลาดได้ครับ มันดีมากเลยยย ^___^ สำหรับ Blog ตอนต่อไปที่จะเขียน ถ้าว่าง คือ Pattern สำหรับการใช้ตัว Parallel.ForEach ครับ

[DB2] มาดักดูว่าใครทำ DB ค้าง

ช่วงนี้ DB ที่บริษัทกับที่ Production ชอบค้างอยู่บ่อยๆครับ สำหรับในบริษัทได้ลองเขียน Query เพื่อที่ตรวจสอบว่าใคร Lock Database ซึ่งอาจะเป็นการเปิด Transaction แล้วลืม Commit ก็ได้ครับ สำหรับการทดสอบของผม ผมได้มี Query ชุดนึงที่มีหน้าทีควานหาว่า มีอะไรผิดแปลกกับ Database ครับ โดยผมมีรูปแบบการ Test ดังนี้ ใช้ SYSIBMADM.LOCKS_HELD สิ หากสังเกตุดีๆ Query ตัว SYSIBMADM.LOCKS_HELD หรือ LC ผมเอาหมดเลย เพราะบางตัวผมก็ไม่รู้ครับ และหากนำไปใช้งานจริง อย่างลืมเปิดสิทธิการ Execute ให้กับ “SYSPROC.MON_GET_CONNECTION” ไม่งั้นจะเอามันด่าแนวๆนี้ครับ DB2 Database Error: ERROR [42501] [IBM][DB2/NT64] SQL0551N The statement failed because the authorization ID does not have the required authorization or privilege to perform the operation. Authorization ID: “INVEST”. Operation: “EXECUTE”. Object: “SYSPROC.MON_GET_CONNECTION”. และการนำไปใช้งานจริง อาจจะทำเป็น App แบบตอนสมัยปี 1 เมื่อเวลา DB มันค้าง ให้ DBA ที่ของ Site ลูกค้า Dump ออกมาเป็น TextFile และส่งกับมาที่บริษัทก็ได้ครับ ส่วนตอนนี้ขอไปจับโจรที Production ก่อนครับ

อย่าสร้างเทพ หรือผลักใครไปเป็นเทพ

วันนี้ผมน่าจะเขียน Blog แปลกเลย แหวกจากแนว Software พอสมควรเลยครับ หลังจากที่ได้ลองนั่งคิดกับตัวเอง และมองอะไรรอบตัวเราแล้ว ตอนนี้เรากำลังเป็นเทพไปดับไฟให้ใคร หรือป่าว หรือเรากำลังผลักใครไปเป็นเทพ เป็นเทพก็ดีแล้วนี่ ทั้งเก่ง มีความสามารถ แต่ไม่มีใครทำทุกอย่างได้หมด ด้วยตัวคนเดียวหรอกครับ ลองดูอย่าง Software ที่เราเขียนออกมาก็ได้ครับ มันเทพมา แจ่มโคตรเมื่องานเข้ามาน้อยๆ แต่พองานเยอะขึ้นหละ เริ่มมีข้อผิดพลาดแล้ว สิ่งที่เราทำได้มีทั้งแก้ Code แบ่งงานกันทำ Software มันยังมีการกระจายงานครับ คนๆอย่างๆเราต้องมีการกระจายงานครับ ไม่มีใครทำทุกอย่างได้หมด ด้วยตัวคนเดียวหรอกครับ

4+1 architectural view model กับมุมมองของธุรกิจ

พอดีหัวหน้าให้เอา Framework ใหม่ที่มาใช้แทน Legacy System ไปลองนำเสนอกับ Consult ของบริษัทดูครับ เค้าก็ถามหลายเรื่องเลยครับ และบอกให้นำเรื่อง 4+1 architectural view model  มาใช้ในการนำเสนอครับ โดยนำเสนออย่างไร และตอบโจทย์อะไร ลองดูกันได้เลยครับ 4+1 architectural view model มีอะไรบ้างหละ  สำหรับการแสดง 4+1 architectural view model ในมุมต่างๆ จะใช้ Diagram อย่าง UML มาช่วยอธิบายครับ โดยมีรายละเอียดได้ ตามนี้ หลังจากที่ฟัง Consult ของบริษัทแล้ว รุ้สึกงานด้านเอกสารด้านนี้ยังไม่มีเลย และเข้าใจความสำคัญของ Diagram พวกนี้ มันคล้ายกับที่ทีมวิศวกรที่ใช้พิมพ์เขียว ตอนทำการสร้างตึกครับ