Quantcast
Channel: cc :: somkiat
Viewing all 1997 articles
Browse latest View live

Technical Debt ค่าใช้จ่ายที่เรามักทำมอง[ไม่]เห็น

$
0
0

วันนี้ทางทีมมีคุยกันเรื่อง Technical Debt หรือหนี้เชิงเทคนิค
แน่นอนว่า ที่มาที่ไปนั้น เพื่อทำให้เข้าใจว่า
สิ่งที่สายงานเชิงเทคนิคในการพัฒนา software อธิบายในมุมมองของการเงิน
เพื่อให้เข้าใจมากยิ่งขึ้น
ว่าสิ่งที่ทำลงไป มันก่อนให้เกิดหนี้หรือไม่ ?
แน่นอนว่า ตามลักษณะของหนี้ย่อมไม่ได้มาแบบฟรี ๆ
แต่มาพร้อมกับเงินต้น และ ดอกเบี้ย

หนี้อาจจะเกิดขึ้นได้ง่าย ๆ
คำถามคือ คุณจ่ายคืนไหน
ดังนั้นถ้าเราไม่จ่ายหนี้ดอกมันก็จะแบ่งบาน
จนสุดท้ายอาจจะทำให้ลูกหนี้มีปัญหาขึ้นมาได้

กลับมาดูการพัฒนา software บ้าง มันมีหนี้ที่เราสร้างขึ้นมา

ทั้งตั้งใจและไม่ตั้งใจหรือไม่ ?
เนื่องจากหนี้เหล่านี้ มันคือ ค่าใช้จ่ายที่เรามองไม่ค่อยเห็นเมื่อมันมีจำนวนน้อย ๆ
แต่เมื่อมันเยอะขึ้นตามเวลา หรือ ตามความใหญ่ของระบบ
กลับก่อให้เกิดปัญหามากมายตามมา

Technical Debt มันคือ trade-off ระหว่างคำว่า quality กับ  speed

เช่น 

  • งานต้องเสร็จ เพราะว่าใกล้ deadline แล้ว
  • งานด่วนนะ ต้องรีบทำ
  • ลูกค้าบอกว่าขอเร็ว ๆ ดี ๆ ถูก ๆ !!

ส่วนใหญ่มักจะเอยด้วย    
การเพิ่มเวลาในการส่งมอบ
หรือ โรคเลื่อนหรือหนักมาก ๆ คือ เกิดความผิดพลาดบน production
แถมคนที่เจอก่อนคือ ลูกค้า นั่นเอง

ในเชิงการเงินนั้น Technical Debt ประกอบไปด้วย

  • Principal (เงินต้น) คือ effort ที่ใช้ในการแก้ไข code/module/architecture ที่แย่
  • Interest (ดอกเบี้ย) คือ เวลาที่ทีมพัฒนาและส่งมอบที่ใช้มากขึ้นเรื่อย ๆ จาก Principal นั่นเอง

ตัวอย่างของ Technical Debt ที่พบเจอบ่อย ๆ

  • ความซับซ้อนของ code, module และ architecture ที่สูงขึ้นเรื่อย ๆ
  • ขาด Integration test ที่ดีและเพียงพอ ให้เรามั่นใจ
  • เกิด duplication ขึ้นมาเยอะมาก ๆ
  • ขาด Automation build, test ละ deploy ที่ดีและเพียงพอ

แต่อย่าลืมว่า หนี้มีทั้งหนี้ที่ดีและไม่ดี
บางคนบอกว่า มีหนี้เพื่อให้ได้สิ่งที่ดีกว่ากลับมาก
แต่หนี้บางอย่าง เป็นหนี้ที่แย่ คือ หนี้ไม่ก่อให้เกิดรายได้
แต่เป็นหนี้เพื่อให้ได้ในสิ่งที่ต้องการตอนนี้เท่านั้นเอง

บางครั้ง code ที่แย่ architecture ที่แย่ ก็อาจจะไม่ใช่หนี้เสียก็ได้
บางครั้ง code ที่ดี architect ที่ดี อาจจะเป็นหนี้เสียก็ได้

ผลกระทบที่เกิดจาก Technical Debt มีอะไรบ้าง ?

ยิ่งทำระบบยิ่งแย่

ระบบล่มบ่อยทุกครั้งที่ deliver
ความพึงพอใจของลูกค้าลดลงเรื่อย ๆ
ประสิทธิภาพการทำงานโดยรวมของระบบลงลงอย่างต่อเนื่อง
ดังนั้นยิ่งส่งผลต่อลูกค้าที่ทางลบมากเท่าไร
คุณค่าของสิ่งที่ทำยิ่งน้อยลง

หนึ่งในตัวอย่างคือ  feature ที่ไม่ถูกใช้งานเยอะขึ้นเรื่อย ๆ
เราต้องใช้เวลาในการคิด พัฒนา ทดสอบ deploy ทำเอกสาร กลับไม่มีคนใช้งาน
แต่ทีมพัฒนาต้อง maintain feature เหล่านี้

ยิ่งพัฒนา ยิ่งเพิ่ม feature การพัฒนา ส่งมอบยิ่งช้าลง

เพียงการพัฒนาก็ยากอยู่แล้ว
แต่ต้องมาแก้ไขหรือปรับปรุงระบบเดิมให้ทำงานได้
ให้ทำงานถูกต้อง และปรับปรุงให้ดีขึ้น
คำถามคือ เวลามีจำกัด คุณจะเลือกทำอะไร ?
แก้ไขที่เดียว แต่กระทบต่อการทำงานส่วนอื่น ๆ อีกมากมาย แบบนี้เกิดบ่อยไหม ?
เสียเวลาไป debug อีก Debug แล้วก็หาไม่เจอ แก้ไขยิ่งลำบาก
ยิ่งหนี้เยอะ ยิ่งก่อให้เกิดปัญหาหรือไม่นะ ?

ขาดเรื่องของ Transparency

แต่ละคนรู้รายละเอียดในบางเรื่อง
แถมไม่ share ความรู้เหล่านั้นให้คนอื่น ๆ
ไม่ว่าจะเหตุผลใด ๆ ก็ตาม
ทำให้เกิดปัญหาในการ estimation เวลาของการทำงาน ทั้งมากไปหรือน้อยไป
บางครั้งสิ่งเล็ก ๆ ที่เรียกว่า งานงอก จะเยอะมาก ๆ
หรือเรื่องที่ถูกซ่อนเอาไว้มากมาย
และกว่าจะรู้ว่าขาดอะไรไปต้องใช้เวลานาน
หรือต้องเกิดปัญหาขึ้นมาก่อน ถึงจะรู้ !!

สิ่งที่สร้างขึ้นมานั้น มันตรงตามที่ต้องการหรือคาดหวังหรือไม่ ?
ใช้เวลานานหรือไม่ ? กว่าจะรู้ ?
ดังนั้นถ้าเราได้ feedback ที่เร็ว จากคนที่ถูกต้อง
น่าจะทำให้เรื่องของ Transparency ดีขึ้นอย่างมาก
แต่ปัจจุบันเป็นอย่างไร จึงส่งผลให้การพัฒนามีปัญหา

ส่งผลให้ทีมพัฒนาขนาดแรงบันดาลใจในการพัฒนา

