Monthly Archives: February 2013

GameKit và Leaderboard trong lập trình IOS

I. Thông tin chung:
– GameKit là bộ công cụ hỗ trợ của Apple dành cho các lập trình viên về game có thể ghi nhận các thành tích của người chơi (Thành tích về cách chơi lẫn điểm số dành cho người chơi). Đây là một tính năng nên có của mọi trò chơi bạn phát triển, đơn giản vì nó rất dễ làm do được Apple hỗ trợ từ đầu đến cuối, bạn cũng tạo được tính tương tác giữa những người chơi và tạo ra những mục đích dành cho người chơi khi họ đạt đến một thứ gì đó.
– Tuy nhiên bài này đòi hỏi bạn phải có account chính thức trên AppStore mới có thể làm được vì muốn tạo một Game Center trên chương trình đòi hỏi chương trình phải được đăng kí trên Itune Connection và kết nối với server của Apple.
– Ngoài ra, GameKit cũng hỗ trợ cho lập trình viên những game thuộc dạng đi theo lượt (turn-based match) ngay từ trong framework và server của Apple.
* Cơ bản:
– Game Kit được chia làm 3 phần riêng biệt bao gồm: mạng (networking), Game Center và voice chat. Mặc dù cả 3 đều có vẻ giống giống nhưng về cơ bản thì chúng có những tác dụng riêng cho từng phần trong game.
a. Mạng (networking):
– Mạng lưới trong Game Kit cho phép chương trình có thể gửi và nhận những thông tin từ những máy khác nhau. Mạng lưới của Game Kit đưa ra cho bạn một giao thức để kết nối những máy nội bộ trong mạng Wi-Fi với nhau hay đơn giản là dùng Bluetooth để kết nối.
– Game Kit còn hỗ trợ tạo một mạng nội bộ (ad-hoc) bằng Bluetooth hay bằng kết nối không dây giữa các thiết bị IOS. Với sự ra đời của IOS 4.0, Game Kit giờ đây cho phép kết nối mạng lên tới 16 người cùng một lúc. Chúng ta sẽ tham khảo về phần này sau.

b. Game Center:
– Bản thân Game Center xử lý các công việc thuộc về xác nhận quyền thành viên (authentication), bạn bè, leaderboards, thành tích (achievement) và các thư mời (invitations). Game Center có chức năng như một mạng xã hội dành cho game.

c. Voice Chat:
– Voice Chat bản thân đã thể hiện rõ tính năng của nó cho phép người sử dụng có thể trò chuyện với nhau thông qua một kết nối mạng. API của nó bao gồm việc thu âm và phát lại những gì mà các ngừơi dùng nói với nhau.  Nó còn xử lý cả việc kết nối, truyền dẫn, lỗi và ngắt kết nối giữa các thiết bị.

II. Nội dung chính:
* Những khái niệm cần phải rõ:
– Leaderboard Reference: Đây là tên để tham khảo trên iTune. Tên này bạn sử dụng để tìm kiếm trên iTune Connect mà thôi. Tên này nên đặt theo cấu trúc dễ tìm tí như có tên của game và tên của leaderboard hướng tới.
– Leaderboard ID: Đây chính là thứ quan trọng nhất của leaderboard. Một khi đã đặt ID cho leaderboard bạn không thể thay đổi trong tương lai. Đây là thứ để xác nhận leaderboard nào được gọi trong chương trình.
– Score Format Type: Đây là kiểu dữ liệu được lưu trữ trong leaderboard. Trong đó có các dạng: Số nguyên, số thập phân tới hàng ngàn, thời gian và tiền bạc
– Sort Order: Bạn sẽ chọn cách sắp xếp cho leaderboard của bạn “từ thấp tới cao” hay ngược lại “từ cao tới thấp”
+ “Low to High” là sắp xếp điểm từ thấp nhất lên cao.
+ “High to Low” là từ cao nhất đến thấp nhất.
– Score Range: Định khoảng cho điểm số mà bạn đưa vào. Trong khoảng từ -2^63 đến 2^62 -1.
+ Tất cả các điểm số ngoài vùng bạn chọn sẽ bị xóa hết.
+ Một khi bạn chọn hoặc thay đổi vùng này thì những điểm số ở ngoài vùng bạn chọn sẽ mất không thể khôi phục được, hãy cẩn thận nhé.

