Thứ Ba, 19 tháng 5, 2015

Visual Studio 2015 Cross Flatform Mobile Development

Visual Studio 2015 phiên bản sản phẩm mới được công bố, bao gồm Visual toàn mới Studio Enterprise với MSDN, Visual Studio Professional với MSDN, và Visual Studio phiên bản cộng đồng miễn phí - đến cuối năm nay.
Visual Studio 2015


  • Công cụ và dịch vụ cho các dự án của bất kỳ kích thước hoặc phức tạp
  • C #, Visual Basic, F #, C ++, Python, Node.js và HTML / JavaScript
  • Xây dựng cho iOS, Android, các thiết bị Windows, Windows Server hoặc Linux
  • Gỡ lỗi chi tiết, hồ sơ, tự động và kiểm tra thủ công
  • DevOps với các triển khai tự động và giám sát liên tục
Download: VS 2015

Viết ứng dụng đa nền tảng trên Visual Studio 2015 build được ứng dụng iOS, Android, Winphone 8
Cross Flatform Mobile Development

Thứ Hai, 11 tháng 5, 2015

Lập trình game trên mobile - Android - iOS - WinPhone

Dành cho các bạn đam mê lập trình game và muốn theo nghề lập trình game.
Yêu cầu cần có kiến thức cơ bản về lập trình, cơ bản Lập trình hướng đối tượng.

Ngôn ngữ sử dụng để viết game:
  • Android: Java (sủ dụng Engine Libgdx hoặc AndEngine )
  • iOS: Swift (sủ dụng Engine SpriteKit)

  • Đa nền tảng ( Android, iOS, Winphone, Win8, ...): C/C++  ( sử dụng Engine Cocos2d-x )
Kiến thức liên quan: OpenGL, kiến thức vật lý, cấu trúc file .json

Phát triển Game sử dụng Engine để build đa nền tản( Sử dụn 1 ngôn ngữ để viết code ở 1 project core sau đó build qua các nền tảng khác ( Android, iOS, Winphone, Win8, ...))
Sử dụng Engine để làm game đa nền tảng
Xem chi tiết các nội dung cần tìm hiểu:


CHƯƠNG TRÌNH LẬP TRÌNH GAME TRÊN ANDROID

1.      Giới thiệu về OpenGL trên Android, kỹ thuật đồ họa 2D,3D trên Android (2 buổi)
2.      Mô hình kiến trúc Lập trình Game (1 buổi)
3.      Các ý tưởng lập trình Game (1 buổi)
4.      Giới thiệu các thư viện sử dụng lập trình game trên Android (2 buổi)
5.      Làm việc với AndEngine để lập trình game (4 buổi)
6.      Nguyên tắc sử dụng Engine, Scene trong việc lập trình Game (2 buổi)
7.      Các đối tượng trên Game, Sprite, AnimatedSprite, Layer,Particle, Shape, Text (3 buổi)
8.      Audio trên Game (1 buổi)
9.      Nguyên tắc va chạm, chuyển động khi lập trình game (2 buổi)
10.  Sử lý hình ảnh trên Game (2 buổi)

11.  Viết các game cơ bản (3 buổi)

CHƯƠNG TRÌNH LẬP TRÌNH GAME ĐA NỀN TẢN ( ANDROID, IOS, WINPHONE, WIN 8 )  SỬ DỤNG ENGINE COCOS2D-X
Engine Cocos2d-x

1.      Ôn tập kiến thức C/C++ và lập trình hướng đối tượng (2 buổi)
2.      Mô hình kiến trúc Lập trình Game (1 buổi)
3.      Các ý tưởng lập trình Game (1 buổi)
4.      Giới thiệu Engine Cocos2d-x (2 buổi)
5.      Làm việc với Engine Cocos2d-x để lập trình game (4 buổi)
6.      Nguyên tắc sử dụng Engine, Scene trong việc lập trình Game (2 buổi)
7.      Các đối tượng trên Game, Sprite, AnimatedSprite, Layer,Particle (3 buổi)
8.      Audio trên Game (1 buổi)
9.      Nguyên tắc va chạm, chuyển động khi lập trình game (2 buổi)
10.  Sử lý hình ảnh trên Game (2 buổi)
11.  Viết các game cơ bản (3 buổi)

BẠN NÀO CÓ NHU CẦU TÌM HIỂU LÀM GAME CÓ THỂ COMMENT DƯỚI BÀI VIẾT NHÉ <3  AD page Học Lập Trình
Các bạn comment ở dưới bài viết để trao đổi nhé :D

