Login bằng Facebook, Google sử dụng Devise và Omniauth trên Rails

Đối với một website thương mại thì ngoài việc cho phép khách hàng của mình đăng nhập trên chính website thì còn cho phép khách hàng đăng nhập bằng tài khoản mạng xã hội như Facebook hoặc Google là điều cần thiết. Sau đây tôi xin hướng dẫn các bạn thiết lập chức năng login trên website bằng mạng xã ...

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

6 nguyên tắc định hướng thị giác (visual hierarchy) trong thiết kế UX

Đâu đó trong khi chúng ta thiết kế UX hoặc các ấn phẩm truyền thông, quảng cáo… chúng ta có nghe nói đến thuật ngữ “visual hierarchy” – có thể dịch ra là “định hướng thị giác”, có khi nào ta lờ mờ không hiểu nó là cái gì mà trông nguy hiểm thế? Tôi cũng đã từng như ...

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

Clean Code Series - Part 1: Introduction

Clean Code - A Handbook of Agile Software Craftsmanship - Robert C. Martin, một trong những cuốn sách gối đầu giường dành cho các lập trình viên. Luôn nằm trong top các quyển sách được recommend cho giới lập trình viên. http://blog.itviec.com/7-programming-book/ https://techmaster.vn/posts/33900/ ...

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

9 SAI LẦM lớn nhất mà sinh viên IT ngành Phần mềm hay mắc phải

Xin chào các bạn, Hôm nay mình xin đưa ra chủ đề Các sai lầm mà các bạn sinh viên IT hay mắc phải . Dưới đây là 9 ý kiến của mình về chủ đề này. Các bạn xem và cùng thảo luận với mình nha. Đây là điều đầu tiên mà rất nhiều, rất nhiều sinh viên IT mắc phải. Các bạn bị ngợp bởi rất nhiều ngôn ...

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

Tìm hiểu về JQuery part 4

Chào tất cả mọi người. Tháng 7 mình sẽ tiếp tục với các bài viết liên quan đến Jquery. Trong 3 phần trước thì Chúng ta đã tìm hiểu kha khá kiến thức về Jquery rồi . Hôm nay chúng ta sẽ tiếp tục đi tìm hiểu "Tìm kiếm trong Jquery". Đối với 1 list thì các item đều sẽ được đánh index theo thứ tự từ ...

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

Scope và closures trong Javascript

Trong JS, scope là những gì liên quan đến context code của bạn, Scope có thể được định nghĩa global hoặc là local Bạn sẽ hiểu được các biến hay function được phép truy cập ở phạm vi nào, liệu có thể thay đổi scope các context trong code của bạn. Việc viết code sẽ trở nên nhanh hơn, dễ maintain cũng ...

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

Tìm hiểu về RxSwift

Reactive programming với ý tưởng chính là ứng dụng của bạn có thể phản ứng với những thay đổi trong dữ liệu cơ bản mà không cần ta phải trực tiếp gọi đến nó. Nhờ đó ta có thể tập trung vào logic hiện tại hơn là bảo trì một trạng thái nhất định. Điều này có thể đạt được trong Objective-C hay ...

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

Unit test cho Nodejs RESTful API với Mocha và Chai

Chúng ta có thể tìm thấy nhiều ví dụ khởi tạo một RESTful API bằng Nodejs. Các bước thường thông thường sẽ là : Định nghĩa các packages sẽ dùng, khởi chạy một server với Express(Framework phổ biến và có nhiều hỗ trợ), định nghĩa các model, khai báo các router sử dụng ExpressRouter, và cuối cúng là ...

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

Network Reachability in Swift

Hầu như mọi ứng dụng di động đều cần kết nối với internet vào một thời điểm nào đó để lấy dữ liệu từ một host, service hoặc upload dữ liệu. Tuy nhiên, kết nốt Internet không phải lúc nào cũng có sẵn, và tính khả dụng của nó có thể thay đổi bất cứ lúc nào. Để biết được trạng thái của mạng hiện tại ...

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

Cùng tìm hiểu map, filter và reduce trong javascript

Khi làm việc trên các dự án Javascript, bạn không thể tránh khỏi những tình huống mà bạn phải làm một số thao tác trên data. Bạn luôn có thể sử dụng các vòng lặp for để có được kết quả mong muốn , nhưng for-loops có thể nhanh chóng gây ra một số rắc rối và có thể rắc rối đó sẽ lớn hơn nếu bạn ...

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

18+ kĩ thuật rút gọn code Javascript của bạn

