5 mức ngu dốt (The Five Orders of Ignorance)

Bài này mình viết lại từ bài dịch trên blog KHTM và sau khi đã tham khảo bài viết gốc. Nội dung tóm lượt về 5 mức độ của sự ngu dốt dưới cái nhìn của Phillip G. Armour trong quá trình phát triển phần mềm hay trong bất kỳ lĩnh vực nào. Các mức độ đó là:

  • 0OI (Zero Order Ignorance – Lack of Ignorance)– không dốt: ta đạt mức 0OI về một thứ gì đó tức là ta có hiểu biết (kiến thức) về nó và ta có thể chứng minh là ta biết. Ví dụ: mình biết nấu ăn 😀
  • 1OI (Lack of Knowledge)– thiếu kiến thức: ở mức độ này, ta biết đến khái niệm nhưng không hoàn toàn rõ ràng về nó. Hay nói cách khác là ta biết là ta không biết :D. Do đó, nếu quan tâm, ta chỉ cần bỏ thời gian đọc sách, nghiên cứu, hoặc hỏi thì có thể chuyển về mức độ 0OI
  • 2OI (Lack of Awareness)– thiếu nhận thức: ở mức này là ta sẽ không biết là ta không biết thứ gì đó. Hay nói cách khác là ta không biết có thứ đó tồn tại cho đến khi nghe người khác chia sẻ hoặc thông qua đọc sách báo, blog…
  • 3OI (Lack of Process) – thiếu quá trình: ở mức này thì ta thiếu một quá trình cụ thể để khám phá ra rằng ta đang không biết rằng ta đang không biết về điều gì đó. Ở mức 2OI thì ta biết cách để khám phá ra những thứ mình không biết đó là thông qua đọc sách, blog chuyên ngành hoặc nghe những chuyên gia chia sẻ kinh nghiệm nhưng ở mức 3OI chúng ta thậm chí không biết cần phải làm gì :))
  • 4OI (Meta Ignorance)– siêu dốt: ở mức này thì ta không biết gì về năm mức ngu dốt. Do đó, khi đọc đến đây thì các bạn đã vượt qua được mức 4OI, xin chúc mừng :))

Lúc đọc được bài này mình vừa cảm thấy thú vị lại vừa có động lực để học cái gì đó hơn. Mong các bạn cũng có cảm giác như vậy. HAPPY READING!

Đọc thêm:

https://www.researchgate.net/publication/27293624_The_Five_Orders_of_Ignorance

Các lệnh thông dụng trên linux để thao tác với file (log)

Có lần gặp sự cố, bạn client ping cho mình “nhờ” mình kiểm tra log server để xem tại thời điểm gặp sự cố, hệ thống có gì lạ không. Mình vốn thật thà: “để từ từ tui hỏi phát, chứ cái này tui cũng chưa rành”, bạn ấy hơi ngạc nhiên “tưởng backend phải giỏi mấy cái này chứ”. Và kết quả là sau khi nhờ “tư vấn” và trace log, mình đã tìm ra được nguyên nhân gây ra lỗi.

Đó chỉ là một trong vô số lần mà mình tìm được nguyên nhân và fix được lỗi nhờ vào “xem” được file log, từ đó mình cũng mặc định luôn, dân backend Java là phải thành thạo linux, không thành thạo là một thiếu sót lớn. Mình cũng đang bị thiếu sót rất lớn này, và vẫn đang học để bổ sung. Và bài viết hôm nay, mình chia sẻ một vài lệnh mà mình hay sử dụng để thao tác trên file cho các bạn mới làm quen với linux:

  • cat: mở và in toàn bộ nội dung file ra màn hình, cái này chỉ thích hợp với file nhỏ, trong trường hợp file lớn thì dùng cat với các lệnh khác để count hoặc để search. Mở file lớn thì dùng head hoặc tail
  • head: mặc định là mở 10 dòng đầu của file, chúng ta có thể sử dụng thêm option -n (với n (number) là số dòng đầu cần xem). VD: head -20 (xem 20 dòng đầu của file)
  • tail: mặc định là mở 10 dòng của cuối của file, tương tự head, chúng ta có thể sử dụng option -n để xem nội dung số dòng cuối của file. Đặc biệt, với option -f (follow), chúng ta có thể xem được nội dung đang được write real time vào file, cái này rất hữu ích khi chúng ta muốn xem file log của chương trình đang chạy, log vẫn đang được ghi vào tại thời điểm xem.
  • grep: in ra dòng với nội dung tìm kiếm. VD: muốn xem nội dung  file log các đoạn có chứa “thachleblog”, mình sử dụng cat /data/log.text | grep “thachleblog”
  • wc: đếm số ký tự / dòng của file, mình hay xài wc -l để đếm số dòng của một file
  • awk: thao tác trên file sribe có format, cái này là cả một chân trời mới, có thể mình sẽ giới thiệu cơ bản ở một bài viết khác.

VD tổng quát:

Mình muốn thống kê xem trong file log.text có bao nhiêu dòng chứa cụm từ “thachleblog” mình có thể dùng lệnh sau:

cat log.text | grep “thachleblog” | wc -l

Để xem mô tả và các option của 1 lệnh linux bất kỳ, chúng ta thường gg, nhưng cũng thể dùng lệnh man để xem nhanh. VD: gõ man grep để xem mô tả và các option của lệnh grep.