Product with multi image by gem Paperclip

1.Lời nói đầu Việc đăng nhiều ảnh của 1 sản phẩm lên 1 trang web bán hàng là rất thường gặp vì vậy viết bài này để hướng dẫn cho việc đó. 2. Sử dụng gem gem "paperclip" #bundle Tạo 2 model trong đó có 1 model products có 1 attr là name và 1 model product_images không có attr nào. ...

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

Khác nhau giữa .nil? .empty? .blank? và .present?

.blank? và .present? là những hàm mình thường xuyên sử dụng từ khi mới bắt đầu làm quen với Rails. Sự tiện dụng là lí do những hàm này được dùng thường xuyên, nhưng mình bắt đầu từ việc những người khác cũng dùng như thế. Sau một thời gian mình biết thêm .nil? và empty? và trở nên bối rối (thời ...

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

Polymorphic association

Polymorphic association Tuy không phải là một feauture mới của Rails, tuy nhiên vẫn có nhiều developer RoR hiểu nhầm, mập mờ về polymorphic association, vì polymorphic vẫn có vẻ hơi “lạ” , hoặc vẫn chưa hiểu polymorphic là gì nên hay bị nhầm lẫn, khó khăn khi sử dụng. Bài chia sẻ lần ...

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

Lập lịch Cron Jobs với gem whenever

Đôi khi, chúng ta phải chạy các công việc trong khoảng thời gian đặc biệt như: sao lưu bản ghi, gửi email, vv. Trong các hệ thống Unix, chúng ta có thể lập lịch công việc bằng cách sử dụng cron daemon. Cron là một daemon, dụng để thực hiện các nhiệm vụ theo lịch trình. Các hệ thống Unix cung cấp ...

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

Cơ bản về kĩ thuật View Object trong ruby on rails

Xin chào các bạn, hôm nay mình xin được giới thiệu một kĩ thuật dùng để tối ưu code, đó chính là chỉ truyền tối đa 2 biến instance variable sang view, gọi là kĩ thuật View Object. Ví dụ trong users_controller.rb: class UsersController < ApplicationController def edit @user = ...

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

Module Concern

Giới thiệu Trong models, bạn thấy 1 thư mục là concerns mà có thể chưa từng sử dụng đến nó. Concerns là nơi đưa vào các method được gộp lại vào trong các module và có thể sử dụng cho nhiều module/class thông qua include module chứa chúng Ví dụ 1: # ../model/concerns/study.rb module ...

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

React - some reference

The virtual DOM React doesn't use the standard DOM (Document Object Model). That is because, the standard DOM is painful to manipulate and it really was not designed to be used for interactive and dynamic contents. This is why, it is inefficient and slow and not well suited when dynamic contents ...

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

Design Pattern - Factory Pattern (Part 2)

Ở bài viết trước, tôi đã giới thiệu với bạn ví dụ về cách sử dụng Factory Pattern trong Java. Ở bài viết này chúng ta sẽ đi sâu một chút để tìm hiểu kỹ xem Factory pattern có lợi ích gì khi sử dụng? Khi nào thì ta có thể dùng nó? Bài trước: Design Pattern - Factory Pattern - (Part 1) Kiến ...

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

The best structure of Angularjs project

Angularjs là một JS Framework nổi tiếng của Google. Nó được ứng dụng rất nhiều trong các dự án web hiện nay. Angular có rất nhiều tính năng và ưu điểm tuyệt vời. Bạn muốn áp dụng ngay vào dự án của mình. Điều đầu tiên cần làm là tìm hiểu cấu trúc của nó. Angularjs có khá nhiều lựa chọn để cấu ...

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

Hiểu rõ hơn cách làm tròn trong Ruby

Sau đây là một bài đọc nhỏ nhỏ về một điều đơn giản hẳn ai cũng biết kết qủa song nhiều bạn chắc còn chưa rõ nguyên nhân và nhiều khi còn chưa để ý. Bạn đã từng thực hiện phép toán làm tròn theo kiểu Integer trong Ruby chưa? và bạn có thấy sự khác biệt với một vài ngôn ngữ khác không? Sau đây ...

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

Hướng dẫn tạo Custom View trong Android

Chào các bạn, chắc hẳn khi làm việc với android bạn đều đã từng sử dụng các component widget như TextView, EditText, ImageView, ... thì tất cả chúng đều được kế thừa từ một lớp cha đó là View. Trong Android SDK đã cung cấp cho ta một số các component cơ bản và thông dụng để ta có thể tiện sử dụng. ...

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

Ripple Animation - Hiệu ứng gợn sóng

Tổng quan Ripple touch effect ( hiệu ứng gợn sóng khi được chạm vào) được ra mắt cùng với Material Design ở phiên bản Android 5.0 ( API level 21). Việc phản hồi lại khi được chạm giúp người dùng xác định được họ đã tương tác với phần nào của các UI element. Ví dụ, các button hiện nay sẽ hiển ...

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

Build Ultra-Modern Web Apps with Angular Material

At the Google I/O Conference back in 2014, Google announced Material Design, their new design language. They have since converted much of their popular applications to adhere to this new spec in an effort to provide a consistent experience. Now they are trying to convince you to follow along as ...

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

ASP.NET 5 và AngularJS Phần 3, Chèn Client Routing

Bạn có thể tải code về trong bài viết blog này từ GitHub: https://github.com/StephenWalther/MovieAngularJSApp Trong bài viết trên blog này, tôi giải thích làm thế nào để phân chia ứng dụng trang đơn (SPA) thành nhiều trang ảo. Tôi sẽ sử dụng AngularJS routing để tạo ra danh sách, thêm, sửa, xóa. ...

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

Tìm hiểu về BEM - Giới thiệu

BEM là gì? Để ngắn gọn, xúc tích và dễ hiểu nhất thì mình định nghĩa BEM với 1 vài gạch đầu dòng như sau: BEM là 1 phương thức viết tên class trong HTML, CSS BEM được tạo bởi 1 team của Yandex. BEM là viết tắt của từ Block, Element, Modifier Mục đích của BEM là đem lại cách viết hiệu quả ...

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

Carousel trong bootstrap

1 . Giới thiệu về Carousel Plugin trong Bootstrap Carousel là một plugin của jQuery giúp chuyển đổi bất kỳ phần tử HTML nào thành dạng lặp quay vòng. Trong bootstrap thì plugin này được tích hợp sẵn trong file bootstrap.js và được đã được CSS nên không cần viết thêm gì nữa . Note : Hiệu ứng ...

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

Đa nhiệm trong Ruby 3 với Guild

Tại Ruby Kaigi 2016, Koichi Sasada - nhà thiết kế của máy ảo Ruby hiện nay đề xuất một mô hình đa nhiệm mới trong Ruby 3. Trong khi Ruby có một hệ thống đa luồng cho phép thực hiện đồng thời, thì MRI không cho phép thực hiện song song mã Ruby. Koichi nhìn những thách thức khác nhau của chạy Ruby ...

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

Giới thiệu về debug

BUG là gì? Bugs là các con bọ, bọ này ám chỉ các lỗi xảy ra trong logic, hay bất kỳ vấn đề gì gây ra việc làm cho ứng dụng không thực thi được hoặc thực thi sai. Bugs luôn tiềm ẩn ở mọi nơi, và ta không thể lường trước được mọi tình huống có thể xảy ra mà chỉ có thể cố gắng làm giảm nó ...

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

Permission trong Android (Part 1) - Khai báo các quyền (permission) cho ứng dụng

Trong bài viết này mình xin giới thiệu với các bạn vấn đề cấp quyền cho ứng dụng Android. Mình sẽ chia bài viết thì 3 phần: Permission trong Android (Part 2) - Yêu cầu cấp quyền khi ứng dụng đang chạy Permission trong Android (Part 3): Các chú ý khi yêu cầu cấp quyền Mọi ứng dụng Android ...

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

Hướng dẫn cài đặt revel Framework

Revel là một framework được build trên nền ngôn ngữ golang do google phát triển. Hôm nay mình sẽ hưỡng dẫn các bạn cài đặt và build sample với revel framework. Cài đặt go language. để cài đặt golang, bạn chạy các lệnh sau: sudo add-apt-repository ppa:ubuntu-lxc/lxd-stable sudo apt-get ...

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