



Bài viết được sự cho phép của tác giả Kiên Nguyễn Trong quá trình thiết kế hệ thống, có rất nhiều khái niệm cần hiểu rõ để tránh việc hiểu sai yêu cầu của khách hàng, một trong những khái niệm quan trọng là Quality Attributes. Khái niệm này thường bị nhầm lẫn bởi một số bạn có điều kiện lắng nghe trực tiếp requirement từ khách hàng. Bài viết này mình xin chia sẻ thêm về Quality Attributes và một số ví dụ cụ thể. [irp posts="33039" name="Bài toán đồng thuận trong Distributed Systems"] [irp posts="32660" name="Giải mã bí ẩn system load" trên Linux"] Xem thêm tuyển dụng Product Manager trên TopDev 1. Quality Attributes Motivation Đối với System Design thì nỗi sợ lớn nhất là không adapt được với functional requirements. Nhưng không phải tất cả yếu tố giúp thiết kế hệ thống đều xoay quanh functional requirements. System are frequently redesigned NOT because of the functional requirement Qua trình thay đổi thiết kế của hệ thống đôi khi khô [...]
Read more →
Bài viết được sự cho phép của tác giả Trần Hữu Cương I.Giới thiệu View Controller là một đối tượng trong mô hình MVC (Model View Controller). View Controller là một liên kết quan trọng giữa giao diện và dữ liệu. Một trong những vai trò quan trọng của View Controller là quản lý các View hiển thị nội dung. Các View Controller đều có thể giao tiếp và kết hợp với các View Controller khác. View controller cung cấp nhiều hành vi (behaviour) phổ biến cho tất cả các ứng dụng iOS. Thông thường, những hành vi này được xây dựng vào các lớp cơ sở (base class). [irp posts="2391" name="3 sai lầm các iOS Developers thường mắc phải"] [irp posts="6823" name="Build một ứng dụng Chat cho Android & iOS bằng Contus Fly như thế nào?"] Xem thêm tuyển dụng iOS lương cao trên TopDev II.Các loại View Controller View Controller gồm 2 loại là Content View Controller và Container View Controller. Content view controller thể hiện nội dung trên màn hình [...]
Read more →
Bài viết được sự cho phép của tác giả Kien Dang Chung Video trong bài viết Trong bài trước chúng ta đã sơ lược về mô hình MVC, bạn cũng đã được làm quen với Route và View. Trong bài hôm nay, bạn hãy cùng tôi tìm hiểu về Controller, vậy Laravel Controller có phải là Controller trong mô hình MVC, nó được sử dụng cho mục đích gì?. Laravel Controller Chúng ta cùng xem định nghĩa Laravel Controller trên tài liệu chính thức của Laravel: Thay vì định nghĩa tất cả các đoạn xử lý logic nghiệp cho yêu cầu trong các file route dưới dạng Closure, chúng ta sẽ tổ chức nó vào các class Controller. Controller giúp nhóm các logic nghiệp vụ cho yêu cầu liên quan vào trong một class. Controller được lưu trong thư mục app/Http/Controllers. Như vậy chúng ta có thể thấy Laravel Controller mang dáng dấp của Controller trong MVC, tuy nhiên nó được phân lớp nhiều hơn, giúp xây dựng ứng dụng tốt [...]
Read more →
MVC được hình thành bởi các nghiên cứu của Trygve Reenskaug vào khoảng các năm 1978-1979. Sau đó nó được điều chỉnh và được cài đặt lần đầu tiên vào các lớp của thư viện Xerox PARC Smalltalk-80. Mô hình MVC cổ điển hiện tại ít được sử dụng trong môi trường lập trình desktop như trước đây nhưng hiện tại nó vẫn được sử dụng cực kì rộng rãi như là kiến trúc cơ bản trong các môi trường lập trình web. Tổng quan mô hình MVC [caption id="attachment_62677" align="aligncenter" width="2277"] Tổng quan mô hình MVC[/caption] MVC là gì? Mô hình MVC - Model-View-Controller là phương pháp chia nhỏ các các thành phần dữ liệu (data), trình bày (output) và dữ liệu nhập từ người dùng (input) thành những thành phần riêng biệt. MVC hoạt động như thế nào? Thông thường, chúng ta biết rằng mô hình MVC gồm 3 thành phần: Model, View và Controller View – Nơi người dùng tương tá [...]
Read more →
Bài viết được sự cho phép của tác giả Edward Thien Hoang Trong các nền tảng lập trình hiện đại như .NET, khi mà các công cụ và kĩ thuật hỗ trợ lập trình giao diện người dùng (UI) ngày càng trở nên mạnh mẽ và tiện dụng thì chúng ta thường có xu hướng đưa nhiều xử lý bên ngoài vào các lớp UI. Kết quả là các thành phần UI này chứa nhiều xử lý logic và dữ liệu mà lẽ ra nên tách rời thành những thành phần riêng. Việc tách rời xử lý và trình bày vì những lí do sau: Trong một hệ thống, UI là thành phần có nhiều khả năng thay đổi nhất nên việc tách rời các thành phần UI giúp có thể thay đổi các thành phần UI này một cách độc lập mà không ảnh hưởng đến các thành phần xử lý khác. Đặc biệt việc tách rời các thành [...]
Read more →
Bài viết được sự cho phép của tác giả Tino Phạm Cho tới thời điểm này cú pháp Controller As được nhiều người khuyến khích sử dụng. Tại sao vậy? có gì lợi hại hơn khi dùng Controller As? [irp posts="39474" name="Inversion of Control nguyên lý của các nguyên lý"] [irp posts="35001" name="Inversion of Control và Dependency Injection"] Trước hết hãy xem 2 ví dụ sau đây, một cái dùng Controller và một dùng Controller As Ví dụ 1 – dùng $Scope bình thường Ví dụ 2 – dùng Controller as Với cách dùng Controller as chúng ta thấy code dễ hiểu hơn. Đó là cái thứ nhất. Khi bạn dùng cú pháp controller as thì Angular controller sẽ tạo ra một đối tượng và gán đối tượng này vào $scope với tên mà bạn đã đặt trước đó. Ở đây các đối tượng được tạo ra là: main, another, yet. Ảnh từ angular.org Với $scope bạn sẽ gặp phải các vấn đề khi dùng controller lồng nhau, và các controller đó có nhưng thuộc tính giống nhau. Vậy bạ [...]
Read more →
Bài viết được sự cho phép của tác giả Nguyễn Hữu Khanh Khi làm việc với các ứng dụng web sử dụng Spring MVC hoặc Spring Boot, đôi khi chúng ta sẽ có nhu cầu lấy thông tin base URL của ứng dụng để làm gì đó. Base URL ở đây là https://huongdanjava.com hoặc là https://google.com đó các bạn. Để làm được điều này, các bạn có thể dùng class ServletUriComponentsBuilder của Spring. [irp posts="36724" name="Cách sử dụng properties trong tập tin cấu hình của Spring"] [irp posts="11468" name="cURL là gì? Cách sử dụng Curl"] Cụ thể class này nó có một phương thức tên là fromRequestUri() với tham số là đối tượng của class HttpServletRequest. Chúng ta sẽ lấy được base URL của ứng dụng với đối tượng của class HttpServletRequest này, cụ thể như sau: String baseUrl = ServletUriComponentsBuilder.fromRequestUri(request) .replacePath(null) .build() .toUriString(); Phương thức fromRequestUri() sẽ trả về schema (http hoặc https), host, port và context path của ứng dụng. Vì nhu cầu của chúng ta chỉ cần schema, host và port nên như các bạn thấy, [...]
Read more →
Bài viết được sự cho phép của tác giả Kien Dang Chung 1. Nguyên lý Inversion of Control là gì? Trước khi đến với định nghĩa Inversion of Control là gì? bạn hãy cùng tôi làm vài cốc trà đá chém gió tí. Trong ghế nhà trường có lẽ ai cũng sợ nhất môn Triết học bởi mấy lý do, khó hiểu (trìu tượng), nhiều định nghĩa cần học thuộc. Thế nhưng Triết học lại là khoa học của mọi khoa học bởi nó trìu tượng ở một tầng cao nhất. Bản thân tôi cũng đã quên tất cả những gì học được (nói đúng hơn là thuộc được) trong Triết học ngay sau khi thi xong môn này, thế nhưng sau một thời gian khá dài bộn bề lo toan với công việc và cuộc sống, những khái niệm, quy luật ngày xưa thuộc trong Triết học tự nhiên cứ lẩn vẩn trong đầu và rồi ngẫm lại, đúng thật! Điểm lại chú [...]
Read more →
Một ngày của Data team ở Amanotes bắt đầu bằng việc xử lý rất nhiều tin nhắn được gửi cho data team, ví dụ như sự chênh lệch của chỉ số, tại sao trendline có vẻ thay đổi,... Những câu hỏi về các vấn đề liên quan đến data nhân lên rất nhiều lần cho các metrics trên rất nhiều dashboard của công ty. Tìm việc làm QC làm online tại nhà Điều này khiến data team suy nghĩ đến việc nên làm sao để mọi người không phàn nàn về những vấn đề liên quan đến data nữa. Và nhờ vậy chúng tôi quyết định build một hệ thống quản lý chất lượng data. Đó cũng là lý giải cho việc tại Amanotes quyết định build hệ thống này và team đã build nó như thế nào? [caption id="attachment_35724" align="alignnone" width="696"] Nhiều quyết định quan trọng được đưa ra dựa vào data[/caption] Tại sao việc build hệ thống này lại quan trọng với data quality cũng như data team của [...]
Read more →
Bài viết được sự cho phép của tác giả Nguyễn Hữu Khanh Trong bài viết trước chúng ta đã cùng tìm hiểu thế nào là Dependency Injection rồi, do đó trong bài viết này mình sẽ đi sâu về Inversion of Control (IoC) hơn, và tìm hiểu xem mối liên hệ giữa hai khái niệm này là như thế nào các bạn nhé! Như mình đã nói, với Dependency Injection thì một đối tượng sẽ không phụ thuộc vào đối tượng khác và đối tượng khác cũng vậy. Khi cần đối tượng này sẽ gọi tới đối tượng kia và ngược lại. Và mình đã hỏi các bạn, các đối tượng sẽ được tạo ra và nằm ở đâu để khi cần chúng có thể gọi lẫn nhau. Câu trả lời là chúng ta phải có một khung chứa, và khung chứa đó chính là một phần của IoC. [irp posts="33832" name="Hiểu về Dependency Injection"] [irp posts="10767" name="SQL Injection là gì? Cách giảm thiểu và phòng ngừa SQL Injection"] IoC có [...]
Read more →
QA là gì? Quality Assurance (viết tắt là QA) là quá trình đảm bảo kiểm tra (development process) sản phẩm để đưa ra quy trình hoạt động phù hợp như mong muốn. Các phương pháp thực tế được sử dụng trong quá trình QA rất đa dạng tùy vào quy mô cũng như tính chất của sản phẩm. Xem thêm định nghĩa QA QC là gì? Với mỗi project cá nhân thì chỉ cần nhờ người khác góp ý và phản hồi. Ngược lại với App Banking thì cần phải kiểm tra mọi khía cạnh của từng tính năng để không những hoạt động tố mà còn phải đảm bảo tính an toàn và bảo mật. Dù quy trình QA có chi tiết hay formal như thế nào thì chung quy lại mục đích của nó là để xác định và giải quyết bugs kịp thời trước khi release product. Xem thêm công việc của nhân viên QA là gì tại đây Phương pháp QA là gì Agile Phương pháp [...]
Read more →