Hướng dẫn viết Facebook Bot bằng Ruby - Phần 1: Hướng dẫn cách sử dụng Cloud9 IDE, tạo Webhook

Xin chào các bạn, hẳn trong số chúng ta đã biết nhiều về Facebook Messenger Bot, tức là khi bạn gửi tin nhắn cho một ai đó, một page nào đó nó sẽ tự động trả lời. Hôm nay mình sẽ hướng dẫn các bạn cách viết con bot này bằng Ruby, sử dụng Cloud9 IDE. Ngoài ra mình cũng sẽ hướng dẫn các bạn cách ...

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

Golang: Regular Expressions

Regular Expressions hay thường được gọi với cái tên ngắn gọn và thông dụng hơn là Regex trích nghĩa của từ này trong tiếng Việt là biểu thức chính quy. Biểu thức chính quy được dùng để xử lý chuỗi nâng cao thông qua phương thức riêng của nó. Những biểu thức này có những quy tắc riêng mà bạn bắt ...

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

Giới thiệu Django REST framework

Tổng quan REST là viết tắt của REpresentational State Transfer (dịch nôn na là chuyển trạng thái đại diện) là một kiểu kiến trúc lập trình, nó định nghĩa các quy tắc để thiết kết các web service chú trọng vào tài nguyên hệ thống. Trong kiến trúc REST mọi thứ đều được coi là tài nguyên, chúng có ...

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

Một số thư viện hữu ích trong Android

Mở đầu Để giảm thời gian phát triển một ứng dụng Android, mình thường sử dụng các thư viện Android mã nguồn mở có sẵn cho các phần Networking, UI, Dependency Injection (DI), Reactive Library… Có rất nhiều thư viện để lựa chọn nhưng tiêu chí của mình là đơn giản, dễ xài, performance tốt và ...

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

Tìm Hiểu ECMAScript 6

Chào các bạn. Hôm nay mình sẽ giới thiệu tới các bạn những tính năng mới trong bản ECMAScript 6. Trước hết mình xin giới thiệu ECMAScript là gì và tiếp đó chúng ta sẽ đi tìm hiểu những update của ECMAScript từ bản 5 lên bản 6 thì có những thay đổi gì. ECMAScript được coi là một tập hợp các kỹ ...

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

Nestable - Drag & drop hierarchical list with mouse and touch compatibility

Chào mọi người Hôm nay mình sẽ giới thiệu với mọi người 1 jQuery plugin là Nestable hỗ trợ cho việc kéo thả danh sách theo thứ tự bậc thang. I.Mở đầu: Mở đầu mình xin giới thiệu về Nestable Nestable là 1 jquery plugin được viết trên nền jquery mặc dù không phải là 1 plugin quen thuộc như ...

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

RSpec: sự khác biệt giữa mocks và stubs

Trong bài viết này mình sẽ giới thiệu với bạn cách phân biệt mocks và stubs trong Rspec. Trước tiên, ta cần hiểu mock là gì, stub là gì. Trong cuốn Effective Testing with RSpec 3 có định nghĩa thế này: Stub Returns canned responses, avoiding any meaningful computation or I/O Code của nó ...

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

Tạo Configuration Object trong Ruby

Ta có thể thay đổi cách một ứng dụng hoạt động một cách dễ dàng mà không phải động vào source code thông qua việc chỉnh sửa một sỗ config được thiết lập sẵn. Việc thay đổi cách hoạt động của code thông qua config mang lại nhiều lợi ích cho chúng ta. Nó hạn chế việc thay đổi source code mà vẫn đảm ...

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

Shoryuken và SQS

Giải pháp Sidekiq Rails có nhiều giải pháp cho background job. Một trong số là Sidekiq. Sidekis có thể giải quyết hầu hết các vấn đề mà lập trình viên mắc phải. Nó đặc biệt có tác dụng khi phải chịu lượng lớn truy cập từ Rails. Tuy nhiên Sidekiq cũng có một số hạn chế như sau: Nếu bạn không ...

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

How to pod Library with Custom Code.

Đôi khi, thư viện không cung cấp đủ thông tin. (protocol, variable)... Buộc lòng chúng ta phải đi sửa thư viện và chèn thêm 1 số thông tin vào đó. Ở đây, mình sẽ lấy thư viện "PryntTrimmerView" để demo. Trong thư viện này, nó chỉ cung cấp protocol chỉ với 2 function. Nhưng chừ này lại không đủ để ...

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