— Đang tổng hợp các mã nguồn của chương trình để đưa lên

Iphone 5 và giới trẻ hiện nay

I. Giới thiệu chung:

Có một bài viết về việc “Chiếc iphone 5 giá hơn tấn gạo và nỗi xấu hổ của thế hệ trẻ?” đánh giá về việc có nên không khi mua một thứ đắt tiền như vậy trong khi đất nước còn nghèo.

Theo ý kiến của tôi là nên. Bạn nên biết là nhu cầu của thế giới đang thay đổi. Bạn không sử dụng những công nghệ mới nhất của thể giới thì không có cách nào bạn hiểu và xâm nhập vào các thị trường đầy tiềm năng như Mỹ, Nhật Bản được. Bạn không biết các điện thoại thông minh (smartphone) mới nhất có các tính năng gì, có thể làm được gì và trải nghiệm ra sao thì giống hệt như bạn đang học lập trình chay trong các trường đại học Việt Nam hiện nay. Làm lý thuyết thì rất hay, code cực giỏi nhưng sản phẩm thì chả ai mua vì thiết kế quá tồi. Người dùng quan tâm đến những gì họ trải nghiệm chứ không phải những thứ mà bạn viết trên giấy.

II. Nội dung chính:

Bạn nói nước chúng ta nghèo. Nhưng thực sự bạn có hiểu là nghèo vì cái gì không? Chúng ta đang bán tài nguyên “rừng vàng, biển bạc” cho các cường quốc. Nếu hết tài nguyên thì chúng ta còn lại gì? Chúng ta phải thoát khỏi việc bán tài nguyên để chuyển sang bán chất xám cho các nước phát triển. Còn nơi đâu thích hợp hơn thị trường di động còn non trẻ với những ứng dụng chưa thực sự hoàn chỉnh. Câu hỏi là làm sao bạn có thể gia nhập vào thị trường này nếu thực sự bạn còn không có một chiếc điện thoại thông minh?

* Những ưu điểm khi sử dụng smartphone:

– Bạn có thể sử dụng được các ứng dụng thoại miễn phí, nhắn tin miễn phí

– Cập nhật dữ liệu thường xuyên hơn và tự động giảm thời gian tiêu hao xuống

– Đọc báo, lướt web

– Chụp hình

– Ghi chú, eBook.

– Kết bạn, giữ mối liên hệ với bạn bè

* Hãy nhớ lại rằng quá trình này đã xảy ra một lần:

Lúc trước, một cái máy vi tính không chỉ bằng lợi nhuận 3 tấn gạo như bài báo trên nói đâu mà nó bằng hẳn 3 tấn gạo vào thời điểm đó đấy. Thời điểm đó là vào khoảng năm 1992, thế mà bố tôi vẫn mua một cái máy vi tính 386 hẳn hoi (giờ nó vẫn còn nằm trên kho) trị giá cả ngàn đô (hơn giá 3 tấn gạo nhá). Chỉ trong vòng 1 tháng, bố tôi vẽ các bản thiết kế điện lạnh là lấy lại hoàn toàn vốn của chiếc máy. Sau đó là cái 486 sau đó khoảng 3 năm. (Window 3.1 và Autocad có bản quyền)

Nếu bố tôi cũng tính toán giống tác giả bài báo thì đến khi nào chúng ta mới có thể gia nhập vào thế giới.

* Những gì đáng phê phán:

Mua chiếc Iphone không đáng bị phê phán mà mạ vàng và nạm kim cương mới thực sự đáng lên án. Đây là món đồ công nghệ, có nạm cái gì lên cũng không giúp nó làm việc nhanh hơn hay tốt hơn tí nào cả. Mỗi Iphone như thế này là hơn 50 triệu. Để làm gì? => Cho đẹp?

Những người jailbreak điện thoại. Nếu một ứng dụng hơn 1 triệu, bạn có thể nói lá mắc quá, vượt qua sự chi tiệu của bạn. Vậy tại sao một ứng dụng trên AppStore chưa tới 1 $ mà bạn vẫn muốn sử dụng chùa. Bạn nói về chuyện đó như thế nào?

