Method dispatch hay trò lố của protocol

Method dispatch là gì? Method dispatch là thuật toán xác định cách thức vận hành method thông qua compiler. Nhắc đến method dispatch, thường người ta sẽ nói đến 2 kiểu điển hình: Static dispatch: xác định hàm được chạy trong quá trình biên dịch. Dynamic dispatch: xác định hàm được chạy trong ...

Tác giả: Trần Trung Dũng viết 17:10 ngày 07/09/2018

RxSwift: Bài 5 - Observables and Subjects in Practice (Part 2)

RxSwift: Bài 5 - Observables and Subjects in Practice (Part 2) Step 3: Talking to other view controllers via subjects Phần này ta sẽ connect ViewController chính của ta với PhotosViewController, để người dùng có thể chọn ảnh tuỳ ý từ album ảnh của họ. Trước hết, ta comment phần hard-code ...

Tác giả: Trần Trung Dũng viết 17:09 ngày 07/09/2018

RxSwift: Bài 3 - Disposing and terminating

RxSwift: Bài 3 - Disposing and terminating 1. Đặt vấn đề: Nhắc lại là 1 observable sẽ không làm bất kì điều gì cho đến khi nó nhận một subscribe. Cái việc subscription này sẽ trigger hay báo hiệu cho một observable để bắt đầu phát ra các events, cứ thế cho đến khi nó phát ra sự kiện .error ...

Tác giả: Vũ Văn Thanh viết 17:09 ngày 07/09/2018

RxSwift: Bài 5 - Observables and Subjects in Practice (Part 1)

RxSwift: Bài 5 - Observables and Subjects in Practice (Part 1) Đến bài này, có lẽ mn đã hiểu observables và các loại subjects. Tuy nhiên thực tế để áp dụng như binding UI đến data model hay đưa ra một new controller và gán ngược output lại nó lại rất khó khăn chứ không đơn giản. Bây giờ mình ...

Tác giả: Trần Trung Dũng viết 17:08 ngày 07/09/2018

Tìm hiểu về phương pháp lập trình Test Driven Development (part2)

