บทความ Excel, Access, SQL Server, ASP.NET, Windows, Database, IT
มีอะไรใหม่ใน .NET Core 2 และ C# 7 : Generalized Async Return Types
คุณสมบัติ “การทำให้ค่าส่งกลับของ Async กว้างขึ้น” (Generalized Async Return Types ย่อ GART) เป็นคุณสมบัติใหม่ของภาษา C# 7.0 ที่ช่วยให้การส่งค่ากลับจาก Method แบบ Async ไม่จำเป็นต้องมีชนิดข้อมูลเป็น Object อย่างแต่ก่อน เดิมทีการส่งค่ากลับจากmethodแบบAsyncเป็นได้แค่ task, task หรือไม่ก็ void ซึ่งไม่ดีเพราะการเป็น task เป็น Reference Type การใช้งานมันจะเกิดการจองที่หน่วยความจำสำหรับ object หรือที่เรียกว่า boxing ที่เราต้องการหลีกเลี่ยงเพราะจะทำให้เกิดปัญหาคอขวด

การดู Critical Path ของโครงการ ใน Microsoft Project
ปัญหาหนึ่งที่ผู้จัดการโครงการพบบ่อย ๆ ก็คือ ระหว่างที่ดำเนินโครงการ มีงานบางงานมีปัญหาเกิดขึ้น เช่นวัตถุดิบมาช้ากว่าที่คาดการณ์ไว้ หรือพนักงานต้องการลาในวันทำงาน ผู้จัดการโครงการจะตัดสินใจแก้ปัญหาอย่างไร หากอนุมัติไปแล้วงานที่เกี่ยวข้องกับวัตถุดิบหรือพนักงานดังกล่าวจะเสร็จช้ากว่ากำหนด จะทำให้วันเสร็จสิ้นของทั้งโครงการต้องเลื่อนไปหรือไม่ ซึ่งก็จะมีผลต่อค่าปรับและความน่าเชื่อถือขององค์กรในอนาคต ปัญหาในลักษณะนี้สามารถป้องกันได้ โดยการพิจารณาว่างานที่เกิดปัญหาขึ้นอยู่ใน Critical Path หรือไม่

การดูค่าใช้จ่ายโครงการแยกตามเดือนด้วย Microsoft Project
โครงการขนาดใหญ่มักมาพร้อมกับงานย่อย(tasks)จำนวนมาก และมีการกำหนดการใช้งานทรัพยากรที่หลากหลาย ไม่ว่าจะเป็นวัตถุดิบ คน หรือค่าใช้จ่ายอื่น ๆ และแน่นอนว่าผู้จัดการโครงการต้องนำข้อมูลเหล่านี้มาใช้ในการตัดสินใจและแก้ปัญหาได้อย่างรวดเร็ว โปรแกรม Microsoft Project เป็นโปรแกรมที่ถูกสร้างขึ้นเพื่ออำนวยความสะดวกให้กับผู้จัดการโครงการขนาดใหญ่โดยเฉพาะ ซึ่งสิ่งที่สำคัญที่สุดในโครงการคงหนึไม่พ้นการควบคุมและบริหารค่าใช้จ่ายให้อยู่ภายใต้งบประมาณที่ได้กำหนดไว้

การอ่าน Query Execution Plan ตอนที่ 1
บทความนี้ต่อจากบทความ “เตรียมพร้อมก่อนอ่าน Execution Plan” หากผู้อ่านเปิดมาเจอบทความแล้วยังไม่ได้อ่านบทความแรกผู้เขียนแนะนำให้อ่านก่อน เพราะจะได้ทราบถึงขั้นตอนการประมวลผลคิวรี่ว่ามีกลไกเช่นไร สำหรับบทความนี้ผู้เขียนจะใช้ 2 เครื่องมือเป็นหลักคือ Microsoft SQL Server Management Studio (SSMS) และ Sentryone Plan Explorer หากผู้อ่านต้องการทำตามตัวอย่างในบทความ ก็สามารถหาดาวน์โหลดได้จาก https://www.sentryone.com/plan-explorer

