Uploading files lên S3 bằng AWS SDK Ruby Gem

Để upload files lên kho lưu trữ Amazon S3 của bạn, bạn có thể sử dụng phiên bản aws-sdk 2. Theo mặc định gem sẽ tìm kiếm các thôn tin xác thực trong các biến môi trường. Vì vậy, bạn phải export các giá trị trên terminal như sau: export AWS_ACCESS_KEY_ID='my-very-secret-key' Bạn có thẻ xác minh nó ...

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

Một người làm thiết kế trải nghiệm người dùng (UX) cần có những kỹ năng gì?

Đừng hoảng hốt khi bạn phải đọc tất cả những kỹ năng bạn cần trang bị như những điều tôi viết dưới đây. Một số trong chúng bạn có thể search trên internet và đọc, chỉ cần với ngộ tính cao, bạn có thể hiểu được ngay. Một số thức khác bạn có thể tự học bằng cách đọc vài cuốn sách. Còn lại, có lẽ bạn ...

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

Semver and tags version

Semver khái niệm không còn xa lạ gì với developer nó được viết tắt từ Semantic Versioning mô tả kỹ thuật versioning và các nguyên tắc liên quan Summary Semver được đánh số với 3 thành phần chính MAJOR.MINOR.PATCH MAJOR version khi các api cũ thay đổi không còn tương thích MINOR ...

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

Tạo hiệu ứng xem ảnh với UIViewControllerAnimatedTransitioning

Đầu tiên mình sẽ hướng dẫn các bạn tạo hiệu ứng xem ảnh với UIViewControllerAnimatedTransitioning Đầu tiên, tạo 1 project có tên FacebookPhotoScreen và sử dụng ngôn ngữ Swift PopAnimator Tạo 1 subclass từ NSObject và conform với UIViewControllerAnimatedTransitioning có tên là ...

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

AI Conversation (2)

Trong bài trước, mình có nhắc đến Tensorflow để xây dựng 1 ứng dụng conversational. Trước hết tìm hiểu về Tensorflow. Là gì? TensorFlow là 1 library do Google phát triển và opensource vào tháng 11/2015. TensorFlow được cho là sử dụng trong nhiều service của Google: phân loại email của ...

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

Kết hợp Vuejs với Rails

Giới thiệu Vuejs Vue (phát âm là /vjuː/, giống view) là một progressive framework dùng để xây dựng giao diện người dùng ( UI ). Không giống các monolithic framework. Phần thư viện lõi của Vue chỉ tập trung vào lớp view mà thôi, và nó rất dễ để làm quen và tích hợp với các thư viện khác hoặc các ...

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

Sử dụng UIScrollView với Autolayout trên Interface Builder

Màn hình iphone ngày càng lớn, từ iphone 3,4,5 đến 6,6+.Tuy nhiên, lại quá nhỏ so với nhu cầu hiển thị thông tin trên ứng dụng. Để hiển thị đầy đủ những thông tin đó, các developer thường giải quyết bằng cách sử dụng UIScrollView,UITableView, UICollectionView . UITableView, UICollectionView là ...

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

CI/CD with Jenkins (P1)

Trong bài viết này tôi sẽ giới thiệu về CI/CD kết hợp với Jenkins tạo ra 1 chu trình phát triển phần mềm Build-Deploy-Test với việc can thiệp thủ công ít nhất, giúp giảm thiểu chi phí, thời gian và các nguy cơ thay đổi bằng cách cho phép cập nhật gia tăng các tính năng vào trong ứng dụng. ...

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

CATextLayer - Masking views with text

CATextLayer là một layer cung cấp layout của text đơn giản và rendering các text thuần hay các thuộc tính của strings một cách nhanh chóng. Khác với UILabel, chúng ta không thể gán một UIFont cho CATextLayer, mà chỉ có thể là một CTFontRef hoặc CGFontRef. Tạo một UIImageView: let ...

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

Phần 1: Những khái niệm cơ bản trong Elasticsearch

Bài viết này với mục đích giới thiệu về những kiến thức, khái niệm cơ bản về ES để bắt đầu cho chuỗi bài viết về ES mà tôi sẽ giới thiệu tới đây. 1. Indexing Elasticsearch cho phép trả về kết quả cực nhanh bởi thay vì tìm kiếm bởi text, ES tìm kiếm bởi inverted index . Hơi khó hiểu phải ...

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