จะทำให้ดีไปทำไม
ทำดีก็แค่เสมอตัว ทำแย่ก็โดนด่า
ดังนั้นทำแย่ ๆ ไปเลย
ทำให้เสร็จ ๆ ไปเลยดีกว่า
ยังไงก็โดนด่าอยู่แล้ว

หนักกว่านั้นเจอปัญาจากที่ผ่านมาทั้งหมด
ยิ่งทำให้หมดกำลังใจในการทำงาน
แค่ทำให้มันเสร็จ ๆ ไปก็ยากอยู่แล้ว
จะปรับให้ดีขึ้น ? อย่าหวัง
แม้แต่จะทำการ estimation ไว้เผื่อมาก ๆ แล้ว
ก็ยังส่งมอบไม่ได้ตามเวลาเลย

ยังไม่พอเวลาโดยรวมก็เพิ่มเรื่อย ๆ ทั้ง

  • การออกแบบที่นานขึ้น
  • การพัฒนาที่มากขึ้น จำนวนคนมากขึ้น
  • การทดสอบยากขึ้นเรื่อย จนถึงทดสอบไม่ครบ
  • การดูแลรักษายาก
  • ทางทีม operation ยิ่งลำบากเข้าไปอีก
  • จำนวน bug ที่สูงขึ้นเรื่อยๆ
  • การโบ้ยความผิดมักโยนไปให้คนอื่น ที่ไม่ใช่ตนเองมากขึ้น ที่สำคัญมักจะหาคนผิดมารับผิดชอบ มากกว่าแก้ไขปัญหาและปรับปรุงให้ดีขึ้น

ดังนั้นเรากลับมาดูสิว่า ระบบงานของเราเป็นอย่างไร ?

มีอะไรที่ส่งผลต่อการส่งมอบในเชิงลบหรือไม่
ทำการวัดผลและเก็บข้อมูล
รวมทั้งถึงสภาพจิตใจของทีมด้วยว่าเป็นอย่างไร
ต้องสร้างสมดุลระหว่าง output กับ outcome 
จากนั้นต้องรีบแก้ไขสิ่งต่าง ๆ ที่ส่งผลในเชิงลบให้ดีขึ้นอย่างต่อเนื่อง

การวัดผลการปรับปรุง อาจจะมองในมุมต่าง ๆ ดังนี้

  • การส่งมอบระบบงานที่สม่ำเสมอ ทั้งเพิ่ม feature, แก้ไข bug, regression test
  • จำนวนของการทำงานแบบอัตโนมัติที่เพิ่มมากขึ้น นั่นคือลดงานที่ทำซ้ำ ๆ ลงไป ทั้งการ build, test, deploy
  • ลดความซับซ้อนของ code, module, architecture ของระบบงานลง
  • ลดจำนวน bug/defect/issue ลงไป

ลองปรับปรุงกันดูครับ

Reference Websites


สร้าง File server และ Reverse proxy ง่าย ๆ ด้วย Caddy 2

$
0
0

เพิ่งเห็นว่า Caddy 2 ได้ปล่อยออกมาให้ใช้งานแล้ว
Caddy เป็น project ที่พัฒนาด้วยภาษา Go
ใน version ใหม่นี้ ทำการเขียนใหม่เลย
โดยแยกส่วนการทำงานต่าง ๆ เป็น module ย่อย ๆ
เพื่อให้ง่ายต่อการพัฒนาและเพิ่มความสามารถต่าง ๆ ตามที่ configuration

ความสามารถเด่นหลัก ๆ ของ Caddy 2 ประกอบไปด้วย

  • ความง่ายและเร็ว
  • จัดการ certificate ให้แบบอัตโนมัติ ซึ่งจะทำงานร่วมกับ Let’s encrypt
  • File server
  • Reverse proxy

เพื่อความสนุกจึงมาลองใช้งาน Caddy 2 สำหรับการทำงาน File server และ Reverse proxy

โดยปกติมักจะใช้ NGINX แต่มาลองใช้ผ่าน Caddy ดู สิ่งที่ต้องการเป็นดังนี้

  • File server สำหรับจัดเก็บพวก HTML, CSS และ JavaScript
  • Reverse proxy สำหรับการส่ง request ที่เข้ามาเป็น /api ผ่ายน port 3333 จะ reverse ไปยัง API ที่เป็น private ซึ่ง run ด้วย port=8000

การใช้งานง่ายมาก ๆ เพียงทำการ config ในไฟล์  Caddyfile ดังนี้

[gist id="6dba1f1b7c2095e80a5d714c4a4ea7eb" file="Caddyfile"]

จากนั้นทำการ start ด้วย Docker ไปเลย

[gist id="6dba1f1b7c2095e80a5d714c4a4ea7eb" file="Dockerfile"]

เพียงเท่านี้ก็สามารถสร้าง File server และ reverse proxy แบบง่าย ๆ 
ไว้ใช้งานในการพัฒนาระบบงานแล้ว

ส่วน code แบบเต็ม ๆ ดูเพิ่มได้ที่ GitHub::Up1

Visual Code Live Share ใช้งานได้ดีมาก ๆ

$
0
0

สำหรับใครท่ีทำงานเป็นทีมแบบ Remote แล้ว
ใช้งานพวก Visual Studio และ Visual Studio Code
เพื่อพัฒนาระบบงาน มีเครื่องมือที่น่าสนใจคือ Visual Code Live Share ที่มีทั้ง 

  • Share editor แบบ read-only หรือ full access เลย
  • มีระบบ chat ให้
  • มีระบบคุยด้วยเสียงได้ด้วย
  • ล่าสุดมีเปิดผ่าน Web browser ได้อีกด้วย (Preview version)

ผมทำการใช้งานผ่าน Visual Studio Code 
ให้ทำการติดตั้ง Extension ดังนี้

ลองเปิดใช้งานผ่าน Web browser

ลองนำไปใช้งานกันดูครับ
ไม่ต้องรอ codespace ละ !!

4 features ใหม่ที่น่าสนใจของ GitHub

$
0
0

จาก GitHub Satellite Virtual 2020 นั้น
ทาง GitHub จะประกาศที่จะปล่อย 4 features ที่น่าสนใจ
มาให้นักพัฒนาหรือผู้ใช้งาน GitHub
ซึ่งอาจจะเปลี่ยนรูปแบบการพัฒนาระบบงานไปเลยก็ได้
ประกอบไปด้วย feature ต่าง ๆ ดังนี้

1. CodeSpace

เราสามารถใช้งาน Editor  เพื่อแก้ไข code ใน repository ผ่าน Web browser ได้เลย
จากภาพตัวอย่างมันคือ VS Code นี่เอง
ตอนนี้เราสามารถไปของใช้งาน beta version ได้แล้ว

2. GitHub Discussions

เป็นอีกช่องทางที่ช่วยให้ community  สามารถพูดคุยกันได้
เหมือนเป็น webboard ของ repository นั้น ๆ ไป
โดยที่ beta version จะเปิดให้กับ public repository เร็ว ๆ นี้
ไปลองใช้งานเล่น ๆ ได้ที่ Satellite discussions

3. เรื่องของ security ทั้งการ Scan code และ secret ต่าง ๆ

ปกติ GitHub ก็จะมี feature ด้าน security มาตลอดเวลา
แต่สิ่งที่เพิ่มเข้ามาคือ Advance security
เราสามารถเข้าไปขอใช้งาน beta version ได้แล้ว

4. GitHub private instance 