Mình sẽ tiếp tục part 2 về TDD Các bạn theo dõi part 1 tại đây Ở part 1 mình đã viết test 1 cho nhận vào một số chia hết cho 3, trả về chuỗi Fizz, bắt tay vào test 2 nào 2. Nhận vào một số chia hết cho 5, trả về chuỗi Buzz Trường hợp thứ 2 là hàm run() nhận vào một số n chia hết cho 5 (nhưng ...

Tác giả: Trần Trung Dũng viết 17:08 ngày 07/09/2018

Làm việc hiệu quả với Bitmap trong Android [Part 1]

Thuật ngữ Load Bitmap Efficiently Chúng ta biết rằng trong lập trình Mobile nói chung và Android nói riêng, Bitmap luôn được sử dụng rất nhiều để tạo Graphic Design cho ứng dụng bởi lẽ chúng sẽ tạo nên sự trực quan cho người dùng hơn là những dòng chữ khô khan. Một ứng dụng đẹp là một ứng dụng ...

Tác giả: Tạ Quốc Bảo viết 17:08 ngày 07/09/2018

RxSwift: Bài 6: RxCocoa (Part 2)

RxSwift: Bài 6: RxCocoa (Part 2) Retrieving data from the OpenWeather API Trong ApiController, ta thay fake data bằng đoạn code sau: func currentWeather(city: String) -> Observable<Weather> { return buildRequest(pathComponent: "weather", params: [("q", city)]) .map { json in ...

Tác giả: Trần Trung Dũng viết 17:07 ngày 07/09/2018

RxSwift: Bài 1 - Observable và Just, Of, From

RxSwift: Bài 1 - Observable và Just, Of, From Đôi lời: Mình viết loạt bài này không phải là loạt bài tut, nó chỉ là những kiến thức mình tự hiểu và tự take note dưới góc nhìn của một newbie. Hiện giờ tài liệu RxSwift khá mơ hồ và đọc rất thiếu chiều sâu. Do đó, mình muốn viết 1 loạt bài cho ...

Tác giả: Vũ Văn Thanh viết 17:06 ngày 07/09/2018

Manipulating Browser's History With HTML5 History API

Background Browser provided ways for user to navigate around the web by using something call a URL(Uniform Resource Locator) either by clicking on the link or entering it directly into the browser's location bar. Browser making a request to the server identify by the URL and the server perform ...

Tác giả: Tạ Quốc Bảo viết 17:06 ngày 07/09/2018

RxSwift: Bài 4 - Subjects (Part 3) - Variables

RxSwift: Bài 4 - Subjects (Part 3) - Variables 1. Giới thiệu: Như để cập ở Part 1, 1 Variable có các tính chất của BehaviorSubject và lưu trữ giữ liệu hiện tại của nó như là trạng thái hiện tại của nó. Bạn có thể truy cập giá trị hiện tại này thông qua property "value" của nó. Và bạn cũng ...

Tác giả: Vũ Văn Thanh viết 17:06 ngày 07/09/2018

Laravel Controller: Ngưng ngược đãi (1)

Một dự án khi có nhiều người cùng tham gia, thời gian kéo dài, chức năng tăng lên thì nảy sinh cả tỉ tỉ vấn đề nhức nhối. Một trong những vấn đề đó chính là controller càng ngày càng như 1 đống hổ lốn, khó đọc, khó bảo trì và rất... bự. Chỉ cần nghĩ đến việc fix 1 bug nhỏ nhỏ lúc đăng nhập thôi ...

Tác giả: Trịnh Tiến Mạnh viết 17:05 ngày 07/09/2018

RxSwift: Bài 2 - Subscribing to observables

RxSwift: Bài 2 - Subscribing to observables 1. Khái niệm Subscribe (đăng kí) đến một RxSwift observable khá giống như NotificationCenter, thay vì addObserver(), ta dùng subscribe(). Không giống như NotificationCenter, cái mà ta hay dùng .default như là 1 singleton instance, mỗi observable ...

Tác giả: Hoàng Hải Đăng viết 17:05 ngày 07/09/2018

Phân tích connect() và mapStateToProps()

Giới thiệu Chào các bạn, bài viết này mình sẽ chia sẻ hai khái niệm (function) chính mình sẽ làm việc, chạm mặt rất nhiều lần trong một ứng dụng React và Redux các bạn nhé, đó chính là connect() và mapStateToProps(). Mình hi vọng qua bài viết này, đâu đó giúp cho các bạn mới bắt đầu với React và ...

Tác giả: Tạ Quốc Bảo viết 17:04 ngày 07/09/2018

RxSwift: Bài 4 - Subjects (Part 2) - BehaviorSubject và ReplaySubject

RxSwift: Bài 4 - Subjects (Part 2) - BehaviorSubject và ReplaySubject 1. BehaviorSubject BehaviorSubject tương tự như PublishSubject ngoại trừ chúng sẽ nhận giá trị gần nhất của .onNext event đến những new subscribers . Xem sơ đồ sau: Dòng thứ nhất là BehaviorSubject, 2 dòng tiếp theo ...

Tác giả: Vũ Văn Thanh viết 17:03 ngày 07/09/2018

RxSwift: Bài 4 - Subjects (Part 1) - PublishSubject

RxSwift: Bài 4 - Subjects (Part 1) - PublishSubject 1. Đặt vấn đề Ở ba bài trước, bạn đã biết observable là gì? Làm sao để tạo ra nó, làm sao để subscribe nó, làm sao để dispose khi đã subscribe xong. Trong thực tế, ta muốn add new values vào observable at runtime mà sau đó sẽ emit đến ...

Tác giả: Hoàng Hải Đăng viết 17:03 ngày 07/09/2018

Programming languages' milestones: An overview from 1960 - present (the last part)

Previously on Programming languages' milestones: An overview from 1960 - present : Part 1 : (Full article is provided on this url: https://viblo.asia/p/programming-languages-milestones-an-overview-from-1960-present-part-1-yMnKMq2rK7P ) Part 2 : (Full article is provided on this url: ...

Tác giả: Vũ Văn Thanh viết 17:02 ngày 07/09/2018

Push Notification trên android với Azure Notification Hubs (ANH)

Việc push notification trên android không còn quá xa lạ với các ứng dụng đặc biệt với các ứng dụng sử dụng internet. Có rất nhiều library, hay các service hỗ trợ như Google Cloud Message (GCM) Amazon Simple Notification Service (ADM) Với ANH cũng tương tự như các service trên nhưng sử dụng ...

Tác giả: Trần Trung Dũng viết 17:02 ngày 07/09/2018

Quản lý sự kiện trong ứng dụng với Laravel Event

Cách đây 3 năm, tôi có một dự án web mà lúc đó mới chỉ biết sơ sơ về PHP, thế rồi với từ khóa “best PHP framework” Google đã trả lời hàng triệu kết quả mà chỉ cần lướt qua trang đầu, tôi đã thấy câu trả lời đó là Laravel, một cái tên thật lạ tai. Trước đó, tôi đã từng được nghe đến ...

Tác giả: Tạ Quốc Bảo viết 17:02 ngày 07/09/2018

Swift Closure

Documents Apple References Blog Blog What is closure? Closures are self-contained blocks of functinality that can be PASSED around and USED in your code -> Closure is a 1st class Object Closures can CAPTURE and STORE REFERENCES to any constants and variables from the ...

Tác giả: Trịnh Tiến Mạnh viết 17:01 ngày 07/09/2018

Multiple File Uploads sử dụng Dropzone trong Ruby on Rails

Trong bài viết này, chúng ta sẽ đi tìm hiểu cách upload nhiều file trong ứng dụng Ruby on Rails sử dụng một thư viện javascript là Dropzone. Dropzone là một thư viện javascript cho phép upload nhiều file thông qua Ajax, cho phép drag and drop file hoặc thư mục trên các trình duyệt khác nhau. Bài ...

Tác giả: Hoàng Hải Đăng viết 17:00 ngày 07/09/2018