Friday, May 22, 2015

(CI) Hướng dẫn thiết lập Jenkins cho dự án về iOS trên GitHub

Thiết lập Jenkins cho dự án về iOS trên GitHub

Jenkins là một server continuous integration, theo mã nguồn mở vì thế bạn có thể dễ dàng sử dụng và tuỳ chỉnh theo ý bạn. Trang chủ của Jenkins tại đây.
Sau đây là hướng dẫn của mình khi bạn cài đặt Jenkins cho dự án về iOS trên Yosemite.

Cách cài đặt Jenkins:

Bạn vào trang chủ của Jenkins và download gói jenkins theo từng môi trường và cài đặt chúng trên máy của bạn:


Các hệ thống quảng cáo giúp kiếm tiền từ blog

Khi các blogger nghĩ đến quảng cáo trực tuyến, Google AdSense là cái tên đầu tiên xuất hiện trong đầu họ. Google đã tạo được một hình ảnh tuyệt vời trên thị trường quảng cáo trực tuyến bằng sản phẩm AdSense. Dẫu vậy, Google không phải là trò chơi duy nhất trên phố. Là một webmaster, trách nhiệm của bạn là phải tìm các cách kiếm tiền khác nhau cho website của mình. Như tất cả chúng ta đều biết, đặt hết trứng vào một giỏ không phải là việc không ngoan. Tôi đã từng ghé qua không biết bao nhiêu blog, ở đó họ chẳng có cách kiếm tiền nào khác ngoài AdSense.

Tuesday, May 19, 2015

(Crash Report) Tổng quan về những công cụ hỗ trợ quản lý crash report trên iOS

Khi bạn viết ứng dụng không thể tránh những trường hợp ứng dụng của bạn bị crash. Vì thế bạn nên quản lý những crash đó để có thể dễ dàng fix bug 1 cách nhanh chóng.

Hiện tại có những tool hỗ trợ các bạn làm việc đó như:





(Swift) Hướng dẫn sử dụng Playground trong XCode

Playground là một môi trường tương tác với code Swift, nó có thể hiển thị kết quả trong mỗi câu lệnh mà không cần compile hay run một project.

Sử dụng playground để học và khám phá ngôn ngữ Swift, có thể tạo prototype cho ứng dụng của bạn.

Khởi tạo file:

Có 2 cách để khởi tạo file:
- Cách 1 - Không có project: Bạn mở XCode, trên thanh công cụ bạn chọn File -> New -> Playground:


Monday, May 18, 2015

(Swift) So sánh giữa class và struct trong ngôn ngữ swift

So sánh giữa class và struct trong ngôn ngữ swift, theo tài liệu của Apple nói như sau: "One of the most important differences between structures and classes is that structures are always copied when they are passed around in your code, but classes are passed by reference."

Sau đây là ví dụ giữa class và struct để cho các bạn dễ hiểu.

Thursday, May 14, 2015

(CI) Hướng dẫn thiết lập Travis CI cho iOS


- Travis CI là gì?
- Travis CI là Continuous Integration, miễn phí và open source trên GitHub. Dùng để build project và chạy những unit test để báo cho người quản lý biết mỗi khi bạn pull và push code lên GitHub. Rất hữu ích khi project của bạn có dùng unit test, và tự tin mỗi khi release một phiên bản nào đó.

Trang này cho phép đánh giá những dự án đang làm với công nghệ này, bạn có thể xem qua những đánh giá giữa Jenkins, Travis CI và Circle CI tại đây. Travis CI hỗ trợ chạy trên iOS đơn giản, tích hợp sẵn trên GitHub, vì thế mọi người dùng iOS thích dùng Travis CI.

(Kinh nghiệm) Auto layout và Size classes trong iOS - Phần 2

Ở phần 1 mình đã hướng dẫn căn bản về Auto Layout và Size Classes, nếu bạn chưa biết gì về Auto Layout trên iOS xin hãy xem qua phần 1 tại đây. Phần 2 này mình xin đi chi tiết về cách dùng những constraint khi làm Auto Layout.

  • Tab thứ 1 (Align): Tab này giúp chúng ta canh chỉnh đối tượng này theo đối tượng kia, vì thế ta phải chọn từ 2 đối tượng này trở lên thì mình mới có thể sử dụng được. Lưu ý: Trước tên có icon để minh hoạ từng chức năng. 

Wednesday, May 13, 2015

(Kinh nghiệm) Auto layout và Size classes trong iOS - Phần 1

Trước đây khi viết những ứng dụng chạy trên nhiều màn hình hoặc hỗ trợ màn hình xoay ngang, xoay dọc mọi người hay dùng code để có thể chỉnh được những vị trí cũng như kích thước của những đối tượng. Hoặc có thể dùng Autosizing để tự động canh chỉnh những đối tượng nhưng không tối ưu và tiện lợi cho lắm, hình minh hoạ ở dưới:


Thursday, May 7, 2015

(Code Coverage) Hướng dẫn thiết lập Code Coverage cho iOS

- Code coverage là gì?
- Code coverage là cách kiểm tra những chức năng bạn đã làm có viết Unit Test hay chưa và đã viết qua những đoạn code nào rồi. Bạn có thể kiểm tra bằng mắt thường nhưng chỉ với 1 project nhỏ, vì thế thông qua Frankencover bạn có thể tạo những báo cáo của code coverage bằng những file html và có màu sắc cho từng dòng và phương thức để dễ dàng kiểm tra 1 cách nhanh chóng và dễ dàng. Ngoài cách này ra có nhiều cách khác bạn có thể tìm hiểu thêm trên mạng.

Phân biệt những kiểu khai báo file #include, #import và @import trong Objective C (Có hình ảnh minh hoạ)

Trong ngôn ngữ lập trình Objective C, khi khởi tạo 1 đối tượng hệ thống sẽ thường sinh ra 2 file có đuôi khác nhau là file ".h" và file ".m". Vậy câu hỏi được đặt ra là khi ta khai báo file nên khái báo trong file .h hay file .m ? Chúng có sự khác biệt nào không? Hãy cùng mình phân tích sự khác biệt khi khai báo trong từng loại file.

Ví dụ: Mình tạo 3 đối tượng có tên như: ObjectA, ObjectB, ObjectC. Trong ObjectA mình có dùng ObjectB, trong ObjectB mình có dùng ObjectC và trong ObjectC mình có dùng ObjectA. Những đối tượng này đều có thuộc tính là "name".

- Trường hợp 1: Giả sử mình khai báo bằng #include trong những file .h. Như hình sau: