Thursday, April 28, 2016

[Swift] Thiết lập thư viện Perfect để viết cho server-side

Perfect là gì ?

Perfect là một web-server và toolkit cho phép các nhà phát triển sử dụng ngôn ngữ lập trình Swift để xây dựng những ứng dụng và những REST service. Nó cho phép những developer có thể phát triển ứng dụng cả client-side và server-side trong cùng 1 workspace, cùng 1 ngôn ngữ lập trình Swift. Nó là một bộ khung hoàn hảo cho những kỹ thuật cloud và mobile.




Tại sao lại sử dụng Perfect?

- Hiện tại Swift đã được Open Source vì thế nó sẽ còn phát triển nhanh và mạnh, do đó Swift là ngôn ngữ của tương lai. Nếu bạn học và nắm bắt cơ hội này chắc bạn sẽ có nhiều cơ hội phát triển sự nghiệp của mình trong tương lai hơn nữa.

- Đa số những dân lập trình trên iOS chỉ biết về Objective-C hay Swift hoặc cả 2, vì thế nếu bạn muốn viết cho server-side thì bạn phải học thêm ngôn ngữ PHP hoặc Java để có thể viết cho server-side. Nếu bạn dùng thư viện Perfect thì bạn khỏi cần quan tâm đến việc học thêm ngôn ngữ khác cho công việc đó, bạn có thể dễ dàng debug cả bên client lẫn server đều được.

- Hiện tại Perfect cũng đang trong giai đoạn phát triển và đã có 1 phiên bản release là Perfect version 1.0. Code của thư viện Perfect cũng được open source trên GitHub, nếu các bạn muốn học thêm cách người ta viết library đó như thế nào thì cũng có thể tải về và đọc code.

- Swift và Perfect có thể chạy trên nền tảng Linux vì thế các bạn có thể viết để deploy trên Linux server. Hiện tại trên mạng cũng có nhiều hướng dẫn về việc này.

Làm thế nào thiết lập thư viện Perfect trên XCode?

Hiện tại mình chưa thấy đường link trên cocoapods cho thư viện này, vì thế cách mình hướng dẫn chỉ tải và dùng trên phiên bản release 1.0 như ở trên. Mình đang dùng OS X 10.11 và XCode 7.3 (7D175). Trên GitHub của Perfect nói phải như vậy mới build được thư viện của họ. Nên nếu ai đang xài phiên bản cũ hơn hãy update lên rồi mới chạy được nha.

Demo này mình viết 1 ứng dụng trên iOS truy suất REST api, có trả về dữ liệu là 1 chuỗi HelloWorld theo dạng GET và POST:

Wednesday, April 20, 2016

(Kinh nghiệm) Cách xử lý Exception trong Objective-C có Demo

Có nhiều người hỏi mình có nên sử dụng try/catch để xử lý exception khi lập trình trên iOS không? Theo kinh nghiệm mình làm trên Objective-C được 5 năm, thì mình xin trả lời là có thể có hoặc không có cũng được, miễn sao bạn bắt được hết những trường hợp exception đó bằng câu lệnh if, để có thể không xảy ra tình trạng crash ứng dụng và chạy theo đúng yêu cầu của khách hàng là được.


Tuesday, April 12, 2016

Phân biệt biến kiểu Property, Public, Protected, Private trong ngôn ngữ Objective C

- Theo kinh nghiệm làm việc của mình với các bạn trong nhóm khi lập trình Objective-C và cũng đọc qua code của những project cũ. Ít khi nào mọi người để ý và khai báo đúng với ý đồ của từng đối tượng, và vi phạm quy tắc tính đóng gói, tính bảo mật thông tin của đối tượng trong lập trình hướng đối tượng (Tham khảo lý thuyết Lập trình hướng đối tượng tại trang Wiki).

- Theo ngôn ngữ lập trình Java, người ta khuyến khích mỗi khi dùng biến kiểu public thì nên đặt 1 biến private và hỗ trợ những hàm getter/setter để truy suất biến private đó.
    + Nguyên nhân họ nói là đảm bảo tính đóng gói, và nếu sau này có thay đổi gì trên biến đó bạn có thể sửa được dễ dàng, chi tiết về vấn đề này ở đây.
    + Nói tóm tại thì nguyên nhân chính là có thể kiểm soát được truy xuất đến giá trị của 1 đối tượng từ bên ngoài, có thể dễ dàng mở rộng code bằng cách override lại những hàm getter/setter.

- Các bạn có thể áp dụng nguyên tắc đó từ bên Java qua ngôn ngữ lập trình Objective-C cũng được. Nhưng nên nhớ khi khai báo biến kiểu property system ObjC tự động sinh những hàm getter/setter và quản lý dùm bạn. Nếu bạn cần thêm những việc xử lý nào khác thì override lại phương thức getter/setter của property đó.

- Nếu cái gì public đều dùng property hay phương thức getter/setter hết thì những ngôn ngữ lập trình hướng đối tượng nên bỏ từ khoá public luôn đi cho rồi.

- Hiện tại mình vẫn chưa tìm ra tài liệu chính thống từ Apple nói nên dùng hay không nên dùng biến property cho biến public hay không. Vì thế chúng ta sẽ không bàn về vấn đề đó đúng hay sai. Tuỳ theo trường hợp mình áp dụng là được, hiện tại mình có những trường hợp như sau:
    + Các bạn mới học lập trình thì mình khuyên nên dùng property để khai báo biến public, để tránh những rủi ro mà bạn không lường trước được.
    + Dùng property để khai báo biến public để có 1 coding standard cho team và đảm bảo tính đóng gói trong lập trình hướng đối tượng.
    + Khi bạn cần tối ưu hoá code thì nên lưu ý vấn đề truy suất trực tiếp thông qua @public này, có thể giúp bạn được phần nào tốc độ xử lý.