เกิดมาเพื่อบริษัท enterprise เลย
ที่เรื่องของ compilance และ security เป็นเรื่องหลัก
คือแยก instance, network, security, backup ออกมาเลย
แต่ยังไม่มีให้เข้าไปดูนะ

Reference Websites
https://github.blog/2020-05-06-new-from-satellite-2020-github-codespaces-github-discussions-securing-code-in-private-repositories-and-more/

CDK8S :: มาเขียน code เพื่อ deploy ระบบงานบน Kubernetes

$
0
0

เพิ่งเห็นว่าทาง AWS ได้ปล่อย CDK8S (Cloud Development Kit for Kubernetes)
version 0.21.0 ออกมา
ซึ่งเป็น framework ที่พัฒนาจาก AWS Lab
แน่นอนว่าเป็น open source

ช่วยทำให้เราสามารถเขียนโปรแกรมในภาษา TypeScript และ Python
(น่าจะเพิ่มในอนาคต)
เพื่อ deploy ระบบงานบน Kubernetes cluster ได้เลย
ทำให้เราไม่ต้องไปเขียนไฟล์ YAML สำหรับการ deploy ใด ๆ
เพราะว่า CDK8S จะทำการสร้างให้เองจาก code ได้เลย

เพื่อความเข้าใจมาลองใช้งานดีกว่า

ขั้นตอนที่ 1 ทำการติดตั้ง และ สร้าง project ด้วย CDK8S

[gist id="376c6b0ca23faef1bf90305213bcf3da" file="1.txt"]

ขั้นตอนที่ 2 เขียน code เพื่อทำการ deploy ระบบงานบน Kubernetes cluster

โดยทำการเขียน code ในไฟล์ main.ts

[gist id="376c6b0ca23faef1bf90305213bcf3da" file="main.ts"]

สิ่งที่ต้องการคือ ทำการ Deploy nginx ซึ่งต้องการ resources 2 ตัวคือ

  1. Deployment
  2. Service

สามารถเขียน code ได้ดังนี้

[gist id="376c6b0ca23faef1bf90305213bcf3da" file="main_update.ts"]

จากนั้นทำการ build จะได้ไฟล์ yaml ใน folder /dist

[gist id="376c6b0ca23faef1bf90305213bcf3da" file="2.txt"]

ตัวอย่างของไฟล์ที่ได้จากการ build

[gist id="376c6b0ca23faef1bf90305213bcf3da" file="demo.k8s.yaml"]

ขั้นตอนที่ 3 ทำการ deploy บน Kubernetes

ใช้ผลที่ได้จากขั้นตอนที่ 2 มา deploy นั่นเอง

[gist id="376c6b0ca23faef1bf90305213bcf3da" file="3.txt"]

ผลการทำงานเป็นดังรูป

เพียงเท่านี้เราก็สามารถเขียน code
สำหรับการ deploy ระบบงานบน Kubernetes cluster ได้เลย
น่าจะเป็นอีกหนึ่งแนวทางในการพัฒนา
ที่สำคัญ สามารถเขียน test ได้อีกนะเออ
ขอให้สนุกกับการ coding ครับ

แนะนำการใช้ ไทยชนะ เรื่องการ Check in และ Check out อย่างถูกต้องและปลอดภัย

$
0
0

วันนี้ได้เข้าไปซื้อของใช้
โดยจะต้องทำการ Check in และ Check out ผ่าน QR Code ของร้าน
ซึ่งทำการสมัครจากระบบของไทยชนะ
จากที่สังเกตการใช้งานพบว่า

  • ก่อนมาที่ร้านแนะนำให้เข้าไปตรวจสอบจำนวนการ check in ของร้านได้ที่หน้า Merchant หรือ ร้านค้า เพื่อไม่ให้มารวมตัวกันจำนวนมาก ๆ
  • การ check in จะง่าย แต่ถ้าในช่วงคนเยอะ ๆ แนะนำให้หลีกเลี่ยง (Social distance)
  • สำหรับใครที่ไม่มีโทรศัพท์มือถือ ทางร้านจะมีให้กรอกแบบฟอร์ม
  • การ check out น่าจะเป็นปัญหา เนื่องจากหลาย ๆ คนมักจะลืม ดังนั้นเดี๋ยวสรุปขั้นตอนการใช้งานที่ถูกต้อง

ขั้นตอนการ Check in เข้าร้าน

ก่อนเข้าร้าน จะมีการตรวจอุณหภูมิร่างกาย
พร้อมทั้งให้ Scan QR code เพื่อทำการ check in
โดยให้เลือกเมนู เช็คอินร้าน ตรงนี้จะคอขวดหน่อย
เพราะว่า จะมีทางเข้าและ QR Code เดียว
เนื่องจากต้องวัดอุณหภูมิด้วย
ดังนั้นต้องเว้นระยะห่างกันหน่อย
แสดงขั้นตอนการ Check in ดังรูป

ข้อควรระวังในการ shopping สำหรับห้างร้านต่าง ๆ
คือ ระยะห่างระหว่างคน รวมทั้งการหยิบจับสิ่งต่าง ๆ ทั้งตะกร้า ทั้งสินค้าที่ซื้อ
เพื่อความปลอดภัยทั้งตัวเราเองและผู้อื่น
แนะนำให้ล้างมือด้วยแอลกอฮอล์ก่อนหยิบจับเสมอ
กับเวลาที่เดิน shopping ก็ไม่ควรนานเกินไป
ดังนั้น ก่อนมาซื้อควรทำการวางแผนการซื้อมาก่อนเสมอ

ส่วนการชำระเงิน ถ้าเป็นไปได้
แนะนำให้ใช้ผ่าน Prompt pay หรือพวก Cashless
จะสะดวกและปลอดภัยมากขึ้น

ขั้นตอนการ Check out ของผู้ใช้บริการก่อนออกจากร้าน

เป็นขั้นตอนที่ผู้เข้าใช้งานมักจะลืม
ซึ่งอาจทำให้ความถูกต้องของข้อมูลร้านค้านั้น ๆ ผิดพลาดได้
ทั้งคนเยอะหรือน้อยกว่าความเป็นจริง
ซึ่งจะมีผลให้ประสิทธิภาพหรือผลของระบบไม่ดีเท่าที่ควร

ดังนั้นแนะนำว่า อย่าลืม Check out เด็ดขาด
โดยที่เราต้องทำการ review หรือกรอกแบบประเมินของร้านนั้น ๆ ด้วย
ซึ่งเป็นทำการเลือก มี หรือ ไม่มี เท่านั้น
ยังไม่มีบอกระดับความเข้มข้น หรือ คุณภาพ

แต่ข้อมูลตรงนี้น่าจะช่วยเรื่องของการ ปรับปรุงคุณภาพของร้านต่าง ๆ ได้ต่อไป
ดังนั้นผู้ใช้งานควรต้องตอบตามความเป็นจริง
อย่าตอบแบบผ่าน ๆ หรือมั่ว ๆ ไป

โดยที่แบบประเมินหลังการใช้บริการประกอบไปด้วย

  • การทำความสะอาดพื้น พื้นผิวสัมผัสบ่อย ๆ หรือไม่
  • ผู้ประกอบการ พนักงาน ผู้ใช้บริการสวมหน้ากากอนามัย หรือหน้ากากผ้าหรือไม่
  • มีจุดบริการล้างมือด้วยสบู่ หรือแอลกอฮอล์เจล หรือน้ำยาฆ่าเชื้อโรคหรือไม่
  • เว้นระยะห่างระหว่างโต๊ะ ระหว่างที่นั่ง รวมถึงระยะห่างระหว่างทางเดินอย่างน้อย 1 เมตรหรือไม่

