[MS Cert] The Road to MCSD#01 (Intro)

ผ่านไปแล้วการสอบ Certification ที่ผมคิดว่า โหดพอสมควรเลยครับ ถ้าเทียบกับระยะเวลาสั้นๆ ในช่วง 1 เดือนกว่าๆ ครับ สำหรับตัว MCSD ครับ หลังจากที่ได้ยินตัวย่อนี้มา สิ่งที่ผมลอง Search Google ในเว็บของไทย สิ่งที่พบ คือ พอเข้าไปลิงค์แรก แล้ว ข้อมูลเก่าเหมือนกันนะ คิดถึง Internet Explorer 6 (IE6 ฺBrowser ระดับตำนานครับ) ข้อมูลในเว็บของไทย ณ ปี 2017 ไม่น่าจะเอามาอ้างอิงได้ ผมเลยเปลี่ยนไปดูของต่างประเทศแทนดีกว่า ดูง่ายสบายตาดีครับ ข้อมูล Update กว่า และจากหลังจากที่ผมดูแล้ว ข้อมูลมันของเว็บไทยมันเก่าพอสมควร เลยคิดว่ามาเขียน Blog ไว้ดีกว่าครับ โดยอิงจากข้อมูลของปี 2017 เพื่อให้คนอื่นที่สนใจสอบ มีข้อมูลใหม่ๆด้วยครับ หลังจากเกริ่นนำไปพอสมควรแล้ว มาดูภาพรวมของ Certification ของฝั่ง Microsoft กันครับ มี 6 สาย ได้แก่ Mobility, Cloud, Productivity, Data และ App Builder ครับ ซึ่งปลายทางเป็น Certification ในกลุ่ม MCSE และ MCSD ครับ โดยผมทำแผนภาพ ตามความเข้าใจของผมมาให้ดูกันครับ จากแผนภาพด้านบน เราเห็น Certification อยู่ 4 แบบครับ ข้อมูลทั่วไปเกี่ยวกับวิชาที่สอบ และใบ Certification สิทธิประโยชน์ที่ได้ หากสอบผ่าน และได้ Certification เขียนมายาวเหมือนกัน 5555 ไม่รู้ว่าถูกต้อง หรือป่าว สำหรับ Blog ตอนต่อไปผมเขียนเจาะลงในส่วนของ MCSD ครับ หากสงสัยข้อมูลอะไร สามารถดูเพิ่มเติมได้จาก Reference เลยครับ…

[MITx: 6.00.1x] Introduction to Computer Science and Programming Using Python

2 เดือนมันผ่านไปไวมาก สำหรับการลองเรียนผ่านตัว Edx ในวิชา [MITx: 6.00.1x] Introduction to Computer Science and Programming Using Python ของทาง MITx ครับ โดยสำหรับการเรียนครั้งนี้ ผมว่าอาจารย์สอนง่ายครับ และมีตัวอย่างประกอบที่ชัดเจน รวมถึงการจัดเรียงลำดับของเนื้อหาที่โอเคกว่าหนังสือในไทยซะส่วนใหญ่ครับ เพราะ บางเล่มอยู่ก็โผล่มา OOP เฉยเลย แต่ขาดเหตุจูงใจว่าทำไมต้อง OOP หละ จริงน่าจะเป็นปัญหาของการศึกษาไทยเลยก็ได้ เรียนไป แต่ไม่รู้ว่ามันเกี่ยวยังไง ทำไมต้องมี และเอาไปใช้ทำอะไรต่อได้  และเนื้อหาลงมากกว่าหนังสือของไทยนะ ตัว Edx ถ้าถามผม ผมชอบอะไร สิ่งที่ผมชอบ ตัว Assignment ระหว่างบท รวมถึงตอนสอบด้วย การวางโครงสร้างมันช่วยทบทวนความเข้าใจได้จริงๆนะ แม้ว่าตอนแรกดู Video มาแล้วงงๆ ก็ตาม Video ที่ผู้สอน พูดช้า และชัดเจน ถ้างงๆ สามารถไปอ่านซับภาษาอังกฤษได้ครับ ส่วนที่ผมยังไม่เคยใช้เลย ตัว Facebook Group – เข้าไป Join แต่เหมือนคนละซีกเวลากัน พอมีนัดทำสรุป ไป Join กับเค้าไม่ทันซะแล้ว เลยไม่ได้โอกาสลองภาษาอังกฤษฟุตฟิตฟอไฟเลย Forum – ของ Course อันนี้ น่าจะโดยทาง Social ดูดไปเลยร้าง Note – ผมไม่ได้ใช้เลย เพราะผมเลือกมาจดที่ Blog นี้แทน ปัญหาที่พบ ภาษาอังกฤษ – แม้ว่าพอจะจับ Keyword ได้ แต่ถ้าให้ฟังเพียวๆ โดยไม่ต้องลองเล่นกับ Code ผมว่าตัวผมเองมีตีความผิดพอสมควรเลย สังได้เกตุได้จาก Assignment และ Exam ต่างๆ ครับ สำหรับคนอื่นที่อยากเรียน หรืออยากรู้ว่า แต่ละ Week…

