CI/CD với Travis-ci và Fastlane (Part 1)

Có lẽ bây giờ khái niệm CI/CD đã không còn quá xa lạ và được ứng dụng vào qui trình sản xuất phần mềm của nhiều công ty. Tuy nhiên mình thấy còn nhiều nhóm phát triển phần mềm vẫn chưa áp dụng vì thế hôm nay mình sẽ giới thiệu và CI/CD những tiện ích của chúng cho nhóm phát triển ứng dụng IOS với 2 ...

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

Quản lý bộ nhớ trong Swift - Tổng hợp các hiện tượng nguy hiểm cho bộ nhớ và cách giải quyết

Chúng ta đã biết cách hoạt động của ARC trong swift và khi nào xảy ra của hiện tượng strong reference cycle, trong bài này chúng ta sẽ cùng tìm hiểu cách cách để giải quyết hiện tượng nguy hiểm trên, đồng thời sẽ tìm hiểu thêm một số hiện tượng nguy hiểm khác và cách giải quyết chúng thông bài này. ...

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

Chấm phiếu điền trắc nghiệm bằng OpenCV và Deep Learning

Phiếu trắc nghiệm không phải lúc nào cũng có dạng chuẩn..? Thi trắc nghiệm đã và đang trở thành xu hướng bởi tính khách quan (Không phụ thuộc người chấm) của nó. Tuy nhiên, việc chấm một số lượng lớn bài thi trắc nghiệm đôi khi lại là một công việc không hề "hứng thú </p> <div class= Tác giả: Tạ Quốc Bảo viết 18:13 ngày 12/08/2018

CFNetwork Guide - Làm việc với Stream

Phần này ta sẽ xem xem làm thế nào để create, open và check errors khi làm việc với read và write stream. Đồng thời ta cũng sẽ nói về làm thế nào để đọc từ read stream và ghi vào write stream, cũng như làm thế nào để tránh bị blocking khi đọc và ghi vào một stream, và cuối cùng là làm thế nào để ...

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

Animating Gradients với iOS ( CPU = 0 )

Một bài toán khó là tổ hợp của nhiều bài toán dễ - Một ứng dụng phức tạp cũng là tổ hợp của nhiều kiến thức cơ bản. Chính vì thế mình xin phép trình bày về một tutorial hướng dẫn custom 1 animating gradient. Điều đặc biệt ở đây là khi chạy thì mình check CPU = 0 quả là rất ngon đúng không ạ! ...

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

Top 10 Array (List) method trong dart nên biết

1.forEach(void f(E element)) → void Thực thi hàm f cho từng phần tử trong list 2.map<T>(T f(E e)) → Iterable<T> Trả về một Iterable mới, sau khi transform từng phần bằng hàm f 3.contains(Object element) → bool Trả về true nếu trong list có chứa phần tử bằng ...

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

[RFP] Học Rx bằng cách tự xây dựng Observable

Đối với lập trình viên chúng ta, để học một công nghệ mới sẽ có những cách sau Đọc về nó Làm thử với nó Hack, viết lại một thứ có tính năng tương tự Đối với 2 mục đầu tiên đã có rất nhiều bài viết đề cập tuy nhiên cách thức Rx hoạt động như thế nào thì có vẻ như rất ít người nói tới. Bài ...

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

Hướng dẫn tạo và cấu hình Ethereum Consortium Network trên Azure

1.1. Tổng quan Giải pháp Ethereum Consortium Network từ Microsoft Azure cho phép triển khai nhanh chóng một mạng blockchain Ethereum trên nền dịch vụ đám mây của Azure, từ đó giúp nhà phát triển phần mềm có môi trường để phát triển ứng dụng phân tán trên nền Ethereum mà không phải quan tâm nhiều ...

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

SOLID Principles #3: Liskov Substitution Principle

Tiếp tục series tìm hiểu về nguyên lý SOLID, hôm nay chúng ta tiếp tục với nguyên lý thứ 3: Liskov Substitution Principle. Cùng nhau hiểu rõ về nguyên lý này nha. Trong một chương trình, các object của class con có thể thay thế class cha mà không làm thay đổi tính đúng đắn của chương trình ...

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

Một số note cho người mới làm quen với Unit Test trong Laravel

Mới tập tành viết Unit Test, cứ nghĩ nó cũng là code đơn giản ý mà, ai ngờ đơn giản không tưởng. Nhiều những lỗi nhỏ nhỏ quá nên quyết định note lại đây. Có lẽ nó sẽ có ích nhỉ. 1. Đặt tên file test. Ví dụ mình viết test cho một class và đặt tên là Admin. đến lúc test, run ...

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

