สำหรับงานนี้ ผมเพิ่งนึกว่ามีครั้งแรก 555 เพราะเข้ามาอยู่ในกลุ่ม Dev Rock Developer Group นานแล้ว (รู้สึกว่าชื่อเดิมเกี่ยวกับ ASP.NET MVC ครับ) ผมเพิ่งสังเกตุว่าตัว Event เพราะ เพื่อนใน FB หลายคนกด Like ไว้ใน Facebook ไว้นะครับ สำหรับงานครั้งนี้จัดเป็นครั้งที่ 3 และ โดยครั้งนี้จัดที่มหาวิทยาลัยหอการค้า คณะวิทยาศาสตร์ และเทคโนโลยี อาคาร 7 ชั้น 3 ครับ แต่วันนี้งานเริ่ม Late ไปนิดนึงนะครับ เนื่องจากฝนตกครับ โดยตัวงานเริ่มประมาณช่วง 0930 ครับ โดยมีรายละเอียด ดังนี้
BDD with .NET Behave โดยคุณ Peerapat Asoktummarungsri
- ฺBehavior-driven development หรือ BDD - เริ่มมาจากของฟากภาษา Ruby (RSpec) จากนั้นเริ่มแตกออกไปหลายๆ ภาษา เช่น Java, .NET หรือ PHP เป็นต้น
- ตัว BDD ทำหน้าที่เป็นตัวกลาง (Adapter) เชือมงานแต่ละชิ้น เข้าด้วยกัน ลองดูตัวอย่าง เช่น ทำเว็บหาราคาที่พัก
- มี Login
- มี Search
- มีงานชิ้นเล็กอื่นๆ อีกหลายอัน
แล้ว ... งานมันแยกกันทำนี่ คนนึงอาจจะทำ Search คนนึงทำ Login แล้วถ้า Login ก่อน Search หรือ Search ก่อน login ผลลัพธ์มันจะเป็นอย่างไร ?
- BDD สำหรับในมุมของพี่เค้ามองว่าเป็น User Acceptance Test แบบ Coding ที่ Integrated หลายๆอย่างมารวมกัน แต่ไม่ใช่ของ Dev แต่เพียงฝ่ายเดียว ตัว Dev เอามันก็มี Bias (ลำเอียงได้) โดยเอาทุกคนที่เกี่ยวข้องกับ Product เข้ามาด้วยทำด้วยกัน ทั้ง BA, SA, Product Owner โดยตัว BDD ตามความเข้าใจของผมนะ ส่วนที่สำคัญ 2 ส่วน
- Feature - ตัวที่เป็นภาษาคน พวก Give When then โดยมันจะล้อกับ Story Card ใน Agile กลุ่ม BA, SA, Product Owner แล้วมันจะได้เป็น Living Document
- Step - อันนี้แหละเป็นตัวที่ผูกความสัมพันธ์ของ Feature กับงานชิ้นเเล็กๆต่างๆที่เราสนใจ อันนี้ต้องมี Dev เข้ามาช่วยและ
- สิ่งที่พี่เค้าทำ BDD บน Rider แต่ตัว Project เริ่มมาจาก Visual Studio ฉะนั้นตัว VS เปิดได้แน่ๆ
- ตัว Tools หรือ Library ที่พี่เค้าใช้
- ถ้ามาดู Code ใน GitHub ของพี่เค้า มีอะไรบ้าง จากความเข้าใจของผมล้วนๆ ถ้าผิดขออภัยด้วย
- Feature - ภาษาคน ว่าจะทำอะไร
- Actor -class อันนึ่งที่รับ Text เข้าไปจัดการ เอา Feature กับ ActionSteps
- ActionSteps - Grammar มาตีความว่า Feature นั้น ทำอะไรได้ ใน Git อยู่ในโพลเดอร์ Steps
- WebDriver - เนื่องจาก Test ตัวอย่างเป็นเว็บเลยมีตัว WebDriver มาเป็นตัวเชื่อมกับ Browser
- SeleniumHocks - เอาไว้เตรียมอะไรต่างๆให้เรียร้อยำหรับ Test เก็บไว้ใน Context เช่น เปิด Browser ถ้าจะเคลียร์ Cache Cookies ก็ทำใน Step นี้แหละ เพื่อให้มันพร้อมที่สุดก็ทำใน Step นี้แหละ
- pageObject - เป็น Helper ช่วยในการจัดการจับ Element ต่างๆของเว็บ ผมเข้า
- เกร๊ดความรู้อื่นๆ ตัว
- Selenium มีแบบ Remote กับ Local
- Remote - ทำไว้ที่ไหนก็ได้ แล้วให้ Connect เข้าไป ตัว Server ซึ่งรับภาระหนักมาก เช่น เปิด Chrome โดนซัดแรมไปและ
- Local - ขี้นที่เครื่องตัวเอง
- ตัว BDD ลองดู Blog ที่ผมเขียนสรุปไว้จากงาน ATH2016 BDD with Cucumber มันไม่ง่าย แต่เริ่มได้
- Selenium มีแบบ Remote กับ Local
- รวม Q&A ใน Session นี้
Q: เคยลองกับค่าย Linux ได้ไหม
A: Mono ยังไม่ได้ลอง ส่วน .Net Core ของ Selenium Support
-----------------------------------------
Q: ไม่ใช C# มา Test ได้ไหม ใ้ช้ Selenium ข้างนอกเลย
A: ได้ แต่ต้องดูด้วย ตัว Framework หรือ Tools ที่เหมาะสมกับการใช้งาน
-----------------------------------------
Q: NSpec NBehave ต่างกันไหม ?
A: ไม่ต่าง NSpec, NBehave, SpecFlow เป็น Implementation ของ Concept ฺBDD
-----------------------------------------
Q: ATDD กับ BDD ต่างกัน อย่างไร
A: ลองอ่านจาก blog นี้ได้ครับ จะเข้าใจว่า ATDD คือ อะไร
-----------------------------------------
Q : Support Phathom js ไหม
A : Selenium - Connect กับใครก็ได้ แต่ต้องมี WebDriver ด้วย มองว่าเป็น Interface กลาง
Giving ASP.NET WebSite visibility with Realtime Metrics โดยคุณ Mahasak Pijittum
- สำหรับเรืองนี้อีกมุมที่เกี่ยวกับ Data Science ลองอ่านประกอบดูได้ครับ เรื่อง Real time Measurement with Big Data โดยคุณ Mahasak Pijittum เปิดแล้วลองเลื่อนลงไปดูครับ
- สำหรับใน Session นี้จะมองไปอีกมุมนึง ในแง่ของการ Implement ขึ้นมาครับ
- DevOps คือ Culture วัฒนธรรมองค์กร ที่ทำให้ Developer กับ Operation ใกล้ชิดกันมาขึ้น บริษัทใน Fortune หรือ ใน Silicon Valley มีน้อยคนที่เขียน Code อย่างเดียว ส่วนใหญ่ทำ Operation ด้วย (นี่เราทำแบบ DevOps เหรอ 555)
- มาเริ่ม Business เขื่อ Report >> Report มาจากระบบ BI >> ฺฺBI มาจาก Data Snapshot
- แล้ว Measurement ไปเพื่ออะไร
- Track Success
- Improve
- Set Expectations
- Help Decision
- ถ้า Start up ที่ไหไม่ทำ Measurement เหนื่อยแน่ๆ เพราะ รู้ได้ยังไง Product ที่ทำมันสำเร็จ
- Data Driven Strategy
- มองภาพเหมือน TDD เลย ฺBuild >> Measure >> Learn
- การทำ A|B Testing - เอามา Measure
- ชุด Environment ที่แนะนำ
- Time Series Database - Data Point คือ Single Value with tag ที่มี Time Label เวลาออกแบบระบบพยายามให้มันรองรับกับ DB อื่นๆ
- InfluxDB
- Prometheus - เหมาะเอาไว้สำหรับดูพวก Hardware
- Visualization
- Elastic Search เอาไว้ทำ Index + Kibana (UI หรือ Elastic Search)
- Grafana - Beautiful metric & analytic dashboards และรองรับ Data Source หลายๆแบบ ทำให้เอาข้อมูลมาเปรีบเทียบ หรือทำมิติใหม่ได้
- Library ที่ใช้
- Metric.Net - Port มาจาก Java Metrics โดยทำหน้าที่ตามนี้แหละ บรรยายไว้ครับแล้ว
library which gives you unparalleled insight into what your code does in production.
แล้วเราดูอะไรได้บ้าง เช่น
- Counter
- Meter
- Histogram - Percentile
- Guage
- Timer
- InfluxDB.Net - Time Series Database ถ้าใช้จริงงานทาง Speaker แนะนำส่ง Data แบบ Async เพราะ ถ้า DB ช้าเว็บก็จะช้าไปด้วย
- Metric.Net - Port มาจาก Java Metrics โดยทำหน้าที่ตามนี้แหละ บรรยายไว้ครับแล้ว
- เก็บข้อมูลตอนไหน - ทาง Speaker แนะนำให้ทำใน MVC Start ในการจัดการ Metric + HttpModules เชื่อมเข้าไป
เอาไปครอบให้ได้มากที่สุด ไม่แนะนำให้ไปยุ่งกับ Controller มาก เพราะ ตัว Controller มันมีงานของมันอยู่แล้ว เช่น
- Response Time
- Controller
- Dependency Resolve : Dependency Hell
- ข้อมูลต่างๆ จะดูจาก Tag ในการ Filter Group by
- ประโยชน์
- Business
- Peek Time - เอาไปประเมิน Scale up, Scale Down ของระบบ พวก Cloud ใช้มาเพิ่มเครื่อง ใช้น้อยลดเครื่อง
- Code Refactor - ไม่ใช่สัญชาติญาณ เรามี Data มารองรับ ว่าควรทำจริงๆ
- และอื่นๆ
- Quote
- Code ทุกตัว ส่งผลถึงงานที่หน้า Operation - อันนี้ เขียนจริง เจ็บจริง งานเข้าจริง
- งาน Software ไม่ใช่การเขียน Code แต่เป็นการ Design ให้ User และ Operation งานได้ลื่นไหล
- สำหรับ Source Code อยู่บน GitHub ครับ โดยเขียนเป็น Orion Architecture
- รวม Q&A ใน Session นี้
Q : Lean Start up กับ Date Driven Strategy ต่างกันอย่างไร
A : Concept คล้ายๆกัน แต่อย่าสับสนระหว่าง Data Driven Development, Data Driven Programming
-----------------------------------------
Q : ใน Enterprise เอาไว้ทำอะไร
A : Performance Test ของเดิม Test โดยเอา Tools อย่าง JMeter เข้ามาใช้เป็นต้น ในช่วงก่อนขึ้น PROD แต่เรื่องนี้อาจจะมานำใช้ เป็นการรับประกันตาม SLA ก็ได้นะ แต่ต้อง Design ระบบให้รองรับมาตั้งแต่แรก
-----------------------------------------
Q: วัด Metric จากอะไร ทั้งหมด หรือ
A: ที่มีผลกับ Business
CI&CD for ASP.NET Core with VS Team Service โดยคุณ Nattapong Nunpan
- CI ส่วนตัวผมมองว่าเป็นการทำ Logistics ของ Software นะ
- ถ้าไม่มี CI จะเกิดอะไรขึ้น
- ฺBug
- Team Cohesion
- Poor Code Quality
- Project Vision
- Lack of Deploy able
- Best Practices การทำ CI & CD
- Maintain single repository
- Automate Build
- Selt Tesing = Automate Test
- Commit บ่อยๆ
- พยายาม Commit แล้วให้ตัว CI มาเดิน Flow Build & Test
- Test ไม่ควรเกิด 10-15 นาที เพื่อให้ได้ Feed Back ไว
- Test Environment ควรใช้เคียงกับ Prod
- Automate Deploy
- Tools ที่ใช้ Demo
- Microsoft Visual Studio
- VS Team - ตัว CI & CD ทาง Speaker แนะนำว่ามันเหมาะกับทีมเล็กๆ
- GitHub
- Azure Cloud - สำหรับ Deploy ฟรี ถ้ามี Account ของ Azure
- Continuous Delivery vs Continuous Deployment - ต่างตอนสุดท้าย Manual กับ Auto ตามรูปครับ
- รวม Q&A ใน Session นี้
Q : ทำ CD แล้ว Publish ขึ้น Nuget ได้ไหม
A : ทำได้
-----------------------------------------
Q : VS Team ทำงานบน Cloud แล้วมีค่าใช้จ่ายไหม
A : ใช่ ฟรี Agent เดียว 1 Queue
-----------------------------------------
Q : VS Team ใช้ Test ของใคร
A : MS Nunit XUnit
-----------------------------------------
Q : VS Team ใช้ กับภาษาอื่นๆ
A : คิดว่าได้
-----------------------------------------
Q : VS Team Gen Ticket ได้ไหม ถ้าบิ้ว Test แล้ว Error
A : ไม่แน่ใจว่าเชื่อมกับระบบ Ticket ได้ไหม แต่ถ้าตัว Team City Support
Cross-Platform Development with ASP.NET Core MVC โดยคุณ Pongsakorn Thanopassakul
- ใน session นี้ ผมอาจจะไม่เน้นจดเยอะ ครับ เพราะส่วนมาเป็นการ Demo กับตัว .Net Core และ Slide เข้าใจง่ายมากครับ
- ASP.NET Core ทุกอย่างอยู่บน NuGet หมด เป็น modular และรันบน .NET Full 4.6 ได้
- Build In Dependency Injection(DI)
- Any Host บน IIS, NGINX ได้แล้ว
- ASP.NET Core รองรับ console, web และ Test (XUnit) แต่ผมลองไปหาข้อมูลเพิ่มมา Nunit ก็ใช้ได้แล้ว
- ไม่มี csproj และ มีแต่ Json (ดูคล้ายของตัว NPM เลย)
- ใช้ VS CODE
- เดิม ASP.NET MVC return ActionResult แต่ ASP.NET CORE return IActionResult
- คำสั่ง Command line ต่างๆ เริ่มด้วย dotnet เช่น
dotnet --version dotnet new dotnet restore dotnet bulid dotnet run dotnet publish dotnet core cheatsheet
- kestrel Bulid in Serverที่ Claim ว่าเร็วกว่า Node 8 เท่า
- Middleware Pipeline คือ ตัวที่เราเข้าถึงได้ ช่องว่างระหว่าง HTTP Request/Reposnse ไปจนถึง Controller เราสามารถจัดการได้
ทำงานตามลำดับที่ Add มา เช่น- Diagnostic Middleware
- Authentication Middleware
- MVC Middleware
- มี Feature ใหม่อย่าง viewiport, tag-helper, vie components (Partial View แบบ upgrade มี Controller ในตัว)
- ใช่กับ Tools พวก BOWER ด้วย
- MS Love Docker ทาง MS มีเตรียม Image ไว้ให้แล้ว
- BOILERPLATE : Tools Generate Code
- รวม Q&A ใน Session นี้
Q: อุปสรรคตอนเริ่มต้นของ DOTNET CORE
A: ตัว Document ดีระดับนึง เริ่มจาก 0 จะดีกว่า ถ้าใช้พวก BOILERPLATE มันจะงงสิ่งที่ Tools มันสร้างให้ แต่ถ้าเคยใช้พวก Node กับ NPM มาก่อนจะไปได้เร็วมาก ทางวิทยาการได้แนะนำมี Course ที่น่าสนใจบน Udemy ลองไปทำตามดูครับ
-----------------------------------------
Q: tag-helper กับ Angular
A: คล้ายกันครับ แต่ Tag-Helper จะเข้ากันกับของทาง MS ได้ดีกว่า และตัว Tag-Helper ตัว Code จะสวยกว่า ไม่เหมือนกับ Razer ที่มีอักขระแปลกๆ
-----------------------------------------
Q: ช่วยอธิบาย DI ได้ไหมครับ
A: ตามรูปนี้เลยครับ-----------------------------------------
Q: DTO View Model
A: DTO เหมาะกับ web service
Microsoft Power BI โดยคุณ Thirapat Wiwittanaporn
- มัน คือ Tools ที่เอาไว้สำหรับ Visualization ข้อมูลได้ง่ายๆ User ทำเองได้
- มีทุก Platform ตัว Desktop ฟรีนะ
- ตัว Power BI ใช้กับภาษา R ได้ด้วย
- อ่อกลุ่มใน Facebook ด้วยนะ Thai Power BI User Group
- รวม Q&A ใน Session นี้
Q : Support พวก Streaming Data ไหม
A : [2016-10-10] ทาง Speaker Update คำตอบแล้วครับ มี 2 ลิงค์ที่น่าสนใจครับ Real-time streaming in Power BI (Preview) กับ Azure Stream Analytics
-----------------------------------------
Q : มี Software ที่คล้ายกับตัว Power BI ไหม
A : มี เช่น ตัว Tableau Community
-----------------------------------------
Q : Power BI Support non MS SQL เช่น MongoDB ไหม
A : [2016-10-10] ทาง Speaker Update คำตอบแล้วครับ ลองไปดูตามได้เลย MongoDB ODBC Driver for Data Integration with Power BI
Use Distributed Cache in ASP.NET (Ignite.NET) โดยคุณ NineCh Enin
- มาเริ่มของเว็บ Cache มี 3 ระดับ
- Application
- Session
- MS SQL Server รองรับทั้ง App และ Session
- Ignite.NET
- เป็น Cached ทำได้หลายอย่างตามรูปเลยครับ
- เนื่องจาก Lib ตัวนี้ ข้างใต้เป็น Java เอา .Net มาครอบ โลกของ Java ่ช่างยิ่งใหญ่แบกรับภาระของโลกใบนี้ ฮ่าๆ ต้อง set JAVA_HOME ด้วยนะ และก็มันมี Exception แบบ Java พ่นออกมาด้วยครับ ถ้าจะใช้ก็ต้องติดความเป็น
- Support LINQ ในการ Query
- สำหรับของค่ายอื่นๆ เป็นตัว Memcached (อันนี้ไม่ชัวร์ว่าเข้าใจถูก หรือป่าวนะ เห็นมีหลายตัวเลยที่เกี่ยวกับ Memcached
วิดีโอให้ดูกันเต็มๆด้วยครับ โดยคุณ Boriphuth Saensukphattraka
ปิดท้ายด้วยของที่ระลึกจากงานครับ
Discover more from naiwaen@DebuggingSoft
Subscribe to get the latest posts to your email.