Thứ Tư, 23 tháng 9, 2015

Để làm việc hiệu quả hơn

Hãy làm việc một cách thông minh Hồi tôi 17 tuổi, tôi học và làm việc ít nhất 20 tiếng một ngày. Tôi đến trường, làm bài tập giữa giờ nghỉ và quản lý một tổ chức phi lợi nhuận vào buổi tối. Lúc đó, sự chăm chỉ của tôi đã đưa đến cho tôi vô vàn cơ hội làm việc với các tổ chức hạng nhất và một sự nghiệp thành công. Nhưng thời gian trôi đi, và tôi nhận ra rằng, làm việc nhiều hơn nữa không phải là cách duy nhất đến thành công. Nhiều khi, làm việc ít hơn lại có kết quả tốt hơn. Bạn hãy tưởng tượng một doanh nghiệp nhỏ, làm việc không ngừng nghỉ. Tuy nhiên, anh ấy sẽ không thể cạch tranh với các công ty quy mô hàng tỷ đô. Thời gian rất hạn chế. Mỗi doanh nhân chỉ có 24 giờ một ngày...
Read More »

ActionResult Subtypes

ActionResult is an abstract class that can have several subtypes. ViewResult - Renders a specifed view to the response stream PartialViewResult - Renders a specifed partial view to the response stream EmptyResult - An empty response is returned RedirectResult - Performs an HTTP redirection to a specifed URL RedirectToRouteResult - Performs an HTTP redirection to a URL that is determined by the routing engine, based on given route data JsonResult - Serializes a given ViewData object to JSON format JavaScriptResult - Returns a piece of JavaScript code that can be executed on the client ContentResult - Writes content to the response stream without requiring a view FileContentResult - Returns a file to the client FileStreamResult -...
Read More »

Thứ Bảy, 19 tháng 9, 2015

Cách xem chi tiết của exception trong C# (vd với EntityValidationErrors)

Giả dụ bạn chạy chương trình và bắt được một exception: "Validation failed for one or more entities. See 'EntityValidationErrors' property for more details". Exception đưa ra thông báo lỗi rất chung chung và không xác định được chính xác lỗi là do đâu ngay cả khi bạn đã view detail của exception.  Hãy làm theo cách sau: - Nhấn tổ hợp phím Shift + F9 để hiện màn hình QuickWatch  - Copy đoạn code sau và paste vào ô text Expression: ((System.Data.Entity.Validation.DbEntityValidationException)$exception).EntityValidationErrors $exception sẽ hiển thị bất cứ exception nào được ném ra trong đoạn mã hiện tại đang chạy, ngay cả khi nó không bị bắt và gán cho một biến n...
Read More »

Thứ Bảy, 5 tháng 9, 2015

Singleton pattern

Trong thực tế, có rất nhiều đối tượng chúng ta chỉ cần duy nhất một thể hiện của chúng như: thread pools, caches, ghi log...Nếu có quá nhiều đối tượng này, có thể sẽ là nguyên nhân gây ra lỗi trong ứng dụng của chúng ta. Hãy tưởng tượng Singleton pattern giống như tờ bookmark khi đọc sách. Tờ bookmark có thể đặt ở bất cứ đâu trong quyển sách và mỗi quyển sách chỉ nên có 1 bookmark. Nếu chúng ta có nhiều hơn 1 bookmark thì sẽ có khả năng gây nhầm lẫn cho chúng ta khi chúng ta ko biết được chúng ta đang đọc đến đoạn nào của cuốn sách.  Singleton pattern đảm bảo chỉ một và duy nhất một đối tượng được khởi tạo. Singleton pattern cho ta cách truy vấn toàn cục giống như biến toàn cục (mà không có những điểm bất lợi giống biến toàn cục). Nếu dùng biến toàn cục thì bạn...
Read More »

Thứ Sáu, 4 tháng 9, 2015

C# 2 – Cơ chế yielding và ‘yield’ keyword trong Iteration

“yield” – Một từ khóa có vẻ lạ lẫm với bạn nhưng đã được ứng dụng từ lâu trong lĩnh vực lập trình và trong khá nhiều ngôn ngữ. Từ khóa này gắn liền với các kĩ thuật như Generator, Coroutine và các đối tượngiterator. Ta sẽ khám phá cơ chế và cách sử dụng của từ khóa này như thế nào. Giới thiệu Theo MSDN: The yield keyword signals to the compiler that the method in which it appears is an iterator block. The compiler generates a class to implement the behavior that is expressed in the iterator block. In the iterator block, the yield keyword is used together with the return keyword to provide a value to the enumerator object. This is the value that...
Read More »