- Vì thế mình viết bài này để phân tích khi nào thì cần dùng biến theo Property hay iVar (Public, Protected, Private) để các bạn tham khảo khi viết trên ngôn ngữ Objective-C (Swift mình sẽ nghiên cứu và phân tích sâu về nó sau). Các bạn có kiến thức tốt lập trình hướng đối tượng khi viết bằng các ngôn ngữ khác như Java, PHP,... có thể chuyển code đó qua Objective-C uyển chuyển và ngắn gọn. Thực chất ra cách khai báo những biến như vậy cũng rất giống những ngôn ngữ lập trình khác nhưng ít khi nào dân lập trình trên iOS bằng Objective-C dùng.

- Nếu bạn có 1 khách hàng khó và họ định nghĩa sẵn hệ thống của họ theo từng sơ đồ như class diagram đàng hoàng. Họ bắt bạn phải viết code theo đúng như thiết kế của họ thì chắc chắn bạn phải làm theo. Hiện tại mình thấy đa số dân lập trình toàn viết code làm sao chạy được, còn tính đúng đắn hay thiết kế như thế nào cho hợp lý thì thường bỏ qua. Thành ra code dư thừa rất nhiều và khó bảo trì sau này.

- Giả sử mình có 1 lớp tên là PCObject được định nghĩa như sau:

Monday, April 11, 2016

95% người dân không biết ý nghĩa của các con số dưới đáy chai, hộp nhựa

Ở phía dưới đáy chai hay hộp thường có hình tam giác với mũi tên và một con số nằm giữa. Có lẽ ít ai để ý đến ký hiệu vô cùng quan trọng này.

Một số gia đình và cửa hàng thực phẩm thấy sử dụng lại chai, hộp nhựa để đựng nước, dầu ăn, dấm... Nhiều người cho rằng, các chai, hộp nhựa này sau khi đã được rửa sạch thì an toàn mà không biết rằng độc tính vẫn có thể phát tác trong quá trình sử dụng.
Gần đây, câu chuyện về cô bé 12 tuổi sống tại Tiểu vương quốc Ả Rập Thống nhất liên tiếp dùng một chai nước khoáng để đựng nước uống và mắc bệnh ung thư, đang trở thành chủ đề nóng trên nhiều diễn đàn.
Nguyên nhân chính là do chai nước chứa chất liệu gây độc hại khi sử dụng quá nhiều lần và gây bệnh ung thư. Chai nước khoáng thông thường hoặc chai soda khi đến nhiệt độ 70 độ C sẽ dễ bị biến dạng và giải phóng ra các độc chất.
Phía dưới đáy chai nước, hộp đựng thuốc hay thức ăn thường có ký hiệu hình tam giác với các mũi tên. Ở giữa hình tam giác là một con số cụ thể.
Chẳng hạn, bình nước uống của học sinh hay có số 7; chai nước tinh khiết, chai sữa hoặc nước ép trái cây thường có số 1; các chai dầu ăn, các lọ mỹ phẩm hay có số 2; còn các hộp mỳ ăn liền bằng nhựa có số 5 dưới đáy...
Thế nhưng, ít ai quan tâm hay tìm hiểu đến ý nghĩa của hình tam giác và những con số này.
Số 1 có nghĩa là PET (nhựa polyethylene terephthalate). Các chai nhựa đựng đồ uống khi tái sử dụng nếu đựng nước nóng quá 70 độ C không chỉ biến dạng mà còn phân giải ra các chất có hại cho sức khỏe.
Các nhà khoa học cũng phát hiện ra rằng, chế phẩm nhựa này nếu sử dụng quá 10 tháng có thể sinh ra các chất gây ung thư.


Ký hiệu số trong hình tam giác dưới đáy chai nước khoáng

(iBeacon)Công nghệ iBeacon là gì?

iBeacon là nhãn hiệu hàng hoá của Apple cho một hệ thống định vị trong nhà, mà Apple gọi là "thế hệ mới của bộ phát chi phí thấp thấp được hỗ trợ có thể thông báo cho thiết bị iOS v7 về sự hiện diện của nó".Chúng cũng có thể được sử dụng bởi hệ điều hành Android. Công nghệ này cho phép một thiết bị iOS hoặc phần cứng khác để gửi các thông báo đẩy cho các thiết bị iOS gần đó.



Tuesday, April 5, 2016

[Certificates] Hướng dẫn cách tạo và quản lý certificate key khi lập trình trên iOS

Giới thiệu:

Apple bắt buộc những nhà phát triển ứng dụng trên iOS, mỗi khi chạy ứng dụng trên thiết bị để debug, export ra file cài đặt (.ipa), hoặc đưa ứng dụng lên App Store đều phải có tài khoản developer của Apple.
Đây là sơ đồ quy trình từ lúc bạn mua tài khoản đến khi bạn release ứng dụng đó trên AppStore:
Trong bài này mình chỉ mô tả về những key của Apple cần thiết để bạn có thể cài ứng dụng lên trên device trong giai đoạn phát triển ứng dụng (Develop). Và sử dụng key theo dạng cá nhân trên nhiều máy tính trong cùng team.
Bạn có thể xem thêm chi tiết phần Distribute tại trang của Apple.