Category Archives: Chuyện coding

Tât tần tật những thứ liên quan đến coding.

Series C# hay ho: Giới thiệu Humanizer – Một thư viện khá thú vị của C#

Kì này, series C# hay ho sẽ giới thiệu với bạn một thư viện khá “hay ho”, đúng như tên gọi của series. Thư viện này có tên là Humanizer. Nó chỉ có một chức năng duy nhất: Chuyển string, ngày tháng, … thành chữ mà con người đọc được (Đúng như tên gọi Humanizer tức là “người hóa”). Nghe đơn giản vậy thôi, nhưng bạn sẽ ngạc nhiên trước những chức năng của nó.

Bài viết chỉ mang tính chất showcase, giới thiệu nên sẽ không có code nhiều. Nếu tò mò, các bạn có thể tạo 1 project mới, dùng nuger để cài đặt Humanizer và code thử nhé. Một số tính năng nổi bật của Humanizer

Continue reading Series C# hay ho: Giới thiệu Humanizer – Một thư viện khá thú vị của C#

[Tutorial] Hướng dẫn tích hợp Visual Studio với Github

Trước đây, để quản lý source code, ta thường sử dụng SVN, host toàn bộ source code trên google code. Trong vòng nhiều năm gần đây, Git đang trở thành 1 xu thế mới, thay thế dần cho SVN. Hầu như các thư viện javascript, css nổi tiếng hiện giờ đều đặt đại bản doanh trên github. Google Code sẽ đóng cửa vào năm sau, vì vậy hầu như các project mới bây giờ đều được host trên Github. Mình viết bài này nhằm hướng dẫn các bạn dùng Visual Studio có thể lấy code, submit code lên github dễ hàng với Visual Studio nhé.

Continue reading [Tutorial] Hướng dẫn tích hợp Visual Studio với Github

C# là ngôn ngữ tuyệt vời nhất. Java, PHP, C, C++, Ruby chỉ toàn là thứ rẻ tiền

Sau một khoảng thời gian dài lập trình, mình đã có thể tự mà phát biểu rằng: C# là ngôn ngữ lập trình tuyệt vời và đáng học nhất. Lý do ư, vô số kể:

  • Bản thân ngôn ngữ C# có vô số điều thú vị: static method, partial class, delegate, LINQ, lambda expression, … Cái ngôn ngữ cùi bắp như Java làm gì có partial class, delegate, đến Java 8 mới bắt chước được cái lambda expression còn gì.
  • C# là ngôn ngữ strong-typed: Các tham số, kết quả trả về của hàm đều là một object. Mọi lỗi do đánh nhầm tên trường, tên hàm, nhầm kiểu class đều được báo trong lúc viết code, không phải chờ đến lúc chạy mới báo như mấy cái ngôn ngữ PHP, python cùi chuối khác.
  • C# đi kèm với framework .NET, hỗ trợ nhiều thứ: Tạo ứng dụng Window với WinForm, WPF; Tạo website bằng WebForm, MVC.NET… Mấy cái ngôn ngữ cấp thấp như C, C++ tuổi gì làm được mấy cái đó.
  • C# có IDE Visual Studio cùng nhiều plug-in vô cùng mạnh mẽ. VS ra bản mới đều đặn như FIFA. Reshaper hỗ trợ refactor, tăng tốc độ code … Mấy đứa khác code PHP, Python dùng cái gì để code? Dĩ nhiên là mấy thứ rởm rởm như Notepad++ hoặc Sublime Text rồi, đến cái chức năng “Jump to Definition” còn không có.

Continue reading C# là ngôn ngữ tuyệt vời nhất. Java, PHP, C, C++, Ruby chỉ toàn là thứ rẻ tiền

[Tutorial] Trích xuất thông tin từ website với HTML Aglitity Pack

Đây là bài tutorial thứ 2 trên blog. Hiện nay, nhu cầu thu thập dữ liệu ngày càng tăng. Với một số trang như lớn như facebook, google, steam ta có thể sử dụng API do họ cung cấp để lấy dữ liệu. Trong nhiều trường hợp khác, ta thường trích xuất dự liệu bằng tay (Mở trang web lên, copy dữ liệu vào file word, excel v…v), việc này vừa cực, vừa mất nhiều thời gian và công sức

