N+1 query sử dụng gem Dase và Includes Count

Trong Rails đã hỗ trợ một method includes dùng để hổ trợ việc giảm N+1 query trong truy vấn cơ sở dữ liệu quan hệ. Mình có table categories has_many với table posts và mình muốn lấy list categories và count các bài post tương ứng của category đó thì mình làm như sau: # Controller class ...

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

20 icons loading cho website (Part 2)

Tốc độ internet ngày càng tăng giúp cho việc load 1 trang web nhanh hơn rất nhiều. Tuy nhiên trong nhiều trường hợp hay vì 1 vài lý do mà một số trang web vẫn cần 1 khoảng thời gian để có thể tải được hết nội dung của nó. Nhưng có một vấn đề là nếu để cho người dùng nhìn thấy từng phần của trang ...

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

Định hướng người dùng trong thiết kế

Web Designers có thói quen bắt tay ngay vào công đoạn thiết kế mà không quan tâm nhiều lắm tới định hướng người dùng (user flows). Chúng ta vẫn luôn hấp tấp tập trung vào các phong cách, chi tiết thiết kế và bày trí thông tin, trong khi lẽ ra việc quan trọng hơn là xây dựng các định hướng người ...

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

1 vài thay đổi cho Rails 5.1 Beta Version 1

Bản beta 1 của Rails đã được public chính thức ngày 23/2/2017 với sự thay đổi chủ yếu là trong việc quản lý các file javascript. 3 highline chính của Rails 5.1 tập trung thay đổi: Quản lý npm của JavaScript thông qua Yarn Compline JavaScript với Webpack Quay lại dùng Rails ajax mà không mặc ...

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

Arel - SQL manager for Ruby

Tài liệu: The definitive guide to Arel, the SQL manager for Ruby Arel là thư viện mà nhiều rails developer sử dụng hàng ngày nhưng có thể thậm chí không biết đến sự tồn tại của nó. Tên của thư viện này chỉ xuất hiện khi mọi thứ khác fail có ý nghĩa gì? Nó có ý nghĩa là cung cấp cho các frameworks ...

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

Cách tạo WordPress Mega Menu - Phần 3 (Code Settings Field Mega Menu)

Tiếp tục với series bài viết hướng dẫn tạo WordPress Mega Menu phần trước. Hôm nay chúng ta sẽ tiếp tục với phần 3 là code setting fields cho WordPress Mega Menu sau khi đã tìm hiểu về các field (settings) cần thiết. Project URL: https://github.com/MiloTheme/WordPressMegaMenu Do sẽ hướng dẫn chi ...

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

Đặt tên biến như thế nào cho chuẩn

Đặt tên biến như thế nào? Mới nghe qua thì đây có vẻ như đây là một vấn đề hết sức đơn giản chúng ta không cần bận tâm tới làm gì. Có người còn cho rằng việc này dễ tới mức chúng ta không cần tốn công để nói về nó, đến cả người không rành code làm cũng được. Nhưng nếu bạn là một người code nhiều, ...

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

Kiểm thử mạng lưới vạn vật kết nối Internet (Internet of Things - IoT)

IoT là sự kết nối của phương tiện, thiết bị gia dụng, trang thiết bị y tế sử dụng điện tử nhúng, vi mạch … có khả năng truyền tải và trao đổi thông tin, dữ liệu qua mạng. Công nghệ này cho phép người dùng có thể điều khiển thiết bị từ xa thông qua mạng. Ví dụ về mạng lưới vạn vật kết ...

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

Hướng dẫn Handoffs file cho Developer một cách tối ưu ( Phần 2 )

Grid Hãy vận dụng hệ thống CSS grid để xây dựng thiết kế của bạn. Hãy xem và tìm hiểu Bootstrap Gird, nó là một hệ thống lưới CSS vô cùng phổ biến, nó bao gồm tất cả các thành phần cơ bản để giúp bạn tối ưu thiết kế và nó cũng rất dễ dàng để Developer có thể sử dụng và tùy chỉnh. Vấn đề chính ...

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

Bạn có muốn tạo ra nhiều thử nghiệm trên những ý tưởng khác nhau từ chiếc "Mũ tư duy"

Là một cộng đồng thử nghiệm, chúng ta đã đi một chặng đường dài trong thập kỷ qua trong việc tăng cường các quan điểm test và kỹ thuật test đồng thời tận dụng các công cụ mới. Tuy nhiên, nó không phải là không phổ biến để nghe mà chúng ta cần phải suy nghĩ bên ngoài khuôn khổ mà chúng ta vốn ...

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