ขั้นตอนการ Check out เป็นดังนี้

เพียงเท่านี้ก็สามารถ Check in และ Check out ได้อย่างถูกต้องแล้ว

อีกสิ่งหนึ่งที่ไม่ควรทำคือ การถ่ายหรือ share QR Code ของทางร้าน
เพราะว่า อาจจะทำให้ข้อมูลการ check in และ check out ผิดพลาดไปได้มาก
ดังนั้นแนะนำให้ใช้งานอย่างถูกต้อง

อย่าลืมรักษาระยะห่าง และสวมหน้ากากอนามัยหรือหน้ากากผ้ากันด้วย
น่าจะทำให้การปลด lock ทางสังคมได้ผลที่ดีขึ้น

Microsoft Build 2020 :: สรุปสิ่งต่าง ๆ ที่เกี่ยวข้องกับการพัฒนา software (For developers by developers)

$
0
0

ในวันที่ 19-20 พฤษภาคมนี้ ทาง Microsoft ได้จัดงาน Microsoft Build 2020 Live
โดยในวันแรกมี product ต่าง ๆ ที่น่าสนใจ
เกี่ยวกับการพัฒนา Software เยอะมาก
ยกตัวอย่างเช่น

  • Windows Package Manager
  • Visual Studio Codespace
  • Visual Studio For Mac version ใหม่
  • .Net MAUI (อ่านว่า เมาอิ) เป็น multi-platform สำหรับ App-UI
  • Windows Terminal ซึ่งสามารถติดตั้งได้ผ่าน Windows package Manager ได้เลย
  • WSL 2 (Windows Subsystem Linux 2)
  • .Net Core 5 preview 4

จึงทำการสรุปไว้ให้ พร้อม link บทความต่าง ๆ ไว้

Windows Package Manager หรือ winget cli

ออกแบบมาเพื่อให้ง่ายต่อการใช้งาน
รวมถึงสะดวกต่อการทำงานแบบอัตโนมัติอีกด้วย  

โดยที่เราสามารถติดตั้งพวก Visual Studio Code
และเครื่องมือใหม่ ๆ อย่าง Windows Terminal 1.0 ได้เลย

Visual Studio Codespace

หรือชื่อเดิมเรียกว่า Visual Studio Online
โดยใช้ได้ทั้ง Visual Studio Code  และ  Visual Studio 2019
ช่วยให้นักพัฒนาสามารถเขียน code และ run แบบ online ได้เลย

.Net MAUI (อ่านว่า เมาอิ) เป็น multi-platform สำหรับ App UI

ถูกพัฒนาต่อยอดมาจาก Xamarin.Forms toolkit นั่นเอง
ช่วยทำให้เราสามารถพัฒนา UI ด้วยภาษาโปรแกรมเดียว
แต่นำไป run หรือทำงานได้หลากหลาย platform

ทำการสรุปภาพรวมของ WSL 2

ว่ามีข่าวอะไรใหม่ ๆ จอง WSL 2 รวมถึง feature ที่ปล่อยออกมาในเดือนนี้ เช่น

  • Windows 10 สนับสนุน WSL 2.0
  • Docker Desktop for Windows จะทำงานอยู่บน WSL 2 โดย default ส่งผลให้ boot ได้เร็ว และกิน resource น้อยลง

ส่วน feature ใน roadmap ก็มีทั้ง
การติดตั้งผ่าน Windows Terminal ได้เลย WSL
จะเป็นค่า default ของการทำงานไปเลย
เมื่อทำการติดตั้งแล้ว สนับสนุน GPU compute workflow
สนับสนุน Linux GUI app 

ส่วนอื่น ๆ ที่น่าสนใจคือ

สามารถดูผ่าน YouTube Live ได้เลย

VDO เปิดตัวงาน Microsoft Build 2020: CEO Satya Nadella's opening remarks

สามารถติดตามดู VDO ย้อนหลังได้จาก Playlist Microsoft Build 2020

แนะนำ MongoDB for VS Code (preview version)

$
0
0

มาลองใช้งาน MongoDB ผ่าน VS Code กัน
ด้วย extension ชื่อว่า MongoDB for VS Code
อยู่ในสถานะ preview version
มีความสามารถดังนี้

  • ดูข้อมูล database และ collection ต่าง ๆ ได้
  • ดูโครงสร้าง schema ของ collection ต่าง ๆ
  • MongoDB Playground สำหรับดูแลและจัดการข้อมูลใน MongoDB  (CRUD operation) รวมทั้งมี autosuggestion ให้ใช้ด้วย
  • MongoDB Shell สำหรับการ access ไปยัง server

การใช้งานก็ไม่ยากเริ่มด้วยการเพิ่ม connection ไปยัง MongoDB server

เมื่อเชื่อมต่อไปยัง server แล้ว ก็ดึงข้อมูลต่าง ๆ จาก server มาให้เลย

จากนั้นลองใช้งาน MongoDB Playgroud ก็ง่ายมาก ๆ

ลองใช้งานกันดู น่าจะช่วยให้การพัฒนาและจัดการ MongoDB ง่ายขึ้นไปอีก

Reference Websites

https://www.mongodb.com/blog/post/introducing-mongodb-for-vs-code


App หมอชนะ รองรับการ scan QR Code ของ ไทยชนะ แล้ว

$
0
0

ในตอนนี้ใน App หมอชนะ ทั้งบน Android และ iOS นั้น
รองรับการ scan QR Code จากของระบบ ไทยชนะ ได้แล้ว
โดยไม่ต้องกรอกข้อมูลเบอร์โทรซ้ำ ๆ อีกแล้ว
ซึ่งช่วยให้การ Check in และ Check out สะดวกมากยิ่งขึ้น

ถ้าใครใช้ App หมอชนะอยู่แล้ว ก็ใช้งานได้เลย
โดยจะทำการกรอกข้อมูลเบอร์โทรเพียงครั้งแรก
จากนั้นก็ทำการ Check in และ Check out ได้เลย
ช่วยให้ผู้ใช้งานผ่านเพียง App เดียวได้เลย

ส่วนถ้าใครยังไม่ติดตั้ง App หมอชนะก็ Download มาใช้งานได้เลย

จากนั้นทำการกรอกข้อมูลเบอร์มือถือ

ทำการยืนยันและ Check in และ Check out ได้เลย
น่าจะเป็นอีกวิธีการในการใช้งานที่ง่ายขึ้น

ทำความรู้จักกับ Loki คือ log system จาก Grafana Labs

$
0
0

Loki คืออะไร
คำจำกัดความสั้น ๆ คือ
เหมือนกับ Prometheus แต่ใช้สำหรับเก็บข้อมูล log
ความสามารถที่น่าสนใจคือ

  • Horizontal scale
  • High availability
  • Log aggregation
  • ออกแบบมาเพื่อให้จัดการได้ง่าย รวมทั้งเรื่องประหยัดค่าใช้จ่าย หรือใช้ให้เกิดประโยชน์สูงสุด

ออกแบบมาเพื่อแก้ไขปัญหาของระบบจัดการ log แบบเดิม
ที่ยากต่อการ scale ใช้ค่าใช้จ่ายที่สูง
รวมทั้งหาความสัมพันธ์หรือเกี่ยวข้องได้ยากมาก ๆ