Những điều thú vị có thể bạn chưa biết về Array trong Ruby

Chúng ta làm việc với array rất nhiều nhưng chắc hẳn có nhiều điều thú vị dưới đây mà bạn chưa biết đến. Hãy bắt đầu tìm hiểu nhé </p> <div class= Tác giả: Bùi Văn Nam viết 16:23 ngày 12/08/2018

Journey to become Full Stack QA

Before talking about our story, let's find out what is Full-Stack Tester. As we know, fullstack developer is a developer can capture, set up each layer, each part of the program and the technologies used in that program from the back-end to the front-end. Similarly, the Full-Stack tester is a ...

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

Object và Class - Phần 2

Mỗi đối tượng tượng ghi nhớ class của nó bởi việc lưu một con trỏ đến cấu trúc RClass. Thông tin mà mỗi RClass chứa là gì? Chúng ta sẽ thấy gì nếu chúng ta có thể nhìn vào bên trong một class Ruby? Hãy xây dựng mô hình thông tin đại diện cho RClass. Mô hình này sẽ cho chúng ta một định nghĩa kỹ ...

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

[Swift] Localization with UI (XIBs and Storyboards)

Cách làm thông thường là sẽ tạo 1 connect đến variable trong file .swift: @IBOutlet weak var cancelButton: UIButton! Rồi sau đó sẽ gọi localization: self.cancelButton = NSLocalizedString("Cancel", comment: "") Chúng ta có 2 việc cần làm ở đây: 1. Đầu tiên mình sẽ định nghĩa 1 protocol như sau: ...

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

Xử lý các vấn đề ProGuard trên Android (Phần 1)

Tại sao là ProGuard ProGuard là một công cụ rút gọn (shrink), tối ưu hoá (optimize) và làm mờ (obfuscate) code. Mặc dù cũng có các công cụ khác cho developer, ProGuard thì có sẵn là một phần của Android Gradle build process và gửi kèm với SDK. Có nhiều lý do tại sao bạn có thể muốn bật ProGuard ...

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

Sử dụng Rspec viết unit test cho Controller trong ứng dụng Rails

Controller spec được tách nhỏ ra bởi phương thức controller, mỗi test case được dựa trên một action và có thể gửi kèm params hoặc không. Ví dụ như sau: it "redirects to the home page upon save" do post :create, contact: Factory.attributes_for(:contact) expect(response).to redirect_to ...

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

Tại sao 80% các ứng viên kỹ sư phần mềm bị người sáng lập Rails từ chối?

Dạo gần đây, tôi đã có dịp ngồi xuống với David Heinemeier Hansson và hỏi anh ta lý do tại sao anh ta lại thuê những kỹ sư phần mềm này mà không phải là những khác. Nếu bạn không biết anh ta, David là nhà sáng lập của Ruby on Rails đồng thời là CTO của Basecamp Câu trả lời dưới đây của anh ấy ...

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

Kiến thức nghiệp vụ phần 1: Hệ thống quản lý nhân sự

Tất cả những doanh nghiệp có sử dụng lao động thì đều phát sinh những công việc liên quan tới nghiệp vụ quản lý nhân sự. Như là quản lý các thông tin liên quan đến người lao động, quản lý tiền lương và điều chỉnh chiến lược của công ty. Quản lý nhân sự bao gồm hai công việc chính, đó là quản ...

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

Các loại test case trong kiểm thử phần mềm

Đảm bảo chất lượng phần mềm liên quan đến các cạnh tiếp cận khác nhau đến việc kiểm thử. Gần như là không thể kiểm thử tất cả mọi thứ nhưng chắc chắn bạn có thể tiến lại gần với việc đó bằng cách thu hẹp trong những loại test case khác nhau để thực hiện với những yêu cầu riêng biệt. Để tìm ra loại ...

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

Gợi ý cách chọn background khi thiết kế

Trong lĩnh vực thiết kế website, việc tạo nên một theme giới thiệu , giao diện đẹp hài hòa không thể nào thiếu được yếu tố background hay nền. Tất nhiên, lựa chọn background không hề dễ, nó đòi hỏi nhà thiết kế cần phải tuân thủ theo các đúng nguyên tắc, tránh mắc phải sai lầm khi thiết kế ...

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