Grokking Newsletter

By Grokking Vietnam

#216 - Happy Birthday, Git!

#219・
10K

subscribers

233

issues

Subscribe to our newsletter

By subscribing, you agree with Revue’s Terms of Service and Privacy Policy and understand that Grokking Newsletter will receive your email address.

Grokking Vietnam
Grokking Vietnam
Xin chào các bạn,
Sau 1 tuần mở bán ấn phẩm Dijkstra tập 2, chúng tôi đã nhận được sự ủng hộ nhiệt tình từ đông đảo bạn đọc Grokking Newsletter ❤️
Với rất nhiều thành viên trong Ban Biên soạn Dijkstra, đây là lần đầu tiên chúng tôi cùng thực hiện một ấn phẩm như thế, do đó không tránh khỏi một số thiếu sót như khâu dàn trang hay chất lượng hình ảnh chưa tốt. Để cải thiện lần xuất bản sau này, rất mong bạn đọc gửi ý kiến đóng góp tại đây.
Ngoài ra, nếu ấn phẩm của bạn chẳng may có lỗi trong khâu sản xuất như thiếu trang, bạn có thể gửi ảnh chụp sản phẩm bị lỗi và thông tin đơn hàng về dijkstra@grokking.org. Chúng tôi sẽ gửi tặng bạn một cuốn khác.
Xin cảm ơn,
Ban Biên soạn Dijkstra

Những bài viết hay
Góc Data
Góc Lập Trình
Đề ra tuần này: Longest String Chain
Lời giải đề bài tuần trướcCount and Say
Lời giải:
Nếu đã biết tới kỹ thuật nén dữ liệu Run-length encoding, bạn sẽ nhận thấy ngay rằng xâu kết quả của n = i chính là kết quả run-length encode từ xâu kết quả của n = (i - 1).
Ta có thể định nghĩa một hàm đệ quy bằng giả mã như sau:
String countAndSay(int n)
  // base case
  if (n == 1) 
   return "1"
   // get result of n - 1
  String prev = countAndSay(n - 1)
  return runLengthEncode(prev)
Ghi chú: Run-length encoding là một trong những kỹ thuật nén dữ liệu không mất mát (lossless data compression). Kỹ thuật này dựa trên ý tưởng thay thế chuỗi ký tự liên tiếp giống nhau bằng chuỗi “số lượng ký tự, ký tự”. 
Ví dụ: nếu ta có chuỗi nguyên gốc là “AAAABBB”, thì chuỗi sau khi thực hiện run-length encoding là “4A3B”. Bằng cách này, ta giảm được 3 ký tự so với so với chuỗi nguyên gốc.
Với ý tưởng trên, ta thực hiện giải thuật như sau: https://pastebin.com/uztiPiTg
Với n đủ lớn, chiều dài của chuỗi (n + 1) sẽ tăng khoảng 30% so với chuỗi n. Mời bạn đọc tham khảo thêm tại Look-and-say sequence.
(by nhphuc)
History
Chúc mừng sinh nhật Git!
Vào ngày 06/4/2005, Linus Torvalds đã thông báo tới cộng đồng Linux về Git, một revision-control system ông vừa tạo ra vào cuối tuần trước. Đằng sau sự ra đời của Git là một câu chuyện khá dài.
Trước khi có Git, lập trình viên Linux sử dụng BitKeeper, một công cụ do BitMover phát triển. Mặc dù BitMover có một phiên bản miễn phí cho lập trình viên Linux phát triển kernel, nhưng khi cộng đồng tự phát triển open-source trên đó thì BitMover lại không thoải mái. Open-source đó là BitKeeper client, do Andrew Tridgell viết vào tháng 2/2005, cho phép làm việc với source code được lưu trữ trong BitKeeper. Xung quanh công cụ này cũng có nhiều tranh cãi:
  • Những người ủng hộ cho rằng công cụ này chỉ đơn giản là cung cấp một phương thức khác để đóng góp cho Linux kernel mà không cần bản quyền phần mềm của BitKeeper. Tridgell client chỉ có thể truy cập tới dữ liệu của BitKeeper và không thay thế cho toàn bộ hệ thống.
  • Cha đẻ của Git là Torvalds lại không đánh giá cao client do Tridgell tạo ra. Theo ông, phần mềm của Tridgell không có mục đích hữu ích. Ngoài ra, giao thức reverse-engineering của Tridgell đã phần nào vi phạm quy định sử dụng của BitKeeper. (Bản thân Tridgell lại khẳng định công cụ của mình là hoàn toàn hợp lệ cả về đạo đức lẫn pháp luật.)