[MSSQL] สรุปงาน SQL Server Community Thailand Meeting #03

วันนี้หลังจาก Train C# เสร็จ ผมรีบออกจากบริษัท ให้มาถึง BTS เร็วที่สุด เพราะกลัวฝนจะตกอีกรอบ เพื่อมางาน SQL Server Community Thailand Meeting ครั้งที่ 3 ครับ โดยครั้งนี้จัดที่ Agoda ที่เดิมครับ ซึ่งในงาน Meetup ครั้งนี้มี 2 หัวข้อครับ ได้แก่ คำเดือน Blog นี้เขียนโดยมุมมองของ Developer อาจจะมีบางเรื่องที่เขียนผิดไปบ้างนะครับ ขอเข้าเรื่องเลยและกัน Microsoft SQL Server Index (Row Store Index) & Statistics by Chulladej Aramsri – Heap table vs Clustered table – ปัญหา Index Fragmentation – Index Statistics Power BI with R by Chawalit Pusitdhikul ปิดท้ายของ Blog อาหารการกินครับ มี KFC กับโดนัท อิ่มทั้งท้อง อิ่มทั้งสมองเลยครับ

[MITx: 6.00.1x] Introduction to Computer Science and Programming Using Python (Final Exam)

สำหรับ Blog อันนี้เขียนหลังสอบ Final Exam ครับ โดยการสอบครั้งนี้ น่าจะเป็น One Week Miracle มากๆ ครับ เพราะจากการที่ผมไปเน้นตัว MCSD เป็นหลักครับ ทำเหลือเวลาเตรียมตัวในการสอบครั้งนี้น้อยพอสมควรครับ จริงๆ อยากรีบให้มันจบไปด้วย ฮ่าๆ รู้สึกว่า Project ใหม่ ตัว Equity Rebalance เข้ามาบีบแล้ว เข้ามาที่ตัวข้อสอบเลยดีกว่าครับ สำหรับข้อสอบโครงสร้างคล้ายๆกับ Mid-Term ครับ คือ 80% เป็นการเขียน Code ตามโจทย์ที่ให้มาครับ โดยมีโอกาศให้ Submit Code เข้า Grader ได้ 10 ครั้ง 20% เป็นพวก Choice แต่ผมว่าไม่โหดเหมือน Mid-Term นะ ตัวที่ยากสำหรับผมน่าเป็น Final-Exam Problem 4: ที่ให้หาค่ามากที่สุดใน Tuple ครับ โดยสิ่งที่โจทย์ให้มา ดังนี้ Code บางส่วนให้ โดยให้เรา Implement Business Logic def max_val(t): “”” t, tuple or list Each element of t is either an int, a tuple, or a list No tuple or list is empty Returns the maximum int in t or (recursively) in…

Export ข้อมูลใน Task Manager ลง Excel(CSV)