Hướng dẫn Kiểm thử Thăm dò ( Exploratory Testing ): Quy trình, Kỹ thuật và Ví dụ

Exploratory Testing là sự khai phá,nghiên cứu và học hỏi. Nó nhấn mạnh vào từng cá nhân và trách nhiệm của người Tester đó. Test case sẽ không được tạo ra trước nhưng Tester sẽ kiểm tra hệ thống một cách nhanh chóng. Họ sẽ tạm ghi chú những ý tưởng về việc cách test trước khi thực hiện test. Trọng ...

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

Fonts in XML

Android 8.0 (API 26) giới thiệu một tính năng mới, đó là Fonts trong XML, cái này sẽ cho phép bạn sử dụng các fonts như resource (giống như color, drawable ....). Yolo, các bạn có thể thêm font file vào trong res/font folder để đóng gói fonts như là resouce. Những fonts này sẽ được compile ...

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

[FuelPHP] Xác thực người dùng với driver SimpleAuth

Xác thực là một trong những phần vô cùng quan trọng trong các ứng dụng. Các framework bây giờ cũng cung cấp các package giúp lập trình viên quản lý tốt hơn việc xác thực người dùng này và FuelPHP cũng không phải là một ngoại lệ. Với FuelPHP, bạn có thể sử dụng package Auth và SimpleAuth để thực ...

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

[DOCKER] Những điểm cần lưu ý khi sử dụng docker

Mình cũng chưa làm việc với Docker thực sự lâu và chủ yếu là ở môi trường development nhưng cũng đã gặp khá nhiều vấn đề cần giải quyết với thằng này. Nên hôm nay mình sẽ tổng hợp lại một số chú ý rút ra từ kinh nghiệm của bản thân cũng như sau khi tổng hợp được chia sẻ qua một số blog mà mình tìm ...

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

Lập trình hướng đối tượng trong PHP - Phần 2

Ở phần trước mình đã có nói đến một số vấn đề về lập trình hướng đối tượng trong PHP như về 4 tính chất hay về Abstract Class, Interface... Để tiếp nội dung của các bài viết về OOP trong PHP, nội dung bài này mình sẽ nói về 1 số vấn đề như: Traits Namespaces Magic Functions Splat Operator ...

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

Nên học gì trong thời đại số 2018

Trong thời đại công nghệ số như bây giờ, IT đã bão hòa rồi và bạn có quá nhiều lựa chọn để học, bạn không biết nên chọn cái gì, bài viết này sẽ giúp bạn có cái nhìn chính xác hơn. Vì cá nhân mình làm android developer nên có thể những lời khuyên không hợp lý với các bạn nhưng hãy coi như một sự ...

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

Tự xây dựng blade directives trong Laravel

Như đã hứa hẹn, tháng này mình xin chia sẻ về làm thế nào để chúng ta có thể tự tạo Blade directives để tiện đường sử dụng trong Laravel project. Nếu bạn là beginner với Laravel, bạn có thể tìm hiểu Blade directives là gì và một vài điều cơ bản ở đây hoặc ngó qua bài viết trước của mình về những ...

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

Tự xây dựng Collapsible table section trên iOS

Bài viết sẽ hướng dẫn người dùng từng bước xây dựng một Collapsible table section sử dụng thuần code Swift3, không sử dụng storyboard và XIB Bài viết tập trung vào các kỹ thuật cơ bản khi làm việc với UITableView như tùy biến UITableViewCell, tự động resize chiều cao của UITableViewCell theo nội ...

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

Nhận dạng chữ cái viết tay sử dụng Deep Learning

Trí tuệ nhân tạo (Artifical Intelligent) hay học máy (Machine Learning) là một lĩnh vực đang được nhắc đến khá nhiều trong thời gian gần đây bởi tính ứng dụng của nó trong thực tiễn. Có khá nhiều ứng dụng của công nghệ học máy đã được áp dụng trong cuộc sống hàng ngày như: google dịch, xe ô tô tự ...

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

Sử dụng passport.js xây dựng kịch bản đăng ký và đăng nhập(P2)

Ở phần trước chúng ta đã làm ví dụ cơ bản sử dụng passport.js để xây dựng kịch bản đăng ký, đăng nhập sử dụng tài khoản local username , password . Các bạn có thể tham khảo lại tại đây: https://viblo.asia/p/su-dung-passportjs-xay-dung-kich-ban-dang-ky-va-dang-nhap-4dbZNEJyKYM Trong bài ...

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