* Phân tích bài báo:

“3 tấn gạo, là biết bao mồ hôi công sức của bao người nông dân, nhưng 1 sản phẩm Iphone5, thì ở đó bao gồm bao nhiêu hàm lượng trí tuệ?”

=> 1 sản phẩm như Iphone5 không chứa nhiều hàm lượng trí tụê? Anh tác giả à, anh có thực sự suy nghĩ không khi phát biểu câu này? Hàng trăm ngàn người lao động miệt mài chỉ để có được 1 sản phẩm là chiếc Iphone5 như thế. Nó không chỉ là một sản phẩm, nó là trung tâm của cả một hệ sinh thái nổi tiếng của Apple. Bạn nghĩ Iphone5 chỉ cần ra đời là có thể bán ngay? Đó là một sai lầm cực lớn của chính bạn và sự thiếu kiến thức của bạn.

Một sản phẩm công nghệ cao với hàng đống dịch vụ và ứng dụng như thế này lại không đáng giá 3 tấn gạo?

Đầu tiên phải nói đến hệ điều hành IOS, nó tự nhiên sinh ra à? Apple có tính phí của bạn khi sử dụng không? => Dĩ nhiên chi phí phải tính vào trong Iphone5

Bạn không lập trình nên cái này có thể bạn không biết. Lập trình cần công cụ hỗ trợ đó là IDE. Công cụ tương tự của Microsoft là Visual Studio giá hơn 12.000 $ và phí hàng năm là 3.000 $ nếu muốn dùng tiếp. Rẻ hơn thì cũng 8.000 $ và phí hơn 1.800 $. Trong khi đó Xcode của Apple là miễn phí.

Hệ thống phân phối các ứng dụng/game và nhạc Itune được cung cấp miễn phí (Các ứng dụng tính tiền thì tính khác, nhưng có phải bạn sử dụng Itune không tính tiền đúng không?) không xứng đáng để bạn bỏ tiền ra mua cái Iphone5 sao?

Hệ thống trò chuyện trực tuyến Facetime và nhắn tin của iMessage của Apple cực kì hoàn hảo cũng không lấy tiền của bạn.

Hệ thống Game Center cho phép bạn chơi game với những người bạn, giữ mối quan hệ giữa mọi người với nhau, ghi nhận các thành tích và điểm số của bạn.

=> Chỉ cần bạn làm được một trong những thứ ở trên với cái thứ được gọi là không có hàm lượng trí tuệ của bạn thì chúc mừng, bạn đã trở thành tỉ phú.

=> Nếu thấy lợi nhuận sản xuất nông nghiệp quá bèo thì tại sao đất nước chúng ta không chuyển sang làm thức khác như công nghệ thông tin mà vẫn trung thành với việc sản xuất lúa gạo. Cái đó mới thật sự là thiểu năng trí tuệ

“Con người Việt Nam không ngu si, thanh niên Việt Nam không dốt nát, cái đó là truyền thống dân tộc, là trí tuệ cha ông truyền lại, trí tuệ và lòng quả cảm của dân tộc Việt, là điều cả thế giới phải công nhận?

Chúng ta không thiếu người tài, người giỏi, chúng ta không thiếu trí tuệ. Vậy tại sao, Việt Nam vẫn là nước kém về khoa học công nghệ? Do đâu, và ai là người giải quyết?”

Truyền thống và trí tuệ của cha ông không còn hiệu quả trong thời đại kĩ thuật số hiện đại. Cách đây 20 năm làm gì có máy vi tính để cha ông chúng ta có kinh nghiêm với trí tuệ. Đừng bám vào những hào quang của quá khứ mà quên rằng thế giới đang có những bước chuyển mình cực lớn trong những thế kỉ gần đây (Thế kỉ 20, 21) khi chúng ta bận rộn với Mỹ, Pháp, Trung Quốc không thể tích lũy thêm kinh nghiệm. Truyền thống và lòng quả cảm không có tác dụng trong kinh tế, chỉ có trí tuệ, dám nghĩ dám làm mới có thể hòa nhập được với thế giới