หลายครั้งเวลาที่เราตรวจสอบอะไรบางอย่าง เช่น แรมที่ใช้ไป อย่าง Chrome เองเปิดไปเป็น 10 Process อยากรู้แล้วว่ามันกินทั้งหมดเท่าไหร่ ถ้าไปนั่งนับจาก Task Manager ก็ยากนิดหน่อยข้อมูลมัน Realtime วิ่งไปวิ่งมา ครั้นไปหาโปรแกรมมาก็ติดว่าไม่จำเป็น เลยลองส่องๆดูใน cmd ว่าทาง Microsoft ได้มีทำลูกเล่นอะไรไว้กับตัว Task Manager หรือป่าว ปรากฏว่ามีด้วย โดยพบว่ามีคำสั่ง tasklist และเปิด help ด้วยคำสั่ง tasklist /? งั้นลองมา Export ข้อมูลในหน้าจอ Task Manager ลง Excel ดีกว่าครับ โดยมีขั้นตอน ดังนี้ เปิดหน้า cmd มาในแบบ Adminsitrator Mode พิมพ์ tasklist ตอนนี้ตัว Task Manager Export ข้อมูลออกมา ถ้าอยาก Export ข้อมูลในหน้าจอ Task Manager ออกมาเป็น csv ด้วยคำสั่ง tasklist /FO csv > “%userprofile%\desktop\taskManager.csv” ไฟล์ที่ได้อยู่ที่ Desktop ครับ เมื่อเปิดออกมา ก็สามารถเอาข้อมูลที่ได้ไปใช้งานต่อได้ครับ Reference Tasklist

[MITx: 6.00.1x] Introduction to Computer Science and Programming Using Python (Week 7)

สำหรับ Blog อันนี้เป็น Lecture สุดท้ายสำหรับในการเรียน หลังจากการเรียนที่ผมเขียนไปใน Blog ตอนที่แล้ว ในตอนนี้เรานำข้อมูลมาแสดงให้เห็นภาพ (Visualize) โดยนำข้อมูลมา Plot เป็นกราฟ โดยใช้ Library ตัว PyLab ครับ สำหรับการใช้เรานั้น เราต้อง import ข้อมูลก่อนครับ โดยใช้คำสั่ง ดังนี้ import pylab as plt #เวลาใช้งาน ใช้ plt.<ชื่อ Method ได้เลย> ลองกำหนด Sample Data กัน การกำหนด Sample Data ใน Class นี้ คุณ Eric Grimson พยายามเชื่อมโยงไปถึงบทที่แล้วครับ โดยใข้ Code ดังนี้ mySamples = [] myLinear = [] myQuadratic = [] myCubic = [] myExponential = [] for i in range(0, 30): mySamples.append(i) myLinear.append(i) myQuadratic.append(i**2) myCubic.append(i**3) myExponential.append(1.5**i) Plot Graph กันเถอะ Version แรกครับ ใช้ Code แบบ Simple เลยครับ เอาให้มี Graph ขึ้นมาก่อนครับ โดยใช้ Code ดังนี้ plt.plot(mySamples, myLinear) plt.plot(mySamples, myQuadratic) plt.plot(mySamples, myCubic) plt.plot(mySamples, myExponential) ผลลัพธ์ที่ได้…

[MITx: 6.00.1x] Introduction to Computer Science and Programming Using Python (Week 6)

สำหรับ Blog ในตอนนี้ จากที่เรียนมาทั้งหมด พวกว่าทุกคนอยากให้ Code ที่เขียนขึ้นมามีแนวคิดการทำงานต่างกัน หรือที่มีคำเท่ห์ที่เรียกว่า Algorithm ส่วนทำได้มีประสิทธิผล( Performance) และถูกต้อง แล้วอะไรที่บอกว่าเร็วหละ ตอนนี้เน้นส่วนเรื่องที่บอกว่าเร็ว Performance ดี เรามองได้ใน 2 มุมมอง Time – เวลา Space – พื้นที่ของหน่วยความจำที่ใช้ การมาวัดมันมีหลายแบบ เช่น จับเวลา, นับ Operation ที่ใช้ หรือแม้แต่การดูพื้นที่ที่ใช้ไป แต่มันมีปัญหาจุกจิกมากมาย ทั้งที่เรื่องจำนวนข้อมูลนำเข้า(Data Set) และ Enviroment(เช่น พวก Hardware ต่างๆ) ในทาง Computer Science ก็เลยมี Idea ในการวัดอีกแบบ คือ Abstract Notation Order of Growth ครับ Abstract Notation Order of Growth คือ อะไร แล้วเรามองมุมไหนดีหละ ดีที่สุด กลาง แย่ที่สุด – เราใช้ Big O มาแทนครับ ปกติ เราสนใจเคสที่แย่ที่สุดครับ โดยตัว Order of Growth สามารถแบ่งเป็นกลุ่มๆได้ ดังนี้ เราตีความ Algorithm โดยใช้วิธีการที่เป็นมาตรฐาน โดยมีหลักการนับ ดังนี้ นับ 1 สำหรับ Operation ต่างๆ  O(1) def program1(x): #Code ในส่วนนี้มี 1 Operation คือ = โดยยัดค่า 0 ลงไป total =…

