[Dive into Gems - 2] Cancancan

Authentication and authorization are two fundamental parts of almost every website. While authentication answers the question "who are you?", authorization determines "what can you do?". This sounds pretty straightforward but putting things right is not always a piece of cake. Fortunately, in ...

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

Thao tác với google sheet bằng Java

Google™ Spreadsheets là chương trình bảng tính miễn phí của google, tuy không đầy đủ như là excel nhưng nó sở hữu nhiều tính năng phong phú và đa dạng của điện toán đám mây giúp cho bạn có thể làm việc một cách hiệu quả. Trong bài viết này tôi sẽ giới thiệu việc sử dụng ngôn ngữ JAVA để thao tác ...

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

Floating Point Rounding Error và câu chuyện của một game thủ Dota

Mấy ngày vừa qua, cộng đồng chơi Dota2 báo một bug khá thú vị như trong hình. Có điều gì không ổn ở đây ? Nếu bạn là một người chơi Dota2, hẳn bạn sẽ biết, công thức tính chỉ số (attribute )của một hero là Current Attr = Base Attr + Grownth * (level -1) trong đó Base là chỉ số của hero ...

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

PyMOTM: Argparse

Chắc hẳn trong chúng ta, ai cũng đã từng ít nhất một lần làm việc trên console (terminal). Và việc sử dụng một ứng dụng nào đó đều có các tùy chọn rất là phong phú. Đúng không ạ? Ví dụ như lệnh cp (copy) trên Ubuntu. Khi bạn truyền tham số --help hoặc man cp sẽ nhận được hướng dẫn đầy đủ với rất ...

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

Android Getting Started with Material Design

Bạn có thể đã nghe về Android Material Design . Đã được giới thiệu trong phiên bản Android Lollipop . Trong Android Material Design có rất nhiều thứ mới mà đã được giới thiệu như Material Theme New Widgets,Custom Shadows, Vector drawbles, Custom Animations . Nếu bạn chưa từng làm việc với ...

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

Xây dựng hệ thống cho mượn thiết bị đơn giản trong công ty

. Khởi nguồn Tôi nghĩ rằng việc tạo ra các sản phẩm từ ý tưởng của cá nhân và đem lại lợi ích cho mọi người luôn là điều đáng được hoan nghênh, khen ngợi nhất. Tuy nhiên do nhiều yếu tố, các thành viên thường ít khi triển khai và đưa những ý tưởng của mình vào giai đoạn thực hiện. Hy vọng thông ...

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

Authenticate with Azure AD and access office 365 API in rails apps

Trong bài viết này, mình xin giới thiệu về Microsoft Office 365, Azure Active Directory và hướng dẫn tạo một ứng dụng demo nhỏ cho phép người dùng thực hiện việc authenticate để truy cập tới tài nguyên người dùng cũng như tới các API của Office365 theo chuẩn oauth2 trong rails (ok). Microsoft ...

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

THỜI TRANG LẬP TRÌNH – SỰ TRỖI DẬY CỦA DECLARATIVE PROGRAMMING!

Kể từ sau loạt bài về Apple Watch + CI , tôi muốn chuyển sang các chủ đề khác nói về các món ăn chơi nhảy múa mà không phải là về code, công việc. Nhưng nói thật là các món ăn chơi thì nhiều, cũng lắm sự kỳ công đòi hỏi người chơi phải có niềm yêu thích thực sự, thời gian tìm hiểu nhất định. Thêm ...

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

Nested set model (góc nhìn khác cho mô hình category đa cấp)

Nếu bạn đã từng xây dựng mô hình menu đa cấp hay gì đó đại loại như xây dựng danh sách cấu trúc lồng nhau thì chắc hẳn bạn đã từng dùng đệ quy để làm việc này nhưng đệ qui là phương pháp không được khuyến khích dùng cho lắm vì nó rất hao tốn tài nguyên.Vậy có cách nào khác tối ưu hơn để giải quyết ...

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

Hướng dẫn cách tạo một Cocoapod

Các bạn chắc hẳn đã rất quen thuộc với khái niệm opensource cocoapod như Alamofire hay MBProgressHUD. Nhưng đôi khi bạn khó có thể tìm thấy một pod thoả mãn các chức năng mà bạn cần, hoặc bạn có thể muốn chia nhỏ một project thành các module nhỏ hơn và sử dụng lại các module đó ở các project khác. ...

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

Giới thiệu về thư viện load ảnh Glide và so sánh với thư viện Picasso

