Category: Phát triển phần mềm

  • VÀI ĐIỀU VỀ OOP DESIGNING

    Ở trong bài OOP – chủ đề huyền thoại trong các cuộc phỏng vấn tuyển dụng tôi có nhắc đến OOP designing, trong bài này tôi sẽ nói kỹ hơn về nó.

    Hầu hết chúng ta khi nhắc đến OOP đều chỉ nhớ là nó có 3 (hoặc 4) thuộc tính: đóng gói, thừa kế, đa hình và trừu tượng. Thực chất đó chỉ là những công cụ và nguyên liệu, cái quan trọng nhất vẫn là từ những công cụ và nguyên liệu này, bạn sẽ xây nên ngôi nhà như thế nào. Đó cũng là sự khác nhau giữa ông thợ xây và kiến trúc sư, giữa coder và designer. Muốn lên một trình cao hơn, ta cần biết cách sử dụng chúng một cách đúng đắn, và người xưa đã đúc kết ra một số quy tắc. Ta hãy cùng xem qua những nguyên tắc (nếu là một bậc thầy marketing thì sẽ thêm từ “bí mật” 🤮) nhé:

    👉 Danh từ tạo nên lớp và thuộc tính, động từ tạo nên phương thức: Có lẽ nhiều người sẽ ngạc nhiên về điều này, nhưng thực ra, viết mô tả các chức năng hệ thống luôn phải là công việc đầu tiên khi thiết kế.

    Hãy xem câu sau: “Người dùng nhập họ tên và email để đăng ký, hệ thống sẽ kiểm tra xem Email đã có trong hệ thống hay chưa, nếu có rồi sẽ hiển thị thông báo lỗi, nếu chưa có sẽ lưu vào cơ sở dữ liệu và gửi email chúc mừng đến người dùng vừa đăng ký.”

    Trong đoạn văn trên, ta dễ dàng nhận ra một số danh từ: Người dùng, họ tên, email, hệ thống, cơ sở dữ liệu… và một số động từ: đăng ký, kiểm tra (email), hiển thị (thông báo lỗi), lưu (vào CSDL), gửi (email chúc mừng)…

    Các danh từ có giá trị đơn (họ tên, email…) sẽ là thuộc tính (property), các danh từ chứa các thuộc tính sẽ là class.Đây là một quy tắc chung, giúp bạn không sai hướng khi phải làm việc với vô số thông tin đầu vào, và bạn có thể bám sát được đề bài. Sau bước này bạn sẽ có một danh sách thô, bạn sẽ phải tinh chỉnh, xem xét cái nào thừa, cái nào thiếu, nhóm chung các lớp cùng chức năng vào chung module… Ở bước này đòi hỏi kỹ năng và kinh nghiệm cửa người thiết kế khá nhiều, và không có cách nào khác là bạn phải thực hành, và tham khảo các dự án nguồn mở.

    (more…)
  • BẠN BIẾT GÌ VỀ INDEX?

    Index là một thành phần không thể thiếu khi tối ưu việc truy vấn cơ sở dữ liệu, hiểu rõ về nó là yêu cầu bắt buộc với người thiết kế, và cả người lập trình ứng dụng cơ sở dữ liệu.

    ❗️Trong bài viết này mình sẽ nói chi tiết về cách thức lưu trữ, vận hành cũng như các yếu tố ảnh hưởng đến Index, nếu bạn chưa biết gì về Index thì đây không phải là bài viết dành cho bạn. Nội dung tập trung vào CSDL Mysql, tuy nhiên các kiến thức này đều có thể áp dụng vào các cơ sở dữ liệu khác như MSSQL hay Oracle, vì hầu hết chúng lưu trữ và vận hành giống nhau, ngoại trừ một số dạng dữ liệu đặc biệt.

    (more…)
  • BỘ NHỚ STACK LÀ GÌ? TẠI SAO LẠI CÓ LỖI STACK OVERFLOW?

    Hiểu về Stack để tránh Stack Overflow!Các bạn mới lập trình chắc hay thấy lỗi này, đặc biệt là khi học đến phần đệ quy, vậy bản chất của nó là gì?

    ☠️☠️☠️ Lưu ý: bài này chỉ dành cho ai muốn hiểu sâu về kỹ thuật – không chỉ định với người thích ăn xổi ☠️☠️☠️

    Mỗi chương trình khi được tải vào máy tính để thực thi sẽ được cung cấp một phần bộ nhớ, phần bộ nhớ này sẽ được chia ra làm nhiều loại, với mục đích khác nhau. Một phần sẽ được dùng để chứa mã lệnh, thường thì phần này sẽ chỉ để đọc và chạy các lệnh chứa trong đó, một phần khác lại được dùng để chứa dữ liệu, bạn có thể đọc và ghi thoải mái, nhưng phải xin cấp phát trước khi dùng (malloc, new…) để tránh ghi đè lên dữ liệu của ứng dụng khác (ta hay gọi là bộ nhớ Heap).

    Đọc thêm bài con trỏ để hiểu hơn về bộ nhớ máy tính: https://www.facebook.com/namdotnet/posts/1283909971794016

    🧨 Còn một phần đặc biệt nữa gọi là bộ nhớ Stack 🧨

    (more…)
  • CÂU CHUYỆN VỀ CON TRỎ (POINTER)

    Con trỏ là một khái niệm sử dụng rất nhiều khi học về cấu trúc dữ liệu và giải thuật, phần cây hoặc danh sách liên kết. Ở đây mình sẽ nói sâu vào khái niệm này.(lưu ý đây là bài viết sâu về kỹ thuật nên nếu không hiểu thì hỏi chứ không được phàn nàn sao nó quá khó hiểu nhé 😐)

    (more…)
  • OOP – chủ đề huyền thoại trong các cuộc phỏng vấn tuyển dụng

    Có lẽ các bạn đã từng tham gia phỏng vấn không lạ gì câu hỏi: “Bạn có thể trình bày về lập trình hướng đối tượng được không?”, tại sao nó lại trở thành một chủ đề được quan tâm như vậy? Hãy cùng xem qua những lý do sau nhé.

    1. OOP là một cách tư duy: bạn có nhớ lần đầu tiên học về OOP không? Bạn sẽ ngạc nhiên vì sao người ta có thể nghĩ ra những ý tưởng hay đến như vậy, hay đến mức mình làm hoài vẫn không đúng, thậm chí có thể vài năm sau mới nhận ra trước giờ mình toàn làm sai. Cách suy nghĩ của nó khác hoàn toàn với phương pháp lập trình tuyến tính trước đó, và nhờ vậy giúp xây dựng các ứng dụng lớn dễ dàng hơn rất nhiều. Chẳng phải tự nhiên mà hầu hết các nền tảng và ngôn ngữ lập trình hiện tại đều dựa trên, hoặc chí ít là hỗ trợ OOP.

    (more…)
  • Thêm Model

    Trong phần này bạn sẽ thêm các lớp để quản lý phim ảnh chứa trong CSDL. Các lớp đó sẽ là phần “model” của ứng dụng ASP.NET MVC.

    Bạn sẽ dùng một công nghệ truy cập cơ sở dữ liệu trong .NET Framework được biết đến như Entity Framework để định nghĩa và làm việc với các lớp mô mình này. Entity Framework (hay được gọi ngắn gọn là EF) hỗ trợ một phương thức phát triển được gọi là Code First. Code First cho phép bạn tạo các đối tượng dữ liệu bằng cách viết các lớp đơn giản. (Các lớp này được biết như các lớp POCO, viết tắt từ “plain-old CLR objects”). Bạn có thể tạo luôn CSDL ngay lúc chạy, cho phép bạn phát triển ứng dụng nhanh chóng và sáng sủa.

    (more…)

  • ASP.NET MVC 5: Thêm View

    Trong phần này chúng ta sẽ sửa lại lớp HelloWorldController class để dùng các file template cho view nhằm giúp việc tạo phản hồi dạng HTML về cho trình duyệt dễ dàng hơn.

    Bạn sẽ tạo một file template sử dụng Razor view engine. Các file view dựa trên Razorcó phần mở rộng .cshtml, và cung cấp một các rõ ràng để tạo ra nội dung HTML sử dụng C#. Razor tối thiểu hóa số ký tự và số lần gõ phím để viết một template, và cho phép việc code nhanh chóng và trôi chảy hơn.

    Hiện tại phương thức Index trả về một chuỗi với một thông điệp được hard-coded trong lớp controller. Sửa lại phương thức Index để trả về một đối tượng View, như hình dưới đây:

    public ActionResult Index() 
    { 
        return View(); 
    }

    Phương thức Index ở trên dùng một view template để tạo ra nội dung HTML trả về trình duyệt. Các phương thức của controller (còn gọi là các phương thức action – action method), kiểu như Index ở trên, thông thường sẽ trả về một đối tượng ActionResult, hoặc một lớp thừa kế từ ActionResult, chứ không phải một kiểu nguyên thủy như string.

    (more…)

  • ASP.NET MVC 5: Thêm Controller

    MVC được viết tắt từ model-view-controller.  MVC là một mẫu thiết kế cho việc phát triển các ứng dụng có kiến trúc tốt, dễ kiểm lỗi và dễ bảo trì. Một ứng dụng MVC chứa các thành phần sau:

    • Models: Là các lớp dùng để biểu diễn dữ liệu và có thể có các phép kiểm tra để đảm bảo dữ liệu chứa trong nó phù hợp với logic của ứng dụng.
    • Views: Các file template dùng để tạo ra nội dung HTML.
    • Controllers: Các lớp xử lý các yêu cầu từ trình duyệt, lấy về các Model, và chọn View tương ứng để trả về cho trình duyệt.

    Chúng ta sẽ cùng khám phá các khái niệm này trong loạt bài này và tôi sẽ cho bạn thấy các dùng chúng để xây dựng một ứng dụng.

    (more…)

  • Bắt đầu với ASP.NET MVC 5

    Loạt bài này sẽ hướng dẫn bạn các bước cơ bản để tạo một ứng dụng ASP.NET MVC 5 sử dụng Visual Studio 2013 Preview. Một ứng dụng Visual Web Developer với mã nguồn C# cũng có sẵn để tải về, bạn có thể download tại đây.

    Trong loạt bài này bạn sẽ chạy ứng dụng với Visual Studio. Bạn cũng có thể đưa ứng dụng lên Internet nếu triển khai nó đến một nhà cung cấp dịch vụ hosting. Microsoft cũng có cung cấp dịch vụ hosting miễn phí cho 10 web site nếu bạn có một tài khoản Windows Azure dùng thử miễn phí. Loạt bài này được viết bởi Scott Guthrie (twitter @scottgu ), Scott Hanselman  (twitter: @shanselman ), và Rick Anderson.

    Bắt đầu

    Trước tiên bạn sẽ cần cài đặt Visual Studio Express 2013 Preview for Web hoặc Visual Studio 2013 Preview.

    Visual Studio là một trình IDE (trình tích hợp soạn thảo và các công cụ phát triển), cũng giống như bạn dùng Word để viết tài liệu, bạn sẽ dùng một IDE để viết ứng dụng. Trong Visual Studio, có một thanh công cụ dọc phía trên hiển thị một số tùy chọn cho bạn. Ngoài ra còn có một thanh menu cung cấp một cách khác để thực hiện các nhiệm vụ trong IDE (Ví dụ, thay vì chọn New Project từ trang Start, bạn cũng có thể dùng menu và chọ File>NewProject).

    (more…)

  • Windows 8 Secrets: WinRT, the Windows Runtime

    Tuần trước tôi đã có một buổi nói chuyện trước một nhóm người dùng tại khu vực Boston, đây là lần thứ tư kể từ khi bản Windows 8 Developer Preview được phát hành. Không phải tình cờ mà đây là lần thứ tư liên tiếp tôi nói riêng về Windows 8: Mọi người đang bị cuốn hút – và sợ hãi bởi – hệ điều hành tiếp theo của Microsoft theo cách mà họ chưa từng thấy kể từ bản Longhorn (thế hệ Windows Vista và Windows Server 2008), hoặc thậm chí là kể từ Windows 95. Nó là một số thứ thậm chí tôi phải giữ kín trong đầu vì tôi vẫn còn một vài nghi ngờ, mà hầu hết là do Microsoft giữ kín các kế hoạch của họ.