C#

การดึงข้อมูลการผลิตแบบเรียลไทม์ด้วย Power BI

การดึงข้อมูลการผลิตแบบเรียลไทม์ด้วย Power BI

บทความนี้ 9Expert จะสอนวิธีสร้างเว็บเซอร์วิสที่ดึงข้อมูลการผลิตจากเครื่องจักรในโรงงานอุตสาหกรรม นำมาให้บริการเป็น API endpoint แล้วนำข้อมูลไปแสดงเป็นรายงาน Power BI ที่แสดงภาพข้อมูลการผลิตอัปเดตอัตโนมัติแบบเรียลไทม์
BOT  ดึงอัตราแลกเปลี่ยนธนาคารแห่งประเทศไทยอัตโนมัติผ่าน API ด้วย .NET Core

BOT ดึงอัตราแลกเปลี่ยนธนาคารแห่งประเทศไทยอัตโนมัติผ่าน API ด้วย .NET Core

ในบทความนี้ 9Expert Training จะนำเสนอวิธีดึงอัตราแลกเปลี่ยนเงินสกุลต่าง ๆ 48 สกุล อัพเดตอัตโนมัติทุกวัน แปลงเป็นเงินบาท ผ่าน API ของของธนาคารแห่งประเทศไทย (ธปท.) โดยการเขียนโค้ดภาษา C# แบบ .NET Core ที่สามารถนำไปใช้ใน Appได้ทุกแบบ (โมบาย เว็บ เซอร์วิส) ทุกแพลตฟอร์ม (Windows, Linux macOS, Android)
ภาพหน้าปก Interface กับ การสืบคุณสมบัติจากหลายแหล่ง (Multiple Inheritance)

ข้อดีของภาษา C# เมื่อเทียบกับภาษาอื่น ๆ : Interface กับ การสืบคุณสมบัติจากหลายแหล่ง (Multiple Inheritance)

การออกแบบและเขียนโปรแกรมแบบ OOP (Object Oriented) ตั้งอยู่บนหลักการสามประการที่เปรียบได้กับสามเสาหลัก ประกอบด้วย Encapsulation, Inheritance และ Polymorphism หากท่านเข้าใจหลักการทั้งสามนี้ ก็เท่ากับว่าท่านเข้าใจหัวใจของ OOP ทั้งหมดแล้ว สำหรับบทความนี้จะกล่าวถึงการสืบคุณสมบัติ หรือ Inheritance นั่นเอง
ภาพหน้าปก มีอะไรใหม่ใน .NET Core 3 และ C# 8 : Stackalloc ซ้อนนิพจน์

มีอะไรใหม่ใน .NET Core 3 และ C# 8 : Stackalloc ซ้อนนิพจน์

เริ่มตั้งแต่ C# 8 และ .NET Core 3.0 ถ้าผลลัพธ์ของนิพจน์ stackalloc มีชนิดข้อมูลเป็นแบบ System.Span<T> หรือ System.ReadOnlySpan<T> เราสามารถใส่นิพจน์ stackalloc ซ้อนไว้ภายในนิพจน์อื่น ๆ ได้
ภาพหน้าปก ภาษา C# และภาษา CIL เป็นมาตรฐานสากล รับรองโดยองค์กร ISO และ ECMA

ภาษา C# และภาษา CIL เป็นมาตรฐานสากล รับรองโดยองค์กร ISO และ ECMA

ภาษา C# และภาษา CIL เป็นมาตรฐานสากล รับรองโดยองค์กร ISO และ ECMA โดยข้อกำหนดจำเพาะ (specification) ของภาษา C# ปรากฏในเอกสารที่รับรองโดย ISO และ ECMA เอกสารนี้ (ECMA-334 และ ISO/IEC 23270) เป็นอกสารหนาหกร้อยหน้า พรรณนาถึงข้อกำหนดของภาษา C# โดยละเอียดทุกแง่มุม เป็นเอกสารที่เปิดให้สาธรณะชนดาวน์โหลดมาอ่านได้โดยอิสระ
ภาพหน้าปก ข้อดีของภาษา C# : Auto-property initializers

ข้อดีของภาษา C# : Auto-property initializers

ภาษา C# สร้างความอุ่นใจในการใช้งานตัวแปร เพราะคอมไพเลอร์จะกำหนดค่าเริ่มต้นให้ตัวแปรโดยอัตโนมัติ ขณะที่บางภาษา เช่น C ไม่มีหลักประกันเช่นนี้
ภาพประกอบหน้าปกภาษา C# เร็วกว่า ภาษา JAVA

ภาษา C# เร็วกว่า ภาษา JAVA

จากการทดสอบโดยใช้โปรแกรมวัดความเร็ว (benchmark) พบว่า application ที่พัฒนาด้วยภาษา C# มีประสิทธิภาพสูงกว่า application เดียวกันที่ถูกพัฒนาโดยใช้ภาษา Java การวัดความเร็วของตัวภาษาเองล้วน ๆ เป็นสิ่งไม่มีความหมาย เพราะเหมือนกับพูดว่าภาษาไทยหรือภาษาอังกฤษอันไหนเร็วกว่ากัน แต่การวัดความเร็วของapplication ที่ถูกพัฒนาด้วยภาษาใดภาษาหนึ่งเปรียบเทียบกันสามารถทำได้ ผลลัพธ์ที่ได้จะส่อให้เห็นประสิทธิภาพของตัวแปลภาษาและ runtime ของภาษานั้น ๆ
กลุ่มของ .NET