Trong sự kiện Google Developer Summit Thailand, Google đã giới thiệu đến chúng ta một thư viện load ảnh mới dành cho Android được phát triển bởi bumptech với tên Glide, đây là một thư viện mà Google khuyên dùng. Nó đã được sử dụng trong nhiều dự án mã nguồn mở của Google đến nay bao gồm cả sự kiện ...

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

Tìm hiểu gem Draper trong rails

Draper là 1 gem bổ trợ để viết code trông sáng sủa hơn khi bạn viết code với decorator. Bạn hoàn toàn có thể lựa chọn sử dụng hay không sử dụng draper hay decorator trong project của mình nhưng tốt hơn hết là nên sử dụng để đưa project của mình về đúng với bản chất của ruby on rails ( hướng đối ...

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

Phân tích thiết kế hệ thống thông tin sử dụng biểu đồ UML (Phần 2)

Trong phần 1 tôi đã giới thiệu với các bạn khái quát về phân tích thiết kế hệ thống thông tin sử dụng biểu đồ UML và 2 dạng biểu đồ ca sử dụng(Use Case Diagram) và biểu đồ lớp (Class Diagram). Trong phần này tôi sẽ tiếp tục giới thiệu tới các bạn một số dạng biểu đồ UML được sử nhiều trong các thiết ...

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

Hướng dẫn tạo Test Case (cơ bản)

1. Khái niệm Test Cases (TCs) là gì? Test Cases là 1 tập hợp các trường hợp điều kiện theo đó mà Tester có thể dựa vào nó để xác định liệu 1 ứng dụng, hệ thống phần mềm hoặc là 1 trong các tính năng của nó có hoạt động như mong muốn cần làm hay không? Các cơ chế để xác định liệu một ...

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

Rating với ratyrate gem, đơn giản và đầy đủ hơn

Để xây dựng một trang web có tính tương tác với người dùng, mong muốn người dùng đưa ra được ý kiến, đánh giá của mình về một bài đăng/ một sản phẩm nào đó, developer thường phát triển tính năng Rating. Tuy nhiên, để xử lý cả đống sự kiện ajax cũng như lưu vào database nghe qua có vẻ khá vất vả và ...

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

RecyclerView trong Android

** I. Tổng quan ** RecyclerView là một ViewGroup mới, nó là sự kế thừa và nâng cao của ListView và GridView được hỗ trợ trong support-v7 version . Một trong những ưu điểm nổi trội của Recycler là nó có khả năng mở rộng tốt hơn, nó có thể hiển thị dữ liệu theo cả chiều ngang và chiều ...

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

Code hiệu quả hơn với tính năng Live Template của Android Studio

Nếu bạn là một lập trình viên Android lâu năm, chắc hẳn bạn đã từng mắc lỗi này ít nhất 1 lần: Toast . makeText ( MainActivity . this , "This will not be displayed" , Toast . LENGTH_SHORT ) ; Nếu bạn chưa nhận ra cái dòng đấy lỗi ở đâu thì là do hàm show() chưa được gọi nên Toast sẽ ...

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

Tạo ra bảng lưu lịch sử thay đổi với ActiveModel::Dirty và CallBack

Trong ứng dụng có yêu cầu về bảo mật cao, yêu cầu ghi lại lịch sử thay đổi của các đối tượng chính trong hệ thống là cần thiết. Bạn phải xây dựng một bảng lịch sử ghi lại tất cả các thay đổi của đối tượng như: ID của đối tượng, các thuộc tính bị thay đổi, giá trị thuộc tính trước và sau khi thay ...

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

Convert Date (java.util.Date) to new date type Java 8: LocalDateTime, LocalDate, LocalTime.

Một trong những update feature của Java 8 là có 1 hệ thống class mới để thao tác với dữ liệu kiểu date. Dễ hiểu hơn, dễ sử dụng hơn, tốt hơn so với kiểu cũ. Nhưng chưa phải hầu hết các thư viện, framework build trên java đã support kiểu date mới. Vì vậy đôi khi chúng ta cần phải chuyển đổi kiểu ...

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

Nested comments rails

Bình luận là ở khắp mọi nơi. Blog, mạng xã hội, các trang web fan hâm mộ, các nguồn tài nguyên học tập - tất cả đều có một số loại của một hệ thống nhận xét. Thường thì chúng tôi muốn trình bày tùy chọn người dùng của chúng tôi để cả hai để lại nhận xét và trả lời là tốt. Cách tự nhiên nhất để đại ...

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