Loki ทำงานอย่างไร

Loki จะทำการจัดทำ index ของข้อมูล log ที่ส่งเข้ามาเหมือนกับ Elasticsearch เลย แต่ไม่ได้ทำการสร้าง index ของข้อมูลที่ส่งมาทั้งหมด จะจัดทำ index เฉพาะข้อมูลที่จำเป็นต้องใช้ หรือเรียกว่า metadata ซึ่งมีขนาดเล็กมาก ๆ  เช่น สำหรับ log ของ web server จะจัดทำ index เพียง

  • Timestamp
  • HTTP Method
  • HTTP Status

ทำให้เราสามารถดึงข้อมูลตามเงื่อนไขจากที่เก็บไว้เท่านั้น
ถ้ามีความต้องการเพิ่มเติม ก็สามารถ config ได้
ดังนั้น แนวคิดของการจัดทำ index คือ
คนใช้งานต้องคิดก่อนว่า จะใช้งาน log กันอย่างไรและอะไรบ้าง
ไม่ใช่เก็บลูกเดียวเท่านั้น
และยังมีแนวคิดของ Label เพื่อเพิ่มประสิทธิภาพการดึงข้อมูลอีกด้วย

ส่วนการนำไปใช้งานนั้น ทาง Grafana Labs ก็มีเครื่องมือมาให้ครบเลย
แสดงการทำงานดังรูป

การใช้งาน Loki

แน่นอนว่า Loki มีแนวคิดมาจาก Prometheus
ดังนั้นก็ต้องทำงานร่วมกับ prometheus ได้

กับทำงานร่วมกับเครื่องมืออื่น ๆ ได้เช่นกัน
ยกตัวอย่างเช่น Fluentd เป็นต้น แสดงดังรูป

เพื่อความง่าย จะลองใช้งาน Loki + Promtail + Grafana

ซึ่งเป็นการใช้งานหลักจากทาง Grafana Labs ทั้งหมด

  • Promtail คือ Agent ที่ไป run ในเครื่องต้นทางของข้อมูลที่เราต้องการจัดเก็บ
  • Loki คือ Database สำหรับจัดเก็บข้อมูลที่ส่งมาจาก Promtail
  • Grafana คือ ส่วนการแสดงผลข้อมูลจาก Loki ในรูปแบบสวยงาม โดยการดึงข้อมูลจะใช้งานผ่าน LogQL ของ Loki ซึ่งต้องทำการเพิ่ม Datasource ใหม่ใน Grafana

แสดงโครงสร้างการทำงานดังรูป

โดยที่ใน project Loki ได้เตรียม Docker compose ไว้ให้ใช้แบบง่าย ๆ ดังนี้

ก่อนอื่นต้อง config Promtail ซึ่งทำงานเป็น Agent
เพื่อดึงข้อมูลจาก log ที่เราต้องการ
ยกตัวอย่างเช่น การดึงจาก System log

[gist id="bd9d8029bf0d470a37c92810a8b66c37" file="config.yaml"]

จากนั้นทำการ start stack ของ Loki ด้วย Docker compose ดังนี้

[gist id="bd9d8029bf0d470a37c92810a8b66c37" file="docker-compose.yml"]

จากนั้นเข้าไปเพิ่ม Datasource Loki ใน Grafana

ใน Grafana จะเพิ่ม Explore menu => Loki มาให้ใช้งานเพื่อทำการดึงข้อมูลจาก Loki ผ่าน LogQL

เพียงเท่านี้ก็ใช้งาน Loki ได้แล้ว

Reference Websites

https://grafana.com/blog/2020/05/12/an-only-slightly-technical-introduction-to-loki-the-prometheus-inspired-open-source-logging-system/

ครบรอบ 25 ปีของภาษา Java จึงมีงาน 25 Hours of Java ขึ้นมา

$
0
0

วันที่ 23 พฤษภาคม เมื่อ 25 ปีที่แล้ว เป็นวันแรกของภาษา Java
ที่ใช้ในการพัฒนา software จำนวนมาก มาจนถึงปัจจุบัน
โดยการฉลองวันเกิดคือ การจัดงาน 25 Hours of Java

มีหัวข้อต่าง ๆ ดังนี้

  • Java 9-14 questions from StackOverflow
  • Birthday 🥳, Cake 🎂, and Java Q&A 🙋🏽‍♀️
  • Stream Exception Handling
  • The Java Module System
  • Trisha Gee :: Career and Skills of Software Developer
  • JUnit 5 Extension
  • Java Releases and Distributions
  • Martijn Verburg :: AdoptOpenJDK
  • Projects Amber, Valhalla, Loom, and Leyden
  • Going to Java 9
  • Going to Java 10 and 11
  • Fun with var
  • Going to Java 12 to 14

ลองไปติดตามดูกันนะ

สวัสดี Blazor Assembly

$
0
0

ทาง Microsoft เพิ่งประกาศ Blazor version ใหม่ออกมา
โดยใน project นี้สามารถเขียน C# code เข้าไปในส่วนของ View ได้เลย
มันก็คือ Razor นั่นเอง มีความสามารถทั้ง

  • Blazor Assembly ซึ่งทำงานอยู่ที่ฝั่ง Client-side หรือบน browser เลย
  • Blazor Server ซึ่งแยกเป็น client-side และ server-side ทำให้สามารถ shared code ภาษา C# ได้ง่าย

รูปแสดงรูปการทำงานของ Blazor Server

รูปแสดงรูปการทำงานของ Blazor Assembly

การทำงานของ Blazor Assembly

ก่อนใช้งานต้องทำการ download หรือ upgrade .Net Core เป็น version 3.1 ก่อน
ในขั้นตอนการสร้างและพัฒนา
สามารถใช้งานผ่าน Visual Studio ได้เลย
หรือทำการสร้างผ่าน Dotnet command-line ได้ดังนี้

[gist id="126fcaebbf04aea33a9037bd1d6ac970" file="1.txt"]

มีโครงสร้างของ projecct ดังนี้

ทำการ build และ publish project เพื่อทำผลที่ได้ไป deploy ต่อใน web server อื่น ๆ

โดยจะมีเพียง static file เท่านั้น เช่น HTML, CSS และ JavaScript เป็นต้น
นั่นหมายความว่า เราไม่จำเป็นต้องใช้ .Net Core Server, IIS ก็ได้
สามารถไปใช้ Web Server อื่น ๆ ได้เลย เช่น NGINX เป็นต้น

[gist id="126fcaebbf04aea33a9037bd1d6ac970" file="2.txt"]

ยกตัวอย่างของ Dockerfile สำหรับ build -> publish -> deploy ไปยัง NGINX

[gist id="126fcaebbf04aea33a9037bd1d6ac970" file="Dockerfile"]

ผลการทำงานเป็นดังนี้

ลองใช้งานกันดูนะครับ

ER Diagram as a Code

$
0
0

สำหรับสายออกแบบ ER Digram (Entity Relationship) น่าจะชอบ
สำหรับการสร้างด้วยการเขียน code หรือ ER Diagram as a Code
ด้วยการใข้งานผ่าน DB Diagram

น่าจะช่วยให้การพูดคุยและสื่อสาร ระหว่างคนทำงานได้ดีขึ้น
ลองใช้งานกันดูครับ

