HomeArtTechHackBlockchain
ONLINE ·
Index
/
Technology
/
Article

Keychron K3 V2 Blue

Operator
Khomkrid Lerdprasert
Filed
July 07, 2021
Channel
Technology
Read
~1 min
Keychron K3 V2 Blue

 จัด Mechanical Keyboard Keychron K3 V2 แบบ Blue มาเขียน Code กันแบบ Clean Code Architecture ตามลุง Uncle Bob กันดีกว่า

จากบทความก่อนหน้านี้ ที่เอา Go-Fiber มาดุ้ยๆๆๆ เขียนโค้ดแบบ ไม่รู้่สี่รู้แปดไป พบว่า อีเหี้ยยยย เขียน unit test ยากเหลือเกิน ห่าลากกกกกกกกกกก เลยรื้อใหม่ทั้งหมด แล้วไปวาง Project Layout ใหม่ เป็นแบบ Clean Code ตามลุง Bob พบว่าชีวิตดีขึ้นเวลาเขียน unit test ประกอบกับสั่ง Keyboard ใหม่มาเขียน Code ด้วย Code เลยเป็นระเบียบมากๆ โดยพระเอกของงานนี้ก็เจ้านี่เลย ไม่ได้ค่าโฆษณานะ แสรดดด

Keychron K3
Keychron

สั่งมาจากนี่เลย keychronthailand โดยอยากได้แบบส่ง ด่วน จี๋ๆ ก็ทำการ Add line ไปที่ https://lin.ee/12IAInJ

ทีแรกอยากได้ K4 แม่งหมด ห่านนนนน!!! ไม่เป็นไรกด K3 มาแทน packaging สวยสด งดงามคุ้มค่าทีเดียว

Keychron K3
Keychron

เมื่อเปิดกล่องออกมาจะเจอวิธีใช้งาน

Keychron K3
Keychron

Keychron K3
Keychron

และแถม key สำหรับเปลี่ยนถ้าใช้กับ windows มาให้แงะเปลี่ยนกันด้วย

Keychron K3
Keychron

Keychron K3
Keychron

มีฝาปิดกันฝุ่นมาให้อย่างดี เหมาะกับเวลาที่เขียน Code ไม่เสร็จ แล้วค่อยมาทำวันอื่นต่อ (ไม่เกี่ยว สัส)

Keychron K3
Keychron

Keychron K3
Keychron

เชรดดด เขร้ มีไฟด้วย ไม่เคยใช้ keyboard แบบมีไฟมาก่อนเลย อยากทำงานตอนกลางคืนแล้วเนี่ย ฮาๆๆๆๆๆ

พอแกะกล่องเสร็จก็ลงมือ เขียน code project ที่แล้วใหม่หมดเลย พบว่ามีอาการพิมพ์ผิดๆๅถูกๆอยู่บ้าง เพราะไม่ชินกับ keyboard layout

โดย Project ที่แล้วเนี่ย เราจะใช้ Go-Fiber แต่เราวางโครงสร้างแบบ มั่วชิบหายวายป่วง พอถึงคราวต้องมาเขียน Test ก็เลยงึดดิคร้าบบบบ

รอบนี้เราจะเอาใหม่ โดยเราจะทำการวางโครงสร้าง Project ทั้งหมดตามลุง Bob https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html

https://blog.cleancoder.com/uncle-bob/images/2012-08-13-the-clean-architecture/CleanArchitecture.jpg

.
├── app.env
├── cmd
│   ├── go-dev.Dockerfile
│   ├── main.go
│   ├── main_test.go
│   └── tmp
│   ├── build-errors.log
│   └── main
├── config
│   ├── config.go
│   └── config_test.go
├── cover.html
├── cover.out
├── databases
│   ├── database.go
│   └── database_test.go
├── deliveries
│   ├── role_delivery.go
│   ├── role_delivery_test.go
│   ├── system_delivery.go
│   └── system_delivery_test.go
├── docs
│   ├── Install.http
│   ├── Login.http
│   └── User.http
├── domains
│   ├── module_domain.go
│   ├── role_domain.go
│   └── system_domain.go
├── go-dev.Dockerfile
├── go.mod
├── go.sum
├── helpers
│   ├── msg_helper.go
│   └── msg_helper_test.go
├── mocks
│   ├── ModuleRepository.go
│   ├── ModuleUseCase.go
│   ├── RoleRepository.go
│   ├── RoleUseCase.go
│   ├── SystemRepository.go
│   └── SystemUseCase.goบ
├── models
│   ├── model_test.go
│   ├── module_model.go
│   ├── permission_model.go
│   ├── role_model.go
│   ├── system_model.go
│   └── user_model.go
├── repositories
│   ├── module_repository.go
│   ├── module_repository_test.go
│   ├── role_repository.go
│   ├── role_repository_test.go
│   ├── system_repository.go
│   └── system_repository_test.go
├── routes
│   ├── installation_route.go
│   ├── installation_route_test.go
│   ├── role_route.go
│   ├── role_route_test.go
│   └── route.go
└── usecases
├── module_usecase.go
├── module_usecase_test.go
├── role_usecase.go
├── role_usecase_test.go
├── system_usecase.go
└── system_usecase_test.go