Chính Torvalds cũng đã dành nhiều thời gian để hòa giải giữa Tridgel và BitMover nhưng không thành công. Sau vài tháng thảo luận, BitMover đã quyết định thu hồi luôn quyền sử dụng BitKeeper.
Kết quả là Torvalds không thể sử dụng BitKeeper nữa, nhưng các sản phẩm tương tự trên thị trường thời điểm đó cũng không đáp ứng được các yêu cầu về performance. Theo Torvalds, “không thể chấp nhận được việc phải bỏ ra 10 giây chỉ để apply 1 patch bởi vì source code quá lớn”, nên cuối cùng ông đã tự viết ra một công cụ đáp ứng được đúng yêu cầu của mình.
Khi được hỏi tại sao lại gọi phần mềm mới này là “git” (từ lóng trong tiếng Anh, nghĩa là “kẻ thối nát”), ông giải thích: “Vì tôi là một kẻ tự cao tự đại, nên tôi đặt tên cho tất cả các dự án của mình theo tên bản thân. Trước tiên là Linux, và bây giờ là git”.
(by lpv)
Code & Tools
  • pre-commit: Một framework để quản lý và duy trì các hook trước khi commit, hỗ trợ nhiều ngôn ngữ.
  • Lapce: Một code editor được viết bằng Rust.
Góc Sponsors
Là một trong những siêu ứng dụng hàng đầu ở khu vực Đông Nam Á, Grab cung cấp đa dạng dịch vụ cho hơn 187 triệu người dùng tại 428 thành phố ở tám quốc gia. Tại Grab, chúng tôi tin rằng nhân tài chính là trái tim của công ty, vì vậy chúng tôi luôn cố gắng tạo ra một môi trường tuyệt vời để tối ưu hoá tiềm năng của các Grabbers.
Những lý do bạn sẽ thích làm việc ở Grab:
  • Đồng nghiệp thân thiện, chuyên môn cao.
  • Môi trường làm việc đa quốc gia, cân bằng giữa cuộc sống và công việc (work-life balance)
  • Được tham gia giải quyết các bài toán khó (high scale, high traffic), với nhiều impact (vài trăm triệu người dùng)
  • Lương tháng 13 + lương thưởng bonus theo hiệu quả công việc.
  • Rất nhiều khoá học training đào tạo nội bộ cũng như đào tạo được cung cấp bởi các đối tác như Microsoft, Amazon, ..
Hiện văn phòng R&D của Grab đang tuyển nhiều vị trí nhưBackend Developer, Frontend Developer, DevOps Engineer, Lead Software Engineer, ... Bạn có thể tham khảo tại Jobs - Grab Careers để biết thêm chi tiết.
Quotes
“Git, to some degree, was designed on the principle that everything you ever do on a daily basis should take less than a second” - Linus
Bạn đánh giá nội dung số newsletter này thế nào?
(1 = Rất tệ / 5 = Rất tốt)
👎 1 ——-—— 3 —— 4 —— 5 👍
Đánh giá của các bạn sẽ giúp chúng tôi liên tục cải thiện nội dung Newsletter!
Did you enjoy this issue? Yes No
Grokking Vietnam
Grokking Vietnam

Cảm ơn bạn đã dành thời gian đọc newsletter kỳ này và chúng tôi hi vọng rằng bạn đã khám phá ra một số điều mới mẻ từ các bài viết trên. Các bạn có thể đọc lại các số cũ tại website newsletter.grokking.org

In order to unsubscribe, click here.
If you were forwarded this newsletter and you like it, you can subscribe here.
Created with Revue by Twitter.
Viet Nam