กลุ่มของ .NET

Framework ของไมโครซอฟท์ที่ใช้ชื่อทางการค้าว่า .NET (ดอนเน็ต) มีหลายแบบหลายเวอร์ชั่น รวมแล้วไม่ต่ำกว่าสามสิบแบบ อย่างที่ได้เรียนให้ทราบไปแล้วในบทความ .NET Core คืออะไร แม้จะมีจำนวนมาก แต่ทั้งหมดก็อาจถูกจัดประเภทออกเป็นกลุ่มใหญ่ ๆ ได้ 4 กลุ่มคือ • .NET Framework • .NET Core • .NET Native • .NET Standard
.NET Core คืออะไร

.NET Core คืออะไร

.NET Core มีองค์ประกอบหลายส่วน อาทิ ตัว run time ชื่อ CoreCLR ซึ่งเป็นตัวrun time ที่มีทุกอย่างครบสมบูรณ์เช่นเดียวกับตัว run time CLR ใน .NET Framework ของ Windows หน้าที่ของมันคือทำตัวเป็น virtual machine เพื่อ Run และดูแลโปรแกรมที่เขียนไว้เพื่อให้ทำงานใน .NET
Switch Statement with Pattern Matching

มีอะไรใหม่ใน .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 ซึ่งหากมีรูปแบบจำนวนวนมาก โค้ดจะยืดยาวเยิ่นเย้อ
รูปแสดงหัวข้อ App ไม่ค้างตอนอ่านไฟล์ใหญ่

มีอะไรใหม่ใน .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 หรือไม่อย่างไร
ข้อดีของภาษา C# เมื่อเทียบกับภาษาอื่น ๆ ตอนที่ 14

ข้อดีของภาษา C# เมื่อเทียบกับภาษาอื่น ๆ ตอนที่ 14

ในตอนที่แล้วผู้เขียนพูดถึงเรื่องการเจาะจงอินเตอร์เฟส ซึ่งมีไว้เพื่อแก้ปัญหาในกรณีที่คลาสหนึ่งคลาสสืบคุณสมบัติจากอินเตอร์เฟสสองตัว และอินเตอร์เฟสสองตัวนั้นมีเมธอดชื่อเดียวกันและมีซิกเนเจอร์ตรงกัน จะมีผลให้อินเตอร์เฟสทั้งสองเรียกไปยังเมธอดเดียวกัน ในตอนนี้หัวข้อนี้จะพูดถึงการสร้างสมาชิกของอินเตอร์เฟสสองตัวแบบเจาะจงบ้าง
หน้าปกบทความ Backward Compatibility (การเข้ากันได้ย้อนหลัง) ของ API

Backward Compatibility (การเข้ากันได้ย้อนหลัง) ของ API

บทความตอนนี้พูดถึง Backward Compatibility ของ API ซึ่งคนโค้ดควรรู้และระมัดระวังเมื่อใช้งาน Framework ที่ออก version ใหม่กับ source code เก่าหรือ binary ที่ Compile ไว้กับ version เก่า หรือเมื่อเขียน library ใช้งานเอง เช่น ปัญหา Reference Types ที่ไม่เกี่ยวข้อง parameter แบบ Reference Types กับแบบที่ค่าเป็น null ไม่ได้ parameter ทางเลือก (Optional parameters) และ ปัญหาเรื่องความเข้ากันได้ย้อนหลังในระดับ source code และ binary เมื่อมีการทำ method overload กับ Type ที่เป็น Generic
C#7 ตัวกระทำ is กับ คุณสมบัติใหม่ในคำสั่ง switch และ Ref local

มีอะไรใหม่ใน .NET Core 2 และ C# 7 : ตัวกระทำ is กับ คุณสมบัติใหม่ในคำสั่ง switch และ Ref local

เริ่มในภาษาC# เวอร์ชั่น 7.0 ขึ้นไปตัวกระทำ is มีความสามารถเพิ่มจากเดิมเพื่อใช้ในงานตรวจสอบรูปแบบที่ซับซ้อนได้ดีขึ้นกว่าเดิม ตัวกระทำ is ใช้หาชนิดของtypeเพื่อตรวจสอบความเข้ากันได้ขณะrunโปรแกรม มันทำหน้าที่ตรวจว่า objectหรือผลลัพธ์จากนิพจน์สามารถแปลงไปเป็นชนิดข้อมูลที่กำหนดได้หรือไม่ มีsyntaxอย่างที่เห็นในรูปที่ 1 บรรทัด 3
การ Deconstruct Tuple และ Type อื่น ๆ

มีอะไรใหม่ใน .NET Core 2 และ C# 7 : การ Deconstruct Tuple และ Type อื่น ๆ

