viblo.asia

5 điều cần chú ý khi viết Dockerfile

Ở trong bài viết này, mình dựa trên kinh nghiệm cá nhân trong việc quản lý Docker server và thực tế ở những dự án khác trong công ty để đúc kết tóm lược lại những điều cần lưu ý khi viết Dockerfile 1. Không để các file không cần thiết ở trong thư mục của Dockerfile Khi thực hiện lệnh docker build thì context (trạng thái hiện tại của folder) sẽ được transfer đến Docker demon. Cụ thể đó là ở trong thư mục chứa Dockerfile tất cả...

viblo.asia

[Swift4] Sử dụng UITextView để hiển thị text trong file định dạng RichTextFile(rtf)

Vâng mình xin giới thiệu cách sử dụng UITextView để hiển thị text trong các file định dạng (*.rtf) Luồng thao tác sẽ như sau Import rtf vào mainbundle từ file rtf create NSAttributeStrings Assign vào property attributedText của UITextView Import rtf vào mainbundle Như ở ví dụ của mình mình sử dụng file Terms.rtf để import vào main bundle Từ file rtf create NSAttributeStrings Ở file code dưới đây mình đã tạo method getTermAttributeString. và trong đó tạo...

viblo.asia

Problem của việc set date là 31-12-2017

Vấn đề này đã từng được nêu từ năm 2014, tuy nhiên thời gian gần đây mình lại được nghe lại lỗi này. Và năm nay cũng tròn năm có thể mắc lỗi đó, nên trong bài viết này mình xin được chia sẻ với các bạn lỗi set date đó. Lỗi đó chính là Nếu ta dùng hàm dateFormat của DateFormater là YYYY-MM-dd để set date thì khi ta truyền vào 2017-12-31 , kết quả sẽ trả lại giá trị đó là 2018-12-31 Vấn đề này không liên quan đến Swift mà đó...

viblo.asia

Sử dụng Codable được support ở Swift 4 để viết thử một Decoder (CSVDecoder)

Mở đầu Như chúng ta đã biết Codable đã được thêm vào ở Swift4. Thực tế thì việc Encode, Decode không phải chỉ JSON mới có thể làm được. ở Foundation cũng đã có PropertyListEndcoder , PropertyListDecoder. Ngoài ra, việc sử dụng một Protocol Decoder Encoder độc lập , với lợi ích mà Codable mang lại , chúng ta có thể tuỳ ý xử lý biến đổi dữ liệu một cách an toàn. Vì vậy mà hôm nay để hiểu hơn về cơ chế hoạt động của Decoder, chúng...

viblo.asia

Bàn về 12 nguyên tắc trong Agile (Phần 2)

***Ở phần một mình và các bạn đã trao đổi về 6 nguyên tắc đầu tiên trong Agile với bài : Bàn về 12 nguyên tắc trong Agile (Phần 1) Hôm nay chúng ta hãy cùng tiếp tục bàn về 6 nguyên tắc còn lại * 7. Phần mềm chạy được là thước đo chính của tiến độ “Working software is the primary measure of progress.” Kể cả bạn đang quản lý dự án non-software thì cũng đừng bỏ qua nguyên tắc này bời vì nó nói đến software. Working ở đây chính là...

viblo.asia

Bàn về 12 nguyên tắc của Agile (Phần 1)

Thời gian gần đây chúng ta đã được nghe nói và tìm hiểu về Agile khá là nhiều. Nhắc đến Agile là chúng ta không thể không nhắc tới 4 tuyên ngôn và 12 nguyên tắc phải không? ^^ 4 tuyên ngôn thì rất cô đọng và dễ hiểu với tất cả chúng ta rồi. Còn 12 nguyên tắc theo ý kiến cá nhân mình thì nó khá là dài và hơi khó hiểu, khó để ngấm vào chúng ta. Một số tài liệu tiếng Việt cũng có nói đến nhưng vẫn còn sơ xài. Chính vì vậy...

viblo.asia

Swift 3.0 Coding Standard

Bài viết được tham khảo từ nhiều nguồn nên có thể chưa được đầy đủ, rất mong có sự bổ sung từ bạn đọc 1. Naming 1.1 Đặt tên với vai trờ và mục đích rõ ràng dễ hiểu Class, Method, và các biến instance ... đều cần được đặt tên với vai trò và mục đích rõ ràng. Các biến bên trong Method hoặc những biến sử dụng trong phạm vi hẹp thì có thể đặt tên ngắn gọn giản lược cũng được 1.2 Camel case Class, Method sử dụng...

viblo.asia

[Swift] Thực hành Clean Architecture ① (Tầng Domain)

Lời mở đầu Dựa theo cuốn sách "Clean Architecture" đang khá hot thời gian gần đây, mình xin được tóm tắt với các bạn từng phần của nó. Ở phần 1 là tầng Domain Cách phần sẽ làm Tầng UI View ViewController Presenter Tầng Domain UseCase Repository Entity Tầng Data Repository Entity DataStore Giải thích ví dụ Usecase này sẽ access để lấy thông tin của User Layer Category Class Name Description Domain Entity User Class quản lý thông tin User (mail,...