Fat Model - Skinny Controller and The Patterns to Refactor Fat ActiveRecord Model

Chắc hẳn các bạn lập trình viên đã từng ít nhiều nghe qua khái niệm Fat model - Skinny Controller khi nói về Framework MVC. Vậy như thế nào được gọi là Fat model hay Skinny Controller??? Keep as much business logic in the models as Rõ là khi nghe cái tên như thế, chúng ta cũng mường tượng ...

Tác giả: Tạ Quốc Bảo viết 15:20 ngày 12/08/2018

Handle refresh token with Retrofit2

Hiện nay chúng ta vẫn thường sử dụng Retrofit cho việc connect với Server, trong phạm vi rất rộng của việc giao tiếp Client-Server thì có quá nhiều thứ chúng ta có thể làm nên mình không đề cập ở đây. Nhưng có 1 khía cạnh nhỏ mà rất hay gặp phải đó là: Refresh Token À đúng rồi đây là điều đã ...

Tác giả: Trịnh Tiến Mạnh viết 15:20 ngày 12/08/2018

Laravel Import/Export excel, csv với package Maatwebsite/Laravel-Excel

Laravel-Excel là 1 package mang power của PHPExcel vào Laravel. Nó có các chức năng như: import dữ liệu từ file excel/csv vào collection, export models/array/view ra tệp excel, import hàng loạt files... Các tính năng vượt trội của Laravel-Excel: Import vào Laravel collection. Import hàng ...

Tác giả: Trịnh Tiến Mạnh viết 15:20 ngày 12/08/2018

[Mikrotik] How to block website with Mikrotik (RouterOs)

Các phương pháp block website với Mikrotik 1. Web proxy 2. Route policy 3. Content Filter 4. Layer 7 Firewall Đối với các nhà quản trị mạng, quản trị hệ thống của một công ty thì việc block website đem lại rất nhiều lợi ích như hạn chế một số trang theo yêu cầu của ban ...

Tác giả: Hoàng Hải Đăng viết 15:20 ngày 12/08/2018

Một vài thủ thuật với console trên trình duyệt Chrome

$_ sẽ trả về giá trị gần nhất được tính toán hay trả về gần đó nhất. Giả sử ở console ta nhập 2 + 2 thì sẽ trả về giá trị là 4. Sau đó ta nhập $_ thì sẽ trả về giá trị gần nhất được trả về đó là 4. $(selector) trả về tham chiếu đến phần tử DOM đầu tiên với CSS selector quy định. Function này ...

Tác giả: Hoàng Hải Đăng viết 15:20 ngày 12/08/2018

Introduction to the Arduino [Part 01]

Arduinoの生みの親の1人であるMassimo BanziがTEDで語った内容を聞いて、自分が想像したものをオープンソース化したいと思うようになりました。ふと考えた「こんなこといいな、できたらいいな」は本当に簡単に試作品を作ることができる時代になっています。そうした環境を与えている存在の1つにArduinoがあります。Arduinoを通して自分の想像したものを具現化してここに記しておくことによって、他の人の想像を引き立てて、誰かがマッシュアップして世の中を更に良くしてくれるようなアイデアが出てくるかもしれない。そう考え、自分の妄想を具現化したものをこれから書いていきたいと思います。 ...

Tác giả: Tạ Quốc Bảo viết 15:20 ngày 12/08/2018

Tìm kiếm, xóa, cập nhật giá trị trong mảng (Array) và bảng băm (Hash Table)

Array và Hash Table là hai trong số những kiểu dữ liệu được sử dụng khá thường xuyên trong lập trình. Trên thực tế thì cả hai kiểu dữ liệu này được sử dụng theo cách tương tự nhau và thường thực hiện các tác vụ phổ biến như thêm dữ liệu, tìm kiếm, sửa và xoá dữ liệu. Đối với các lập trình viên ít ...

Tác giả: Hoàng Hải Đăng viết 15:20 ngày 12/08/2018

Hướng dẫn thiết kế hệ thống (Phần 3) - Thiết kế hệ thống Twitter timeline và search

Lời mở đầu TIếp theo phần 2, trong phần này mình sẽ giới thiệu với các bạn về thiết kế phần trong một dịch vụ khả phổ biến hiện nay đó là mạng xã hội trực tuyến. Trong bài viết này mình chỉ mình đến module timeline và search. Một điều quan trọng nữa các bạn sẽ thấy đó là các step giống hệt nhau, ...

Tác giả: Bùi Văn Nam viết 15:20 ngày 12/08/2018

Tự xây dựng một Chrome Extension đo performance của website đơn giản trong 5 phút

Một trong những điều khiến Chrome trở thành một trong những trình duyệt được ưa thích và sử dụng nhiều nhất trên thế giới đó chính là khả năng mở rộng của nó. Tương tác với một trang web trở nên vô cùng đa dạng thông qua các plugin mà Google gọi nó là Chrome extension. Để sử dụng một extension ...

Tác giả: Hoàng Hải Đăng viết 15:20 ngày 12/08/2018

Một vài tính năng tuyệt vời của CSS3 mà có thể bạn chưa biết?

Chào các bạn, chắc hẳn các bạn đều biết đến CSS và từng tiếp xúc, làm việc với CSS3. Một FrontEnd nếu sử dụng thành thạo CSS3 hầu như có thể làm được những hiệu ứng từ đơn giản đến phức tạp trên website mà trước đây chỉ có sự can thiệp của Javascript mới thực hiện được Tuy nhiên, thế giới của CSS3 ...

