Cột mốc 1000 rep trên stackoverflow – Khoe khoang thành quả và chia sẻ kinh nghiệm

LƯU Ý: ĐÂY LÀ MỘT BÀI VIẾT KHÔNG MANG TÍNH CHẤT TECHNICAL, CHỈ BAO GỒM VÀI LỜI KHOE KHOANG VÀ CHIA SẺ. NẾU CÁC BẠN MUỐN BỔ SUNG KIẾN THỨC, CÓ THỂ BỎ QUA BÀI NÀY VÀ CHỌN ĐỌC MỘT SỐ BÀI VIẾT BỔ ÍCH KHÁC NHƯ: Linq, Mock Data, Mẹo vặt Visual Studio, C# hay ho, … NHÉ.

Phần 1 – Khoe khoang

Đầu tiên, xin khoe cái biểu tượng trên stackoverflow của mình, nó là cái mà stackoverflow gọi là flair. Các bạn nhìn kĩ nhé, là 1200 REP đó (Sau này có thể sẽ tăng thêm).

profile for Huy Hoang Pham at Stack Overflow, Q&A for professional and enthusiast programmersBên trái là avatar của mình (Khá đẹp trai, các bạn không cần khen …). Bên phải là nick stackoverflow, cùng với số rep kiếm được, phía dưới là đống huy hiệu (Tương tự achievement trong game ấy mà).

Continue reading Cột mốc 1000 rep trên stackoverflow – Khoe khoang thành quả và chia sẻ kinh nghiệm

Series C# hay ho: LINQ – Lột mặt nạ sự “bá đạo” của LINQ

1. LINQ có thực sự dễ như ta tưởng?

LINQ không phải là 1 khái niệm xa lạ đối với các C#.NET developer, nhất là những bạn hay làm việc với database (LINQ to SQL). Tuy nhiên, đa phần trong chúng ta đều sử dụng LINQ mà không biết rõ nó hoạt động như thế nào. Chắc ai cũng từng viết những dòng code như sau:

 public class Student
 {
    public string Name { get; set; }
    public int Age { get; set; }
 }
var students = new List<Student>();
var result = students.Where(stu => stu.Age < 20);

Dòng code rất dễ hiểu, lọc ra những học sinh có số tuổi < 20. Tuy nhiên, liệu bạn có trả lời được những câu hỏi sau:

  1. Dấu “=>” là dấu gì. Toàn bộ cụm “stu => stu.Age < 20” được gọi là gì?
  2. Hàm Where được viết như thế nào, nhận parameter gì vào, trả ra giá trị gì?
  3. Tại sao IDE tại biết stu là 1 Student để có thể nhắc lệnh?
  4. Có thể viết 1 thứ tương tự như LINQ trong javascript không?

Nếu bạn chỉ trả lời đc 1,2 hoặc không trả lời đc câu hỏi nào, bạn chưa thực sự hiểu LINQ. Đừng lo, ngày xưa mình cũng thế. Bài viết này sẽ giúp bạn giải đáp những câu hỏi trên, cũng như hiểu rõ hơn về LINQ. (Đáp án ở cuối bài viết).
Continue reading Series C# hay ho: LINQ – Lột mặt nạ sự “bá đạo” của LINQ

SOLID là gì – Áp dụng các nguyên lý SOLID để trở thành lập trình viên code “cứng”

Trong quá trình học, hầu như các bạn sinh viên đều được học một số khái niệm OOP cơ bản như sau:

  • Abstraction (Tính trừu tượng)
  • Encapsulation (Tính bao đóng)
  • Inheritance (Tính kế thừa)
  • Polymophirsm (Tính đa hình)

Những khái niệm này đã được dạy khá rõ ràng, và hầu như những buổi phỏng vấn nào cũng có những câu hỏi liên quan đến khái niệm này. Vì 4 khái niệm này khá cơ bản, bạn nào chưa vũng có thể google để tìm hiểu thêm.

Những nguyên lý mình giới thiệu hôm nay là những nguyên lý thiết kế trong OOP. Đây là những nguyên lý được đúc kết bởi máu xương vô số developer, rút ra từ hàng ngàn dự án thành công và thất bại. Một project áp dụng những nguyên lý này sẽ có code dễ đọc, dễ test, rõ ràng hơn. Và việc quan trọng nhất là việc maintainace code sẽ dễ hơn rất nhiều (Ai có kinh nghiệm trong ngành IT đều biết thời gian code chỉ chiếm 20-40%, còn lại là thời gian để maintainance: thêm bớt chức năng và sửa lỗi).  Nắm vững những nguyên lý này, đồng thời áp dụng chúng trong việc thiết kế + viết code sẽ giúp bạn tiến thêm 1 bước trên con đường thành senior nhé (1 ông senior bên FPT Software từng bảo mình thế).

