Áp dụng LINQ trong javascript, chuyện nhiều người chưa biết

Như mình đã nói trong loạt bài: Học ngôn ngữ lập trình nào bây giờ?, hiện tại Javascript đang trở thành 1 trào lưu mới. Gần đây, do đang tự học Node.js nên mình tập trung nghiên cứu javascript nhiều hơn. Vì vậy, trong khoảng thời gian này mình sẽ đăng nhiều bài viết liên quan đến javascript hơn, mong các bạn theo dõi.

Như ở bài viết về LINQ, các bạn đã thấy sự mạnh mẽ và tiện dụng của LINQ trong C# (Java 8 chỉ mới cập nhật Stream API, mà vẫn còn thua LINQ nhiều lắm…). Để sử dụng 1 số hàm tương-tự-LINQ trong javascript, người ta thường dùng 1 số thư viện như: underscore, lodash, … Trong bài viết này, mình sẽ giới thiệu 1 số function (ít người biết) sẵn có trong prototype Array của javascript, cũng có tác dụng tương tự như LINQ.

advanced-javascript-3-638

Continue reading Áp dụng LINQ trong javascript, chuyện nhiều người chưa biết

Review sách: Clean Code: A Handbook of Agile Software Craftsmanship

Hôm nay bỗng dưng không có hứng viết bài về technical, thôi thì lôi đại cuốn này ra review vây. Mình đọc cuốn này trong thời gian còn làm việc ở FPT Software (Làm việc lúc nào cũng dư thời gian nên toàn lôi ebook ra đọc. Cuốn sách này xứng đáng là sách gối đầu giường của mọi developer. Mình khuyên các bạn nên mua bản gốc, 1 là để đọc, 2 là nếu gặp thằng nào code ngu, có thể cầm cuốn này đập vào đầu nó và bắt nó đọc. Continue reading Review sách: Clean Code: A Handbook of Agile Software Craftsmanship

Viết unit test cho javascript với Jasmine – Phần 2

Tiếp nối phần 1, ở phần này mình sẽ giới thiệu một số chức năng nâng cao của Jasmine, giúp việc viết unit test được dễ dàng hơn.

Nếu chưa tải Jasmine về máy, các bạn nên đọc lại phần 1 để biết chỗ tải về và cách viết 1 số test case cơ bản. Nội dung bài viết lần này bao gồm:

  1. Một số matcher của Jasmine
  2. Cách dùng các hàm before, after
  3. Sử dụng spy và mock

Continue reading Viết unit test cho javascript với Jasmine – Phần 2

Viết unit test cho javascript với Jasmine

Blog có khá nhiều bài về code rồi nên hôm nay mình sẽ viết một bài để đổi gió.

1. Nhắc lại sơ về Unit Test

Trước khi có unit test, các lập trình viên thường code theo kiểu: code – test – fix lại – code tiếp – test lại – fix tiếp. Đôi khi chỉ vì sửa 1 lỗi nho nhỏ mà ta phải test lại rất nhiều lần. Để giải quyết vấn đề này, unit test và automation test ra đời. Mình không phải QA chuyên nghiệp nên không dám múa rìu qua mắt thợ, chỉ nói sơ về định nghĩa của 2 loại test này:

  • Unit test: Đây là test do developer viết, được chạy để kiểm tra các hàm do developer viết ra có sai hay ko. Unit test thường được chạy mỗi khi build để đảm bảo các hàm đều chạy đúng sau khi ta sửa code.
  • Automation test: Đây là test do QA viết, được chạy để kiểm thử hệ thống (Nếu không có automation test thì QA kiểm thử bằng tay, gọi làm manual test).

you-need-some-tests-yo

Continue reading Viết unit test cho javascript với Jasmine

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?