โดยทดลองวางโครงสร้างใหม่ตาม layout ข้างบนดูซึ่งจะไม่ตรงกับ concept ของลุงซะทีเดียว เอาสะดวกผมเข้าว่า

โดย

  1. cmd จะใช้เก็บ file main.go
  2. config ใช้เก็บ viper config
  3. database ใช้เก็บ database connection
  4. deliveries ใช้เก็บส่วนที่ เขียนร่วมกับ Go-Fiber เพืื่อโยนไปให้ Routing
  5. docs  ใช้เก็บ Rest Client เพื่อทดสอบ api และไว้ใช้แทน Swagger
  6. domains  เก็บ interface ของ module ต่างๆของเรา
  7. helpers  เก็บ module ต่างๆที่เขียนไว้ใช้ร่วมกัน
  8. mocks  เอาไว้เก็บไฟล์ mock interface  ที่ถูก generate จาก mockery
  9. models  เก็บไฟล์จำพวก model struct ต่างๆ
  10. repositories  ไฟล์ที่ติดต่อไปยัง database เพื่อจัดการ query ต่างๆ
  11. routes เก็บไฟล์ route ต่างๆในระบบ
  12. usecases ใช้จัดการ bussiness logic ต่างๆ

พอทำการแยก layout ออกมาตามนี้แล้ว ทำให้สามารถเขียน unit test ให้ coverage ได้เกือบๆ 100% เลยทีเดียว

go test -coverprofile cover.out ./... && go tool cover -html=cover.out -o cover.html  ✔  1010714:46:57
ok github.com/aofiee/barroth/cmd 1.709s coverage: 45.8% of statements
ok github.com/aofiee/barroth/config 0.870s coverage: 100.0% of statements
ok github.com/aofiee/barroth/databases 1.195s coverage: 100.0% of statements
ok github.com/aofiee/barroth/deliveries 2.323s coverage: 50.0% of statements
? github.com/aofiee/barroth/domains [no test files]
ok github.com/aofiee/barroth/helpers 1.417s coverage: 100.0% of statements
? github.com/aofiee/barroth/mocks [no test files]
ok github.com/aofiee/barroth/models 0.574s coverage: 100.0% of statements
ok github.com/aofiee/barroth/repositories 2.041s coverage: 100.0% of statements
ok github.com/aofiee/barroth/routes 2.483s coverage: 96.3% of statements
ok github.com/aofiee/barroth/usecases 2.621s coverage: 100.0% of statements

เหมือนเดิม code ทั้งหมดที่ทดลองเขียน จะอยู่ที่ https://github.com/aofiee/golang-clean-architecture

◎ Tags

##keyboard
Khomkrid Lerdprasert
Operator

Khomkrid Lerdprasert

Technical Lead — building AI-powered platforms, omni-channel chat systems, and telemedicine solutions with Go, Next.js & clean architecture. 20+ years shipping software from crypto wallets to e-learning systems. Bangkok-based. Writes code late at night, brews beer on weekends.

GithubInstagram
Previous · transmission
บันทึก การทำ Go fiber JWT Accesstoken & Refreshtoken ลงบน Redis
Next · transmission
มาเปลี่ยน Website ที่เปิดใน Chrome เป็น Darkmode กันเถอะ
Metadata
Channel
Technology
Filed
July 07, 2021
Read
~1 min
Language
TH / EN
Transmit

Related

Saxking Track — แอป iOS สำหรับฝึกซ้อมแซกโซโฟนกับ Backing Track
Khomkrid Lerdprasert
April 23, 2026
1 min
aofiee.dev
signal / noise / code · craft
© 2019 – 2026, Khomkrid Lerdprasert.
All transmissions logged.
No newsletter. No profiling. Cookies require consent.
PGP · 7F3D 2024 A21E B584 · 0x7F3D
Channels
  • Art & Culture
  • Technology
  • Hack 101
  • Blockchain 101
  • Archive / All posts
— END OF TRANSMISSION —
// powered by curiosity, coffee, & wuxia
BKK · 13°45′N · 100°30′E