Còn lý do Việt Nam vẫn còn kém là do có những người lạc hậu và bám vào cái truyền thống như thế này. Không đầu tư mà đòi đi sâu vào trong những ngành mới có lợi nhuận cao. Lập trình mà cứ làm chay trên giấy. Thấy làm nông nghiệp lợi nhuận cực thấp mà vẫn bám vào nó không thay đổi thì làm sao mà giàu.

=> Bạn thích nghèo thì làm sao bạn có thể giàu được mà than thở.

“Ai đó gọi thanh niên đô thị là một thế hệ tự kỉ, suốt ngày lên facebook chém gió, than thở kêu chán rồi chửi đời. Còn “cái bọn trẻ sắp lớn” thì là những đứa trẻ hóa rồ vì các Ồ-pa Hàn Quốc, hời hợt và quên mất thậm chí quay lưng lại với các giá trị truyền thống. Đánh giá như thế là quá phiến diện, thiếu tích cực, chỉ nhìn mặt tiêu cực, nhưng nhìn lại thử xem, chẳng phải rất nhiều “thanh niên thế hệ mới” đang sống như vậy sao.”

=> 1 tỷ người sử dụng Facebook để tự kỉ? Hay chỉ vì bạn lạc hậu khi không sử dụng những công nghệ mới. Những người trẻ tuổi thích nhạc Hàn thì có vấn đề gì với bạn, những người lạc hậu chỉ thích cải lương, ca cổ (Bạn thích cách đụng chạm vào sở thích của người khác thì tôi cũng rất sẵn lòng đáp trả). Những điệu nhạc từ từ, chậm chạp và buồn bã chỉ thích hợp với những người già, không còn phù hợp với chúng tôi những con người hiện đại sẵn sàng cho những thứ mới mẻ.

Chúng tôi cũng thật buồn khi nhìn thấy những “thanh niên thế hệ trẻ” như bạn có cái nhìn vừa phiến diện lại hạn hẹp như thế. Những bài nhạc Việt Nam với đầy rẫy chia tay, ngoại tình với những điệu nhạc đứt quãng nghe thật sự chói tai thì làm sao chúng tôi nghe cho được. Những bản nhạc vui vẻ, hướng tới cuộc sống gần như đã biến mất. Vậy không nghe nhạc Hàn thì nghe cái gì? Tôi cũng chả tôn sùng gì “Gangnam Style” nhưng số lượng view của nó đã cho thấy thế giới thích nó chứ chả riêng gì Việt Nam.

III. Kết luận:

“Hiền tài là nguyên khí của quốc gia, hiền tài mà cổ lỗ lạc hậu thì nước sẽ vĩnh viễn không tiến xa được, tầm nhìn mà thấp chỉ nhìn những thứ ngắn hạn thì muôn đời nghèo khó”. Hãy biết nhìn về phía trước, hãy đi theo thời thế trước khi tạo được thời thế. Hãy sống có ý nghĩa, có mục đích chứ đừng nhìn vào những thứ nhỏ bé để rồi bỏ mất những cơ hội lớn mà thế giới trao tặng. Đừng bám vào cái truyền thống, quá khứ huy hoàng mà quên mất thế giới đã khác xưa nhiều.

Những điều cần biết về chữ

Đây là những thứ cần biết về chữ viết:

letter_elements

Do lúc trước cũng đã từng học về thiết kế nên hiểu rõ được rằng thiết kế không phải hoàn toàn từ cảm hứng mà nó có những nguyên tắc hẳn hoi để có thể tạo ra sự sáng tạo. Những thiên tài không cần học qua mà họ tự cảm thụ và nhận ra những điều này từ trong thực tế. Còn chúng ta những người bình thường thì khó lòng mà nhận ra hết. Vì vậy, chúng ta cần đi theo những phương pháp cụ thể để có thể sáng tạo được.

Chữ viết  hay còn gọi là typographic là một trong những thành tố hết sức quan trọng trong một thiết kế để có thể truyền tải nội dung đến người dùng. Trong hình vẽ trên chúng ta có thể thấy được, sáng tạo ra một font chữ mới chỉ cần chú ý đến những chi tiết đó của font và làm cho nó đồng nhất giữa các font chữ là xong.

