
Thin Controller - Skinny Model by using chain service object
Nêu vấn đề Khi làm việc với Web và MVC, chắc chắn bạn đã từng nghe và được khuyên nhiều về Thin Controller. Lý do thì chúng ta đều hiểu, controller phải gánh vác nhiều công việc nặng nề, và nếu controller mà có nhiều logic thì rất khó để viết unit test. Một trong những cách làm được công nhận đó ...

10 Ruby on Rails Best Practices
Ruby on Rails là một web framework được viết bằng ngôn ngữ lập trình Ruby. Nhưng sự khác biệt là nó có rất nhiều công cụ giúp tăng tốc quá trình phát triển và làm cho công việc được dễ dàng hơn. cho phép chúng ta tập trung vào nhiệm vụ chứ không phải là công nghệ. Nhưng để làm việc tốt với ...

Chia sẻ data bảo mật và hiệu quả với Content Provider trong android
Trong 4 components của android gồm Activities, Services, BroadCast Reveiver và Content Provider, thì 3 components đầu tiên hầu như các developer thường xuyên làm và tiếp xúc, riêng Content Provider được xử dụng ít hơn hoặc đôi khi có sự nhầm lẫn giữa Content Provider và SQLiteDatabase. Trong bài ...

Introduction about Pjax and Tubolinks in rails (Part I)
Chắc hẳn trong công việc hay tạo bất kì một app đơn giản nào chúng ta đều đã từng để ý tới 1 dòng /= require tubolinkstrong applications.js, nhưng liệu các bạn có biết tubolinks là gì và có tác dụng ra sao, phương thức hoạt động như thế nào. Trong bài viết này tôi xin được giới thiệu tổng quan về ...

OOP - Các vấn đề gặp phải khi bắt trước tu duy của bộ não
Lần trước tôi có trình bày một quan niệm lập trình của mình, đó là thiết kế chương trình sao cho mô phỏng lại chính xác nhất những gì chúng ta nhìn nhận về một vấn đề - OOP - Lập trình mô phỏng thế giới quan con người. Tuy vậy chúng ta sẽ nhiều lúc tự hỏi trong một vài bài toán đặc biệt, yêu cầu ...

Các thư viện và công cụ hữu ích khi làm 1 ứng dụng Android
Trong những năm vừa qua, các ứng dụng Android ra đời ngày càng nhiều, kéo theo đó là các thư viện hỗ trợ cho việc phát triển android ngày càng mạnh mẽ, và đầy đủ cho lập trình viên. Việc nắm bắt và sử dụng các thư viện giúp cho việc phát triển ứng dụng android trở nên nhanh chóng hơn, an toàn hơn ...

Auto deploy rails web apps với Capistrano
I. Giới thiệu: Capistrano là một công cụ được viết bằng ngôn ngữ ruby giúp chúng ta tự động deploy các ứng dụng rails web lên server thông qua giao thức ssh và thực hiện các công việc đã được định sẵn. Ở bài hướng dẫn dưới đây mình sẽ cần chuẩn bị: 1 server ubuntu đã cài đặt sẵn nginx, git, ...

Ai chịu trách nhiệm về Quality?
Ai chịu trách nhiệm về Quality? Tôi mở đầu loạt ký sự của tôi bằng câu kết thúc trong một slide training của công ty về Quality Management: “Ai chịu trách nhiệm về Quality?” (Who is responsible for Quality?) Hình minh họa cho câu hỏi cũng khá funny, đội ngũ engineering thì trỏ về ...

Zero-downtime deployment with Laravel Envoy
Ngày nay, khi làm việc với các ứng dụng web, chúng ta hẳn không xa lạ gì với từ khoá deploy. Bất kỳ những thay đổi nào về hệ thống dù là tính năng mới hay sửa lỗi đều được deploy lên Staging để QA test, confirm rồi deploy Production trong những trường hợp release hệ thống. Nhiều công cụ đã được ...

Deep link
Công nghệ deep link (liên kết sâu) đã thu hút rất nhiều sự chú ý trong những năm gần đây khi giúp các marketer tăng đáng kể độ tương tác của người dùng các ứng dụng mà họ quảng bá. Cụ thể deep link là gì và đang được sử dụng ra sao? Deep linking là gì? Một deep link là 1 URL mở, hướng user đến ...

Dependency Injection trong Ruby - Không đáng sợ như bạn nghĩ
Đây là một bài viết khá lâu rồi (từ năm 2009) của Sandi Metz, người viết cuốn sách Practical Object-Oriented Design in Ruby. Tuy nhiên, những tư tưởng trong bài viết này rất hay và tôi muốn chia sẻ lại nó cho các bạn. (Nếu bạn đọc được cuốn sách trên thì lại càng tuyệt vời hơn nữa.) Nếu các bạn ...

CLEAN CODE - A HANDBOOK OF AGILE SOFTWARE CRAFTSMANSHIP
Mở đầu Bạn là 1 developer, bạn muốn trở thành một developer tốt hơn? Hơn thế nữa, với Clean Code sẽ có thể cho bạn biết sự khác biệt giữa các mã tốt và mã xấu. Bạn sẽ biết làm thế nào để viết mã tốt và làm thế nào để chuyển đổi mã xấu thành mã tốt. Mục tiêu của bài viết tóm tắt một số ...

Tìm hiểu về Node.js vàMocha
Mocha là một thư việc test nhanh, đơn giản và mở rộng của Node.js. Bài viết dưới đây xin đề cập tới cách cài đặt, cấu hình và sử dụng của nó. Mocha là một thư viện test dành cho Node.js, khá đơn giản, có tính mở rộng và test khá nhanh, được sử dụng trong Unit test hoặc Integration test. Và ...

Refactor ruby on rails
Refactoring là hành động thay đổi mã của ứng dụng nhưng không làm thay đổi hành vi thay vì nâng cao chất lượng của ứng dụng. Việc này được dùng để cải thiện khả năng đọc, giảm độ phức tạp, tăng khả năng bảo trì và mở rộng trong tương lai của hệ thống. Nói nôm na là viết code cho dễ hiểu, chạy ...

iOS Animation - Phần 1: View Animation
Để làm cho 1 ứng dụng trở nên chuyên nghiệp, thân thiện và dễ dùng hơn với người dùng, thì việc lập trình viên biết cách tạo ra và sử dụng các animation hợp lý là rất quan trọng. iOS có hỗ trợ lập trình viên một số phương thức tạo animation như: View Animation, Auto Layout, Layer Animation, 3D ...

Top machine Learning algorithms
Bài viết này sẽ như là 1 tour đơn giản giới thiệu 1 vòng về cuộc hành trình trong khoa học về dữ liệu và machine learning. Xuyên qua bài viêt này, bạn sẽ có thể làm việc với các vấn đề trong các thuật toán của machine learning với code Python. Bài viết có lược bỏ các phần có liên quan đến toán ...

Mô hình hồi quy ứng dụng trong bài toán dự đoán giá bất động sản - Machine Learning (phần 3)
Xin chào tất cả các bạn, chúng ta cùng khởi động một tuần mới với bài viết tiếp theo về mô hình hồi quy áp dụng trong bài toán dự đoán giá của bất động sản nhé. Trong bài viết này mình sẽ trình bày một số kĩ thuật để cải tiến mô hình hồi quy của các bạn cho hiệu năng tốt hơn các phương pháp đã áp ...

Giới thiệu về Visual Studio Code
Bạn viết code bằng gì ? Sublime Text, PhpStorm, Zend Studio, NetBeans... Bạn có muốn thay đổi không ? Hãy thử Visual Studio Code. Visual Studio Code là sản phẩm của Microsoft, ra mắt vào tháng 4 năm 2015 ở hội nghị Build. Đặc điểm nổi bật là đơn giản, gọn nhẹ, dễ dàng cài đặt. Visual Studio Code ...

Cách sử dụng đúng $scope trong AngularJS
1, Sử dụng $$ootScope rootScope là một biến global và được dùng nhiều nơi. Tuy nhiên việc sử dụng rootScope sẽ làm cho code của chúng ta khó khi bảo trì. Việc sử dụng các biên ở trong các file javaScript, directives, controllers và templates cũng gây khó khăn trong việc unit test hay tái cấu ...

CSS Preprocessors Compared: Sass vs. Stylus
Why Pre-Processing CSS? Với CSS thuần tuý, việc xây dựng chức năng, tái sử dụng một định nghĩa hoặc thừa kế là khó đạt được. Đối với các dự án lớn hơn, hoặc các hệ thống phức tạp, bảo dưỡng là một vấn đề rất lớn. Mặt khác, ngày nay có nhiều trình duyệt khác nhau ra đời và mỗi trình duyệt đôi khi ...