ความสามารถในการ Export ประกอบไปด้วย

  • PNG/PDF
  • MySQL
  • PostgreSQL
  • Microsoft SQL Server

มาแล้วนะ สำหรับ App ไทยชนะ บนมือถือ Android

$
0
0

วันนี้เห็นว่า App ไทยชนะใน Google Play Store ถูกเปิดให้ download และใช้งานแล้ว
โดยมีความสามารถดังนี้

  • ทำการ check in และ check out ผ่าน QR Code ได้
  • แสดงการ check in ในที่ต่าง ๆ ของเราให้ด้วย
  • ทำการค้นหาร้านค้า และ ดูข้อมูลของร้านค้าได้ ซึ่งจะแสดงเหมือนกับฝั่ง website

เข้าไป Download ได้ที่ Google Play Store

https://play.google.com/store/apps/details?id=com.ktb.thaichana.prod

การใช้งานครั้งแรกต้องทำการกรอกเบอร์มือถือ

เพื่อทำการยืนยันตัวตนผ่าน OTP ก่อน จากนั้นก็ใช้งานกันได้เลย

ใช้งานกันเลย

ส่วนบน Apple Store สำหรับ iPhone ยังไม่เห็นนะครับ
น่าจะรอ approve อยู่
ปล. ในหน้า web ของ ไทยชนะ ยังไม่มี Link ให้ Download
น่าจะรอให้ขึ้นทั้ง Play store และ Apple Store ถึงประกาศอีกรอบ

สรุปสิ่งที่น่าสนใจกับ Technology Radar Vol. 22

$
0
0

จากรายงานเรื่อง Technology Radar Vol. 22 ของ ThoughtWorks ออกมา
ทำการสรุปเรื่องของ เทคนิค เทคโนโลยี เครื่องมือ
ภาษาโปรแกรมและ framework ต่าง ๆ สำหรับการพัฒนา software ออกมา
โดยหลัก ๆ จะเน้นไปที่

  • การทำงานแบบ Remote ในวิกฤติ COVID-19 ที่ระบาดไปทั่วโลก ส่งผลต่อการทำงานของทุกภาคส่วน
  • เน้นมาที่ Software delivery ecosystem ซึ่งมีความสำคัญต่อการพัฒนา software อย่างมาก ไม่ใช่เน้นเพียงกระบวนการอย่างเดียวเท่านั้น
  • เรื่องของ Kubernetes ที่มีเครื่องไม้เครื่องมือ และระบบ ecosystem ที่ครบเครื่อง แน่นอนว่าตัวมันเองมีความซับซ้อนสูง แต่ก็มีการคิดและสร้างเครื่องมือต่าง ๆ เพื่อมาปิดจุดอ่อนเหล่านี้อยู่เรื่อย ๆ

โดยมีหัวข้อที่ต้องทำการศึกษาเยอะมาก ๆ

แสดงดังรูป

แต่ขอยกมาเฉพาะเรื่องที่ผมสนใจมาดังนี้

กลุ่มของ Technique

ในกลุ่มเรื่องของส่งมอบ software ที่ดี จะเน้นมากขึ้นทั้ง

  • Infrastructure as code
  • Pipelines as code
  • Security policy as code

การทำงานแบบ Remote ก็มีเข้ามาทั้ง

  • Pragmatic remote pairing ซึ่งเป็นแนวทางที่สำคัญและจำเป็น โดยมีเครื่องมือที่ดี เช่น Visual Studio Live Share ซึ่งเป็นอีกเครื่องมือที่เข้ามาอยู่ขั้นทดลองของกลุ่ม Tool นั่นเอง
  • Use remote native processes and approaches  มีความสำคัญมาก ๆ สำหรับการทำงานแบบ Remote และการทำงานแบบ Distributed team ต้องทำให้มั่นใจว่าทุก ๆ คนในทีมเข้าถึง และใช้งาน flow การทำงานต่าง ๆ ได้ดี ไหลลื่น เพื่อลดผลกระทบต่อการทำงานร่วมกัน รวมทั้งการทำงานแบบนี้ต้องระวังเรื่องของการสื่อสารแบบ Asynchronous ไว้ด้วย

ส่วนเรื่องที่ควรระมัดระวังหรือหยุดใช้งานไปก็เช่น

  • การสร้าง branch ที่มีอายุนาน ๆ ใน GitFlow ควรลด ละ เลิกไปซะ
  • Legacy migration feature parity คือการ migrate ระบบเดิมมาระบบใหม่ โดยมี feature เหมือนเดิม ซึ่งแนะนำอย่าทำ ให้ไปดูความต้องการก่อนว่า จริง ๆ แล้ว feature เดิมนั้น มีใช้งานจริง ๆ จากผู้ใช้งานเท่าใด จัดเรียงลำดับความสำคัญในเชิง business จากนั้นเลือก feature สำคัญจริง ๆ มาพัฒนา ซึ่งแนวทางนี้มันคือเรื่องของ Modern product development ที่เน้นในรายงานครั้งนี้มาก ๆ นั่นคือ การทำน้อยแต่ให้ได้มากนั่นเอง
  • Log aggregation for business analytics  แต่ก่อนเรามักจะทำการรวม log data ต่าง ๆ ไว้ตรงกลาง จากนั้นทำการ query และ filter มาใช้งาน ซึ่งก็ดูดีนะ แต่พบว่าข้อมูลเหล่านั้น ไม่ได้ลงในรายละเอียดความต้องการของผู้ใช้งานเลย ทำให้จำเป็นต้องคิดใหม่ทำใหม่ สำหรับข้อมูลที่จัดเก็บเพื่อให้เกิดผลประโยชน์สูงสุด ไม่ใช่เก็บให้เยอะ แล้วมาหา insight แบบนี้ไม่ถูกต้อง

กลุ่มของ Platform

ในกลุ่มนี้ที่เห็นชัดเลยคือ

  • .NET Core ซึ่งทำให้สามารถพัฒนาและ deploy แบบ Cross platform ได้เลย ซึ่งตอนนี้ออก .NET 5 preview version มาให้ใช้งานแล้วอีกด้วย
  • Istio หลังจากเปลี่ยน architecture ของตัวเอง ก็ทำให้มีความเสถียรและใช้งานได้ง่ายขึ้น กลายมาเป็นอีกหนึ่ง platform สำหรับการจัดการ operation และ traffic ต่าง ๆ ใน Kubernetes cluster
  • Argo CD ก็เข้ามาอยู่ในส่วนของ Trial เป็นอีกหนึ่ง platform ที่ทำงานร่วมกับ Kubernetes ทั้งเรื่องของการ deploy และ monitoring

หนึ่งสิ่งที่ควรระวังคือ

  • Node overload นั่นคือ คำแนะนำสำหรับการเลือกใช้ Node.JS มาพัฒนาระบบที่มีการประมวลผลแบบสูง ๆ จะก่อให้ระบบเกิดปัญหาได้

กลุ่มของ Tool

ในส่วนนี้ Cypress ซึ่งเป็นเครื่องมือในการทดสอบระบบงาน
หรืออาจจะเรียกว่า Developer End-to-End testing ได้เลย
ซึ่งใช้งานง่ายและเร็ว รวมทั้งยังเพิ่มสนับสนุน Firefox อีกด้วย
ทำให้เครื่องมือตัวนี้ได้รับความนิยมสูง
และเข้าอยู่ในกลุ่มการ Adopt