[MITx: 6.00.1x] Introduction to Computer Science and Programming Using Python (Week 5)

ช่วงนี้ผมอัพ Blog เกี่ยว Course Python ของทาง MITx รัวๆ นะครับ เพราะ ใกล้สอบ Final แล้ว โดยสำหรับใน Week นี้เป็นเรื่องของ OOP เป็นหลัก มาเริ่มกันเลย Object Oriented Programming ทุกอย่างใน Python เป็น Object แต่มี Type ของตัวเอง การทำเป็น Object มันเพิ่มตัว Data Abstraction มากขึ้นครับ โดยรวมสิ่งที่ใช้อยู่ด้วยกัน ผ่านทาง Data Attribute – สิ่วที่เราเก็บ เช่น ข้อมูลพนักงาน มีพวกซื่อ นามสกุล ตำแหน่ง เป็นต้น ครัช Interface – ช่องทาง ที่เราเรียกใช้งาน Object นั้น และเป็นกรอบของ Spec คร่าวๆ ให้สำหรับคนที่นำไป Implement ต่อ Class & Instance ตัว Python เอง มี Object พื้นฐานที่จำเป็นมาให้อยู่แล้ว อาทิ เช่น พวก Data Type ต่างๆ หรือ เป็นเฉพาะด้านอย่าง Math, String เป็นต้น ครับ ทำเป็น OOP แล้วได้อะไรบ้าง จัดกลุ่มเป็น Package ได้ – หา Pattern ที่ซ้ำกัน แยกออกมาเป็น Intercace Divide & Conquer – นอกแยก implement กับ…

[MITx: 6.00.1x] Introduction to Computer Science and Programming Using Python (Week 4)

หลังจากพักสำหรับการเขียน Blog ของการเรียน Python มานาน เพื่อไปเตรียมสอบ MCSD ตอนนี้ได้เวลามาอัพ Blog ต่อแล้วครับ สำหรับใน Week 4 เน้นไป 4 เรื่อง ดังนี้ การทดสอบ(Testing) การติดตามพฤติกรรมของโปรแกรม (Debug) การจัดการกับข้อผิดพลาด(Exception) การยืนยัน(Assertions) การทดสอบ(Testing) ที่มาของ ฺBug มันมีที่มาจากแมลงจริงๆ ที่ดันเข้าไปติดในคอมพิวเตอร์สมัยก่อนครับ ตอนแรกDev เองนึกว่า Code ผิด แต่ป่าวมีแมลงไปติดที่วงจรซะงั้น ในเรื่องนี้ผู้สอน เค้าได้นำเสนอแนวคิด Defensive Programming ครับ เมื่อไหร่ถึง Test หละ ทำงานเสร็จระดับนึง Code Complile ผ่าน ไม่มี Syntax Error มี Test Case คือ ชุดทดสอบที่มีการกำหนดข้อมูลนำเข้า(Input) และผลลัพธ์ที่ได้(Exprected Result) แล้ว ทุกอย่างมันอยู่ในมือเราแล้ว ทำอย่างไรให้มัน Testing และ Debug ง่ายหละ Decomposition – แบ่งให้มันเป็นชิ้นเล็กที่ทุกสุดเท่าที่จะทำได้สิ  ^__^ Document Constraints – ผมมองว่าเป็น Test Case Document Assumptions – ตอนนี้ทำไมถึงใช้ Algorithm นี้หละ แต่ปัญหาหลักที่เจอ คือ แม้แต่พระเจ้า ท่านไม่รู้หรอกว่า สิ่งที่เราทำไม เมื่อเดือนที่แล้ว เพราะอะไร จดไว้บาก็ดีครับ Class of Tests Unit Testing – Test ในจุดที่เล็กที่สุด ยิ่งแรกแบ่งส่วนของงานได้เล็กลงเท่าไหร่ เราสามารถเจาะเข้าไปได้ ให้มันได้ละเอียดมากขึ้นครับ Regression Testing – Test ซ้ำเพิ่มจากตัว Unit…