Dĩ nhiên mỗi đường nét đều có ý nghĩa riêng, cái này dài lắm trong một bài khó mà nói hết được.

Quản lý lớp (New Class) trong Object C

I. Thông tin chung:
– Các đối tượng là không thể thiếu trong lập trình hướng đối tượng hiện nay (OOP Object Oriented Programming). Đối tượng không chỉ giúp chúng ta quản lý những gì đang sử dụng trong chương trình một cách dễ dàng hơn mà còn có thể giảm lượng mã nguồn xuống cũng như tái sử dụng nó trong các chương trình khác.

II. Nội dung chính:
1. Tạo một lớp mới (New Class):
Những điểm cần lưu ý:
– Một biến toàn cục (static) có thể được truy cập từ bất tứ lớp nào
– Bạn có thể thể tạo một phương thức khởi tạo mới dành cho lớp và thêm những đoạn mã cần thiết vào để làm những gì bạn muốn mà không ảnh hưởng đến khả năng làm việc của lớp

* Sau đây là đoạn code mẫu dành cho việc tạo một lớp mới có thêm một số đoạn mã để xử lý trước khi khởi tạo lớp.

2. Phần giao diện (File .h):
– Một lớp cần có những thứ sau đây

#import <Foundation/Foundation.h>

@interface LKStar: NSObject

{

}

+ (LKStar *) lkAlloc;

+ (int) lkTotal;

@end

* Giải thích:
– Mọi lớp đều cần có kế thừa lớp NSObject trong C Object
– Trong lớp header sẽ có 2 phương thức toàn cục để khởi tạo và trả về số lượng các lớp đã được khởi tạo.
– Đây không phải là phương thức cục bộ (private) mà là phương thức toàn cục (public) để các class khác vẫn có thể truy cập vào trong lớp.

3. Phần thực hiện (file .m):
Mã nguồn

#import “LKStar.h”

static int lkNumOfStar = 0;

@implementation LKStar

+ (LKStar *) lkAlloc

{

lkNumOfStar++;

return [LKStar alloc];

}

+ (int) lkTotal

{

return lkNumOfStar ;

}

@end

* Giải thích:
– Tạo biến toàn cục lkNumOfStar để lưu trữ số lượng những đối tượng ở trong toàn chương trình.
– lkAlloc là phương thức khởi tạo. Phương thức sẽ cộng vào trong biến đếm trước khi khởi tạo đối tượng.
– lkTotal trả về số lượng đối tượng đã được khởi tạo

4. Cách sử dụng trong chương trình:
Mã nguồn:

LKStar *lkRedStar, *lkBlueStar, *lkYellowStar;

lkRedStar = [[LKStar lkAlloc] init];

lkBlueStar = [[LKStar lkAlloc] init];

lkYellowStar = [[LKStar lkAlloc] init];

Ngoài ra, ta có thể sử dụng lệnh để biết được có bao nhiêu đối tượng đã được tạo bằng cách gọi dòng lệnh sau

int lkCounting = [LKStar lkNumOfStar];
=> Chúng ta sẽ có đươc lkCounting = 3;

Đây là code đầy đủ cho các bạn kiểm tra

#include “LKStar.h”

int main (int argc, const char * argv[])

{

LKStar *lkRedStar, *lkBlueStar, *lkYellowStar;

lkRedStar = [[LKStar lkAlloc] init];

lkBlueStar = [[LKStar lkAlloc] init];

lkYellowStar = [[LKStar lkAlloc] init];

int lkCounting = [LKStar lkNumOfStar];

NSString *thongbao = [[NSString alloc] initWithFormat:@”Number of Star in Program: %i”, lkCounting];

lbllkThongBao.text = thongbao;

}

III. Kết luận:
– Đối tượng là phần không thể thiếu đối với lập trình OOP. Tuy nhiên không phải lúc nào bạn cũng chỉ dùng những lệnh cơ bản của Object C (Alloc) mà cần thêm những lệnh mới để có thể làm cho việc sử dụng những đối tượng được quản lý chặt chẽ hơn.
– Đây là phần nên nghiên cứu và sử dụng để dễ dàng hơn cho việc lập trình với Object C.