[Android] Object Oriented Tricks: Starter Pattern

Thông thường chúng ta sẽ xây dựng các objects tại một nơi, nó có thể là một method constructor, builder, static factory method, abstract factory method hoặc bất kỳ một Creational Patterns nào khác. Đôi khi khi object được tạo bởi framework cần thêm một số thông tin mà chúng ta phải cung cấp. ...

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

Cách khôi phục database schema nếu gặp conflicts khi rebase

Đây là vấn đề sẽ thường xuyên xảy ra khi làm các dự án Rails với quy trình làm việc trên branch của git. Giả sử bạn đang làm việc trên một nhánh để phát triển một tính năng nào đó của project. Vấn đề xảy ra khi cả nhánh develop và nhánh của bạn đều chứa file migration, khi đó sẽ xảy ra conflict ở ...

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

Data consistency in Rails: Understanding the different between transaction and locking

Tất cả bắt nguồn từ bài post này của bên Grokking VietNam. Đại ý của bài viết như sau: Một ứng dụng chuyển tiền của ngân hàng có một đoạn code như dưới đây: def transfer ( A , B , amount ) DB . transaction do if A . balance > amount A . balance - = ...

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

Create Dialog in Android

Create Dialog View Create XML file dialog_view.xml, for example: < LinearLayout xmlns: android = " http://schemas.android.com/apk/res/android " android: layout_awidth = " match_parent " android: layout_height = " match_parent " android: orientation = ...

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

Laravel: Events

Introduction Các Event (sự kiện) của Laravel cung cấp việc thực hiện observer 1 cách đơn giản. Cho phép bạn đăng ký và lắng nghe các event khác nhau xảy ra trong ứng dụng của bạn. Các class Event thường được lưu trữ trong thư mục app/Events, trong khi listener của chúng được lưu trong ...

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

Hướng dẫn tạo test case cơ bản sử dụng SELENIUM IDE

1. Giải thích các thành phần trên giao diện Selenium IDE 1.1 Giao diện Selenium IDE: 1.2 Giải thích thành phần Thanh trượt tốc độ : Cho phép điều chỉnh tốc độ việc chạy lại test case BaseURL : Thanh lưu đường dẫn link trang web cần test Nút record : thực hiện ghi lại quá trình tạo test ...

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

Kiến thức phỏng vấn iOS _ Phần 1 : Structures and Classes

Như mọi người đã biết, mỗi khi đi phỏng vấn chúng ta thường phải chuẩn bị rất nhiều thứ, ôn luyện lại kiến thức, nghĩ ra đủ thứ loại vấn đề mà người phỏng vấn sẽ hỏi mình. Nhất là với người đã có kinh nghiệm làm việc thì lại chuẩn bị nhiều hơn những sinh viên sắp hoặc vừa ra trường chưa có kinh ...

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

Sử dụng Streams filter trong java 8

Trong bài này tôi sẽ minh họa làm thế nào để sử dụng stream filter(),collect(),findAny() hoặc orElse() trong java 8 Trong java 8 họ đã thêm stream api,nó tương tự như collection.Khiến cho việc code nhanh hơn và perfoment tốt hơn Streams filter() và collect() 1.2. trước java 8,chúng ta filter một ...

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

iOS Concurrency - Phần 2: Những thuật ngữ và vấn đề hay gặp phải trong Concurrency.

Thuật ngữ (Terminologies) Để có thể hiện thực concurrency , chúng ta cần hiểu một số khái niệm liên quan đến chúng. Dưới đây là một số những thuật ngữ hay gặp phải khi chúng ta lập trình concurrency. Serial, Concurrency and Parallelism Ba thuật ngữ trên mô tả cách mà những tasks chạy ...

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

Khoa học máy tính trong Ruby: Sử dụng stacks để giải quyết vấn đề

Nếu như bạn không có bằng cấp về Computer Science (CS), bạn có thể sẽ cảm thấy rằng mình đang bỏ lỡ một điều gì đó, hoặc bạn sẽ cảm thấy CS nó là một cái gì đó rất trìu tượng... Hoặc là Ruby đã làm những việc khó cho bạn, và bạn chỉ việc sử dụng chúng... Trong bài viết này tôi sẽ cho các bạn thấy ...

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