Chủ Nhật, 3 tháng 5, 2015

Internet of Things

1. Khái niệm Internet of Things
              Internet of Things (IoT) là một kịch bản của thế giới, khi mà mỗi đồ vật, mỗi đồ vật, con người được cung cấp một định danh của riêng mình, và tất cả có khả năng truyền tải, trao đổi thông tin, dữ liệu qua một mạng duy nhất mà không cần đến sự tương tác trực tiếp giữa người với người, hay người với máy tính. IoT đã phát triển từ sự hội tụ của công nghệ không dây, công nghệ vi cơ điện tử và Internet.
Khái niệm Internet of things


 2. Xu hướng của thế giới Internet of Things
 Như vậy có thể tạm hiểu, Internet of Things là khi tất cả mọi thứ đều được kết nối với nhau qua mạng Internet, người dùng (chủ) có thể kiểm soát mọi đồ vật của mình qua mạng mà chỉ bằng một thiết bị thông minh, chẳng hạn như smartphone, tablet, PC hay thậm chí chỉ bằng một chiếc smartwatch nhỏ bé trên tay.
Xu hướng của thế giới với Internet of Things

* Các giao thức giao tiếp không dây trong thế giới IoT được thiết kế để thỏa mãn các yêu cầu cơ bản: 
Tiêu tốn ít năng lượng cho việc thu/phát sóng, 
Tiêu tốn ít băng thông (để giảm gánh nặng cho router wireless và hệ thống mạng), hoạt động trong mạng mắt lưới…

* Một số thiết bị sẽ giao tiếp qua:
 -   Wi-fi
 -   Bluetooth,
 -   NFC
 -   Nhưng đa phần sẽ tận dụng các kết nối sử dụng dải tần của mạng không dây.
3. Ứng dụng của Internet of Things


  •               Dùng iPhone mở khóa MacBook:
              Knock, được phát triển bởi Knock Software Inc và đang bán trên Apple Store với giá 3.99 USD. 
           Công dụng của Knock là giúp bạn dùng iPhone để unlock (mở khóa) MacBook bằng cách cầm iPhone gõ hai cái lên đâu đó. 

  •       Nhà thông minh (Smart Home)
Ứng dụng BLE để điều khiển máy lạnh, TV, đèn, máy giặt… nói chung là mọi thiết bị trong ngôi nhà của bạn. Biến chiếc mobile của bạn thành chiếc remote đa năng, điều khiển đủ mọi thứ trong nhà và thậm chí không cần điều khiển, đèn vẫn có thể tự tắt.
ĐTDĐ của các bạn sẽ cần cài đặt một phần mềm để làm trung tâm điều khiển, 
Cứ mỗi thiết bị cần điều khiển sẽ gắn một thiết bị ngoại vi 
Cài đặt lệnh cho từng thiết bị ngoại vi ấy như là bấm lệnh gì thì thiết bị nào sẽ thực thi điều gì .
Không thì toàn bộ thiết bị điện trong nhà sẽ tắt hết, trừ tủ lạnh, chẳng hạn.
7. Hướng dẫn tìm hiểu Internet of things
http://www.intel.com/content/www/us/en/internet-of-things/overview.html
http://www.arduino.cc/
- http://www.visualmicro.com/ 
5. Xây dựng ứng dụng đầu tiên
Thiết kế xe điều khiển từ xa qua bluetooth
Xe điểu khiên bằng bluetooch
Cập nhập sau :)

Thứ Sáu, 3 tháng 4, 2015

SOLID – 5 nguyên tắc cơ bản trong programming

SOLID là 5 nguyên tắc đầu tiên và cơ bản mà bất cứ programmer nào cũng cần phải hiểu rõ:
  1. S – SRP – Single Responsibility Principle
  2. O – OCP – Open/Closed Principle
  3. L – LSP – Liskop Substitution Principle
  4. I – ISP – Interface Segregation Principle
  5. D – DIP – Dependency Inversion Principle