Đặt tình huống cụ thể, bạn muốn làm một ứng dụng đọc báo, lấy thông tin từ chuyên mục “Đọc báo giùm bạn” trên webtretho.com. Đây là một trang forum khá to, và dĩ nhiên là không có API để lấy dữ liệu. Ở đây, ta không thể lấy dữ liệu bằng tay được. Giải pháp duy nhất cho chuyện này là viết một phần mềm trích xuất dữ liệu từ bản thân trang webtretho.

Google-Crawling-Sitemaps1

Continue reading [Tutorial] Trích xuất thông tin từ website với HTML Aglitity Pack

Một số câu phỏng vấn thú vị về lập trình

Mấy hôm gần đây. tình cờ mình đọc được cuốn sách: Cracking the Coding Interview: 150 Programming Questions and Solutions. Đây là một cuốn sách khá hay; sách viết về những câu hỏi thường gặp trong các cuộc phỏng vấn, qui trình phỏng vấn của Yahoo, Google, Amazon, Facebook. Trong cuốn sách có rất nhiều câu hỏi về lập trình hay, mình chỉ chia sẽ một số câu mình cảm thấy đơn giản và thú vị. Bạn nào muốn tìm hiểu thêm hãy tự tìm ebook nhé.

Are-You-Up-For-The-Challenge

Continue reading Một số câu phỏng vấn thú vị về lập trình

Luận về comment code (Phong cách kiếm hiệp)

Comment code luôn là vấn đề gây tranh cãi sứt đầu mẻ trán trong giới võ lâm. Xưa kia, thuở còn mài đít trên ghê nhà trường, ta thường được các thầy dặn rằng: Code nhớ phải comment. Thuở mới đi làm, sơ nhập gian hồ, mỗi khi đọc code không hiểu, ta cũng hay đập bàn mà chửi: “Thằng này code ngu quá đ*o comment gì cả”.

Thế nhưng, lưu lạc giang hồ bao năm, đọc code cũng nhiều; từ code không comment cho tới code comment đầy đủ và sạch sẽ; ta vẫn băn khoăn không biết thật sự phải comment thế nào mới đúng. Thế rồi, sau khi đọc Clean Code, ta như lượm được bí tịch võ công trong truyền thuyết. Ta ngộ ra được cái gọi là “đạo code”, “đạo comment”, đặt 1 bước chân vào con đường võ đạo đỉnh cao (Đạo ở đây là đạo lý, ko phải đạo tặc trộm cướp nhé).

Capture

Continue reading Luận về comment code (Phong cách kiếm hiệp)

[Tutorial] Tạo ứng dụng chat với 50 dòng code, Firebase và AngularJS

Từ lúc viết blog tới giờ, mình chưa có bài nào hướng dẫn các bạn tạo ra một sản phẩm từ đầu tới cuối cả. Đến hôm nay nhìn lại, lương tâm cắn rứt nên mình sẽ hướng dẫn các bạn viết một thứ thật hoàng tráng. Nghĩ đi nghĩ lại, tính mình vốn lười, viết dài thì rất mất thời gian, do đó mình sẽ tìm cách code ít nhất, cho ra sản phẩm ảo nhất. Và đó là lý do bài viết này ra đời: Một ứng dụng chat chỉ với 50 dòng code.

Continue reading [Tutorial] Tạo ứng dụng chat với 50 dòng code, Firebase và AngularJS

Cách tiếp cận 1 ngôn ngữ/công nghệ mới – Phần 2

Nối tiếp phần 1, ở phần này mình sẽ nói rõ hơn về quá trình tiếp cận công nghệ của bản thân. Trước khi bắt đầu, mong các bạn hãy giữ 3 tư tưởng sau:

1. Học một ngôn ngữ/công nghệ mới không khó. Mình biết có nhiều bạn rất ngại, rất sợ học cái mới, hễ nghe nói cái gì là lạ là lắc đầu nguầy nguậy, bảo “không biết”.