เหมือนกับ Figma ที่เป็นเครื่องมือในการออกแบบร่วมกันของทีม
ซึ่งเข้ามาช่วยปรับปรุงการงานตามแนวทางของ DesignOps อีกด้วย

ส่วนเครื่องมือสำหรับการทำงานแบบ Remote ก็มีเพียบทั้ง

  • Figma
  • MURAL
  • Visual Studio Live Share

อีกอย่างที่เห็นได้ชัดมาก ๆ คือ
เครื่องมือที่ทำงานร่วมกับ Docker และ Kubernetes เยอะมาก ๆ
ลองไปอ่านเพิ่มกันดูนะครับ

ส่วนตัวที่ผมชอบคือ Goss สำหรับการ validate server

กลุ่มของ Language และ Framework

ในกลุ่มนี้ React Hooks, Vue.js และ React Testing Library
ขึ้นมายืนอยู่ในแถวหน้าแล้ว
ดังนั้นสำหรับนักพัฒนาสาย Frontend ไม่น่าพลาดกันนะครับ
และต้องใช้เครื่องมืออย่าง Cypress เป็นด้วย

อีกอย่างที่น่าสนใจคือ ภาษา Rust เข้ามาอยู่ในส่วนของ Trial อีกด้วย
เนื่องจากมีการปรับปรุงตัวภาษาและ API อย่างต่อเนื่อง
สามารถพูดได้ว่าครบเครื่องในการพัฒนาระบบงานแล้ว

ส่วนตัวอื่น ๆ ที่น่าสนใจ เช่น

  • Tailwind CSS
  • SwiftUI
  • PyTorch
  • Sarama

สิ่งที่ควรระมัดระวังหรือเลิกใช้งาน
Enzyme นั้นเป็น library สำหรับการทดสอบระบบที่พัฒนาด้วย React
ซึ่งตัว Enzyme ไม่ค่อยทำการปรับปรุงหรือดูแลอะไรมากนัก
แนะนำให้ไปใช้ React Testing Library เป็นดีที่สุดนะครับ

มีแปลเป็นภาษาไทยด้วยนะครับ ลอง Download ไปอ่าน
และะศึกษากันดูครับ PDF ภาษาไทย


Denon คือ Hot reload สำหรับ Deno

$
0
0

Denon เป็น library สำหรับระบบที่พัฒนาด้วย Deno
ซึ่งเข้ามาแทนที่ nodemon ที่ใช้สำหรับ Node นั่นเอง
โดยที่ Denon จะมี CLI ที่ครอบตัว Deno 
ทำให้ในการ run  ระบบงานจะใช้งานผ่านชุดคำสั่ง $denon ได้เลย

ความสามารถหลัก ๆ ของ Denon ประกอบไปด้วย

  • เฝ้าดูการเปลี่ยนไฟล์ต่าง ๆ ในระบบงาน
  • ทำการ restart project แบบอัตโนมัติ เมื่อเกิดการเปลี่ยนแปลง
  • สามารถทำการ configuration เพิ่มเติมได้ 
  • สามารถทำการ ignore ไฟล์และ folder ที่ไม่ต้องการออกไปได้

เริ่มด้วยการติดตั้ง Denon ง่าย ๆ ดังนี้

ก่อนอื่นต้อง update Deno เป็น version 1.0.1 ขึ่นไปก่อน

[gist id="ca373fbe889e45581f236c9c2f58f335" file="1.txt"]

จากนั้นทำการสร้าง project ของ Denon ดังนี้

[gist id="ca373fbe889e45581f236c9c2f58f335" file="2.txt"]

ทำการพัฒนาระบบงานด้วย Deno
จากตัวอย่าง ทำการสร้าง Web server จึงทำการแก้ไข config ของ Denon
ในไฟล์ denon.json ดังนี้

[gist id="ca373fbe889e45581f236c9c2f58f335" file="denon.json"]

ทำการ run Web server ด้วย Denon 

[gist id="ca373fbe889e45581f236c9c2f58f335" file="3.txt"]

เพียงเท่านี้ก็สามารถเริ่มใช้งานได้แล้ว
สำหรับ Hot reload ของ Deno     

App ไทยชนะ บนมือถือ Android version 1.1.0 ทำการปรับลดขออนุญาตเท่าที่ใช้งานเท่านั้น

$
0
0

มาดูการทำงาน App ไทยชนะ บนมือถือ Android กัน
ซึ่งทำการ update version 1.1.0 แล้ว

โดยใน version นี้ ทำการปรับลดการขอ permission เท่าที่ต้องใช้เท่านั้น คือ

  • Camera หรือกล้องถ่ายรูป สำหรับ scan QR Code
  • Location แบบ foreground นั่นคือ ทำงานเฉพาะเปิดใช้งาน app เท่านั้น เพื่อให้การค้นหาร้านค้าใน location ที่ถูกต้องมากยิ่งขึ้น แต่ถ้าไม่อนุญาตก็จะสามารถใช้งานได้ โดยจะเป็นการใช้งานผ่าน Web View นั่นคือ ทำการดึงข้อมูลจากหน้า website ของ ไทยชนะ.com มาใช้นั่นเอง
  • Network เพื่อเข้าถึงระบบเครือข่าย internet
  • ไม่มีการเข้าถึงที่จัดเก็บข้อมูล (ทั้งอ่านและเขียน) เช่น Storage และ External stoage

ดูเพิ่มเติมได้จากรายละเอียดของ App permission ดังรูป

ในการ Check in ในร้านค้าต่าง ๆ

App จะบอกว่า ผู้ใช้งานทำการ check in ที่ไหนอยู่บ้าง
นับเวลาการอยู่ในร้านค้านั้น ๆ ให้
เพื่อบอกว่าเราอยู่ในร้านนั้น ๆ นานเท่าไร
ซึ่งตรงนี้ช่วยให้ผู้ใช้งาน ทำการ check out เมื่อออกจากร้านได้ง่ายและสะดวกขึ้น

โดย feature นี้น่าจะช่วยให้ข้อมูลการ check in  และ check out ถูกต้องมากขึ้น
เนื่องจากหลาย ๆ คนมักจะลืม check out กัน !!

ถ้าร้านที่มีคน check in แต่ไม่ทำการ check out จะแสดงผลดังนี้
ซึ่งอาจทำให้ข้อมูลเกิดข้อผิดพลาดได้
เช่น จำนวนคน check in มากเกินกว่าที่กำหนด ทั้ง ๆ ที่คนยังน้อยอยู่ เป็นต้น

ส่วนเรื่องของ Permission ที่ขอนั้นจะมีอยู่ 2 ครั้งคือ

ครั้งที่ 1 คือ การเข้าถึงกล้อง เพื่อ Scan QR Code
จำเป็นต้องขออนุญาตการใช้งานกล้อง
โดยการ scan QR Code นั้น จะมีการป้องกัน QR Code ปลอมด้วย

ครั้งที่ 2 คือ การเข้าถึง Location ของมือถือ

ขอเพื่อใช้สำหรับการค้นหาร้านค้าที่ใกล้เคียง
แต่ถ้าผู้ใช้งานไม่อนุญาตให้เข้าถึง location
ก็ยังสามารถใช้งานการค้นหาร้านค้าได้เช่นกัน