Những nguyên tắc này tuy rất khó nhớ tên nhưng ít nhiều ta đều tiếp xúc trong công việc hàng ngày. Vì vậy nhận ra khi nào ta đang follow nguyên tắc gì sẽ rất có lợi cho công việc.
Ý nghĩa của từng nguyên tắc như sau:
  1. SRP

    – 1 piece of software chỉ nên thực hiện 1 mục đích, 1 trách nhiệm duy nhất. Về cơ bản, các đơn vị cấu trúc của program gồm có:
    • Statement
    • Code block
    • Method/function
    • Class/Interface
    • Module
    • Project/Library
    • Solution
    Đối với mỗi level, chúng ta cần phải rất rõ ràng về công việc mà chúng thực hiện. Điều này giúp cho code dễ đọc, program dễ hiểu và dễ maintain. Sau khi viết code xong, khi đọc lại hoặc khi ng khác đọc sẽ dễ dàng follow đc vấn đề.
    Ví dụ 1

    Dòng code trên làm 2 việc: in ra index hiện tại và tăng nó lên 1. Đối với ng viết, do đã là thói quen nên họ dễ dàng nhận ra giá trị của biến i sau dòng này. Nhưng đối với ng khác, rất dễ xảy ra nhầm lẫn.
    Ví dụ 2

    Đoạn code trên có 2 vấn đề:
    1. Trong using block, thực hiện 2 việc là insert object và gọi messageService. Mặc dù code chạy bình thường nhưng đây vẫn là bad practice, messageService cần phải nằm ngoài using ctx.
    2. Trong function Insert thực hiện 2 nhiệm vụ khác nhau. Nếu trong tương lai phát sinh ra nhu cầu Insert nhưng ko kèm notify cho messageService thì function này sẽ phải sửa lại (cùng với tất cả những nơi đã dùng tới nó)
    Cứ tiếp tục như thế, đôi khi chúng ta cảm thấy sẽ “tiện lợi” ghi gộp nhiều thứ lại với nhau. Nhưng thực tế sẽ tạo ra những vấn đề tiềm ẩn cho sau này (technical debt)
  2. OCP

    open for extension but close for modification? tức là sao?
    Nôm na là ta phải thiết kế software sao cho nó có thể mở rộng dễ dàng mà ko cần phải đập đi làm lại. Còn gì bực bội hơn khi được giao viết thêm functionality cho 1 hệ thống mà phát hiện ra cần phải sửa rất nhiều mới support đc chức năng ABC? Điều này cũng giống như thiết kế 1 chiếc xe hơi với các bộ phận tiêu chuẩn có thể dễ dàng thay thế hoặc nâng cấp mà ko cần phải chế tạo lại cả chiếc xe.
    Nguyên tắc này thường đc triển khai dựa trên tính kế thừa và tính đa hình của OOP như trong sơ đồ sau:
    superhero
    Ở đây tôi đã define Superman và Spiderman, và method Fight của 2 entity này đã fixed và không thay đổi được, tức là Closed. Vậy hệ thống có Open hay không? Làm gì để tùy chỉnh?
    • có thể extend và override method của class cũ, chẳng hạn tạo class AmazingSpiderman -> Spiderman với khả năng Fight more amazing
    • extend từ Abstract class và implement abstract method Fight
    Như vậy hệ thống đảm bảo đc tính OCP.
  3. LSP

    có khi nào bạn thấy ko hài lòng về 1 property nào đó của 1 class và viết 1 class con để modify property đó? chẳng hạn property của base class chỉ trả về integer từ 1..10, bạn subclass để nó trả về 1..100? Như vậy là bạn đang violate nguyên tắc LSP.
    Lý do: khi đoạn code nào đó sử dụng đến property này với understanding là nó sẽ trả về 1..10, sẽ bị surprised khi nó trả về 1..100 và ko thể handle từ 11..100
    Ví dụ sau ko hoàn toàn về LSP nhưng cũng cho thấy sự vi phạm tính đa hình của class

    Đoạn code trên đã phải convert đối tượng về một subtype để thực hiện method cần thiết.
  4. ISP

    khi bạn implement 1 interface mà có những method bạn ko dùng đến, đó là dấu hiệu của problem.

    Có thể thấy Striker sẽ ko implement đc method Catch. Và nếu ta gọi Player.Catch() có thể sẽ dẫn đến runtime expception. Vì vậy việc class Striker ko thể implement đc method Catch cho thấy 1 technical debt.

    Như vậy, rõ ràng mọi method trong class đều có ý nghĩa rất rõ ràng, ko lỗi.
  5. DIP

    – hmm… đây là 1 nguyên tắc về decoupled, thuộc về design nhiều hơn là coding, vì vậy tương đối khó để nắm bắt. Có thể liên tưởng qua ví dụ thực tế như sau:
    Ex: giả sử A làm ăn với B, A mua dịch vụ do B cung cấp. Đôi khi B ko thực hiện đúng trách nhiệm của mình, A mặc dù bực bội về việc đó, nhưng đã ký kết làm ăn nên ko thể đổi được, và cũng ko có đủ khả năng tìm đối tác khác. Như vậy A đã phụ thuộc chặt chẽ vào B.
    Tuy nhiên, nếu ban đầu A ko trực tiếp làm việc với B, mà thông qua trung gian X. A đưa ra yêu cầu dành cho nhà phân phối của mình và X sẽ tìm người đáp ứng được nhu cầu đó, giả sử ban đầu là B. Nếu sau đó B ko thực hiện đúng trách nhiệm, X sẽ thay B bằng nhà cung cấp C. Như vậy việc sử dụng dịch vụ của A sẽ ko bị gián đoạn và A cũng ko cần làm việc trực tiếp với B hay C.
    Điều này minh họa trong code như sau


    Ta có thể thấy Messi phụ thuộc hoàn toàn vào Xavi. Có thể sửa lại như sau