Chúng ta nên có tư tưởng là “không phải không biết mà là chưa biết, chịu khó tìm hiểu một tí là biết thôi thôi”. Mình đã giải thích lý do chúng ta có thể tiếp cận công nghệ mới một cách dễ dàng ở bài viết này.

2. Để học được nhiều cái mới, bạn cần phải giỏi tiếng Anh, không ngại đọc (Không cần giỏi cả 4 kĩ năng, chỉ cần giỏi reading là được).

Ngoại trừ một số ngôn ngữ cũ như C, C++ được nhiều dạy ở nhiều trường , có tài liệu tiếng Việt, các công nghệ mới như NodeJS, AngularJS, Entity Framework thường chỉ có tài liệu hoặc hướng dẫn tiếng Anh.

Nếu chỉ chăm chăm tìm tài liệu tiếng Việt, chỉ biết há miệng chờ hàng người ta dịch sẵn, bạn sẽ đi sau thời đại. Ngoài ra, với vốn tiếng Anh kha khá, khi có bug hoặc gặp vấn đề khó giải quyết, bạn sẽ dễ google và tìm câu trả lời hơn.

3. Hạn chế hỏi linh tinh, hãy google trước khi hỏi.

Mình rất đồng tình với quan điểm “không biết phải hỏi, không giấu dốt”. Tuy nhiên, dân lập trình viên nói chung rất ghét những câu  hỏi ngu, lười suy nghĩ. Trước khi hỏi, hãy thử tìm google trước.

Có khi bạn hỏi chỉ mất 1 phút là có câu trả lời, google để tìm câu trả lời mất tới 1 tiếng. Nhưng trong 1 tiếng đó, bạn sẽ học được rất nhiều điều liên quan khác, cả những điều bạn không biết mình cần phải hỏi.

Continue reading Cách tiếp cận 1 ngôn ngữ/công nghệ mới – Phần 2

Cách tiếp cận 1 ngôn ngữ/công nghệ mới – Phần 1

Mình đã từng nói về tầm quan trọng của việc cập nhật kiến thứcbài viết trước:

Không như các ngành khác, kiến thức trong ngành IT rất nhanh hết hạn.

  • Với ngành xây dựng, xây một cây cầu cách đây 50 năm cũng chẳng khác gì xây một cây cầu bây giờ.
  • Với ngành y, bệnh cảm cúm cách đây 50 năm triệu chứng cũng giống bệnh cảm cúm bây giờ.
  • Nhưng với ngành IT, công nghệ, ngôn ngữ hoặc framework  nổi tiếng cách năm 10-15 năm giờ chẳng ai xài nữa cả.

Như đã hứa, mình sẽ dành bài viết này để hướng dẫn các bạn cách tiếp cận một công nghệ mới. Đây là những cách mà mình tự tìm ra, tự tổng hợp trên mạng, cộng với một số lời khuyên của các bậc đàn anh.

Bản thân mình thấy nó khá là hữu dụng, hi vọng chúng cũng sẽ hữu dụng với các bạn.

Continue reading Cách tiếp cận 1 ngôn ngữ/công nghệ mới – Phần 1

Series C# hay ho: So sánh 2 object trong C# (Deep compare)

Lâu rồi không viết bài về technical nên phải viết 1 bài cho thiên hạ biết mình vẫn code :D. Ở bài viết này, mình sẽ nói về một chuyện khá đơn giản trong C#: So sánh 2 object. Đây là một vấn đề ai cũng tưởng là dễ, mình sẽ nâng dần vấn đề lên từ đơn giản đến phức tạp. Cách giải quyết cũng sẽ từ đơn giản trở nên phức tạp, sau đó sẽ trở lại đơn giản. Nếu chịu khó đọc bài viết này từ đầu đến cuối, các bạn sẽ ngộ ra nhiều điều, khả năng technical cũng sẽ tăng kha khá đấy.

Are-You-Up-For-The-Challenge

Continue reading Series C# hay ho: So sánh 2 object trong C# (Deep compare)