Continue reading SOLID là gì – Áp dụng các nguyên lý SOLID để trở thành lập trình viên code “cứng”

Tạo dummy data với Faker và Mockaroo – Xa rồi những ngày nhập tay nhàm chán

Cuộc đời một thằng developer có rất nhiều việc rất chán nhưng phải làm: fix bug, viết report, nhập timesheet, viết code test … Một trong những việc đáng chán đó là: Tạo data giả để hiển thị và test. Để làm việc này, chúng ta thường tạo object giả (bằng code), hoặc đánh data giả vào SQL. Hầu như 90% developer và tester đều ghét cái việc vừa nhảm nhí vừa đáng chán này, do dó ta thấy dữ liệu trong data giả thường là: test1,test2, testemail@mail.com….

Cũng phải nói thêm, ngoài nhàm chán, công việc này còn khá mất thời gian. Hãy tưởng tượng ta có 5 bảng, mỗi bảng 10 cột, mỗi cột cần điền 10-20 dòng data giả, mấy thời gian quá phải không nào? Giờ đây, với Faker và Mockaroo, ta có thể tạo data giả theo phong cách developer, nhanh gọn, thú vị và không tốn thời gian.

Continue reading Tạo dummy data với Faker và Mockaroo – Xa rồi những ngày nhập tay nhàm chán

Review sách: The Passionate Programmer – Những điều giúp developer phát triển sự nghiệp

Sau một loạt những bài viết về technical khô khan, hôm nay mình sẽ đổi gió bằng 1 bài review sách. Đây là một cuốn sách nói về những điều developer cần làm để phát triển bản thân và sự nghiệp, đúng với tôn chỉ của blog mình (Lập trình viên cần biết nhiều điều hơn ngoài code). Bài này mình dùng giọng văn nhẹ nhàng hài hước nhé, con người thật của mình ngoài đời cũng nhẹ nhàng hài hước như vậy =)).

Continue reading Review sách: The Passionate Programmer – Những điều giúp developer phát triển sự nghiệp

Mẹo vặt trong Visual Studio – Liệu bạn đã biết rõ IDE của mình chưa?

Trong máy lập trình viên nào cũng có 2 thứ quan trọng: 1 là trình duyệt web để đọc webtretho và đọc vozforum (Nhầm, để google khi bí và stackoverflow), 2 là cái IDE để bật lên mỗi khi thấy manager hoặc team leader đi ngang qua (Nhầm, để code). Continue reading Mẹo vặt trong Visual Studio – Liệu bạn đã biết rõ IDE của mình chưa?

Series C# hay ho: IEnumerable và yield, tưởng đơn giản mà lắm thứ phải bàn

Khái niệm IEnumerable thì chắc cũng có kha khá người biết, khi ta muốn duyệt tất cả các phần tử trong 1 danh sách, ta thường dùng hàm foreach như sau.

foreach(Student student in students) {}

Các kiểu Collection trong C# như List, ArrayList, Dictionary v…v đều implement interface IEnumerable, do đó ta có thể sử dụng foreach để duyệt.

Continue reading Series C# hay ho: IEnumerable và yield, tưởng đơn giản mà lắm thứ phải bàn

Series C# hay ho: Generic là cái thứ chi chi

Generic là một vị anh hùng thầm lặng trong C#.NET (Dân gian còn gọi là anh hùng núp). Generic 1 trong “5 anh em siêu nhân” cấu thành LINQ (4 người còn lại là: Extension method, Delegate, Lambda Expression và yield). Anh núp trong 50% những dòng code chúng ta viết, đến nỗi chúng ta dùng 1 cách vô thức, không biết đến sự tồn tại hay tên gọi của anh.

pr-2

Mình viết bài này nhằm vinh danh “anh hùng thầm lặng” Generic, cũng như hướng dẫn các bạn cách tạo, sử dụng generic class và generic method.
Continue reading Series C# hay ho: Generic là cái thứ chi chi