มีอะไรใหม่ใน .NET Core 2 และ C# 7 : Pattern Matching ด้วยคำสั่ง Switch
ในภาษา C# เวอร์ชัน 7.0 การตรวจสอบเพื่อการจับคู่รูปแบบ (Pattern Matching: PM) ด้วยคำสั่ง if และ switch ได้รับการพัฒนาให้ดียิ่งขึ้น ยืดหยุ่นกว่าเดิม เขียนโค้ดได้สะดวกขึ้น แต่เดิมการทำ PM ด้วยหลักวัตถุวิธีเราจะสร้างคลาสฐานเป็นแบบ “abstract” จากนั้นจะใช้กรรมวิธีสืบคุณสมบัติเป็นคลาสลูกหลาย ๆ แบบตามต้องการ ส่วนเก็บข้อมูลและโค้ดเพื่อจัดการข้อมูลจะถูกผนึกไว้เป็นหน่วยเดียวกัน ซึ่งเป็นการ “เชื่อมแน่น” (tight coupling) ในกรณีที่เราต้องการการ “เชื่อมหลวม” (loose coupling) เราจะแยก ส่วนเก็บข้อมูลและโค้ดเพื่อจัดการข้อมูลออกจากกัน จากนั้นทำ PM ด้วยคำสั่ง if และ switch ซึ่งหากมีรูปแบบจำนวนวนมาก โค้ดจะยืดยาวเยิ่นเย้อ

เปลี่ยนชื่อเดือนภาษาไทยให้เป็นชื่อเดือนภาษาอังกฤษใน Microsoft Access ด้วยฟังก์ชัน Choose
กลุ่มฟังก์ชัน Program Flow นั้นมี 3 ฟังก์ชันในหมวดหมู่นี้ ได้แก่ 1. ฟังก์ชัน IIF แนวทางการใช้เหมือนฟังก์ชัน IF ใน MS Excel 2. ฟังก์ชัน Switch 3. ฟังก์ชัน Choose จะกล่าวถึงกันในบทความนี้ค่ะ

มีอะไรใหม่ใน .NET Core 2 และ C# 7 : App ไม่ค้างตอนอ่านไฟล์ใหญ่
.NET Core version ที่ออกใหม่ก็จะใช้งานกับภาษา C# version ใหม่สุดได้ .NET Core version ปัจจุบันคือversion 2.1 สนับสนุนภาษา C# version 7.1 ส่วนversionต่อไปคือ 3.0 จะสนับสนุนภาษา C# version 8.0 ในหัวข้อนี้เราจะมาดูตัวอย่างการเขียนโค้ด การทำงานกับซิปไฟล์ (zip file) ด้วยภาษา C# ใน.NET Core ว่าเหมือนหรือแตกต่างกับการเขียนภาษา C# ใน .NET Framework หรือไม่อย่างไร

สูตรคำนวณหามูลค่าเงินตามเวลาในอนาคต ด้วยฟังก์ชั่น FV
ใน Microsoft Excel มีความสามารถในการคำนวณด้านการเงิน (Finance Functions) มากมาย ไม่ว่าจะเป็นการคำนวณ PV, PMT, IRR, FV, NPER, NPV เป็นต้น ซึ่งบทความในวันนี้จะแนะนำสูตรสำหรับการหามูลค่าเงินในอนาคต หรือ Future Value (FV) กันครับ

เตรียมพร้อมก่อนอ่าน Execution Plan
มีคนถามเข้ามาพอสมควรเวลาที่ผู้เขียนแสดง Query Execution Plan และวิเคราะห์ประสิทธิภาพให้ฟัง ทั้งในหลักสูตรที่ผู้เขียนบรรยายหรือสรุปผลประสิทธิภาพให้ลูกค้าฟัง ส่วนใหญ่อยากทราบว่ารายละเอียดของแต่ละตัวดำเนินการที่แสดงหมายถึงอะไร ผู้เขียนก็อยากจะเล่ามันทุกตัวแต่บางครั้งมันเล่ายากมาก เพราะหลายๆ ตัวต้องรู้ถึงโครงสร้างตารางทั้งแบบ Rowstore และ Columnstore ต้องรู้ถึงโครงสร้าง Indexes ทั้งแบบ Rowstore และ Columnstore เช่นกัน อีกทั้งยังต้องเข้าใจลำดับการประมวลผลของคำสั่ง เข้าใจถึงการเกิด Parallelism จิปาถะไปหมด ผู้เขียนขอเริ่มจากการทำความเข้าใจขั้นตอนการประมวลผลคิวรี่กันก่อนดีกว่า

มีอะไรใหม่ใน .NET Core 2 และ C# 7 : การทำงานกับซิปไฟล์ (zip file)
.NET Core version ที่ออกใหม่ก็จะใช้งานกับภาษา C# version ใหม่สุดได้ .NET Core version ปัจจุบันคือversion 2.1 สนับสนุนภาษา C# version 7.1 ส่วนversionต่อไปคือ 3.0 จะสนับสนุนภาษา C# version 8.0 ในหัวข้อนี้เราจะมาดูตัวอย่างการเขียนโค้ด การทำงานกับซิปไฟล์ (zip file) ด้วยภาษา C# ใน.NET Core ว่าเหมือนหรือแตกต่างกับการเขียนภาษา C# ใน .NET Framework หรือไม่อย่างไร