Tác giả: Trịnh Tiến Mạnh viết 15:20 ngày 12/08/2018

Một ít về AI

Trong công việc, đôi khi bạn muốn đưa thêm một ít AI vào App hay một phần nhỏ Task của mình, hiểu thêm về AI sẽ giúp bạn chủ động hơn. AI được viết tắt từ artificial intelligence (https://vi.wikipedia.org/wiki/Trí_tuệ_nhân_tạo) có thể hiểu nôm na là khả năng xử lý bằng trí tuệ của bất cứ cái gì ...

Tác giả: Hoàng Hải Đăng viết 15:20 ngày 12/08/2018

Android - Handling App Links

Khi người dùng click vào một links bất kỳ, ta thường thấy sẽ có một popup hiển thị yêu cầu người dùng sử dụng ứng dụng nào để xử lý link đó. Từ Android 6 trở lên cho phép ứng dụng có thể tự định danh là trình xử lý mặc định cho một loại link nào đó. Nếu người dùng không muốn ứng dụng là trình xử lý ...

Tác giả: Trịnh Tiến Mạnh viết 15:20 ngày 12/08/2018

Những tính năng mới mang tính cách mạng cho Android trong phiên bản Java 8

Java 8 là một bước tiến đỉnh cao cho ngôn ngữ Java. Những cập nhật mới của Java 8 là một việc lớn đối với Android và sẽ giúp cho các nhà phát triển dễ dàng hơn trong việc tạo ra các ứng dụng mới và dọn sạch mã hiện có. Tóm lại, java 8 là : "Tạo ra code sạch hơn và tinh giản toàn bộ quá ...

Tác giả: Tạ Quốc Bảo viết 15:20 ngày 12/08/2018

Sử dụng thư viện clipboard js

Trong quá trình làm dự án, đôi khi chúng ta cần thực hiện việc copy text trên màn hình vào clipboard ( giống như khi copy url clone repo của git hub chẳng hạn), với js chúng ta có thể làm bằng nhiều cách, tuy nhiên với thư viện clipboard js, công việc này trở nên đơn giản và rất nhẹ nhàng. Trước ...

Tác giả: Tạ Quốc Bảo viết 15:20 ngày 12/08/2018

[Xamarin iOS][Bluetooth] Sử dụng Bluetooth Low Energy Trong Xamarin iOS

1. Các khái niệm cơ bản. Trong một kết nối BLE giữa hai thiết bị, một thiết bị sẽ đóng vai trò là Central (tạm hiểu là khách), một thiết bị sẽ đóng vai trò là peripheral (một thiết bị chủ). Thiết bị khách sẽ gửi các request đến một thiết bị chủ, ở phía bên kia, thiết bị chủ sẽ căn cứ vào nội dung ...

Tác giả: Trịnh Tiến Mạnh viết 15:20 ngày 12/08/2018

Hierarchical Clustering

Clustering is a technique that usually uses in data-intensive application. E-comerce system wanna track customer browsing/purchasing to automatically detect group of same customers and giving suitable product. As we know, different customers have different tastes of buying and choosing products. ...

Tác giả: Hoàng Hải Đăng viết 15:20 ngày 12/08/2018

Giới thiệu Plugins/ Extensions (trên Chrome)

CÁC THÀNH VIÊN TRONG NHÓM: Phạm Thị Kim Oanh Trần Thị Trang Nguyễn Thị Phương Mai Vũ Thị Phương Thúy Lê Thị Ngân Nguyễn Kim Anh Nguyễn Thu Phương Vũ Hoàng Nam I. Giới thiệu: Google Chrome: trình duyệt mạnh mẽ, giao diện đơn giản, light-weight cùng một loạt tiện ích ...

Tác giả: Bùi Văn Nam viết 15:20 ngày 12/08/2018

Working with Mnesia in Elixir

Tuần trước, chúng ta đã tìm hiểu về cơ chế lưu trữ của ETS trong bất ký ứng dụng Elixir nào của Erlang. ETS là một phần của OTP và như một nhà phát triển của Elixir bạn có thể sử dụng nó mà không cần cài đặt bất cứ thứ gì. Điều này là khá điên khi bạn nghĩ về nó, những thứ mà ngôn ngữ khác có thể ...

Tác giả: Trịnh Tiến Mạnh viết 15:19 ngày 12/08/2018

Tìm hiểu về Context và cách sử dụng tối ưu trong Android

Context là gì? Context có thể được dịch là ngữ cảnh, nó thể hiện cho ngữ cảnh hiện tại của ứng dụng, đối tượng. Ví dụ như đang ở ngữ cảnh Activity, Service...Context cho phép bạn tạo ra những đối tượng mới mà có liên quan đến một ngữ cảnh cụ thể nào đó. Thông thường bạn gọi nó để lấy thông tin có ...

Tác giả: Hoàng Hải Đăng viết 15:19 ngày 12/08/2018

Giải pháp viết comment lên ảnh cho comter dịch!

Đối với developer. Cần phải comment lại với khách hàng là điều không thể tránh khỏi. Vấn đề mà mình từng gặp phải ở đây đối với khách hàng Nhật. Là mình chụp ảnh màn hình và viết comment lên đó. Sau đó bị comter than phiền là viết lên ảnh không dịch được. Với những bạn gặp case tương tự hi vọng ...

Tác giả: Trịnh Tiến Mạnh viết 15:19 ngày 12/08/2018