Chuyển tới nội dung chính

Thay đổi version java trên macos mà không cần cài đặt thêm thư viện

· 2 phút để đọc
ManhPT
Just another developer!

Vấn đề là...

Có nhiều lúc bạn cần sử dụng một phiên bản nhất định của Java để phục vụ công việc, ví dụ như build app android thì cần Java 8 trong khi version mới nhất của Java hiện đã là 11 (tại thời điểm viết bài).

Sau đây là một vài bước đơn giản để bạn có thể thiết lập môi trường MacOS sử dụng một phiên bản nhất định (trong trường hợp máy bạn cài đặt nhiều phiên bản Java) và thay đổi giữa các phiên bản của Java.

Bạn không cần phải cài đặt thêm bất cứ plugin hay thư viện nào để có thể thực hiện các bước sau đây.

[Gitlab] Cài đặt gitlab-runner sử dụng môi trường docker

· 2 phút để đọc
ManhPT
Just another developer!

Việc cài đặt gitlab-runner sử dụng docker được hướng dẫn khá đầy đủ tại tài liệu chính thống. Nhưng thực tế quá trình cài đặt và sử dụng thường không diễn ra suôn sẻ với mình lắm nên mình chắc nhiều bạn cũng gặp vấn đề giống mình. Bài viết này chủ yếu chỉ ra những điều cần chú ý khi bạn cài đặt và sau khi cài thành công mà pipeline có thể vẫn báo tình trạng stuck (job không thể kích hoạt bởi gitlab-runner).

[Git Workflow] Giới thiệu

· 2 phút để đọc
ManhPT
Just another developer!

Bạn có bao giờ tự hỏi

  1. Git còn gì ngoài git commit, git pushgit pull? Thỉnh thoảng dùng thêm git merge, còn gì nữa không?
  2. git mergegit rebase khác gì nhau, nên dùng cái nào?
  3. Ở vị trí team leader bạn sẽ vận hành git ra sao để kết hợp với process của team (agile) và giải quyết các conflict trong quá trình code?
  4. Lịch sử git có giá trị như thế nào? Hay bạn chẳng bao giờ để ý đến nó?

Nếu bạn là 1 git command line master thì mọi thứ đều có thể được giải quyết dưới local bằng dòng lệnh. Nhưng khi làm việc trong một nhóm đông thành viên, làm thế nào để xử lý các vấn đề conflict code, release ra sao, thêm feature mới như thế nào, hotfix ra làm sao một cách trơn tru và hiệu quả, giảm thiểu tối đa các bước thủ công, tiến dần đến một git workflow tự động hoàn toàn (devops).

Làm thế nào để squash commit tại local?

· 5 phút để đọc
ManhPT
Just another developer!

Vấn đề là...

Trong quá trình code chắc hẳn bạn thường xuyên tạo ra những dumb commit để tránh mất code, hoặc nhiều commit trùng tên nhau. Bạn có bao giờ nghĩ đến việc gộp các commit (squash commit) đó lại thành một commit có ý nghĩa hơn chưa?

Squash commit (gộp commit) là một việc nên làm nhưng không phải ai cũng nghĩ đến. Thậm chí có nghĩ đến thì đa số cũng không muốn làm bởi sợ rằng có thể gây ra mất code. Xin được khẳng định luôn là code một khi đã được commit thì không mất đi đâu được, vô tư đi.

[Gitlab Flow] issue và merge request và branch

· 3 phút để đọc
ManhPT
Just another developer!

Giới thiệu Gitlab và Gitlab Flow

Gitlab là một công cụ rất hay và có self-hosted (on-premise) plan cho phép bất cứ ai, công ty hay tổ chức nào cũng có thể cài đặt một Git Platform của riêng mình.

  • Một điểm cộng của Gitlab đó là tính năng Gitlab Board, giúp bạn tổ chức và sắp xếp các issue thành các board giống như Trello, khá tiện lợi cho việc quản lý theo quy trình (VD: Agile).
  • Gitlab còn cho phép bạn tạo các Merge Request (Pull Request, theo cách nói của Github) dựa trên các issue đã có, đồng thời tạo luôn cả source branch giúp bạn.
  • Bên cạnh đó, Gitlab cung cấp Gitlab CI cho phép bạn apply CI/CD vào bất cứ project nào. Với tôi thì đây là một tính năng không thể thiếu khi lựa chọn một công cụ devops.

Sử dụng redux-saga kết hợp với callback

· 9 phút để đọc
ManhPT
Just another developer!

Chờ chút?

Nếu bạn chưa biết hoặc chưa thực hành redux-saga thì trước hết hãy vượt qua bài hướng dẫn cơ bản và hiểu được các concept cơ bản. Tham khảo:

  1. https://dev.to/bnorbertjs/async-react-basics-with-redux-thunk–redux-saga-4af7
  2. https://blog.logrocket.com/understanding-redux-saga-from-action-creators-to-sagas-2587298b5e71
  3. https://medium.com/@lavitr01051977/make-your-first-call-to-api-using-redux-saga-15aa995df5b6
  4. https://medium.com/@js_tut/the-saga-continues-magic-in-react-44da8d134285

Vấn đề đang gặp phải

Ví dụ kinh điển

Bạn có một button submit form và muốn button được disable hoặc hiển thị trạng thái loading/processing trong khi chờ kết quả trả về, chỉ khi nhận được kết quả thành công hoặc có lỗi mới đưa button trở lại thái ban đầu.

Sử dụng kiểu xuống dòng LF thay vì CRLF trong Git

· 1 phút để đọc
ManhPT
Just another developer!

Vấn đề là...

Không ít lần project có cấu hình eslint gặp lỗi Expected linebreaks to be 'LF' but found 'CRLF'. Lỗi này thực sự dẫn đến sự bế tắc khi lần đầu gặp phải. Tại sao lập trình trên windows cứ hay gặp mấy vấn đề dễ gây bối rối như vậy? Shit… chê tí thôi chứ dùng MacOS hay Linux thì đừng mơ chơi đc PUBG Mobile giả lập.

git config --global core.autocrlf false
git config --global core.eol lf

Gõ 2 dòng lệnh trên vào bất cứ CLI tool nào bạn có (powershell, cmd, terminal…). Done!