1. Toán tử 3 ngôi (Ternary Operator) Sử dụng khi cần rút ngắn đoạn if..else thành 1 dòng. Thay vì const x = 100; let result; if (x < 1000) { result = "nhỏ hơn 1000"; } else { result = "lớn hơn hoặc bằng 1000"; } thì const x = 100; const result = (x < 1000) ? "nhỏ hơn 1000" : ...

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

Hướng dẫn tạo ứng dụng chat trong React kết hợp với Firebase - Phần 1

Như các bạn đã biết, hiện nay trên các mạng xã hội hay bất cứ đâu thì ứng dụng chat là điều không thể thiếu, bất cứ ngôn ngữ nào cũng đều có thể viết ra được một ứng dụng chat đơn giản, nhưng hôm nay mình xin hướng dẫn viết bằng React. Do mới học React đang còn non kém nên có gì sai sót mong mọi ...

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

Giới thiệu về Scope và Directive trong AngularJs

Bài viết này mình sẽ giới thiệu về Scope và directive trong Angular mà mình đã có ứng dụng và hiểu được trong thời gian qua. Scopes là gì? Scopes là một đối tượng đề cập đến mô hình ứng dụng. Đó là một bối cảnh thực hiện cho các biểu thức. Scopes được sắp xếp theo cấu trúc phân cấp bắt chước ...

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

Phần 7: Quản lý user client trong PrivacyIDEA (sqlrealm/dbrealm/ldap/Activedirectory)

Phần 7: Quản lý user client trong PrivacyIDEA (sqlrealm/dbrealm/ldap/Activedirectory) Phần 1 : Cài đặt PrivacyIDEA server Phần 2: Login ubuntu sử dụng OTP token key. Phần 3: Quản lý tập trung ssh-key bằng privacyIDEA. Phần 4: Basic Authen Apache sử dụng OTP token key. Phần 5: Sử dụng OTP ...

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

Tự động deploy rails application lên môi trường product (P1)

Chuẩn bị Server ubuntu. Có nhiều nhà cung cấp, nhưng hiện tại mình chọn Amazon Web Service Máy tính có cài đầy đủ môi trường, tool để code rails Đăng ký EC2 Bạn phải có 1 thẻ tín dụng quốc tế, và còn khoảng 2$$để nó check, miễn phí 12 tháng nên yên tâm là nó không charge đâu. Sau khi hoàn ...

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

Customize UIAlertController

Trong iOS, UIAlertView được dùng rất nhiều để hiển thị một message dialog hoặc confirm dialog... Tuy nhiên, từ iOS 8.0 trở đi, UIAlertView đã bị deprecated và thay thế bởi UIAlertController . Giao diện mặc định của UIAlertController nhìn đơn giản nhưng khá đơn điệu, nhiều khi không đáp ứng ...

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

Form trong AngularJS

AngularJS bổ sung cho form các tính năng về filling và validation. Bạn có thể dùng ng-click directive để xử lý sự kiện click chuột trên nút và sử dụng các cờ hiệu dirty và invalid để làm cho nó có hiệu lực. Sử dụng novalidate với khai báo form để vô hiệu hóa tính năng valicate của form. Phần điều ...

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

Tản mạn về Testing

Bài viết này được viết từ những ngày nắng 40 độ C, dẫn nguồn từ blog của mình, với mong muốn chia sẻ một góc nhìn cá nhân. Đây chắc là lần đầu tiên mình viết blog, sẽ có nhiều thiếu sót, rất mong nhận được sự góp ý và phản biện của các bạn: Tôi đang làm việc cho một công ty có định hướng là một ...

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

Các pattern của bộ tứ (Gang of Four) trong Kotlin

Kotlin ngày càng trở nên phổ biến và thích hợp để thay thế Java. Vậy, các mẫu Design Pattern phổ biến được implement trong Kotlin như thế nào? Bài viết này, chúng ta sẽ cùng nhau implement một số mẫu Design Pattern nổi tiếng nhất trong Kotlin. Mục đích không đơn giản chỉ là implement các pattern. ...

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

Authenticate multi model with devise

1. Devise là gì? Devise là một gem cho phép các ứng dụng rails có thể thực hiện công việc xác thực thông tin cá nhân, nó được xây dựng dựa trên base của gem warden . Khác với warden rất thô sơ đòi hỏi coder cần có 1 nền tảng khá vững về rails để có thể bắt đầu và xây dụng lên 1 ứng dụng đầy đủ ...

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