ภาษาC# 7.0 ขึ้นไปสนับสนุนการประกาศตัวแปรแบบ discard ซึ่งเป็นตัวแปรแบบเขียนได้เท่านั้น (read-only) โดยที่ท่านจะประกาศตัวแปรแบบนี้กี่ตัวก็ได้ แต่ทุกตัวจะมีชื่อเดียวกันหมดคือ _ (เครื่องหมายขีดเส้นใต้หรือ underscore) ประโยชน์ของตัวแปรแบบ discard คือการนำไปใช้กับTuple (Tuple อ่านรายละเอียดเรื่องTupleได้จากบทความตอนก่อนหน้านี้) เพราะการรับค่าส่งกลับจากmethodที่ส่งค่ากลับเป็นTuple หรือการเรียกใช้methodที่มีพารามิเตอร์แบบ out เราจะต้องประกาศตัวแปรไว้รับค่า ซึ่งบ่อยครั้งที่เราไม่ต้องการใช้ค่าจากตัวแปรเหล่านั้น แต่ก็จำต้องประกาศ ทำให้โค้ดรกรุงรังโดยเปล่าประโยชน์
Hybrid App คืออะไร

Hybrid App คืออะไร

บทความที่แล้วเราได้พูดถึงการพัฒนาแอพลิเคชั่นด้วย Native App ไปแล้ว โดยจะพบว่า Native App จะต้องความรู้ความสามารถเฉพาะทางค่อนข้างมาก จึงต้องใช้ต้นทุนในการพัฒนาสูงมาก ดังนั้นมีอีกทางเลือกหนึ่งในการพัฒนาแอพลิเคชั่น คือ Hybrid App
Native App คืออะไร

Native App คืออะไร

ในปัจจุบัน การพัฒนาแอพลิเคชั่นสำหรับสมาร์ทโฟนและแท็ปเล็ตมีหลากหลายแบบ แบบที่นิยมจะมีอยู่สองแบบคือ Native App และ Hybrid App
ข้อดีของภาษา C# เมื่อเทียบกับภาษาอื่น ๆ ตอนที่ 7

ข้อดีของภาษา C# เมื่อเทียบกับภาษาอื่น ๆ ตอนที่ 7

ในภาษาซีชาร์ปเราสามารถกำหนดหน้าที่ใหม่ให้แก่ตัวกระทำ (Operator โอเปอร์เรเตอร์) เพื่อให้มันทำงานแตกต่างไปจากการทำงานปรกติที่ถูกกำหนดไว้โดยปริยายได้ เรียกการทำเช่นนี้ว่าโอเปอร์เรเตอร์โอเวอร์โหลดดิง (operator overloading) ภาษาจาวาไม่มีคุณสมบัตินี้ และเราจะทำเช่นนี้ในภาษาซีมาตรฐานก็ไม่ได้เหมือนกัน
ภาพหน้าปก มีอะไรใหม่ใน .NET Core 2 และ C# 7 : ไม่ต้อง run dotnet restore

มีอะไรใหม่ใน .NET Core 2 และ C# 7 : ไม่ต้อง run dotnet restore

ใน .NET เวอร์ชั่น 2.0 ขึ้นไปเราไม่ต้อง run คำสั่ง dotnet restore อีกต่อไปแล้ว เพราะเมื่อท่านใช้คำสั่งที่ต้องการ dotnet restore NuGet จะ run ให้เองโดยอัตโนมัติ dotnet restore เป็นคำสั่งหรับดึง dependency ไฟล์ต่าง ๆ เช่นไฟล์ Assembly ที่เป็น library ของ .NET Core ) และเครื่องเมื่ออื่น ๆ ที่โปรเจ็กต์นั้นต้องการใช้ โดยดาวน์โหลดซอฟต์แวร์ผ่านบริการของ NuGet เป็นคำสั่งที่มีมาตั้งแต่ .NET Core เวอร์ชั่น 1.x โดยการดึง dependency และเครื่องมือจะเกิดขึ้นพร้อม ๆ กันและทำงานขนานกัน
ข้อดีของภาษา C# เมื่อเทียบกับภาษาอื่น ๆ ตอนที่ 2

ข้อดีของ ภาษา C# เมื่อเทียบกับภาษาอื่น ๆ ตอนที่ 2

ข้อดีอีกอย่างหนึ่งของภาษาซีชาร์พเมื่อเทียบกับภาษาซีคือเราสามารถอ้างถึงตัวแปรหรือเมธอดที่อยู่ในไฟล์อื่นได้โดยไม่ต้องสร้าง “เฮดเดอร์ไฟล์” (ซอร์สไฟล์ที่มีนามสกุล .h) แล้วจึงใช้คำสั่ง #include เพื่อบอกให้คอมไพเลอร์รู้ว่าสิ่งที่อ้างถึงนั้นอยู่ในไฟล์ไหน ที่เป็นอย่างนั้นเพราะคอมไพเลอร์ภาษาซีชาร์พจะตรวจสอบซอร์สไฟล์ทั้งหมดภายในโปรเจ็กต์ให้โดยอัตโนมัติ