โดยการทำงานจะใช้ Web View ของ Android
เพื่อเปิดไปยังหน้า web การค้นหาใน web ไทยชนะ.com เท่านั้น
ไม่มีการส่งข้อมูลอะไรไป มีเพียงข้อมูล localtion ที่ขอไปเท่านั้น

สำหรับการจัดเก็บข้อมูลของการใช้ App

จัดเก็บในหน่วยความจำของ App
โดยที่เราสามารถ Clear ข้อมูลของ App ได้
จากนั้นข้อมูลที่เกิดขึ้นจากการใช้ App จะถูกลบทั้งหมด

ส่วนการส่งข้อมูลออกจาก App ไปยัง server นั้นจะมีเท่าที่ใช้งานเท่านั้น

มีการทำ Certificate Pinning ตามระบบความปลอดภัยของ App ปกติ
และไม่ได้มีข้อมูลส่วนบุคคลใด ๆ ถูกส่งไปยัง server นอกเหนือจากจากที่ขออนุญาต
ทำให้มั่นใจใน App นี้ได้ว่าปลอดภัยและน่าเชื่อถือ
รวมทั้งยังช่วยให้ผู้ใช้งาน ใช้งานง่าย สะดวกและปลอดภัยมากยิ่งขึ้น

จะมีเพียงการกรอกเบอร์โทรศัพท์ 
เพื่อยืนยันตัวตนก่อนเริ่มใช้งาน App ผ่านระบบ OTP

ส่วนการขออนุญาตอื่น ๆ ก็เช่น Internet 

นั่นคือ การใช้งานต้องเชื่อมต่อ Internet ด้วยเสมอ
มิเช่นนั้น จากการใช้งาน จะค้างหน้าแรกของ App ไว้ ไม่สามารถใช้งานต่อได้ !!

ทำการติดตั้งและใช้งานกันครับสำหรับ Android app version 1.1.0

บันทึกการแปลง Pact file ไปเป็น Postman Collection

$
0
0

วันนี้ทำการแบ่งปันเรื่อง Contract testing และทำการ implement ด้วย Pact
โดยสิ่งหนึ่งท่ีน่าสนใจคือ
การแปลง Pact file หรือ Contract file ที่ถูกสร้างออกมานั้น
ให้ไปอยู่ในรูปแบบของ Postman Collection
เพื่อนำไปใช้ทดสอบในระดับ Integration และ End-to-End ต่อไป

ตอนแรกคิดว่าจะลองทำเอง
เพราะว่าเพียงทำการ parse file แล้วไปสร้าง Postman collecction เท่านั้น
แต่ลองไปดูก็มีคนทำ project ชื่อว่า Postman Pact หรือ pmpact
จากนั้นก็ทำการแปลงได้เลย
แต่ก็ไม่ได้มีความสามารถอะไรมากนัก
อาจจะต้องมาเขียนเพิ่มหรือไปร่วม contribute เพิ่มเติมได้

ผลการแปลงเป็นดังรูป


[Proposal] ทำความรู้จักกับ Tuple และ Record ของ ECMAScript

$
0
0

จาก Proposal ของ ECMAScript นั้นมีสิ่งที่น่าสนใจคือ Tuple และ Record
อยู่ใน Stage 1 ซึ่งอาจจะเปลี่ยนแปลงอีกมากนัก
โดยทั้งสองตัวนี้เป็น immutable data structure ใหม่ที่เพิ่มเข้ามา
มีแนวคิดมาจาก Immutable.js นั่นเอง แต่ละตัวเป็นดังนี้

  • Record มีโครงสร้างเหมือนกับ Object ซึ่งประกาศดังนี้  #{ x:1, y:2 }
  • Tuple มีโครงสร้างเหมือนกับ Array ซึ่งประกาศดังนี้ #[1, 2, 3, 4]

สิ่งที่น่าสนใจมีดังนี้

เริ่มที่การเปรียบเทียบทั้ง Tuple และ Record จะเปรียบเทียบค่า ไม่เหมือน object !!

ยกตัวอย่างเช่น

[gist id="ebef26864e295d829dab6f69a2d7dee9" file="demo.js"]

โดยที่ค่าใน Tuple และ Record จะต้องเป็น primitive data type เท่านั้น

นั่นรวม Tuple และ Record ด้วยนั่นเอง
ลองกำหนดเป็น object เช่น Array จะ error ดังนี้

[gist id="ebef26864e295d829dab6f69a2d7dee9" file="demo2.js"]

สามารถ convert จาก Object มาเป็น Tuple และ Record ได้เลย

[gist id="ebef26864e295d829dab6f69a2d7dee9" file="demo3.js"]

ไว้รอดูต่อไปว่าจะเป็นอย่างไรต่อไป
มาเขียน code กัน

Deploy ระบบงานบน Kubernetes cluster ด้วย Helm V3

$
0
0

Why Helm ?
ในการ deploy ระบบงานบน Kubernetes cluster นั้น
พบว่า ปกติจะง่ายเมื่อระบบงานไม่ซับซ้อน
แต่เมื่อระบบเริ่มซับซ้อน มีจำนวน component เยอะขึ้น
ทำให้การ deploy ระบบงานยากขึ้น แถมงานซ้ำ ๆ เกิดมากขึ้น

ดังนั้นจึงต้องการลดเวลาในการ deploy ลดการทำงานซ้ำ ๆ ลง
รวมทั้งสร้างแนวทางการทำงานที่เป็นมาตรฐานร่วมกันมากขึ้น
อีกอย่างเรื่องเรื่องของการ reuse
น่าจะช่วยทำให้ productivity ทั้ง development และ operation ดีขึ้น
จึงเป็นที่มาของเครื่องมือจำนวนมาก หนึ่งในนั้นที่เลือกใช้งานคือ Helm

Helm คือ Package manager for Kubernetes

  • Find
  • Share
  • Use

Helm version 3

ทำการปรับปรุงและเปลี่ยนแปลงตามความต้องการของ community ที่ใช้งาน Helm
โดยนำแนวปฏิบัติที่ดี (best pracctice) มาใช้งาน
เพื่อทำให้การใช้งานง่ายและสะดวกขึ้น
รวมทั้งการเปลี่ยนแปลง architecture โดยที่เน้นที่เรื่องของ security เป็นหลัก

คำสั่งที่เปลี่ยนแปลง

  • จาก helm deleted เปลี่ยนเป็น helm uninstall
  • จาก helm inspect เปลี่ยนเป็น helm show
  • จาก helm fetch เปลี่ยนเป็น helm pull
  • จาก helm search เปลี่ยนเป็น helm search repo

How ?

เพื่อความเข้าใจมาลองใช้งานดีกว่า
ก่อนอื่นให้ทำการติดตั้ง Helm จากนั้นเตรียม Docker image ที่จะใช้ในการ deploy 

เริ่มการใช้งานด้วยการสร้าง Helm chart กัน

จากนั้นก็ทำการแก้ไขไฟล์ต่าง ๆ ตามที่ต้องการ
ทำการ deploy แต่ละ chart ของ helm ได้เลย
ที่สำคัญมี chart ดี ๆ ที่ใน community ทำไว้ให้เพียบเเลยที่ Helm Hub

มาใช้งานกัน แต่ก่อนอื่นต้องเข้าใจก่อนนะ
ว่าเครื่องมือเหล่านี้เข้ามาช่วยอะไรบ้าง

Reference Website

https://docker.events.cube365.net/docker/dockercon

Viewing all 1997 articles
Browse latest View live