A* search algorithm

In computer science, A * is a computer algorithm that is widely used in pathfinding and graph traversal, the process of plotting an efficiently directed path between multiple points, called nodes. It enjoys widespread use due to its performance and accuracy. However, in practical travel-routing ...

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

N + 1: When More Queries Is a Good Thing

Trong tuần qua tôi đã cố gắng để hiểu làm thế nào để eager loading works in Rails để loại bỏ các vấn đề về N+1 query bằng cách làm giảm số lượng các queries fired. Giả thuyết ban đầu của tôi là giảm số lượng truy vấn càng nhiều càng tốt như là mục tiêu. Tuy nhiên, tôi đã rất ngạc nhiên bởi những gì ...

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

Tìm hiểu về Reponsive Web - Media Query

Nếu làm web nhiều chắc sẽ nghe qua keyword này rồi. Vậy nó là gì? như thế nào? có cần thiết ko? Không dùng nó thì có cách nào khác để đáp ứng được mục đích đó không? Nó là 1 kỹ thuật css để giúp cho việc reponsive đơn giản hơn, dùng tag @media để gom nhóm các block thuộc tính chỉ của css, các ...

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

Chiến lược giữ chân người tài

Bài toán thu hút và giữ chân người chân người tài luôn là một vấn đề đau đầu của các doanh nghiệp. Nhiều người nghĩ đơn giản việc tăng chế độ đãi ngộ sẽ giúp họ ở lại với công ty. Nhưng đối với một nhân sự, họ sẽ không còn gắn bó với công ty nếu mục tiêu của cá nhân và công ty không gặp nhau, hay ...

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

Những vấn đề xảy ra khi tham gia đồng thời nhiều dự án

Ngành công nghiệp phần mềm ngày nay đang rất phát triển, số lượng nhân sự đào tạo không kịp với nhu cầu cần sử dụng, do đó thường hay phát sinh những trường hợp một người có thể phải tham gia nhiều dự án cùng một lúc. Vấn đề đặt ra là hiệu suất làm việc sẽ bị ảnh hưởng như thế nào khi liên tục phải ...

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

Làm thế nào để thực hiện kiểm tra BACKEND

Thông thường, một phần mềm ứng dụng khi đến người sử dụng cuối, họ chỉ nhìn thấy phần giao diện tương tác với họ mà thôi. Người sử dụng thao tác phần mềm, kết quả sẽ được trả về đúng, họ không quan tâm tới việc làm thế nào để có được kết quả đó. Vậy, với một người kiểm thử phần mềm, làm thế nào để ...

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

Laravel Elixir và sử dụng bower (Phần cuối: Làm việc với Scripts)

Làm việc với Scripts Elixir cung cấp một vài tính năng làm việc với các file JavaScript, như biên dịch ECMAScript, module bundling, nén, hay đơn giản chỉ là nối các files plain JavaScript. Khi viết ES2015 với modules, bạn có thể chọn Webpack và Rollup. Nếu đấy là những tool bạn chưa dùng bao ...

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

Tại sao cần mã hóa mật khẩu ? Và các kiểu mã hóa cơ bản

Lời mở Gần đây trên mấy blog hay trang báo chúng ta có thể dễ đọc được tin vụ Lotte lộ tài khoản và mật khẩu người dùng và thấy bảo rất nguy hiểm vậy nguy hiểm ở mức nào và liệu người dùng đổi mật khẩu ở lotte thì còn có an toàn không?. Theo mình thì nguy hiểm vl (very lắm) luôn bởi lẽ thứ nhất ...

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

Realm với Dagger2

Những công nghệ Android đáng chú ý hiện tại là: Realm, Dagger và Unit Testing. Do đó, nên tìm kiếm cơ hội để cải tiến mã code bằng một cách nào đó kết hợp chúng. Và vấn đề migration trong Realm có thể được cải thiện đáng kể bằng cách sử dụng Dagger 2. Chúng ta sẽ tiến hành refactor class ...

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

Các bước setting liên kết chatwork

Hiện tại chatwork là phần mềm quản lý trao đổi, quản lý công việc rất phổ biến trong các doanh nghiệp. Từ tính năng tiện lợi của chatwork nên sẽ phát sinh vấn đề người dùng ở hệ thống của bạn muốn những thông tin update, notification của system được thông báo qua chatwork. Trong trường hợp này , ...

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