Skip to main content

Posts

Showing posts from May, 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: Sau khi cài đặt gói jenkins này thành công sẽ tự động chạy jenkins với địa chỉ  http://localhost:8080/  bạn có thể thay đổi lại trong config. Mỗi lần khởi động máy thì jenkins sẽ tự động chạy, nếu jenkins không tự động chạy bạn có thể khởi động jenkins trong thư mục /Applications/Jenkins, bằng cách dùng lệnh khởi động app bằng java -jar . Mặc định gói jenkins này chỉ chạy trên Java 6, vì thế trên Yosemite dùng Java 8 nên các bạn phải sửa nội dung file " jenkins-runner.sh " trong thư mục " /Library/Application\ Support/Jenkins/ " như sau: - Thêm đoạn này ...

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. Tôi đã trao đổi vấn đề này với Bratford Liedel của site ModemHelp.net và anh ta đưa ra một ý tưởng rất thú vị: Tại sao không lập một danh sách tất cả các cơ hội quảng cáo trực tuyến đang tồn tại cho các blog và chủ các site? Danh sách này sẽ là một phần của site mới về tài nguyên dành cho các webmaster, nó cho phép thảo luận và bình chọn cho các công ty quảng cáo đã được liệt kê. Site này sẽ sớm được ra mắt. Trong lúc chờ đợi site đó ra m...

(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ư: Fabric và Crashlytics của Twitter:  Công cụ này miễn phí . Bạn có thể dùng Fabric để config luôn Twitter và MoPub . Các bạn có thể vào trang Fabric đăng ký tài khoản và làm theo hướng dẫn của Fabric thì có thể config Crashlytics một cách dễ dàng và nhanh chóng. Fabric bắt bạn phải cài ứng dụng đó trên Mac OS để config Crashlytics, Twitter và MoPub. Sau khi đăng ký tài khoản và đăng ký project với Fabric bạn sẽ vào màn hình như sau: Mình tự tạo code để ứng dụng crash thì ứng dụng sẽ tự động gởi mail thông báo issue này và màn hình trên Fabric sẽ có hiển thị danh sách issues như sau,: Bạn có thể xem chi tiết đoạn code bị crash ở file nào, dòng nào. Khi bạn fix xong bug crash này thì trong từng issue crash có nút check để đóng issue này lại, tester có thể xem cái nà...

(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: Sau đó sẽ ra màn hình như sau: Bạn hãy nhập tên file và nền tảng nào (iOS hay Mac OS X), sau đó bạn nhấn nút 'Next' để tạo file. Cuối cùng sẽ hiển thị màn hình như sau: Màn hình playground có 4 phần chính như: Source editor:  Nơi bạn nhập code và những đoạn hướng dẫn (Bạn có thể format chúng sao cho hiển thị đẹp mắt) Results sidebar:  Hiển thị kết quả từng đoạn code trong source editor. Timeline slider:  Playback the evaluation of the playground updating any results views.  Time field:  Thiết lập số giây để playground thực hiện trong mỗi lần chạy. - Cách 2 - Có project: trên th...

(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. - Tạo 1 class tên là SomeClass, khởi tạo biến aClass với tham số là "Bob", sau đó gán biến aClass vào biến bClass. Đổi tên biến bClass thành "Sue".  Cuối cùng in tên của 2 biến đó ra màn hình thì chúng đều là "Sue" : class SomeClass { var name: String init(name: String) { self.name = name } } var aClass = SomeClass(name: "Bob") var bClass = aClass // aClass and bClass now reference the same instance! bClass.name = "Sue" println(aClass.name) // "Sue" println(bClass.name) // "Sue" -  Tạo 1 struct tên là SomeStruct, khởi tạo biến aStruct với tham ...

(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. Điều kiện trước tiên:  - Đã có 1 project trên GitHub. - Có tài khoản trên Travis CI. Nếu bạn chưa có thì hãy đăng ký thông qua tài khoản GitHub tại đây. - Project thiết lập sẵn unit test. Hướng dẫn thiết lập Travis CI với XCode và GitHub: Bước 1: Sau khi login vào tài khoản Travis CI bạn sẽ vào màn hình home với những thông tin ở góc trên bên trái như sau: Bạn nhấn vào dấu cộng kế bên ' My Repositories ' để đi q...

(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.   - Leading Edges : Dùng để canh 2 đối tượng đó theo cạnh bên trái. - Trailing Edges : Dùng để canh 2 đối tượng đó theo cạnh bên phải. - Top Edges : Dùng để canh 2 đối tượng đó theo cạnh ở trên. - Bottom Edges : Dùng để canh 2 đối tượng đó theo cạnh ở dưới. - Horizontal Centers : Dùng để canh 2 đối tượng đó ở chính giữa theo chiều ngang. - Vertical Centers : Dùng để canh 2 đối tượng đó ở chính giữa theo chiều dọc. - Baselines : Dùng để canh 2 đối tượng đó theo đường cố định. Mình thường dùng cái này để canh chỉnh Label . Để xem thêm thông tin...

(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: Vì thế từ lúc Apple phát hành ra iPhone 5, iPhone 5s với kích thước màn hình là 4 inch, làm phát sinh thêm vấn đề " Làm thế nào ta có thể thiết kế giao diện có thể chạy được trên nhiều màn hình? " mà không làm thay đổi nhiều code để có thể dễ dàng bảo trì ứng dụng. Apple mới phát triển chức năng Auto Layout và Size Classes để thực hiện nhiệm vụ này. Nếu bạn đã quen dùng Autosizing để thiết kế giao diện thì bạn có thể vẫn sử dụng chúng. Nhưng tuỳ theo từng dự án mà khách hàng hay người PM hoặc leader của bạn muốn bạn dùng công nghệ mới Auto Layout và Size Classes   để làm layout trên iOS mà không cần dùng bất cứ đoạn code nào và chỉ viết trên 1 storyboard...