Đơn giản hóa việc cài đặt môi trường với Chef
Một công việc quen thuộc với các developer khi phát triển một dự án web là cài đặt môi trường phát triển. Khi join dự án, ban đầu dev sẽ nhận đc một danh sách các công nghệ sẽ sử dụng để dự án có thể vận hành trên môi trường production. Và tất nhiên dev cần tái hiện gần giống nhất môi trường ...
GitUp is a good Client for Git (Exclusively for MacOS)
I would like to introduce to all of you who has to manage project with Git by Macbook a super friendly GUI that is GitUp GitUp : http://gitup.co/ What is GitUp GitUp is a GUI client that is developed exclusively for MacOS As it has been said in the Promition page: Work quickly, safely, and ...
Quản lý state trong Vuex
Giới thiệu về state trong vuex Nếu như bạn đã từng làm việc với ReactJS thì chắc hẳn cũng đã từng nghe tới Redux, một thư viện giúp bạn quản lí trạng thái (state) của application. Nó được thiết kế dựa trên Flux, nhưng giảm bớt khó khăn thường gặp phải khi viết một ứng dụng Flux. Và Vuex là ...
ReactJS life Cycle hooks
Có thể nói, khái niệm component trong ReactJS là một trong những thành phần quan trọng nhất của ReactJS. Do vậy, việc hiểu rõ vòng đời (LifeCycle Hook ) của component sẽ giúp cho bạn hiểu rõ hơn về ReactJS. Với những bạn mới dùng ReactJS thì ban đầu có thể gặp khó khăn hoặc lúng túng để hiểu và sử ...
Tạo admin page với admin-on-rest
Việc xây dựng trang admin có nhiều framework khác nhau có thể hỗ trợ, việc sử dụng framawork sẽ tiết kiệm được công sức và thời gian. Admin-on-rest là một framwork được xây dựng trên nguồn cảm hứng của ng-admin Admin-on-Rest cho phép xây dựng trang admin trên REST service sử dụng ES6, React và ...
Javascript - Hỏi đáp về javascript [Phần 2]
Introduction Quay trở lại với series hỏi đáp về javascript, hôm nay chúng ta sẽ đi qua các câu hỏi, các khái niệm về scope , lexical scope , hoisting , function , IIFE , function expression , function declaration , closure . Let's get started. Scope C10. Scope là gì? Scope là tập ...
Shunting-yard algorithm
Khi học năm thứ 3 đại học mình có tiếp xúc với lập trình android và personal project đầu tiên của mình về android là làm một ứng dụng máy tính để tính toán cộng, trừ, nhân, chia với 2 toán hạng 1 + 1 và mới đây có một người hỏi mình về việc làm một ứng dụng android giả lập một chiếc máy tính ...
Một vài vấn đề về Active Record Associations (phần 4)
Trong phần cuối này chúng ta cùng tìm hiểu nốt về has_and_belongs_to_many và Association Callbacks 1. has_and_belongs_to_many Association Reference association này tạo 1 quan hệ nhiều nhiều với model khác. Trong cơ sở dữ liệu, 2 bảng quan hệ được liên kết qua 1 bảng trung gian có khóa ngoài ...
Bài toán phân quyền trên Laravel
Là một lập trình viên , chắc hẳn ai cũng phải làm bài toán quản trị Thêm , Sửa, Xóa .... Đây gần như là bài toán mà hầu như lập trình viên nào cũng phải làm qua. Tuy nhiên ngày hôm nay mình sẽ không nói về các bài toán phổ thông trên mà sẽ nói về bài toán ít phổ thông hơn. Đó là bài toán phân ...
CÁC MÔ HÌNH PHÁT TRIỂN PHẦN MỀM
Sở dĩ mô hình này được gọi là mô hình thác nước vì khi chúng ta nhìn vào hình ảnh trên có thể thấy nó rất giống một dòng thác, nước đổ từ trên xuống dưới và cũng chính vì vậy nên nó không bao giờ có chiều ngược lại, đây cũng là nhược điểm của mô hình này và ta sẽ nói ở đoạn sau. Mô hình này ...
Prototype pattern in C#
Trong bài trước thì mình đã giới thiệu về "Factory Method Pattern in C#" , hôm nay thì mình xin tiếp tục giới thiệu về 1 pattern trong "Creational Patterns" , đó chính là Prototype . Prototype được sử dụng để tạo ra object từ 1 object nguyên mẫu, bằng cách copy các thuộc tính của object ...
[Android] Viết logs không cần code
Khi thực hiện debug project Android, đôi khi chúng ta phải đặt vào đoạn logging để theo dõi luồng hoạt động của code. class MainActivity : AppCompatActivity() { lateinit var retrofit: Retrofit override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceSta ...
Services và WorkManager - Part 1 : Android memory
Tại Google IO 2018, có một khái niệm mới, gọi là WorkManager, là một phần trong JetPack. Nó sinh ra để giải quyết những vấn đề phức tạp gặp phải khi các ứng dụng ngày càng làm nhiều việc ở background. Bài viết này chúng ta sẽ tìm hiểu kỹ hơn về nó và lý do đằng sau việc xây dựng nó. Chúng ta sẽ có ...
Một vài bài học dành cho các bạn mới lập trình Ruby on rails
Sau khi được làm dự án thực tế, mình có học được 1 số bài học về tech và các kinh nghiệm từ các anh leader. Hôm nay mình xin chia sẻ với các bạn, đặc biệt là giành cho các bạn mới lập trình Ruby on Rails. 1. Câu lệnh với TH object bị nil account.birth_day.nil? ? ' : account.birth_day.to_s(:lo ...
Pure css Parallax scrolling
1. Giới thiệu về parallax scrolling Kỹ thuật Parallax Scrolling được Ian Coyle tạo ra và áp dụng lần đầu tiên vào năm 2011 và cho đến hôm nay vẫn còn đang được sử dụng rộng rãi cho nhiều website trên thế giới. “Parallax” là từ thường được dùng trong video games 2D, sử dụng ...
5 quy tắc cơ bản trong xây dựng cấu trúc một project Node.js
Không giống như với PHP, phần lớn các Node.js framework không có một cấu trúc thư mục cố định. Điều này giúp chúng ta có thể linh hoạt hơn trong việc tự xây dựng cấu trúc theo nhu cầu và sở thích của mình. Tuy nhiên đó cũng sẽ là một thử thách không mấy đơn giản đối với người mới bắt đầu. Việc xây ...
Sự kết hợp giữa Angular 5, Ng2-smart-table và Rails
Hẳn trong số chúng ta đã rất nhiều bạn sử dụng các tư viện về table, mục địch của các thư viện này giúp bạn xử lí dữ liệu, cũng như các hành động trên table được tốt hơn ngoài ra mỗi table sẽ có những tiện ích riêng cũng như vẻ đẹp riêng biệt. Hôm nay mình xin giới thiệu đến các bạn thư viện ...
3 nguyên lý chính trong Service Objects Design Patterns của RoR
Service Objects là một mô hình để làm giảm tính xử lý ở Controller và Models trong Ruby on Rails(RoR). Một Service Object là một PORO(Plain old Ruby Object), có nghĩa là tách các vấn dề có tính nghiệp vụ vào một thành các Class, methods để để hỗ trợ việc quản lý. Nguyên lý thứ nhất: Chỉ có một ...
9 trick nhỏ giúp code JS gọn hơn
Bài viết đc dịch từ: https://medium.freecodecamp.org/9-neat-javascript-tricks-e2742f2735c3 1. Clear hoặc truncate một array Chỉ bằng cách thay đổi length, bạn có thể clear hoặc truncate một array mà ko cần reassign nó. const arr = [ 11 , 22 , 33 , 44 , 55 , 66 ] ; // ...
Cài đặt kết nối Wifi cho ESP8266
Xin chào các bạn, mình đã quay trở lại rồi đây. Như đã nói ở bài trước bài hôm nay mình xin viết về việc cài đặt chương trình thiết lập kết nối vào mạng wifi cho ESP8266. Trong bài viết này mình vẫn sử dụng em wemos d1 mini như những bài trước. Ý tưởng để gửi SSID và PASS của wifi cho ...