Tự tạo một chương trình CLI trong quản lý công việc

CLI là gì?

CLI là cách người dùng và chương trình giao tiếp với nhau thông qua các dòng lệnh. CLI là viết tắt Command – line –interface, VD: nếu người dùng đồng ý thì gõ vào phím y rồi nhấn enter…

Interface là gì?

Interface là cách các đối tượng giao tiếp với nhau. Ở đây ta xét 1 đối tượng là người, 1 đối tượng là chương trình máy tính. Có 2 loại interface thường được nhắc đến là GUI và CLI (để ý chữ I ở cuối).

GUI = Graphical User Interface: Người dùng và chương trình giao tiếp với nhau thông qua các nút bấm, hình ảnh…Thao tác tiêu biểu cho GUI là: nếu người dùng đồng ý thì bấm vào nút OK, không thì bấm vào nút Cancel.

Bạn có thể thao tác công việc nhanh hơn hẳn so với dùng GUI. Với CLI, bạn chỉ cần gõ bàn phím, nên nếu đã gõ quen rồi, bạn có thể vừa nhắm mắt, vừa gõ code (yaoming) => Khi làm việc sẽ không còn bị mỏi mắt nữa=))

Một ví dụ khác: Mặc dù bạn không nhớ câu lệnh như thế nào, nhưng CLI có lưu lại các câu lệnh bạn đã gõ. Vì vậy bạn chỉ cần gõ câu lệnh man để gọi lại lịch sử command, bạn sẽ thấy công việc code hàng ngày của bạn có những thay đổi đáng kể.

Terminal là gì?

Là thiết bị cuối – thiết bị cuối cùng của đường dây. Thiết bị này được dùng vào thời mà những chiếc máy tính còn đắt đỏ. Một terminal chỉ có bàn phím (input) và màn hình (output). Cái mà ngày nay chúng ta hay gọi là terminal chạy trên máy tính thực chất là “virtual terminal” – terminal ảo. Các hệ điều hành nhân Linux đều trang bị sẵn các virtual terminal (từ giờ gọi là terminal cho ngắn).
Các terminal phổ biến như: GNOME Terminal, Konsole, rxvt, terminator…

Tự tạo một CLI để quản lý công việc

Câu chuyện có thay đổi một chút. Những điều tôi tổng hợp ra dưới đây không chỉ là những việc mà một kỹ sư phần mềm cần làm, mà nó còn áp dụng chung cho tất cả những ai đang làm việc, giúp công việc của bạn đạt được hiệu suất cao hơn.

• Quản lý Memo (viết note những việc cần làm)
• Quản lý Task
• Quản lý thời gian
Hiện tại, tôi đang áp dụng quản lý các việc trên bằng CLI nên cũng muốn giới thiệu, chia sẻ cho các bạn biết.

Quản lý Memo

Tôi đã viết bằng Markdown và đang quản lý File bằng Private Responsitory của Github. Tôi chia file code của từng ngày ra và lưu lại. Bằng cách gọi câu lệnh dưới đây, tôi có thể mở ra các phần memo của ngày hôm nay. Gõ câu lệnh này ra, đầu tiên màn hình sẽ chuyển trạng thái thành Get emacs /diary/ emacs ~/diary/(date “+%Y/%m/%d.md”).

Cấu trúc Directory

Sau khi gõ câu lệnh trên, 1 file có Directory dạng là 年/月/日.md sẽ được tạo ra và có cấu trúc directory như dưới đây:

/home/sachaos/diary
├── 2016
│ ├── 06
│ ├── 07
│ ├── 08
│ ├── 09
│ ├── 10
│ ├── 11
│ └── 12
│ ├── …
│ ├── 20.md
│ ├── 21.md
│ ├── 22.md
│ ├── 24.md
│ ├── 25.md
│ └── 27.md
├── 2017
│ └── 01

Quản lý bằng Private Responsity của GitHub

Tôi đang quản lý file, code của mình trên Responsity của GitHub. Với chức năng này, bạn có thể dễ dàng share thông tin giữa các thiết bị ở nhà và các thiết bị tại công ty. Vì thế, khi bạn muốn xem lại thông tin, code…v.v trên các thiết bị di động, bạn có thể xem dễ dàng lại vì các thông tin, code đó đã được đã được viết thêm Markdown, hiển thị sao cho dễ nhìn , kể cả khi bạn Access vào Github.
Search Memo
Tôi quản lý memo trên git, nên tôi có thể search lại các phần memo đó, chỉ với 1 cú pháp đơn giản là git grep . Qủa thực là rất tiện lợi các bạn ạ!

Quản lý Task

Tôi đang sử dụng Web app có tên là Todoist để quản lý các Task cá nhân.
App này rất tiện và dễ dùng nữa. Nhưng vì tôi muốn dùng CLI nên tôi đã tạo CLI client bằng Golang và đang dùng app tự mình viết.

Demo

Tự tạo một chương trình CLI trong quản lý công việc

Quản lý thời gian

Để đo thời gian làm các task hết bao lâu, tôi dùng 1 Web app là toggl
Khi thực hiện đo thời gian một cách chuẩn xác như vậy thì lần sau các bạn sẽ estimate thời gian làm task chính xác hơn. Thời gian làm task sẽ được tổng hợp thành các biểu đồ. Bạn sẽ dễ dàng nhìn ra được: Bạn đã dành bao nhiêu thời gian cho 1 task, thời gian vượt dự kiến là bao nhiêu…v.v
Có thể các bạn nghĩ tôi tự phụ, “tự hát, tự khen hay” nhưng vì thích dùng CLI nên tôi cũng viết client cho app này luôn=))
• sachaos/toggl: Toggl CLI Client
demo

Tự tạo một chương trình CLI trong quản lý công việc

Tổng kết

Trên đây tôi đã giới thiệu cho các bạn về các phương pháp, tool tôi đang sử dụng trong thực tế để quản lý Memo, task, thời gian bằng CLI. Bằng cách liên tục cải tiến các quy trình, bắt đầu từ những việc nhỏ như vậy, chúng ta sẽ tiết kiệm được thời gian, nâng cao năng suất, hiệu quả trong công việc.
Chúc các bạn làm việc vui vẻ, xong sớm, về sớm! (len)

Link bài gốc: http://qiita.com/sachaos/items/ed06f09375b2cef55dda?utm_source=Qiita%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%B9&utm_campaign=d827451390-Qiita_newsletter_243_18_1_2017&utm_medium=email&utm_term=0_e44feaa081-d827451390-33433141

Sưu tầm & Dịch bài: Thanh Thảo