CHƯƠNG 2 : ĐỐI TƯỢNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU
2.5. Phần mềm và ngơn ngữ lập trình
2.5.2. Sublime Text 3
Sublime text hay trình soạn thảo văn bản sublime là một trình soạn thảo văn bản tinh vi được các developer sử dụng rộng rãi. Sublime text bao gồm một hệ tính năng đa dạng như Syntax Highlight, Auto Indentation, File Type Recognition, Sidebar, Macros, Plug-in và các Package cho phép làm việc với code base dễ dàng hơn.
Hình 2.41: Icon Sublime Text 3
Phiên bản hiện hành của trình soạn thảo văn bản Sublime là 3.0 và version này tương thích với nhiều hệ điều hành khác nhau như Windows, Linux và MacOS.
Sublime Text Editor là một trình soạn thảo văn bản với đầy đủ tính năng cho phép chỉnh sửa các local file hoặc một code base. Trình soạn thảo cũng bao gồm các tính năng chỉnh sửa code base khác nhau giúp các developer theo dõi được các thay đổi.
Các tính năng khác nhau được Sublime hỗ trợ bao gồm: Syntax Highlight - Đánh dấu cú pháp.
Auto Indentation - Tự động lùi lề.
File Type Recognition - Nhận dạng kiểu tệp.
Sidebar with files of mentioned directory - Thanh bên gồm các tệp của thư mục được đề cập.
Macros.
Plug-in và Packages.
Trình soạn thảo Sublime Text được sử dụng như một IDE -
Hình 2.42: Giao diện soạn thảo của Sublime Text
Một số lợi ích bạn có thể đạt được với trình soạn thảo văn bản Sublime như sau: Có thể giải quyết được các lỗi liên kết.
Theo dõi tất cả các tệp và thư mục đang làm việc. Kết nối với các phiên bản control system như Git, Mercurial. Khả năng giải quyết vấn đề.
Giữ tổ hợp màu cho tổ hợp cú pháp. 2.5.3. Node js
Nodejs là một nền tảng (Platform) phát triển độc lập được xây dựng ở trên Javascript Runtime của Chrome mà chúng ta có thể xây dựng được các ứng dụng mạng một cách nhanh chóng và dễ dàng mở rộng.
Nodejs được xây dựng và phát triển từ năm 2009, bảo trợ bởi công ty Joyent, trụ sở tại California, Hoa Kỳ. Dù sao thì chúng ta cũng nên biết qua một chút chút lịch sử của thứ mà chúng ta đang học một chút chứ nhỉ?
Phần Core bên dưới của Nodejs được viết hầu hết bằng C++ nên cho tốc độ xử lý và hiệu năng khá cao.
Nodejs tạo ra được các ứng dụng có tốc độ xử lý nhanh, dung lượng thấp, realtime thời gian thực.
Nodejs áp dụng cho các sản phẩm có lượng truy cập lớn, cần mở rộng nhanh, cần đổi mới công nghệ, hoặc tạo ra các dự án Startup nhanh nhất có thể.
Hình 2.43: Logo Nodejs
Những ứng dụng có thể và nên viết bằng Nodejs:
Websocket server: Các máy chủ web socket như là Online Chat, Game hoặc là Server…
Fast File Upload Client: là các chương trình upload file tốc độ cao. Ad Server: Các máy chủ quảng cáo.
Cloud Services: Các dịch vụ đám mây.
RESTful API: đây là những ứng dụng mà được sử dụng cho các ứng dụng khác thông qua API.
Any Real-time Data Application: bất kỳ một ứng dụng nào có yêu cầu về tốc độ thời gian thực. Micro Services: Ý tưởng của micro services là chia nhỏ một ứng dụng lớn thành các dịch vụ nhỏ và kết nối chúng lại với nhau. Nodejs có thể làm tốt điều này.
2.5.4. Angular JS
Đây là một mã nguồn mở, 1 framwork cho các ứng dụng web. Được phát triển từ năm 2009, hiện tại được duy trì bởi google và đã ra mắt phiên bản 2.0.
Hình 2.44: AngularjsĐịnh nghĩa chính thức được đưa ra như sau : Định nghĩa chính thức được đưa ra như sau :
AngularJS là một framework có cấu trúc cho các ứng dụng web động. Nó cho phép bạn sử dụng HTML như là ngôn ngữ mẫu và cho phép bạn mở rộng cú pháp của HTML để diễn đạt các thành phần ứng dụng của bạn một cách rõ ràng và súc tích. Hai tính năng cốt lõi: Data binding và Dependency injection của AngularJS loại bỏ phần lớn code mà bạn thường phải viết. Nó xảy ra trong tất cả các trình duyệt, làm cho nó trở thành đối tác lý tưởng của bất kỳ công nghệ Server nào.
Để học được AngularJS bạn cần phải có những kiến thức cơ về javascript, object, string. Việc bạn có hiểu biết chuyên sâu về javascript sẽ giúp cho bạn dễ dàng học AngularJS. Bản chất của AngularJS là hoạt động dạng Single Page, sử dụng API để lấy data, cho nên bạn cần biết các kĩ thuật DHTML, AJAX.
Đặc trưng của AngularJS:
Phát triển dựa trên Javascript
Tạo các ứng dụng client-side theo mơ hình MVC.
Khả năng tương thích cao, tự động xử lý mã javascript để phù hợp vứi mỗi trình duyệt.
Mã nguồn mở, miễn phí hồn tồn và được sủ dụng rộng rãi.
Scope : có nhiệm vụ giao tiếp giữa controller và view của ứng dụng. Controller : xử lí dữ liệu cho đối tượng $scope, từ đây bên views sẽ sử dụng các dữ liệu trong scope để hiển thị ra tương ứng. Data-binding : tự động đồng bộ dữ liệu giữa model và view.
Service : là singleton object được khởi tạo 1 lần duy nhất cho mỗi ứng dụng, cung cấp các phương thức lưu trữ dữ liệu có sẵn. ($http,
$httpBackend, $sce, $controller, $document, $compile, $parse, $root Element, $rootScope …..).
Filter : Lọc các tập con từ tập item trong các mảng và trả về các mảng mới.
Directive : dùng để tạo các thẻ HTML riêng phục vụ những mục đích riêng. AngularJS có những directive có sẵn như ngBind, ngModel…
Routing : chuyển đổi giữa các action trong controller, qua lại giữa các view. MVC & MVVM : mơ hình thiết kế để phân chia các ứng dụng thành nhiều phần khác nhau (gọi là Model, View và Controller) mỗi phần có một nhiệm vụ nhất định. AngularJS không triển khai MVC theo cách truyền thống, mà gắn liền hơn với Model-View-ViewModel. Deep link : Liên kết sâu, cho phép bạn mã hóa trạng thái của ứng dụng trong các URL để nó có thể bookmark với cơng cụ tìm kiếm. Các ứng dụng có thể được phục hồi lại từ các địa chỉ URL với cùng một trạng thái.
Dependency Injection: AngularJS có sẵn một hệ thống con dependency injection để giúp các lập trình viên tạo ra các ứng dụng dễ phát triển, dễ hiểu và kiểm tra.
Hình 2.45: Tính năng cơ bản của AngularJS Các components chính AngularJS Các components chính
ng-app : định nghĩa và liên kết một ứng dụng AngularJS tới HTML. ng-model : gắn kết giá trị của dữ liệu ứng dụng AngularJS đến các điều khiển đầu vào HTML.
ng-bind : gắn kết dữ liệu ứng dụng AngularJS đến các thẻ HTML. Ưu điểm của angularJS
Cung cấp khả năng tạo ra các Single Page Aplication dễ dàng.
Cung cấp khả năng data binding tới HTML, khiến cho người dùng cảm giác linh hoạt, thân thiện.
Dễ dàng Unit test.
Dễ dàng tái sử dụng component.
Giúp lập trình viên viết code ít hơn với nhiều chức năng hơn. Chạy được trên các loại trình duyệt, trên cả PC lẫn mobile. Nhược điểm
Khơng an tồn : được phát triển từ javascript cho nên ứng dụng được viết bởi AngularJS khơng an tồn. Nên có sự bảo mật và xác thực phía server sẽ giúp ứng dụng trở nên an toàn hơn. Nếu người sử dụng ứng dụng của vơ hiệu hóa JavaScript thì sẽ chỉ nhìn thấy trang cơ bản.
Git là một Hệ thống kiểm soát phiên bản phân tán mã nguồn mở. Một số định nghĩa được tổng hợp như sau:
Hệ thống điều khiển: Điều này về cơ bản có nghĩa là Git là một trình theo dõi nội dung. Vì vậy, Git có thể được sử dụng để lưu trữ nội dung - nó chủ yếu được sử dụng để lưu trữ mã do các tính năng khác mà nó cung cấp. Hệ thống kiểm soát phiên bản: Mã được lưu trữ trong Git tiếp tục thay đổi khi thêm mã. Ngoài ra, nhiều nhà phát triển có thể thêm mã song song. Vì vậy, Hệ thống kiểm sốt phiên bản giúp xử lý việc này bằng cách duy trì lịch sử về những thay đổi đã xảy ra. Ngoài ra, Git cung cấp các tính năng như các nhánh và sáp nhập, mà tơi sẽ trình bày sau. Hệ thống kiểm sốt phiên bản phân tán: Git có một kho lưu trữ từ xa được lưu trữ trong một máy chủ và một kho lưu trữ cục bộ được lưu trữ trong máy tính của mỗi nhà phát triển. Điều này có nghĩa là mã khơng chỉ được lưu trữ trong một máy chủ trung tâm, mà là bản sao đầy đủ của mã có trong tất cả các máy tính của nhà phát triển. Git là một Hệ thống kiểm soát phiên bản phân tán do mã có trong mọi máy tính của nhà phát triển.
Hình 2.46: Logo biểu trưng của GitTại sao cần có Hệ thống kiểm sốt phiên bản như Git: Tại sao cần có Hệ thống kiểm sốt phiên bản như Git:
Các dự án thực tế thường có nhiều nhà phát triển làm việc song song. Vì vậy, một hệ thống kiểm sốt phiên bản như Git là cần thiết để đảm bảo khơng có xung đột mã giữa các nhà phát triển.
Ngoài ra, các yêu cầu trong các dự án như vậy thay đổi thường xuyên. Vì vậy, một hệ thống kiểm sốt phiên bản cho phép các nhà phát triển hồn ngun và quay lại phiên bản cũ hơn của mã.
Cuối cùng, đôi khi một số dự án đang được chạy song song liên quan đến cùng một cơ sở mã. Trong trường hợp như vậy, khái niệm phân nhánh trong Git là rất quan trọng.
2.5.6. Firebase
Firebase là dịch vụ cơ sở dữ liệu hoạt động trên nền tảng đám mây – cloud. Kèm theo đó là hệ thống máy chủ cực kỳ mạnh mẽ của Google. Chức năng chính là giúp người dùng lập trình ứng dụng bằng cách đơn giản hóa các thao tác với cơ sở dữ liệu. Cụ thể là những giao diện lập trình ứng dụng API đơn giản. Mục đích nhằm tăng số lượng người dùng và thu lại nhiều lợi nhuận hơn.
Đặc biệt, còn là dịch vụ đa năng và bảo mật cực tốt. Firebase hỗ trợ cả hai nền tảng Android và IOS. Khơng có gì khó hiểu khi nhiều lập trình viên chọn Firebase làm nền tảng đầu tiên để xây dựng ứng dụng cho hàng triệu người dùng trên toàn thế giới.
Lịch sử phát triển Firebase:
Firebase ra đời với tiền thân là Envolve. Đây là một nền tảng đơn giản chuyên cung cấp những API cần thiết để tích hợp tính năng chat vào trang web. Bên
cạnh ứng dụng nhắn tin trực tuyến, Envolve còn được người dùng sử dụng để truyền và đồng bộ hóa dữ liệu cho những ứng dụng khác như các trị chơi trực tuyến,… Do đó, các nhà sáng lập đã tách biệt hệ thống nhắn tin trực tuyến và đồng bộ dữ liệu thời gian thực thành hai phần riêng biệt.
Trên cơ sở đó, năm 2012, Firebase ra đời với sản phẩm cung cấp là dịch vụ Backend-as-a-Service. Tiếp đến, vào năm 2014, Google mua lại Firebase và phát triển nó thành một dịch vụ đa chức năng được hàng triệu người sử dụng cho đến hiện nay.
Hình 2.47: Firebase.Các hoạt động của Firebase: Các hoạt động của Firebase:
Firebase Realtime Database:
Khi đăng ký một tài khoản trên Firebase để tạo ứng dụng, bạn đã có một cơ sở dữ liệu thời gian thực. Dữ liệu bạn nhận được dưới dạng JSON. Đồng thời nó cũng ln được đồng bộ thời gian thực đến mọi kết nối client.
Đối với các ứng dụng đa nền tảng, tất cả các client đều sử dụng cùng một cơ sở dữ liệu. Nó được tự động cập nhật dữ liệu mới nhất bất cứ khi nào các lập trình viên phát triển ứng dụng. Cuối cùng, tất cả các dữ liệu này được truyền qua kết nối an tồn SSL có bảo mật với chứng nhận 2048 bit.
Trong trường hợp bị mất mạng, dữ liệu được lưu lại ở local, vì thế khi có mọi sự thay đổi nào đều được tự động cập nhật lên Server của Firebase. Bên cạnh đó, đối với các dữ liệu ở local cũ hơn với Server thì cũng tự động cập nhật để được dữ liệu mới nhất.
Hoạt động nổi bật của Firebase là xây dựng các bước xác thực người dùng bằng Email, Facebook, Twitter, GitHub, Google. Đồng thời cũng xác thực nặc danh cho các ứng dụng. Hoạt động xác thực có thể giúp thơng tin cá nhân của người sử dụng được an tồn và đảm bảo khơng bị đánh cắp tài khoản.
Hình 2.48: Firebase xây dựng hành động tự động đăng nhập Firebase Hosting đăng nhập Firebase Hosting
Cách thức hoạt động cuối cùng của Firebase được đề cập trong bài viết này là cung cấp các hosting. Hosting được phân phối qua tiêu chuẩn công nghệ bảo mật SSL từ mạng CDN.
Hoạt động này giúp lập trình viên tiết kiệm thời gian thiết kế, xây dựng và phát triển ứng dụng.
Hình 2.50: Giao diện Firebase 2.5.7. Heroku
Heroku là nền tảng đám mây cho phép các lập trình viên xây dựng, triển khai, quản lý và mở rộng ứng dụng (PaaS – Platform as a service). Nó rất linh hoạt và dễ sử dụng, cung cấp cho một con đường đơn giản nhất để đưa sản phẩm tiếp cận người dùng. Nó giúp các nhà phát triển tập trung vào phát triển sản phẩm mà không cần quan tâm đến việc vận hành máy chủ hay phần cứng…
Heroku chạy các ứng dụng trong dynos – nó là một máy ảo mà có thể tăng giảm sức mạnh dự vào độ lớn của ứng dụng. Hiểu đơn giản là dynos nhưng là các block, bạn muốn tăng tốc độ xử lý nhiều cơng việc phức tạp thì thêm block (scale chiều ngang) hoặc tăng kích thước block (scale chiều dọc) . Heroku sẽ thanh tốn phí tháng dựa trên số lượng dynos và kích thước mỗi dyno bạn sử dụng.
Ưu điểm:
Bạn có thể dùng Heroku miễn phí cùng với vơ vàn các addons hỗ trợ cực kỳ hữu ích thì đấy được coi là một trong những dịch vụ hấp dẫn. Hỗ trợ nhiều ngơn ngữ lập trình như:NodeJS, Ruby, Python, PHP, Java, Scala, Clojure.
Ngoài ra chúng ta cịn được cung cấp Database, SSL miễn phí, hỗ trợ mạnh làm việc team cũng như liên kết với Github một cách đơn giản. Khuyết điểm:
Việc miễn phí sẽ chỉ có giới hạn là 550 giờ mỗi tháng. Nếu muốn tăng lên 1000 giờ thì bạn cần cài đặt phương thức thanh tốn trên đó. Tuy nhiên để kiểm nghiệm một ý tưởng hay một trang web nhỏ thì nhiêu đó là q đủ để thu về kết quả.
Sau 2 đến 3 giờ nếu server khơng có người truy cập thì server sẽ chuyển sang trạng thái ngủ. Về việc server bị tắt khi khơng có traffic, cách đơn giản nhất là tự tạo traffic cho nó. Cách dễ nhất là dùng Pingdom để ping trang blog của bạn thường xuyên giữ cho server không bị tắt.
2.5.8. Ngơn ngữ lập trình 2.5.8.1. C, C++
Ngơn ngữ lập trình của Arduino chính là C/C++, nhưng so với lập trình lập trình trực tiếp với vi điều khiển, lập trình với Arduino đơn giản hơn nhiều vì bạn chỉ phải giao tiếp với phần cứng thơng qua các thư viện, có thể xem như các lớp C++ wrapper lên các giao tiếp với phần cứng. Trên website, có khá nhiều các library viết sẵn để điều khiển ngoại vi: LCD, sensor, motor... nên việc bạn cần làm chỉ là kết hợp chúng với nhau để tạo ứng dụng cho riêng bạn.
Board arduino có các ngoại vi trên bo mạch đều đã được chuẩn hóa, nên chúng ta cũng có thể lập trình được những ứng dụng thú vị. Thêm nữa, vì Arduino là một platform đã được chuẩn hóa, nên đã có rất nhiều các bo mạch mở rộng (gọi là shield) để cắm chồng lên bo mạch Arduino, có thể hình dung nơm na là "library" của các ngơn ngữ lập trình. Ví dụ, muốn kết nối Internet thì có Ethernet shield, muốn điều khiển động cơ thì có Motor shield, muốn kết nối nhận tin nhắn thì có GSM shield,... Rất đơn giản, và ta chỉ phải tập trung vào việc "lắp ghép" các thành phần này và sáng tạo ra các ứng dụng cần thiết. 2.5.8.2. JavaScript
JavaScript là ngơn ngữ lập trình phổ biến nhất trên thế giới trong suốt
20 năm qua. Nó cũng là một trong số 3 ngơn ngữ chính của lập trình web: HTML: Giúp bạn thêm nội dung cho trang web.
CSS: Định dạng thiết kế, bố cục, phong cách, canh lề của trang web.