Tóm lại, các principle trên có tác dụng chính là giúp chúng ta nắm được và dự đoán được các vấn đề tiềm ẩn của program thông qua các dấu hiệu vi phạm 5 principle này để giải quyết chúng 1 cách triệt để.

Thứ Ba, 24 tháng 3, 2015

Tạo map cho game bằng Tiled Map Editor

Bài viết hướng dẫn chi tiết sẽ được cập nhập trên 
Page: https://www.facebook.com/hoclaptrinh.it
Websites: http://www.studycoding.net/




- Hướng dẫn tạo Map bằng phần mềm Tile Editor

B1: Vào trang chủ để download tool
Link: http://www.mapeditor.org/download.html
B2: Mình sẽ hướng dẫn các bạn tạo map của
game Kingdom Rush. Vào google search ít
thông tin về game này nhé!
Chúng ta sẽ tạo map cho game,
- Vào trang chủ của Kingdom rush để lấy hình
của map

Link map của Kingdom Rush:
http://kingdomrushtd.wikia.com/wiki/Category:Levels
B3: khởi động tool Tiled để tạo map.
ở đây mình tạo game với kích thước 1280x768
~~ kích thước của map là 128x77 
với mỗi tiled là 10x10 pixcel
B4: Save file .tmx để load vào code 
** Bài hôm sau sẽ load vào code tạo project game 

Thứ Bảy, 17 tháng 1, 2015

Tài liệu Lập trình iOS Tiếng Việt đầy đủ TTTH đại học khoa học tự nhiên

Toàn bộ silde học ios của KHTN, Tài liệu Lập trình iOS Tiếng Việt đầy đủ TTTH đại học khoa học tự nhiên:

  • Bai 1 - Gioi thieu tong quan ve lap trinh ung dung tren thiet bi di dong su dung iOS
  • Bai 2 - Thiet lap moi truong lap trinh
  • Bai 3 - Tai khoan Apple Developer, Build App, Submit App, AppStore
  • Bai 4 - Gioi thieu ve Objective-C
  • Bai 5 - Numbers, Strings and Collections
  • Bai 6 - Label, Button, TextField, Slider, Switch, Page Control
  • Bai 7 - Memory Management
  • Bai 8 - Date picker, Picker view, Web view, Toolbar, AD banner view
  • Bai 9 - Navigation controller, Tabbar controller, Search bar
  • Bai 10 - Page control, Image view, Text view, Scroll view
  • Bai 11 - Table View, Table View Cell
  • Bai 12 - Lam viec voi file tren iOS
  • Bai 13 - Tuy bien giao dien trong lap trinh ung dung tren iOS
  • Bai 14 - Multimedia
  • Bai 15 - Address book
  • Bai 16 - Thread - Backgound - Multitasking
  • Bai 17 - SQLite
  • Bai 18 - Core Location Framework
  • Bai 19 - Google Service API
  • Tai Lieu Huong Dan - Mobile-PC-Laptop


Download: Here
Theo dõi thêm trên page: Học Lập Trình 
Link fb: https://www.facebook.com/hoclaptrinh.it

Thứ Ba, 6 tháng 1, 2015

Socket Android Client to PC Server C#

Using AsynCallback C#
Android Client connect Server C#

Download source code: Click Here


c# socket multi client,
socket c# example,
socket server c#,
socket c# tutorial,
asynchronous socket in c#,
c# socket multiple clients,
c# socket server multiple clients,