Higher-Order Components in React
Higher-order component (HOC) là một kỹ thuật nâng cao trong React được sử dụng trong việc sử dụng lại các component. HOCs không là một phần trong React API. Một cách cụ thể, một higher-order component là một hàm và nó nhận đối số là một component và trả về một component mới. Higher-order ...
iOS Animation - Phần 6: Layer Animation
Lời nói đầu Các phần trước mình đã giới thiệu về các cách tạo ra Animation trên View. Phần tiếp theo này, mình xin được giới thiệu về Layer Animation. Các UIView đều có thuộc tính layer, chúng ta có thể truy cập thuộc tính này bằng lênh sau: let layer = myView.layer Các thuộc tính của Layer ...
Understanding Rails'' sercurity problems
Abstract Bảo mật là một phần không thể thiếu đối với các sản phẩm phầm mềm hiện nay. Rails cũng không phải ngoại lệ, framework này cũng cung cấp các cơ chế để bảo vệ ứng dụng khỏi các lỗ hỏng bảo mật ví dụ : csrf, xss, sql injection... . Trong bài viết lần này mình muốn đi sâu vào tìm hiểu cơ ...
Giải pháp đa ngôn ngữ với Json File trong Laravel 5.4
Thông thường nêu chúng ta dùng đa ngôn ngữ thì thường dùng phần locale default của Laravel 5.x. Là định nghĩa các text cần translate trong các file được đặt ở resources/lang/en/example.php. Nhưng nếu gặp các site có lượng request truy cập nhiều thì đòi hỏi việc translate này cần được optimize hơn. ...
Slide Image in RecyclerView
Mục đích của bài viết là hướng dẫn cách tạo 1 slide image trong item của recycler view 1.1. Tạo model Profile Tạo 1 model chứa thông tin Profile : gồm id, name, age, và list image package tuananh.com.slideimageinrecyclerview.model; import java.io.Serializable; import java.util.List; /** * ...
Xây dựng Share Extension đơn giản bằng Swift
Gần đây dự án của mình cần đến 1 chức năng là phải chia sẻ được ảnh ở Photos vào ứng dụng của mình. Sau khi tìm hiểu thì mình muốn chia sẻ kinh nghiệm của mình khi làm một ứng dụng để có thể chia sẻ ảnh được từ Photos vào app của mình mà ko cần phải đang bật app Khởi tạo project tên ...
Xây dựng blog đơn giản bằng Laravel + Vue.js (part 2)
Tiếp tục quay trở lại với bài viết lần trước của mình "Xây dựng blog đơn giản sử dụng Laravel và Vue.js". Trong bài viết lần này, chúng ta sẽ bắt tay vào xây dựng database cho blog. Sau một thời gian dài bận rộn, từ hôm nay mình sẽ quay trở lại để hoàn thiện nốt phần còn lại của series này. Hy vọng ...
Chia sẻ một số validator hữu dụng trong Rails
Validate là một bước hết sức quan trọng để kiểm tra tính hợp lệ của dữ liệu trước khi được lưu xuống database. Có rất nhiều cách để validate dữ liệu trước khi nó được lưu vào database của bạn, bao gồm cả việc ràng buộc dữ liệu ở model, validate ở phía client và validate ở tầng controller. Đối với ...
Hoạt động của App trong Doze Mode and App Standby
Trong Android 6.0 Marshmallow, Google đã tích hợp một công nghệ mang tên Doze để giúp kéo dài thời gian dùng pin của smartphone và tablet khi chạy phiên bản OS này. Về cơ bản, Doze sẽ hạn chế hoạt động của các ứng dụng, hạn chế việc truy cập mạng trong những lúc bạn để máy nằm yên một chỗ không xài ...
Proper tree-shaking with Webpack 2
Tree-shaking trong bundle JavaScript xuất hiện lần đầu tiên trong Rollup, một module bundler giống như Webpack. Nó có nghĩa là chỉ những đoạn code cần thiết để chạy trong app của bạn thì mới được thêm vào trong bundle. Nhờ vậy, kích thước của bundle có thể được giảm đi đáng kể. Tính năng này mới ...
Maintenance page on production
1. Mở đầu Maintenance page là gì? Khi dự án đã đưa vào hoạt động, chắc hẳn sẽ có những lúc cần tạm thời chặn các guest đang sử dụng hệ thống, thông báo bảo trì để cập nhật phiên bản, chạy job .... Lúc đó, chúng ta cần thông báo maintenace. Bài viết này mình muốn hướng dẫn cách tạo maintenace ...
Giới thiệu các Storage Engine trong MySQL
Bài viết áp dụng cho MySQL 5.7 InnoDB Đây là Storage Engine mặc định trong MySQL 5.7. InnoDB là một Storage Engine transaction-safe (tuân thủ ACID) cho MySQL có các commit, rollback và khả năng khôi phục lỗi để bảo vệ dữ liệu người dùng. Row-level locking của InnoDB và kiểu nonlocking ...
Auto Deploy project Laravel lên Heroku
Khi lập trình một website chắc hẳn ai cũng biết đến khái niệm Deploy. Có thể hiểu đơn giản đó là việc triển khai một website lên máy chủ (server) mà mọi người có thể truy cập được trang web đó từ bên ngoài thông qua internet. Như vậy nhiều bạn sẽ nghĩ ngay rằng, việc deploy này chỉ thực hiện khi ...
Gem Deface
Deface là một thư viện cho phép bạn chèn hoặc ghi đè vào các file HTML( erb, haml, slim) trong ứng dụng Rails của mình mà không cần phải sửa đổi trực tiếp trên file đó. Cách sử dụng Có 2 cách để sử dụng Deface: - Sử dụng Deface::Override : sử dụng lớp Deface::Override để chèn hoặc ghi đè những ...
Hướng dẫn làm VR với Unity
Chào các bạn , hôm nay mình sẽ giới thiệu với các bạn một công nghê khá là mới và thú vị đó là VR . Trước tiên ta tìm hiểu VR là cái gì thì nó là viết tắt của từ Virtual Reality có nghĩa là thực tế ảo có nghĩa là khi trải nghiệm nó ta sẽ nhìn thấy một thế giới ảo do những lập trình viên tạo ra . Để ...
Hiểu hơn về self và static trong PHP
Như ở phần cuối của bài static và final trong PHP mình có nói là giữa static và self nó có khác nhau ở trong một số trường hợp. Và để chứng minh cho điều đó thì bài hôm nay mình sẽ giới thiệu với mọi người những sự khác nhau đó. 1, Tổng quan. Nhìn chung thì cả self và static đều dùng để gọi các ...
Kinh nghiệm thi chứng chỉ "AWS Certified Solutions Architect - Associate"
Trải qua nhưng lần đào tạo cho member bên fsoft học và thì chứng chỉ AWS Certified Solutions Architect - Associate, mình có 1 số lưu ý chia sẻ cho các ban muốn học và thì chứng chỉ này như sau. Một số lưu ý ôn thi AWS. Kiến thức ôn thi rộng, dàn trải trên nhiều services. Nên xác định ôn thi AWS, ...
Theo dõi log server real-time bằng công cụ Log.io
Log.io là một công cụ được viết bằng Node.js và Socket.io, cho phép chúng ta theo dõi log Linux Server trực tuyến thông qua web. Bài hướng dẫn dưới đây mình sẽ trình bày cách cài đặt và sử dụng công cụ này. Trong bài viết mình sử dụng hệ điều hành ubuntu 16.04. Thực tế trong thời gian cài đặt, mình ...
Understanding Elasticsearch II
In Part I we covered the basic of elasticsearch data structure and also took a quick look at search API. In this part we'll dive more into search API and Query DSL. Search API To perform search in elasticsearch, make GET or POST request to /_search endpoint. You can perform search on one, ...
ExoPlayer: Time to say goodbye MediaPlayer
Đợt vừa rồi mình tham gia một dự án liên quan đến Android TV, mục đích chủ yếu của ứng dụng là trình diễn video từ các khóa học online. Khi nói đến video trên Android mình ngay lập tức nghĩ đến MediaPlayer mặc định vì nó khá đơn giản và với vài dòng code là có thể chơi video; tuy nhiên, sau khi ...