cài đặt Git

Hướng dẫn cài đặt Git trên Windows và Linux

Hiểu và sử dụng Git là một kỹ năng quan trọng cần có của một lập trình viên. Sau khi tìm hiểu về Git và quy trình làm việc của nó, chúng ta sẽ tiến hành cài đặt hệ thống kiểm soát phiên bản Git trên máy của bạn. Quá trình cài đặt tương đối đơn giản và trực quan.

Git là gì?

Git là phần mềm mã nguồn mở và hoàn toàn miễn phí. Nó hoàn toàn tương thích để cài đặt trên các hệ điều hành khác nhau như Mac OS X, Windows, Linux/Unix.

Tại thời điểm viết bài này tôi sẽ sử dụng Git phiên bản 2.24.0 để hướng dẫn cài đặt trên hệ 2 hệ điều hành Windows 10 và Ubuntu 19.04

Nếu như bạn đã có đầy đủ các điều kiện cần thiết như máy tính cài sẵn hệ điều hành Windows 10 hoặc Ubuntu 19.04, một đường truyền kết nối internet và không gặp bất kỳ khó khăn nào khi xem bài giới thiệu về Git thì chúng ta hãy bắt đầu bằng cách tiến hành cài đặt Git trên hệ thống Windows.

Git là gì?

Cài đặt Git trên Windows

Bước 1 : Tải xuống phiên bản Git mới nhất

Bước 2: Sau khi quá trình tải xuống của bạn hoàn tất, hãy chạy tệp .exe trong hệ thống của bạn.

Bước 3: Sau khi bạn nhấn nút Run và cửa sổ đồng ý với giấy phép hiện ra

Bấm Next để lựa chọn nơi cài đặt Git trên máy tính

Bấm Next , bạn sẽ tìm thấy lời nhắc cửa sổ để chọn các thành phần sẽ được cài đặt. Sau khi bạn đã lựa chọn các thành phần mong muốn của mình, nhấp Next.

Lưu ý: Để mặc định theo nhà sản xuất phần mềm nếu bạn chưa thực sự hiểu rõ về các lựa chọn của mình

Bước 4: Cửa sổ nhắc tiếp theo sẽ cho phép bạn tạo đường dẫn trên Start Menu

Bấm Next để được dẫn tới màn hình lựa chọn công cụ chỉnh sửa “editor”, đây là công cụ sẽ giúp các bạn thực hiện việc biên tập các tập tin trong repository sau này. Git cung cấp cho chúng ta đến 8 tùy chọn editor như Nano, Viam (mặc định được lựa chọn), Notepad ++, Visual Studio Code, Sublime Text, Atom,…. nếu lựa chọn một trong số editor được liệt kê thì hãy chắc chắn máy của bạn đã cài đặt sẵn editor đó nhé. Ở đây, tôi để mặc định Vim. Bạn có thể xem thêm Vim là gì.

Bấm Next, để tới màn hình cài đặt môi trường cho Git. Đây là nơi bạn quyết định cách bạn muốn sử dụng Git. Bạn có thể chọn bất kỳ một trong ba tùy chọn theo nhu cầu của bạn. Nhưng đối với người mới bắt đầu học Git, tôi khuyên bạn nên sử dụng tùy chọn thứ 2: “Git from command line and also from 3rd-party software”, đối với tùy chọn này thì ngoài Git Bash (CLI của Git) được cung cấp mặc định thì bạn có thể thao tác với Git thông qua CMD hoặc Powershell của Windows. Bấm Next để tiếp tục.

Bước 5: Bước tiếp theo là chọn các tính năng mã hóa kết nối cho Git của bạn. Nếu bạn là sinh viên hoặc nhà phát triển mới mà chưa rành về SSL/TLS là gì thì hãy chọn tùy chọn thứ 2 nhé. Bấm Next để tiếp tục

Màn hình tiếp theo nhắc nhở bạn tùy chọn định dạng cần chuyển đổi sau khi kết thúc thao tác dòng lệnh với Git. Chọn tùy chọn 2 để phù hợp với tiêu chuẩn kết thúc dòng Linux sẵn có của GIT. Hiểu nôm na là với lựa chọn này, người dùng Windows sẽ có các tệp văn bản được chuyển đổi từ các kết thúc dòng kiểu Windows ( ) sang các kết thúc dòng kiểu Unix ( ) khi chúng được thêm vào kho lưu trữ. Điều này đảm bảo hơn về cơ chế lưu trữ trong Git khi bạn muốn xem lại Log hoặc Status. Bấm Next để tiếp tục.

Bước 6: Màn hình cấu hình công cụ giả lập dòng lệnh để sử dụng Git Bash. Bạn có thể chọn 1 trong 2, nhưng cá nhân tôi sử dụng MinTTY. Bởi lẽ, Mintty là một phần phần mềm mô phỏng giao diện dòng lệnh mặc định của Git tương đối tốt, nó cung cấp các tính năng bổ sung như kéo và thả, toàn màn hình, sao chép và dán và hỗ trợ theme giúp chúng ta thao tác thuận lợi hơn với dòng lệnh. Bấm Next để tiếp tục

Cài đặt Git trên Windows

Bạn nhận được ba tùy chọn và bạn có thể chọn bất kỳ tùy chọn nào trong số chúng, tất cả chúng hoặc không có tùy chọn nào theo nhu cầu của bạn. Hãy để tôi nói cho bạn biết những tính năng này là gì:

Đầu tiên là tùy chọn Enable file system caching: Bộ nhớ đệm sẽ được bật thông qua Trình quản lý bộ đệm, nó sẽ hoạt động liên tục trong khi Windows đang chạy. Dữ liệu tệp trong bộ đệm tệp hệ thống được ghi vào đĩa theo các khoảng thời gian được xác định bởi hệ điều hành và bộ nhớ được sử dụng trước đó bởi dữ liệu tệp đó sẽ được giải phóng.

Tùy chọn thứ hai là Enable Git Credential Manager: Các chứng chỉ “Credential” quản lý Git cho Windows (GCM) là một helper chứng nhận trung gian cho Git. Nó lưu trữ an toàn thông tin đăng nhập của bạn trong Windows CM để bạn chỉ cần nhập chúng một lần cho mỗi kho lưu trữ từ xa mà bạn truy cập. Tất cả các lệnh Git trong tương lai sẽ sử dụng lại các thông tin hiện có. Bật tùy chọn này nếu bạn chắc chắn máy tính/tài khoản máy tính của bạn được bảo mật an toàn nhé 🙂

Tùy chọn thứ ba là Enable symbolic links: Tùy chọn này giúp bạn có thể tạo các liên kết tượng trưng bằng các phím tắt nâng cao. Bạn có thể tạo các liên kết tượng trưng cho từng tệp hoặc thư mục riêng lẻ và các liên kết này sẽ xuất hiện giống như chúng được lưu trữ trong thư mục có liên kết tượng trưng.

Bấm Next để tiếp tục

Bước 7: Nếu bạn muốn thử nghiệm các tính năng mới của Github, bạn có thể chọn thử nghiệm, dựng sẵn. Bạn có thể xem sự khác biệt mã giữa các phiên bản khác nhau cho (các) tệp.

Sau khi đã hoàn thành tất cả các thiết lập bên trên. Chọn Install để cài đặt

Chọn Launch Git Bash và nhấp vào Finish để kết thúc quá trình cài đặt.

Điều này sẽ khởi chạy Git Bash trên màn hình của bạn, hãy thử gõ “git –version” để kiểm tra phiên bản Git vừa cài đặt thành công vào máy tính. Nếu xuất hiện như bên dưới, chúc mừng bạn đã cài đặt thành công.

Bước 8: Trước khi sử dung Git cho dự án của bạn. Điều đầu tiên, hãy tiến hành cấu hình Git với tên người dùng và email của bạn. Để làm được điều đó, hãy nhập các lệnh sau trong Git Bash:
git config –global user.name “<your name>”git config –global user.email “<your email>”

Đây là bước quan trọng trong cấu hình Git của bạn vì bất kỳ Commit nào bạn thực hiện sau này, đều được định danh và liên kết với cấu hình của bạn. Nếu bạn muốn xem tất cả các chi tiết cấu hình của mình, hãy sử dụng lệnh bên dưới:

git config –list

Như vậy là bạn đã biết cách cài đặt và thiết lập GIT trên Windows.

Cài đặt Git trên Ubuntu

Trước khi tiếp tục với hướng dẫn cài đặt này, hãy đảm bảo bạn đã đăng nhập bằng root hoặc người dùng có quyền sudo trên máy tính cài đặt hệ điều hành Ubuntu. Có 2 cách để cài đặt Git trên Ubuntu:

Cách 1: Cài đặt Git với Apt

Cách dễ nhất và được khuyến nghị để cài đặt Git là cài đặt nó bằng apt (công cụ quản lý các gói cài đặt có sẵn từ kho lưu trữ mặc định của Ubuntu). Nếu bạn muốn cài đặt phiên bản Git ổn định mới nhất từ ​​nguồn, hãy chuyển sang hướng dẫn Cài đặt Git từ source của hướng dẫn này. Vì khi cài đặt bằng cách 1 bạn sẽ chỉ tải và cài đặt được phiên bản sẵn có trên kho phần mềm của Ubuntu.

Thực hiện theo các bước sau để cài đặt Git trên hệ thống Ubuntu của bạn.

Bước 1: Mở terminal để chuẩn bị cài đặt package

Trước tiên hãy cập nhật chỉ mục cài đặt gói bằng câu lệnh:

sudo apt update

Hãy nhập mật khẩu tài khoản nếu được yêu cầu

Bước 2: Chạy lệnh sau để tải về và cài đặt Git:

sudo apt install git

Nhập Y và Enter để xác nhận cài đặt

Bước 3: Xác minh cài đặt bằng cách nhập lệnh sau sẽ in phiên bản Git:

git –version

Tại thời điểm viết bài viết này, phiên bản Git hiện tại có sẵn trong kho Ubuntu 19.04 là 2.20.1

Thế là xong, bạn đã cài đặt thành công Git trên Ubuntu của mình và bạn có thể bắt đầu sử dụng nó.

Cài đặt Git trên Ubuntu

Cách 2: Cài đặt Git từ source

Một tùy chọn khác là biên dịch Git từ nguồn, cho phép bạn cài đặt phiên bản Git mới nhất và tùy chỉnh các tùy chọn xây dựng. Tuy nhiên, bạn sẽ không thể duy trì cài đặt Git của mình thông qua trình quản lý gói apt mà Ubuntu cung cấp.

Bước 1: Đầu tiên, cài đặt các thành phần cần thiết để xây dựng Git trên hệ thống Ubuntu của bạn:

sudo apt updatesudo apt install make libssl-dev libghc-zlib-dev libcurl4-gnutls-dev libexpat1-dev gettext unzip

Bước 2: Khi quá trình cài đặt hoàn tất, hãy mở trình duyệt của bạn, truy cập vào Git trên GitHub và tải xuống phiên bản phát hành mới nhất phần mở rộng đuôi .tar.gz

Tại thời điểm viết bài viết này, phiên bản Git ổn định mới nhất là 2.24.0. Tôi sẽ tải xuống nguồn Git và đặt trong thư mục Download mặc định sau khi tải file từ trình duyệt:

Bước 3: Trên terminal truy cập thư mục chứa nguồn cài đặt Git bằng dòng lệnh

lscd Downloads​​​​​​​ls

Bước 4: Tiếp theo, giải nén tệp tar.gz và thay đổi thư mục nguồn Git bằng cách nhập:

udo tar -xf git-2.24.0.tar.gzcd git-2.24.0/

Bước 5: Chạy hai lệnh sau để biên dịch và cài đặt Git trên hệ thống Ubuntu của bạn:

sudo make prefix=/usr/local allsudo make prefix=/usr/local install

Sau khi chay 2 lệnh trên xong, để xác minh cài đặt, gõ lệnh sau sẽ in phiên bản Git đã cài đặt:

git –version

​​​​​Bước 6: Trước khi chúng ta tiếp tục, bạn cần cấu hình một số thông tin để git lưu trữ và xem lại danh sách cấu hình.

git config –global user.name “<your name>”git config –global user.email “<your email>”git config –list

Bước 7: Bây giờ chúng ta cần tạo một khóa SSH. SSH là một giao thức bảo mật được sử dụng làm phương tiện chính để kết nối với máy chủ Linux từ xa. Bây giờ để tạo khóa SSH mới, chúng ta sẽ sử dụng:

ssh-keygen -t rsa -b 4096 -C “<your email>”

Nó sẽ yêu cầu bạn nhập tên tệp mà bạn muốn lưu khóa. Nếu bạn muốn nó được lưu trong thư mục mặc định của bạn, nhấn ‘Enter’. Nhập cụm mật khẩu trống nếu bạn muốn và sau đó nhập lại cùng một lần nữa.

Có một chương trình gọi là ssh-agent , nó chạy liên tục trong phiên đăng nhập cục bộ. Nó lưu trữ các khóa không được mã hóa trong bộ nhớ và giao tiếp với các SSH client bằng cách sử dụng 1 Unix domain socket. Vì vậy, để đảm bảo rằng SSH agent đã được kích hoạt, chúng ta sẽ sử dụng lệnh sau:

eval “$(ssh-agent -s)”

Để thêm SSH key vào SSH agent sử dụng lệnh. Nhớ điền passphrase mà bạn đã add vào khi tạo SSH-key ở trên :))

ssh-add ~/.ssh/id_rsa

Để thêm khóa SSH vào tài khoản GitHub của tôi, tôi sẽ sử dụng:

cat ~/.ssh/id_rsa.pub

Dòng chữ “loằng ngoằng” mà bạn nhìn thấy trên màn hình thực sự là khóa SSH 😉

Cuối cùng, chúng ta cần sao chép khóa SSH để add vào tài khoản GitHub. Nếu bạn chưa có kho lưu trữ GitHub và muốn tìm hiểu cách tạo nó, hãy truy cập vào đây xem cách tạo nhé 🙂

Trong bài viết này, tôi đã có sẵn một tài khoản Github. Dưới đây là màn hình khi truy cập Setting và sau đó đi đến tùy chọn khóa SSH và GPG ở bên trái.

Bây giờ tôi sẽ nhấn vào New SSH key và thêm Title cho nó và sau đó dán khóa đã sao chép vào khoảng trống Key được cung cấp (Lưu ý: khóa bắt đầu bằng ssh-rsa nhé). Nhấn Add SSH key

Bây giờ sử dụng lệnh dưới đây để kiểm tra khóa SSH, ở đây tôi sử dụng email để kiểm tra của Github là [email protected]. Gõ Yes để kết nối server github nhé

ssh -T [email protected]

Đây là cách bạn cài đặt Git và kết nối với kho lưu trữ trung tâm của bạn trên Git. Ngoài ra bạn có thể tìm hiểu thêm cách tạo khóa SSH tại đây :

Tạo kho trên GitHub

Bạn đã học cách cài đặt Git trong hệ thống của mình và giờ là lúc chúng ta có thể tạo các kho lưu trữ trên GitHub, nó sẽ hoạt động như kho lưu trữ từ xa của bạn.

Bước 1: Truy cập vào www.github.com, tất cả những gì bạn cần làm là điền vào mẫu bên dưới và nhấp vào Sign up for Github

Bước 2: Sau khi làm thủ tục xác nhận tài khoản, bấm Next:Select a plan

Chọn Plan mà bạn có nhu cầu sử dụng rồi có thể trả lời một số câu hỏi của Github đưa ra nhằm cải thiện quá trình hỗ trợ người dùng tốt hơn. Tiếp tục bấm Complete Setup và xác thực theo đường dẫn Github gửi cho bạn theo email đăng ký để hoàn tất việc đăng ký. Hãy bắt đầu tạo ngay kho lưu trữ cho mình ở bước tiếp theo

Bước 3: Đặt tên cho kho lưu trữ của bạn và nhấp vào Create repository .

Description sẽ giúp bạn có 1 mô tả ngắn về kho lưu trữ. Bạn cũng có thể chọn Public hay Private để phù hợp với nhu cầu chia sẻ kho lưu trữ của mình. Các tùy chọn khác như tạo một file README.md, .gitignore hoặc license bạn cũng có thể cân nhắc thiết lập để dự án của mình chuyên nghiệp hơn nhé.

Tạo kho trên GitHub

Bây giờ, bạn đã sẵn sàng để commit, pull, push và thực hiện tất cả các thao tác khác với Github. Nếu bạn muốn tìm hiểu cách thực hiện các thao tác này và hơn thế nữa, vui lòng theo dõi chuỗi bài Tự học lập trình của tôi nhé .

IOT

IOT là gì? Ứng dụng của Internet vạn vật trong mọi lĩnh vực đời sống

Bạn đã nghe đến IOT hay Internet of things? Vậy IOT là gì? Bài viết này sẽ cung cấp cho bạn biết IOT là gì? Ứng dụng của Internet vạn vật trong đời sống hiện nay như thế nào? Vai trò không thể thiếu của Internet of things?

IOT là gì?

Internet of Things (IoT) là sự kết nối giữa các thiết bị điện toán được nhúng trong các đối tượng- thiết bị hàng ngày. Nó cho phép chúng gửi và nhận dữ liệu. IOT được định nghĩa đơn giản là một phần mở rộng của kết nối internet. Được đưa vào các thiết bị vật lý. Các thiết bị vật lý này bao gồm từ các vật dụng gia đình thông thường đến các công cụ công nghiệp tinh vi.

Về cơ bản, nó là một hệ thống các thiết bị điện toán liên quan. Máy móc và máy móc kỹ thuật số, vật thể, động vật hoặc con người được cung cấp các mã định danh duy nhất (UID). Và có khả năng truyền dữ liệu qua mạng mà không yêu cầu giữa người với người hoặc người tương tác với máy tính.

IOT là gì?

Bạn có thể biết mọi thứ nhờ Internet of things

Với IoT, bạn có thể biến mọi thứ từ giấy sang máy bay thành xe tự lái sang thiết bị nhà thông minh. IoT cung cấp một mức độ thông minh kỹ thuật số cho các thiết bị. Cho phép chúng giao tiếp dữ liệu theo thời gian thực mà không cần con người thực hiện. Từ đó hợp nhất hiệu quả thế giới kỹ thuật số và vật lý.

Từ các trung tâm nhà thông minh được kết nối. Bộ điều khiển cảm ứng nhiệt thông minh, khóa cửa từ xa. Và tất cả các thiết bị điều khiển ứng dụng khác nhau. Chúng ta đã biết IoT hữu ích như thế nào trong cuộc sống hàng ngày của chúng ta.

IoT đang phát triển hàng ngày về tầm quan trọng. Trong công nghiệp, thương mại và hàng ngày. Nó đang làm cho cuộc sống của chúng ta tốt hơn.

Ứng dụng IoT là gì? – Internet of Things

Ứng dụng của IoT rất đa dạng và phong phú. Nó có thể áp dụng trong các hoạt động hàng ngày của chúng ta như kinh doanh, công việc nhà, cộng đồng, y tế, giải trí và nhiều lĩnh vực khác. Gần như mọi khía cạnh của cuộc sống con người đều có sự hiện diện của internet vạn vật.

Trong lĩnh vực y tế

Để theo dõi Động vật / Thú cưng, các tiện ích công cộng như đèn đường, camera quan sát, quản lý chất thải, giám sát và kiểm soát. Thiết bị đeo để theo dõi sức khỏe con người : Thiết bị đeo được bật IoT có thể được sử dụng để theo dõi và theo dõi sức khỏe con người nói chung. Thiết bị đeo IoT cho phép mọi người hiểu rõ hơn về sức khỏe của chính họ và cho phép các bác sĩ theo dõi bệnh nhân từ xa.

Cải thiện hiệu quả trong sản xuất

Với IoT, bạn có thể tăng sức mạnh sản xuất một cách hiệu quả. Máy có thể được theo dõi và phân tích liên tục để đảm bảo chúng hoạt động trong phạm vi được yêu cầu. Sản phẩm cũng có thể được theo dõi trong thời gian thực để xác định và giải quyết các khiếm khuyết về chất lượng.

Ứng dụng IoT là gì? - Internet of Things

Cải thiện các quy trình hiện có

Với các thiết bị dựa trên IoT, chúng ta có thể cải thiện và tăng thời gian dành cho việc thực hiện một số quy trình. Ví dụ như thời gian một người nông dân dành để theo dõi từng vụ mùa có thể tăng tốc đáng kể. Bằng cách sử dụng máy bay không người lái kích hoạt IoT.

Thiết bị nhà thông minh

Chẳng hạn, trong phân khúc người tiêu dùng, nhà thông minh được trang bị bộ điều nhiệt thông minh. Các thiết bị như hệ thống sưởi, chiếu sáng, và các thiết bị điện tử có thể kết nối và điều khiển từ xa qua máy tính và điện thoại thông minh.

Các ngành sử dụng IoT là gì?

Trung tâm y tế và theo dõi sức khỏe

Trong chăm sóc sức khỏe, IoT mang lại nhiều lợi ích, bao gồm khả năng giám sát bệnh nhân chặt chẽ hơn và sử dụng dữ liệu phân tích để hiểu rõ hơn về tình trạng của họ. Ví dụ, khi xe lăn của bệnh viện được trang bị cảm biến IoT, chúng có thể được theo dõi qua ứng dụng giám sát tài sản, giúp người tìm kiếm nhanh chóng xác định vị trí chiếc xe lăn có sẵn gần nhất.

Sản xuất

IoT giúp ngành công nghiệp sản xuất nhanh hơn và chính xác hơn. Các nhà sản xuất có thể đạt lợi thế cạnh tranh bằng cách sử dụng giám sát dây chuyền sản xuất, cho phép bảo trì chủ động khi cảm biến phát hiện lỗi sắp xảy ra.

Nông nghiệp

Trong nông nghiệp, các hệ thống canh tác thông minh dựa trên IoT giúp giám sát ánh sáng, nhiệt độ, độ ẩm và độ ẩm đất của các cánh đồng thông qua cảm biến kết nối. Máy bay không người lái có thể được triển khai để giám sát cây trồng, nhanh chóng phát hiện các loại cây bị sâu bệnh.

Các ngành sử dụng IoT là gì?

Bán lẻ

Trong bán lẻ, ứng dụng IoT giúp quản lý hàng tồn kho, cải thiện trải nghiệm khách hàng, tối ưu hóa chuỗi cung ứng và giảm chi phí vận hành. Ví dụ, một công ty bán lẻ có thể sử dụng kệ thông minh gắn cảm biến trọng lượng và thu thập thông tin dựa trên RFID. Dữ liệu được gửi tới nền tảng IoT để tự động theo dõi hàng tồn kho và kích hoạt cảnh báo khi hàng sắp hết.

Tự động

Trong phần tự động, IoT có thể được áp dụng theo nhiều cách khác nhau. Các cảm biến kích hoạt IoT có thể phát hiện lỗi thiết bị sắp xảy ra trên các phương tiện đã đi trên đường. Và có thể cảnh báo cho người lái xe với các chi tiết và khuyến nghị. Các thiết bị IoT có thể được cài đặt trên các phương tiện cho các nhiệm vụ khác nhau.

Các tính năng chính của Internet of Things – IoT là gì?

Các tính năng hoặc đặc điểm của Internet of Things – IoT là:

Thông minh :

Trí thông minh trong IoT liên quan đến các tương tác thông minh và liền mạch giữa các thiết bị. Trong khi tương tác giữa người dùng và thiết bị đạt được bằng GUI . Giao diện người dùng đồ họa và Phương thức nhập liệu chuẩn.

Kết nối

Kết nối trong IoT tập hợp các đối tượng / thiết bị hàng ngày. Nó tạo điều kiện cho kết nối mạng, khả năng truy cập và khả năng tương thích trong mọi thứ.

Bản chất động

Bản chất động trong IoT chịu trách nhiệm cho các thay đổi động diễn ra xung quanh các thiết bị được kết nối. Như; ngủ và thức dậy, kết nối hoặc ngắt kết nối. Trạng thái của các thiết bị bao gồm mức nhiệt độ (nóng / lạnh) và vị trí.

Cảm biến

Cảm biến trong IoT được cung cấp bởi một số cảm biến được thiết kế để phát hiện hoặc đo lường bất kỳ thay đổi nào trong môi trường để tạo dữ liệu có thể báo cáo về trạng thái của chúng hoặc thậm chí tương tác với môi trường.

Tính không đồng nhất

Tính không đồng nhất trong Internet of Things chịu trách nhiệm hỗ trợ kết nối mạng trực tiếp giữa các mạng không đồng nhất. Các yêu cầu cho những thứ không đồng nhất trong IoT là khả năng mở rộng, mô đun hóa, khả năng mở rộng và khả năng tương tác.

Bảo mật

Bảo mật trong IoT là một lĩnh vực quan trọng vì các thiết bị IoT tự nhiên dễ bị tổn thương trước các mối đe dọa bảo mật. Và Điều quan trọng là bảo mật các điểm cuối, mạng và dữ liệu được truyền qua tất cả những thứ liên quan.

Trên đây là toàn bộ thông tin về IOT là gì mà Aptech đã chia sẻ đến cho bạn. Mong rằng với những thông tin ở trên bạn đã có thể hiểu rõ về khái niệm này và ứng dụng được trong đời sống.

Java là gì thumbnail

Java là gì? Hướng dẫn cho người mới bắt đầu về Java

Java là một nền tảng đa dụng, hướng đối tượng, dựa trên lớp và môi trường thực thi (JRE) bao gồm JVM (là nền tảng của Java flatform). Bài viết dưới đây của Aptech sẽ giúp bạn hiểu được Java là gì và xóa tan mọi nghi ngờ của bạn về lý do nên học java, các tính năng và cách thức hoạt động của nó.

Java là gì?

Nó là một ngôn ngữ hướng đối tượng tương tự như C ++, nhưng với các tính năng nâng cao và đơn giản hóa. Java là miễn phí để sử dụng và có thể chạy trên tất cả các nền tảng .

Ngoài ra Java còn là:

  • Thực thi đồng thời , nơi bạn có thể thực thi nhiều câu lệnh thay vì thực hiện tuần tự nó.
  • Dựa trên lớp và một ngôn ngữ lập trình hướng đối tượng .
  • Ngôn ngữ lập trình độc lập tuân theo logic “Viết một lần, Chạy mọi nơi” có nghĩa là mã được biên dịch có thể chạy trên tất cả các nền tảng hỗ trợ java.

Java là gì?

Java đã được sử dụng trong các lĩnh vực nào?

  • Ngân hàng: Để quản lý công việc giao dịch.
  • Bán lẻ : Các ứng dụng thanh toán mà bạn thấy trong cửa hàng hay các nhà hàng hiện nay đều được viết hoàn toàn bằng Java.
  • Công nghệ thông tin : Java được thiết kế để giải quyết các vấn đề ràng buộc tin cậy.
  • Android : Các ứng dụng trên điện thoai android được viết bằng Java hoặc sử dụng API Java.
  • Dịch vụ tài chính : Java được sử dụng trong các ứng dụng phía máy chủ tài chính
  • Thị trường chứng khoán : Để viết các thuật toán giúp người dùng biết được họ nên đầu tư vào công ty nào.
  • Dữ liệu lớn : Hadoop MapReduce được viết bằng Java.
  • Cộng đồng khoa học và nghiên cứu : Nhằm mục đích đối phó với lượng dữ liệu khổng lồ.

Khoan đã! Java có thể làm nhiều hơn nữa. Chúng ta hãy xem một số công nghệ sử dụng Java như một cốt lõi thiết yếu của các chức năng của chúng. Bạn có thể thấy trong hình trên, có thể coi Java là một “đại dương” cơ hội . Bây giờ, ta hãy xem lịch sử ngắn gọn của Java.

Java đã được sử dụng trong các lĩnh vực nào?

Lịch sử của Java

Java là một ngôn ngữ lập trình được phát triển bởi một lập trình viên tên James Gosling với các thành viên khác có tên Mike Sheridan và Patrick Naughton. Đây còn được gọi là Green Team trong năm 1995 cho Sun Microsystems – nơi chuyên sản xuất các thiết bị kỹ thuật số như set-top-box, TV,….

Các tính năng của Java

  • Đơn giản: Java đã làm cho việc code dễ dàng hơn bằng cách loại bỏ tất cả các phức tạp như con trỏ, nạp chồng toán tử như bạn thấy trong C ++ hoặc bất kỳ ngôn ngữ lập trình nào khác.
  • Portable: Java độc lập với nền tảng, có nghĩa là mọi ứng dụng đều được viết trên một nền tảng và thể dễ dàng chuyển sang nền tảng khác.
  • Hướng đối tượng: mọi thứ đều được coi là một đối tượng ‘object’,cái mà sở hữu một số trạng thái, hành vi và tất cả các hoạt động được thực hiện bằng cách sử dụng các đối tượng này.
  • Bảo đảm: Tất cả mã được chuyển đổi trong bytecode sau khi biên dịch, mà không thể đọc được bởi một con người. Java không sử dụng một con trỏ rõ ràng và chạy các chương trình bên trong một sandbox ‘môi trường riêng’ để ngăn chặn mọi hoạt động từ các nguồn không đáng tin cậy.
  • Năng động: Nó có khả năng thích ứng với môi trường phát triển hỗ trợ cấp phát bộ nhớ động do giảm lãng phí bộ nhớ và do đó hiệu suất của ứng dụng cũng được tăng lên.
  • Phân tán: Java cung cấp một tính năng độc đáo giúp tạo các ứng dụng phân tán. Sử dụng Remote Method Invocation (RMI) gọi phương thức từ xa, một chương trình có thể gọi một phương thức của một chương trình khác trên một mạng và nhận đầu ra. Bạn có thể truy cập các tệp bằng cách gọi các phương thức từ bất kỳ máy nào trên internet.
  • Mạnh mẽ: Nó giúp loại bỏ lỗi vì nó kiểm tra mã code trong quá trình biên dịch và thời gian chạy .
  • Hiệu suất cao: Java đạt được hiệu suất cao thông qua việc sử dụng mã byte có thể dễ dàng dịch sang mã máy gốc. Với việc sử dụng các trình biên dịch JIT (Just-In-Time), Java cho phép hiệu năng cao.
  • Thông dịch: Java được biên dịch thành mã byte, được thông dich bởi môi trường thực thi Java.
  • Đa luồng: Java hỗ trợ nhiều luồng thực thi (hay còn gọi là các quy trình nhẹ), bao gồm một tập hợp các nguyên hàm đồng bộ hóa.

Các tính năng của Java

Các thành phần trong Java

JVM (Java Virtual Machine – Máy ảo Java)

Nó là một cỗ máy trừu tượng. Được hiểu rằng nó cung cấp một môi trường thực thi dòng lệnh trong đó mã byte Java có thể được thực thi. Nó có 3 điểm nhận dạng:

  • Specification: Đây là một tài liệu mô tả việc triển khai máy ảo Java và nó được cung cấp bởi Sun và các công ty khác.
  • Implementation: Đây là một chương trình đáp ứng các yêu cầu của đặc tả JVM.
  • Runtime Instance: Một instance (có thể được hiểu là đối tượng) của JVM được tạo bất cứ khi nào bạn viết lệnh java trên dấu nhắc lệnh và thực thi class.

JRE (Java Runtime Environment – Môi trường thực thi Java)

Nó triển khai JVM (Máy ảo Java) và cung cấp tất cả các lớp thư viện và các tệp hỗ trợ khác mà JVM sử dụng khi chạy. Vì vậy, JRE là gói phần mềm chứa tất cả những gì được yêu cầu để chạy chương trình Java. Về cơ bản, đó là cách để triển khai một JVM tồn tại trên thực tế.

JDK (Java Development Kit – Bộ phát triển Java)

Đây là công cụ cần thiết để:

  • Biên dịch
  • Tài liệu
  • Các gói ứng dụng cho Java.

Các thành phần trong Java

Trên đây là toàn bộ thông tin về java mà Aptech đã chia sẻ đến cho bạn. Mong rằng qua bài viết trên bạn đã có thể hiểu được Java là gì và biết cách sử dụng được ngôn ngữ lập trình này.

tự học java

Viết chương trình đầu tiên “Hello World” bằng Java

Chương trình đầu tiên mà bất kỳ lập trình viên muốn tự học Java nào học lập trình là viết chương trình “Hello World” bằng Java. Thông qua bài viết này, tôi sẽ hướng dẫn chi tiết về Chương trình Hello World trong Java. Chương trình đầu tiên khi tự học Java hôm nay là viết chương trình “Hello World” bằng Java.

Nội dung chương trình Hello World trong bài tự học Java hôm nay

Trước khi chúng ta đi vào chi tiết, trước tiên hãy bắt đầu với mã hóa và xem chương trình Hello World cơ bản trong Java được code như thế nào .

public class HelloWorldDemo { public static void main(String[] args) { System.out.println( “Hello World!” ); System.exit( 0 ); //success }}
Bây giờ hãy phân tích sâu cú pháp của chương trình.

Phân tích cú pháp chương trình Helloworld trong Java

Dòng 1: public class HelloWorldDemo {

Dòng này sử dụng từ khóa class để khai báo một lớp mới gọi là HelloWorldDemo. Do Java là ngôn ngữ lập trình hướng đối tượng (OOP). Nên toàn bộ định nghĩa lớp, bao gồm tất cả các thành viên của nó phải được đặt ở giữa dấu ngoặc nhọn mở { và dấu ngoặc nhọn đóng }. Ngoài ra, nó đang sử dụng từ khóa public để chỉ định khả năng truy cập của lớp từ bên ngoài gói.

Dòng 2: public static void main (String [] args) {

Dòng này khai báo một phương thức gọi là main(String []). Nó được gọi là phương thức chính và đóng vai trò là điểm vào cho trình biên dịch Java để bắt đầu thực hiện chương trình. Nói cách khác, bất cứ khi nào và bất kỳ chương trình nào được thực thi trong Java. Phương thức chính main là hàm đầu tiên được gọi. Các chức năng khác trong ứng dụng sau đó được gọi từ phương thức chính. Trong một ứng dụng Java tiêu chuẩn. Một phương thức chính main là bắt buộc để kích hoạt thực thi.

Bây giờ hãy chia nhỏ toàn bộ dòng này và phân tích từng từ:

  • public: Được hiểu như chỉ định mức độ hiển thị. Nó cho phép JVM thực thi phương thức từ bất cứ đâu.
  • static : Đây là một từ khóa mô tả thành viên của lớp tĩnh (static class). Phương thức chính main được tạo tĩnh vì không cần tạo đối tượng khác để gọi các phương thức tĩnh trong Java. Do đó, JVM có thể gọi nó mà không cần phải tạo một đối tượng khác giúp tiết kiệm bộ nhớ.
  • void : Nó đại diện cho kiểu trả về của phương thức. Do phương thức chính main của Java không trả về bất kỳ giá trị nào nên kiểu trả về của nó được khai báo là void.
  • main () : Đó là tên của phương thức đã được cấu hình trong JVM.
  • string[] : Nó biểu thị rằng phương thức chính main của Java có thể chấp nhận một đối số dòng đơn của mảng kiểu Chuỗi string. Điều này còn được gọi là đối số dòng lệnh java. Dưới đây tôi đã liệt kê một số phương thức chính java hợp lệ:

public static void main(String[] args) public static void main(String []args)public static void main(String args[])public static void main(String… args)static public void main(String[] args) public static final void main(String[] args) final public static void main(String[] args)

Phân tích cú pháp chương trình Helloworld trong Java

Dòng 3: System.out.println( “Hello World!” );

System : Đây là một lớp đã được định nghĩa trước trong gói java.lang ( nơi chứa các phương thức và biến hữu ích khác nhau)

  • out : Đây là một trường thành viên tĩnh của lớp PrintStream.
  • println: Đây là một phương thức của lớp PrintStream và được sử dụng để in đối số đã được thông qua bàn điều khiển tiêu chuẩn. Bạn cũng có thể sử dụng phương thức print () thay vì println ().

Dòng 4: System.exit (0);

Các phương thức java.lang.System.exit() được sử dụng để thoát khỏi chương trình hiện tại bằng cách chấm dứt Máy ảo Java (JVM) hiện đang thực thi. Phương thức này lấy mã trạng thái làm đầu vào thường là giá trị khác không. Nó biểu thị ra trong bất kỳ trường hợp nào chấm dứt bất thường xảy ra.

exit (0): Nó được sử dụng để chỉ sự chấm dứt thành công.
exit(1) hoặc exit (-1) hoặc bất kỳ giá trị khác không: Nó được sử dụng để biểu thị chấm dứt không thành công.

Đó là tất cả về cú pháp chương trình. Bây giờ chúng ta hãy xem cách biên dịch Hello World trong chương trình Java.

Biên dịch chương trình Hello World trong Java

Bây giờ những gì bạn cần là nhập vào chương trình này trong trình soạn thảo văn bản của bạn lưu nó với tên lớp mà bạn đã sử dụng trong chương trình của bạn. Trong trường hợp của tôi, tôi sẽ lưu nó dưới dạng HelloWorldDemo.java

Bước tiếp theo là, đi đến cửa sổ giao diện dòng lệnh (Command Line/Terminal) của bạn. Và điều hướng đến thư mục mà bạn đã lưu chương trình của mình.

Bây giờ để biên dịch chương trình gõ lệnh dưới đây

javac HelloWorldDemo.java

Lưu ý: Java phân biệt chữ hoa chữ thường. Do đó hãy đảm bảo rằng bạn nhập tên file theo đúng định dạng.

Biên dịch chương trình Hello World trong Java

Java biên dịch chương trình như thế nào?

Các ngôn ngữ cấp cao như Java, C, C ++,… biên dịch chương trình thành mã cấp thấp tương đương (ngôn ngữ máy) để có thể được hiểu và thực thi bởi máy tính. Các bạn có nhớ câu nói “Write Once, Run Everywhere” của Java không? Nghe rất tuyệt nhỉ, để làm được như vậy Java làm như thế nào? Xem hình dưới đây nhé!

Như các bạn đã biết, hiện nay cúng ta có các hệ điều hành khác nhau về kiến trúc như Windows. Linux và Mac nên để các chương trình được viết bằng Java có thể chạy được trên đó. Chúng ta sẽ cần một môi trường máy ảo Java hay còn gọi là JVM. Từ đó, chương trình sẽ chạy trực tiếp trên JVM của Java chứ không có chạy trực tiếp trên OS (hệ điều hành). Java không quan tâm bạn đang sử dụng OS nào. Miễn là trên OS đó bạn có JVM phù hợp là chương trình sẽ chạy được. Bạn có thể tham khảo xem tại đây https://java.com/en/download/help/sysreq.xml

Như vậy, tương ứng với mỗi JVM của OS thì Java Compiler(hay còn được hiểu là Javac) phải biên dịch chương trình thành mã máy dạng byte-code (các file .class) phù hợp, để JVM đó có thể thực thi chương trình.

Thông thường trình biên dịch java thực hiện các bước dưới đây:

  • Kiểm tra cú pháp
  • Thêm mã bổ sung
  • Chuyển đổi mã nguồn thành mã byte tức là từ file .java sang file .class

java biên dịch chương trình như thế nào Aptech Buôn Ma Thuột

Lưu ý: Java yêu cầu mỗi lớp được đặt trong tệp nguồn riêng của nó và đặt tên phải giống tên file với phần mở rộng .Java.

Quay trở lại với ví dụ trên, nếu được biên dịch thành công, lệnh này sẽ tạo ra tệp HelloWorldDemo.class độc lập với máy và có thể mang theo được.

Bây giờ bạn đã biên dịch thành công chương trình, chúng ta hãy thử thực hiện Chương trình Hello World của chúng ta bằng Java và nhận kết quả đầu ra khi bạn tự học java online như thế nào.

Java biên dịch chương trình như thế nào?

Thực thi chương trình Hello Word trong Java

Để thực thi chương trình HelloWorld của bạn trong chương trình Java trên dòng lệnh, tất cả những gì bạn cần làm là nhập mã dưới đây:

java HelloWorldDemo

Bạn đã thực hiện thành công chương trình đầu tiên của mình trong Java. Với hướng dẫn tự học java này hi vọng bạn có thể tạo ra được nhiều chương trình ứng dụng khác!

Giả sử, nếu bạn muốn biên dịch nhiều tệp Java cùng một lúc, thì bạn có thể sử dụng lệnh bên dưới:

java *.java

Trong trường hợp bạn đang sử dụng IDE, bạn có thể bỏ qua tất cả rắc rối này và chỉ cần nhấn nút thực thi trong IDE của bạn để biên dịch và thực thi Hello World trong Chương trình Java.

Trên đây là toàn bộ thông tin về cách tự học Java mà Aptech muốn chia sẻ đến cho bạn. Mong rằng với những thông tin ở trên bạn đã có thể hiểu được về chương trình này và tự viết được chương trình cho mình.

Developer

Developer là gì? Mức độ hiểu biết của bạn về Developer như thế nào?

Tìm hiểu những khái niệm và sự khác nhau cơ bản giữa Coder, Programmer, Developer và Software Engineer là gì? Một developer chính hiệu có cuộc sống phong phú và đa dạng. Họ tạo ra những ứng dụng tiện ích và đầy màu sắc, mang lại nhiều lợi ích cho người dùng. Hãy cùng Aptech tìm hiểu chi tiết về Developer trong bài viết sau đây.

Developer là gì?

Developer (Nhà phát triển) là người không chỉ code mà tham gia vào tất cả các giai đoạn của SDLC. Được viết đầy đủ là (Software Development Life Cycle – Quy trình phát triển phần mềm). Nếu bạn cảm thấy mình có vấn đề cần giải quyết nhưng không thể định nghĩa nó rõ ràng được. Bạn cần 1 ‪‎Developer để giúp bạn tìm ra vấn đề trước, sau đó xử lý nó. (Phân tích + Giải quyết Vấn Đề + Code) . Là người viết code và phát triển sản phẩm.

Developer là gì?

Coder

Coder là người phụ trách việc viết code – làm cho hầu hết những ứng dụng của chúng ta chạy đúng. Những người này có khả năng tạo ra phần mềm. Không chỉ được sử dụng trong các ứng dụng mà còn trong game, nền tảng truyền thông xã hội và nhiều thứ khác nữa.

Coder đôi khi không thể thực hiện được hết tất cả các giai đoạn yêu cầu trong việc xây dựng một phần mềm. Như thiết kế, kiểm thử; họ hầu như chỉ làm một phần công việc trong giai đoạn viết code cơ bản. Trong một vài trường hợp, có nhiều người sẽ cảm thấy bị xúc phạm khi bạn gọi họ là Coder.

Coder

Sự khác nhau giữa Coder, Programmer, Developer và Software Engineer là gì?

Programmer

Programmer là người có chuyên môn hơn một chút. Họ có thể tạo ra phần mềm máy tính ở bất kỳ ngôn ngữ lập trình máy tính cơ bản nào, như Java, Python, Lisp,… Programmer được cho là vượt xa Coder. Họ có thể chỉ chuyên môn trong một lĩnh vực. Hay thậm chí là viết hướng dẫn cho nhiều loại hệ thống khác nhau.

Programmer cũng am hiểu khá tốt về thuật toán. Họ cũng khá giống với Developer nhưng khác ở chỗ là Programmer chủ yếu chỉ triển khai hệ thống. Trong khi Developer có thể thiết kế hoặc xây dựng một cấu trúc dữ liệu tốt trong phần mềm. Ngoài ra, Programmer sẽ quan tâm nhiều hơn vào chi tiết.

Programmer

Developer

Developer có thể viết và tạo ra một phần mềm máy tính hoàn chỉnh một cách bất ngờ mà không cần quan tâm đến thiết kế hay những tính năng khác. Họ là chìa khoá cho sự phát triển của bất kỳ ứng dụng phần mềm nào. Họ cũng là chuyên gia trong ít nhất một ngôn ngữ lập trình.

Nhiều người đánh giá họ là những chuyên gia thật sự – những người am hiểu về tất cả những vấn đề tổng quát. Developer đôi khi trở nên phổ biến hơn trong phát triển phần mềm, không giống như Programmer.

Software Engineer

Software Engineer là người ứng dụng những nguyên lý và kĩ thuật của khoa học máy tính hay kĩ thuật phần mềm. Để phát triển một phần mềm độc lập mới. Từ việc phân tích những thứ mà người dùng cần. Cho đến thiết kế, bảo trì, kiểm thử và thậm chí đánh giá phần mềm.

Họ có thể tạo ra phần mềm cho bất kỳ hệ thống nào như là những phần mềm hệ điều hành, phân phối mạng, trình biên dịch,… Họ thường có bằng đại học và có thể chứng minh nhiều thứ theo lý thuyết.

Software Engineer

Sau bài viết này bạn đã hiểu và phân biệt được các khái niệm cơ bản về các tên gọi ngành nghề liên quan đến nhau. Nếu bạn quan tâm đến các chương trình học để trở thành Coder, Programmer, Developer hoặc Software Engineer hãy tìm hiểu thêm về các khóa học lập trình của Aptech Bmt tại website chính thức của chúng tôi nhé.

cách sử dụng Github

Hướng dẫn tự học Git và Github từ cơ bản đến nâng cao

Nếu bạn là người không biết cách sử dụng Github, thì bài viết này là dành cho bạn. Biết và sử dụng Git & GitHub đã dần dần đi từ kỹ năng ưa thích sang “cần phải” được trang bị trong nhiều vai trò công việc. Trong bài viết này, Aptech sẽ đưa bạn qua các chức năng và khả năng khác nhau của GitHub.

Giới thiệu về GitHub

Trong bài trước tôi có nói sơ qua về cách thức tạo tài khoản và kho lưu trữ “Repository” trên GitHub. Bạn có thểm xem giới thiệu về git. Trong bài viết này tôi sẽ nói rõ hơn về nó, GitHub là một dịch vụ chia sẻ file hoặc code để cùng cộng tác làm việc với những người khác nhau.

GitHub là một phần mềm kiểm soát phiên bản “VCS” phổ biến. Nó hữu ích khi dự án có nhiều người cùng làm việc. Ví dụ, nhóm phát triển phần mềm muốn xây dựng trang web và cần cập nhật code đồng thời. GitHub giúp họ tạo kho lưu trữ tập trung, nơi mọi người có thể tải lên, chỉnh sửa và quản lý code của dự án.

Giới thiệu về GitHub

Vì sao nên sử dụng Github?

GitHub có nhiều lợi ích, nhưng nhiều người thắc mắc tại sao không sử dụng Dropbox hay các hệ thống đám mây khác? Hãy tưởng tượng: nếu có hơn hai nhà phát triển phần mềm làm việc trên cùng một tệp và muốn cập nhật đồng thời.

Không may, người lưu tệp đầu tiên sẽ được ưu tiên. Nhưng với GitHub, điều này không xảy ra. GitHub ghi lại các thay đổi và tổ chức chúng để tránh xung đột hay trùng lặp. Sử dụng kho lưu trữ tập trung của GitHub giúp tránh nhầm lẫn và làm việc trên cùng một tệp hoặc dự án trở nên dễ dàng.

Nhìn vào hình ảnh, GitHub là kho lưu trữ trung tâm, còn Git là công cụ cho phép tạo kho lưu trữ cục bộ trên máy tính. Git và GitHub khác nhau: Git là công cụ kiểm soát phiên bản, cho phép bạn lấy và đẩy dữ liệu từ máy chủ trung tâm. GitHub là nền tảng lưu trữ giúp lập trình viên cộng tác và kiểm soát các phiên bản mã code, cho phép bạn lưu trữ kho trên máy chủ từ xa.

Vì sao nên sử dụng Github?

Ưu điểm của Github

Dưới đây là những ưu điểm của cách sử dụng Github làm cho git trở nên đơn giản hơn:

  • GitHub cung cấp cho bạn một giao diện trực quan (nền web) đẹp mắt giúp bạn theo dõi hoặc quản lý các dự án được kiểm soát phiên bản ở local trái ngược so với Git (bạn phải thao tác trên CLI)
  • Khi đăng ký GitHub, bạn sẽ kết nối với các mạng xã hội gồm các tổ chức và cá nhân trong cùng lĩnh vực. Điều này giúp bạn trao đổi và theo dõi thông tin mới nhất về các dự án code bạn quan tâm. Ngoài ra, GitHub còn giúp bạn xây dựng hồ sơ cá nhân mạnh mẽ. Hãy chắc chắn rằng nhà tuyển dụng có thể sẽ kiểm tra hồ sơ của bạn khi phỏng vấn.

Ưu điểm của Github

Tạo kho lưu trữ GitHub – Tạo Repository trên GitHub

Một kho lưu trữ “Repository” là một không gian lưu trữ, nơi mà dự án của bạn sẽ được đẩy lên. Nó có thể là nằm ở local như một thư mục trên máy tính của bạn hoặc nó có thể là một không gian lưu trữ trên GitHub hoặc một máy chủ trực tuyến khác. Bạn có thể lưu trữ các tệp mã, tệp văn bản, hình ảnh hoặc bất kỳ loại tệp nào trong kho lưu trữ. Nếu như bạn cần một kho lưu trữ như GitHub để khi bạn thực hiện một số thay đổi và muốn tải chúng lên kho để lưu trữ và chia sẻ trực tuyến. Kho lưu trữ GitHub này hoạt động như kho lưu trữ từ xa của bạn. Các bước để tạo kho lưu trữ GitHub rất đơn giản, bạn có thể làm theo cách sau:

  • Đầu tiên hãy truy cập liên kết: https://github.com/ . Điền vào biểu mẫu đăng ký và nhấp vào Sign up for Github để tạo cho mình 1 tài khoản Github.
  • Đăng nhập vào tài khoản GitHub của bạn
  • Sử dụng dấu “+” ngoài cùng bên phải để tạo một một Repository
  • Bây giờ, nếu bạn nhận thấy theo mặc định, kho lưu trữ GitHub là công khai “Public”, điều đó có nghĩa là bất kỳ ai cũng có thể xem nội dung của kho lưu trữ này. Còn đối với kho riêng “Private”, bạn phải chỉ định ai thì họ có thể xem nội dung.

Lưu ý: hãy khởi tạo kho lưu trữ của bạn bằng tệp README.md nếu như đây là kho lưu trữ hoàn toàn mới. Tệp này thường được sử dụng để lưu các mô tả về kho của bạn, các thay đổi của kho để giúp người xem có thể nắm được một cách khái quát và nhanh nhất về kho mà bạn chia sẻ. Khi bạn đánh dấu vào tùy chọn Initialize this repository with a README thì file README sẽ là tệp đầu tiên bên trong kho lưu trữ của bạn. Ngoài ra bạn còn 2 tùy chọn thêm file .gitignore và license để thêm vào kho của mình.

Như vậy, tôi đã chuẩn bị sẵn sàng cho mình một kho lưu trữ từ xa trên Github, bây giờ thì tôi có thể thực hiện cách sử dụng Github commit, pull, push và thực hiện tất cả các hoạt động khác với kho này. Bây giờ hãy tiếp tục tìm hiểu phân nhánh trong GitHub.

Tạo kho lưu trữ GitHub - Tạo Repository trên GitHub

Tạo chi nhánh “Branch” trên Github và quản lý các thay đổi trong chi nhánh

Chi nhánh “Branch” trong Github là gì?

Branch trong git và github dịch ra là chi nhánh ^^, nó sẽ giúp bạn làm việc trên các phiên bản khác nhau của kho lưu trữ cùng một lúc. Giả sử bạn muốn thêm một tính năng mới (đang trong giai đoạn phát triển) và bạn lo ngại tính năng mới này chưa được phát triển ổn định, nếu mang nó vào phiên bản đã hoàn thiện chạy ổn định rồi thì nó có thể gây ra lỗi bug không đang có cho dự án của mình. Các Branches của git lúc này là vị cứu tinh tuyệt với 🙂

Chi nhánh cho phép bạn di chuyển qua lại giữa các trạng thái / phiên bản “states/versions” khác nhau của dự án. Để giải quyết vấn đề nêu trên, bạn có thể tạo một nhánh mới và kiểm tra tính năng mới trên đó mà không ảnh hưởng đến nhánh chính. Khi bạn đã thực hiện xong, bạn có thể hợp nhất “merge” các thay đổi từ nhánh mới sang nhánh chính. Ở đây, nhánh chính là nhánh master, có trong kho lưu trữ của bạn theo mặc định.

Như mô tả cách sử dụng Github trên, có một nhánh master và một nhánh mới develop để thử nghiệm. Trong nhánh develop này, hai bộ thay đổi C2,C4 được thực hiện và sau khi hoàn thành, nó được hợp nhất trở lại nhánh chính master tại C5. Đây là cách phân nhánh hoạt động!

Cách tạo nhánh trong Github

Để tạo một nhánh trong GitHub, hãy làm theo các bước dưới đây:

  • Nhấp vào danh sách thả xuống “Branch: master”
  • Ngay khi bạn nhấp vào chi nhánh, bạn có thể tìm thấy một chi nhánh hiện có hoặc bạn có thể tạo một chi nhánh mới. Trong trường hợp của tôi, tôi đang tạo một chi nhánh mới với tên là develop.

Khi bạn đã tạo một nhánh mới, bây giờ bạn có hai nhánh trong kho lưu trữ của mình tức là master (nhánh chính) và develop. Chi nhánh develop mới chỉ là bản sao của chi nhánh master, tại thời điểm bạn vừa tạo mới nếu bạn kiểm tra trên develop bạn sẽ thấy tất cả các file, commit của master. Bây giờ hãy tiếp tục thực hiện một số thay đổi trong nhánh develop mới xem thế nào nhé!

Tạo chi nhánh "Branch" trên Github và quản lý các thay đổi trong chi nhánh

Quản lý các thay đổi trong chi nhánh “Branches”

Lệnh commit

Thao tác này giúp bạn lưu các thông tin về sự thay đổi của tệp chỉ khi bạn thực hiện các thao tác như thêm, xóa, sửa tập tin. Khi bạn commit một thay đổi của tập tin, bạn phải luôn cung cấp một thông điệp “mesage” nó sẽ giúp ghi nhớ những thay đổi do bạn thực hiện. Đại loại như: “Hôm nay, ngày 25/06/2024 lúc 11h30’20s tôi có thêm một dòng trong file index.html” mặc dù thông báo này không bắt buộc nhưng nó luôn được khuyến nghị để nó có thể phân biệt các phiên bản khác nhau.

Mỗi thay đổi trên file sẽ tạo ra một phiên bản mới của file đó được hiểu như ảnh chụp snapshot) hoặc phân biệt các commit bạn đã thực hiện trong kho lưu trữ của mình. Những commit này duy trì lịch sử thay đổi, từ đó giúp những người cộng tác khác hiểu rõ hơn về tệp mà họ cùng đang thao tác trên đó. Bây giờ hãy thực hiện commit đầu tiên của chúng ta, làm theo các bước dưới đây:

  • Nhấp vào branch develop vừa tạo chọn Create New file
  • Sau khi tạo mới một tập tin, ở đây tôi đặt tên cho tập tin là hello.txt kèm theo nội dung nhập ở phần <>Edit new file
  • Viết một commit để ghi lại những thay đổi của bạn với tiêu đề và phần mô tả nội dung commit
  • Nhấp vào Commit new file để tạo mới 1 commit kèm theo .

Lệnh pull

Lệnh kéo “pull” là lệnh quan trọng nhất trong cách sử dụng Github. Nó cho biết những thay đổi được thực hiện trong tệp và yêu cầu những người đóng góp khác xem nó và ra yêu cầu hợp nhất nó với nhánh chính master (Pull request) . Khi commit được thực hiện, bất kỳ ai cũng có thể pull tệp và có thể bắt đầu một cuộc thảo luận về nó. Khi tất cả đã xong, bạn có thể hợp nhất bằng cách merge vào master. Lệnh Pull so sánh các thay đổi được thực hiện trong tệp và nếu có bất kỳ xung đột nào, bạn có thể giải quyết thủ công. Bây giờ chúng ta hãy xem các bước khác nhau liên quan để tạo một Pull Request trong GitHub.

  • Nhấp vào tab ‘Pull Request’.
  • Nhấp vào ‘New pull request’.
  • Khi bạn nhấp vào yêu cầu kéo, chọn Branch và nhấp vào ‘develop ‘ để xem các thay đổi giữa hai tệp có trong kho lưu trữ của chúng ta
  • Nhấp vào Create Pull request sau khi đã kiểm tra và so sánh các thay đổi
  • Nhập bất kỳ tiêu đề, mô tả cho các thay đổi của bạn và nhấp vào Create pull request

Sau khi tạo thành công Pull request, chúng ta hãy tiếp tục hợp nhất yêu cầu này.

Lệnh Merge

Đây là lệnh cuối cùng để hợp nhất các thay đổi trên nhánh Develop vào nhánh chính Master sau khi một Pull request đã được khởi tạo và các cộng tác viên đã xem xét, chấp thuận nội dung. Các bước sau đây để hợp nhất 2 nhánh này.

  • Nhấp vào Merge pull request để tiến hành hợp nhất các thay đổi vào nhánh chính.
  • Nhấp vào Confirm merge để xác nhận hợp nhất, nếu hợp nhất thành công sẽ có thông báo.

Lưu ý: Hợp nhất chỉ diễn ra khi không xảy ra xung đột conflict. Github sẽ kiểm tra conflict, nếu xảy ra xung đột bạn phải giải quyết vấn đề này trước khi lệnh merge được thực hiện.

Sau khi merge thành công vào nhánh master, bạn có thể xóa nhánh develop bằng cách nhấn vào Delete branch

Tiếp theo, chúng ta hãy chuyển sang chủ đề cuối cùng trong ‘cách sử dụng GitHub’, đó là làm thế nào để nhân bản “clone” và “fork” kho lưu trữ GitHub.

Nhân bản Clone và Fork trong Github

Trước khi đi vào từng phần, bạn hãy nhìn qua sơ đồ này để hình dung được cách thức hoạt động của Clone và Fork trên Github. Bạn có thể hiểu là Fork thao tác sao chép các kho lưu trữ “repository” từ tài khoản này đến tài khoản khác trên Github, còn Clone thì giúp chúng ta tải xuống kho lưu trữ về máy tính ở local.

Nhân bản Clone: Trước khi tôi thực sự nói về việc nhân bản một kho lưu trữ GitHub, thì việc đầu tiên bạn cần phải hiểu lý do tại sao chúng ta cần sao chép một kho lưu trữ? Câu trả lời rất đơn giản! Đó là để tái sử dụng code, giả sử bạn muốn sử dụng một số mã code có trong kho lưu trữ công cộng (tài khoản Github khác), bạn có thể sao chép trực tiếp nội dung bằng cách nhân bản hoặc tải xuống xuống máy tính của mình.

Rẽ nhánh kho lưu trữ với Fork: Đầu tiên, chúng ta hãy nói về lý do tại sao chúng ta cần rẽ nhánh. Giả sử, bạn cần một số mã có trong kho lưu trữ công khai, để đẩy nó vào kho lưu trữ và tài khoản GitHub của bạn. Muốn làm điều này chúng ta cần rẽ nhánh “Fork” một kho lưu trữ sang tài khoản của mình đúng không nào?

Nhân bản Clone và Fork trong Github

Nhưng trước khi chúng ta bắt đầu với forking, có một số điểm quan trọng mà bạn nên luôn luôn ghi nhớ.

  • Những thay đổi được thực hiện đối với kho lưu trữ ban đầu sẽ được phản ánh trở lại kho lưu trữ rẽ nhánh.
  • Nếu bạn thực hiện thay đổi trong kho lưu trữ rẽ nhánh, nó sẽ không được phản ánh đến kho lưu trữ ban đầu cho đến khi và trừ khi bạn thực hiện yêu cầu kéo.

Bây giờ hãy xem làm thế nào bạn có thể Fork một kho lưu trữ.

  • Khám phá và tìm kiếm các kho lưu trữ công cộng mà bạn cần Fork. Ví dụ: Tôi sẽ sử dụng kho lưu trữ mã nguồn Laravel để làm.
  • Ngay khi bạn nhấp vào trên Fork, bạn sẽ mất một chút thời gian để phân nhánh kho lưu trữ. Sau khi hoàn thành, bạn sẽ nhận thấy tên kho lưu trữ nằm trong tài khoản của bạn.
  • Kết quả sau khi Fork kho lưu trữ của Laravel về tài khoản Github của tôi. Như bạn thấy đường dẫn đã thay đổi từ laravel/laravel thành aptechbuonmathuot/laravel.

Xin chúc mừng! Bạn đã rẽ nhánh thành công một kho lưu trữ hiện có trong tài khoản của riêng bạn.

Đó là tất cả về cách sử dụng Github mà Aptech Buôn Ma Thuột đã chia sẻ trong bài viết này. Hy vọng bạn thích nó và đã có giải pháp sử dụng Github hiệu quả, áp dụng vào các dự án của mình và đem lại thành công.

package trong Java

Cách tạo và sử dụng các package trong Java

Một trong những tính năng sáng tạo nhất của Java là khái niệm về các gói package. Các gói package trong Java là một cách để đóng gói một nhóm các lớp, giao diện, bảng liệt kê, chú thích và các gói package phụ. Về mặt khái niệm, bạn có thể hiểu các gói package giống…Trong bài viết này, chúng ta sẽ đề cập đến những điều cơ bản của các gói package trong Java.

Gói package trong Java là gì?

Gói package Java là một cơ chế nhóm các loại lớp, giao diện và các lớp con tương tự nhau dựa trên chức năng. Khi phần mềm được viết bằng ngôn ngữ lập trình Java , nó có thể bao gồm hàng trăm hoặc thậm chí hàng ngàn lớp riêng lẻ. Nó ý nghĩa trong việc tổ chức mọi thứ bằng cách đặt các lớp và giao diện liên quan vào các gói package.

Sử dụng các gói package trong khi lập trình cung cấp rất nhiều lợi thế như:

  • Khả năng sử dụng lại: Các lớp có trong các gói package của chương trình khác có thể dễ dàng sử dụng lại
  • Tên Xung đột: Gói package giúp chúng ta xác định duy nhất một lớp, ví dụ, chúng ta có thể có các lớp như company.sales.Employee và company.marketing.Employee
  • Truy cập được kiểm soát: Cung cấp bảo vệ truy cập như bảo vệ lớp class (lớp mặc định và lớp riêng)
  • Đóng gói dữ liệu: Chúng cung cấp một cách để ẩn các lớp, ngăn các chương trình khác truy cập các lớp chỉ dành cho sử dụng nội bộ
  • Bảo trì: Với các gói package, bạn có thể tổ chức dự án của mình tốt hơn và dễ dàng xác định vị trí các lớp liên quan

Đó là một cách thực hành tốt để sử dụng các gói package trong khi lập trình bằng Java. Là một lập trình viên, bạn có thể dễ dàng tìm ra các lớp , giao diện, bảng liệt kê và chú thích có liên quan. Có hai loại gói package trong java.

Gói package trong Java là gì?

Các loại gói package trong Java

Dựa trên việc gói package được xác định bởi người dùng hay không, các gói package được chia thành hai loại:

  • Gói package được xây dựng sẵn (buit-in)
  • Gói package do người dùng xác định (defined)

Gói package được xây dựng sẵn

Các gói package dựng sẵn hoặc các gói package được xác định trước là các gói package đi kèm như một phần của JDK (Bộ công cụ phát triển Java) để đơn giản hóa nhiệm vụ của lập trình viên Java. Chúng bao gồm một số lượng lớn các lớp và giao diện được xác định trước là một phần của API Java. Một số gói package tích hợp thường được sử dụng là java.lang, java.io, java.util, java.applet, v.v … Dưới đây là một chương trình đơn giản sử dụng gói package tích hợp:

import java.util.ArrayList;public class BuiltInPackage { public static void main(String[] args) { ArrayList<Integer> myList = new ArrayList<>(3); myList.add(3); myList.add(2); myList.add(1); System.out.println(“Cac thanh phan cua danh sach la: ” + myList); }}

Lớp ArrayList thuộc gói package java.util. Để sử dụng nó, chúng ta phải nhập gói package bằng cách sử dụng câu lệnh import để nhập gói package bằng dòng đầu tiên của đoạn code ‘import java.util.ArrayList’. Nghĩa là import gói package java.util và sử dụng lớp ArrayList có trong gói package phụ util.

Gói package được xây dựng sẵn

Gói package do người dùng xác định

Các gói package do người dùng định nghĩa là các gói package được người dùng phát triển để nhóm các lớp, giao diện và gói package phụ liên quan. Với sự trợ giúp của một chương trình ví dụ, hãy xem cách tạo các gói package, biên dịch các chương trình Java bên trong các gói package và thực thi chúng như thế nào dưới đây:

Cách tạo một gói package trong Java

Tạo một gói package trong Java là một công việc rất dễ dàng. Chọn một cái tên cho gói package và sử dụng một câu lệnh package để đặt trước trong file .java. Tệp nguồn java có thể chứa các lớp, giao diện, bảng liệt kê và các loại chú thích mà bạn muốn đưa vào gói package. Ví dụ: câu lệnh sau tạo một gói package có tên MyPackage.

package MyPackage;

Câu lệnh package chỉ đơn giản chỉ định gói package nào mà các lớp được định nghĩa thuộc về

Lưu ý: Nếu bạn bỏ qua câu lệnh package, tên lớp được đặt vào gói package mặc định, không có tên. Mặc dù gói package mặc định là tốt cho các chương trình ngắn, nhưng nó không đủ cho các ứng dụng thực.

Đặt một class trong gói package Java

Để tạo một lớp bên trong một gói package, bạn nên khai báo tên gói package là câu lệnh đầu tiên của chương trình của bạn. Sau đó bao gồm các lớp class như là một phần của gói package. Nhưng, hãy nhớ rằng, một lớp chỉ có thể có một khai báo gói package. Đây là một chương trình đơn giản để hiểu khái niệm.

package MyPackage;public class Compare { int num1, num2; Compare(int n, int m) { num1 = n; num2 = m; }public void getmax(){ if ( num1 > num2 ) { System.out.println(“Maximum value of two numbers is ” + num1); } else { System.out.println(“Maximum value of two numbers is ” + num2); }}public static void main(String args[]) { Compare current[] = new Compare[3]; current[1] = new Compare(5, 10); current[2] = new Compare(123, 120); for(int i=1; i < 3 ; i++) { current[i].getmax(); } }}

Kết quả: Maximum value of two numbers is 10

Maximum value of two numbers is 123

Như bạn có thể thấy, tôi đã khai báo một gói package có tên MyPackage và tạo một lớp Compare bên trong gói package đó. Java sử dụng các thư mục hệ thống file để lưu trữ các gói package. Vì vậy, chương trình này sẽ được lưu trong một tệp dưới dạng compare.java và sẽ được lưu trong thư mục có tên MyPackage. Khi tệp được biên dịch, Java sẽ tạo một tệp .class và lưu trữ nó trong cùng thư mục. Hãy nhớ rằng tên của gói package phải giống với thư mục mà tệp này được lưu.

Bạn có thể tự hỏi làm thế nào để sử dụng class Compare này từ một class trong gói package khác?

Tạo một lớp bên trong gói package trong khi import gói package khác
Chà, nó khá đơn giản. Bạn chỉ cần import nó. Chỉ một lần nó được import, bạn có thể truy cập nó bằng tên của nó. Đây là một chương trình mẫu thể hiện khái niệm này.

package AptechBuonMaThuot;import MyPackage.Compare;public class Demo{ public static void main(String args[]) { int n=10, m=10; Compare current = new Compare(n, m); if(n != m) { current.getmax(); } else { System.out.println(“Both the values are same”); } }}
Kết quả: Both the values are same

Đầu tiên tôi đã khai báo gói package AptechBuonMaThuot, sau đó import class Compare từ gói package MyPackage. Vì vậy, thứ tự khi chúng ta tạo một lớp bên trong một gói package trong khi nhập gói package khác là:

  • Khai báo 1 gói package
  • Import class từ một gói package khác

Chà, nếu bạn không muốn sử dụng câu lệnh import , có một cách khác để truy cập tệp lớp của gói package từ gói package khác. Bạn chỉ có thể sử dụng tên đủ điều kiện trong khi import một lớp .

Đặt một class trong gói package Java

Sử dụng tên đủ điều kiện trong khi import một lớp

Đây là một ví dụ để hiểu khái niệm trên. Tôi sẽ sử dụng cùng một gói package mà tôi đã khai báo trước đó trong bài viết này là MyPackage .

package AptechBuonMaThuot;public class Demo{ public static void main(String args[]) { int n=10, m=11; //Using fully qualified name instead of import MyPackage.Compare current = new MyPackage.Compare(n, m); if(n != m) { current.getmax(); } else { System.out.println(“Both the values are same”); } }}

Kết quả: Maximum value of two numbers is 11

Trong lớp Demo, thay vì nhập gói package, tôi đã sử dụng tên đủ điều kiện như MyPackage.Compare để tạo đối tượng của nó. Vì chúng ta đang nói về việc nhập các gói package, bạn cũng có thể kiểm tra khái niệm Static import trong Java.

Static import trong Java

Tính năng nhập tĩnh được giới thiệu trong Java từ phiên bản 5. Nó tạo điều kiện cho lập trình viên Java truy cập trực tiếp vào bất kỳ thành viên tĩnh nào của lớp mà không cần sử dụng tên đủ điều kiện.

package MyPackage;import static java.lang.Math.*; //static importimport static java.lang.System.*;// static importpublic class StaticImportDemo { public static void main(String args[]) { double val = 64.0; double sqroot = sqrt(val); // Access sqrt() method directly out.println(“Sq. root of ” + val + ” is ” + sqroot); //We don’t need to use ‘System.out } }

Kết quả: Sq. root of 64.0 is 8.0

Mặc dù sử dụng static import bao gồm ít mã hóa hơn, việc lạm dụng nó có thể khiến chương trình không thể đọc được và không thể nhận ra. Bây giờ hãy chuyển sang chủ đề tiếp theo, kiểm soát truy cập trong các gói package.

Static import trong Java

Bảo vệ truy cập trong các gói package Java

Bạn có thể nhận thức được các khía cạnh khác nhau của cơ chế kiểm soát truy cập của Java và các bộ chỉ định truy cập của Java . Các gói package trong Java thêm một mẫu khác để kiểm soát truy cập. Cả hai lớp và gói package là một phương tiện đóng gói package dữ liệu . Trong khi các gói package đóng vai trò là các thùng chứa cho các lớp và các gói package cấp dưới khác, các lớp đóng vai trò là các thùng chứa dữ liệu và mã. Do sự tương tác giữa các gói package và các lớp này, các gói package Java có bốn loại khả năng hiển thị cho các thành viên của lớp:

  • Các lớp con (Sub-classes) trong cùng một gói package
  • Không phải lớp con (non-Subclasses) trong cùng một gói package
  • Các lớp con (Sub-classes) trong các gói package khác nhau
  • Các lớp không nằm trong cùng một gói package như các lớp con

Bảng bên dưới cung cấp một hình ảnh thực tế về loại truy cập nào là có thể và không phải là khi sử dụng các gói package trong Java:

Private  No Modifier Protected Public
Same Class Yes Yes Yes Yes
Same Package Subclasses No Yes Yes Yes
Same Package Non-Subclasses No Yes Yes Yes
Different Packages Subclasses No No Yes Yes
Different Packages Non- Subclasses No No No Yes

Chúng ta có thể đơn giản hóa dữ liệu trong bảng trên như sau:

  • Bất cứ điều gì tuyên bố công khai public có thể được truy cập từ bất cứ nơi nào
  • Bất cứ điều gì được tuyên bố là riêng tư private chỉ có thể được nhìn thấy trong lớp đó
  • Nếu chỉ định truy cập không được đề cập, một phần tử sẽ hiển thị cho các lớp con cũng như các lớp khác trong cùng một gói package
  • Cuối cùng, bất kỳ phần tử được bảo vệ nào được khai báo đều có thể được nhìn thấy bên ngoài gói package hiện tại của bạn, nhưng chỉ với các lớp mà phân lớp của nó trong lớp của bạn

Theo cách này, các gói package Java cung cấp kiểm soát truy cập cho các lớp.

Dưới đây là một số điểm mà bạn nên ghi nhớ khi sử dụng các gói package trong Java .

Những điểm cần nhớ

  • Mỗi lớp là một phần của một số gói package. Nếu bạn bỏ qua câu lệnh package, tên lớp được đặt vào gói package mặc định
  • Một lớp chỉ có thể có một câu lệnh package nhưng nó có thể có nhiều câu lệnh import package
  • Tên của gói package phải giống với thư mục lưu tệp
  • Khi nhập gói package khác, khai báo gói package phải là câu lệnh đầu tiên, tiếp theo là import package

Trên đây là toàn bộ thông tin về packages trong Java mà Aptch Buôn Ma Thuột muốn chia sẻ đến bạn. Mong rằng với những thông tin trên bạn đã có thể hiểu rõ và ứng dụng được vào dự án của mình.

học Công nghệ thông tin ở Aptech

Học Công nghệ thông tin ở Aptech khác biệt gì so với học Đại học?

Học công nghệ thông tin đang là một xu thế mới trong thời đại 4.0. Vì vậy để đáp ứng được nhu cầu không ngừng tăng về mong muốn làm việc trong lĩnh vực này của các bạn trẻ, nhiều trung tâm đào tạo về CNTT đã mở ra. Aptech Buôn Ma Thuột tự hào là đơn vị tiên phong trong lĩnh vực đó. Bạn còn đang băn khoăn không biết học Công nghệ thông tin ở Aptech Buôn Ma Thuột khác biệt gì so với tại giảng đường Đại học cũng như những trung tâm khác? Hãy theo dõi bài viết sau và tìm ra câu trả lời nhé!

Khác biệt về thời gian

Học Công nghệ thông tin ở Aptech thời gian học sẽ khoảng 2,5 năm trong khi học đại học sẽ là từ 4-5 năm.

Thời gian học tại đại học

  • 1 năm đầu tiên làm quen môi trường sau đó phát triển thêm các mối quan hệ bạn bè cùng với học các môn đại cương
  • 1 năm tiếp theo sinh viên sẽ học những môn căn bản liên quan đến cntt
  • 1,5 năm sau sinh viên sẽ học chuyên ngành về cntt
  • 6 tháng tiếp theo sẽ đi thực tập hoặc hoàn thiện đồ án.

Thời gian học tại Aptech Buôn Ma Thuột

  • Bạn sẽ trực tiếp học chuyên ngành, đồng thời bắt tay ngay vào kiến thức cơ bản làm quen với CNTT sau đó sẽ học chuyên sâu vào từng phần học chuyên biệt. Kết thúc chương trình học mỗi học kỳ đều có dự án thực tế qua việc bảo vệ đồ án cuối khóa.
  • Trong quá trình học công nghệ thông tin tại Aptech Buôn Ma Thuột bạn sẽ được gửi gắm thực tập tại các doanh nghiệp nổi tiếng để làm quen với môi trường và có kinh nghiệm ngay khi chưa ra trường.

Như vậy thời gian học chuyên ngành giữa đại học và học Công nghệ thông tin ở Aptech hoàn toàn là như nhau.

Khác biệt về giáo trình

Giáo trình của các trường đại học có khi bền vững đến 5 – 10 năm mới thay đổi giáo án một lần trong khi sự phát triển của công nghệ thì có thể tính bằng giây, bằng phút. Học xong ra trường có khi không còn áp dụng kiến thức đó nữa.

Giáo trình tại Aptech luôn cập nhật và thay đổi theo xu hướng mới nhất của thế giới bởi bằng của Aptech có thể áp dụng trên 40 quốc gia vì vậy đồng nhất một giáo án hay kiến thức công nghệ luôn là điều mà Aptech quan tâm hàng đầu.

Khác biệt trong phong cách giảng dạy

Tại môi trường Đại học bạn sẽ phải làm quen với phương thức giảng dạy truyền thống, nhưng phong cách học tập sẽ phải là tự học, tự giác ngộ, tự chịu trách nhiệm. Cách học thay đổi đột ngột khiến sinh viên không kịp thích ứng, dẫn đến dễ bị chán nản.

Khi học Công nghệ thông tin ở Aptech, 1 lớp học luôn tối đa chỉ 20 bạn, giảng viên luôn tận tâm truyền tải và có thể sát sao hỗ trợ hết mình từng bạn sinh viên. Đồng thời giảng viên luôn tạo ra môi trường tư duy sáng tạo để các bạn phát huy hết được khả năng của bản thân.

Kết quả khác biệt

Sinh viên đại học ra trường thông thường sẽ rất lo lắng với kiến thức của mình, không tự tin vào kĩ năng và thất nghiệp hoặc lựa chọn việc trái ngành rất nhiều. Kể cả khi có tìm được công việc đúng với ngành học thì mức lương cũng không cao và mất nhiều thời gian để đi lên.

Sinh viên học công nghệ thông tin tại Aptech Buôn Ma Thuột được cam kết hỗ trợ việc làm 100%. Các bạn được trải nghiệm môi trường doanh nghiệp ngay khi còn học. Với kỹ năng và kiến thức tích lũy, nhiều bạn tự tin xin việc hoặc được các doanh nghiệp đặt hàng từ khi còn đang theo học.

Trên đây là một số điều khác biệt của việc học Công nghệ thông tin ở Aptech Buôn Ma Thuột so với môi trường Đại học. Học ở đâu không quan trọng, quan trọng là bạn phải luôn kiên trì và nỗ lực với chính lựa chọn của mình để thu về kết quả xứng đáng nhất trong tương lai.

hướng dẫn sử dụng git

Hướng dẫn sử dụng Git – Các lệnh Git cơ bản cho dev mới

Học Git có dễ như Github không? Aptech chắc chắn là có vì với bài viết hướng dẫn sử dụng Git này, bạn sẽ được học các khái niệm và thuật ngữ cơ bản của Git. Kết thúc bài này chắc chắn bạn sẽ tự quản lý được phiên bản code của mình ở local bằng giao diện dòng lệnh rất chuyên nghiệp.

Git là gì? Sử dụng cho mục đích gì?

Git ghi lại trạng thái hiện tại của dự án bằng cách tạo một biểu đồ cây từ chỉ mục. Nó thường ở dạng Đồ thị chu kỳ có hướng (Directed Acyclic Graph – DAG). Mục tiêu chính của Git là quản lý một dự án hoặc một tập hợp các tệp khi chúng được người dùng thay đổi theo thời gian. Git lưu trữ thông tin này trong cấu trúc dữ liệu gọi là kho Git. Kho lưu trữ là cốt lõi của Git. Bạn có thể hiểu rằng kho lưu trữ Git là thư mục chứa tất cả các file dự án của bạn và các kiểu dữ liệu khác liên quan.

Git ghi nhận tất cả các thay đổi của dự án (các hành động thêm, xóa, sửa), mỗi khi có bất kỳ sự thay đổi nào Git sẽ tự động ghi vào kho lưu trữ của mình dưới dạng các thông tin theo cây thời gian thời gian đối với mỗi file và đánh dấu cho mỗi thay đổi là một phiên bản. Từ đó bạn có thể quản lý các phiên bản code của mình, có thể chuyển đổi giữa các phiên bản theo nhu cầu.

Bây giờ bạn đã hiểu sử dụng Git nhằm mục đích gì, chúng ta hãy tiếp tục với thao tác làm việc với Git bằng các lệnh phổ biến

Mục tiêu chính của Git

Các thao tác trong Git

Một số thao tác cơ bản trong Git là:

  • Init
  • Add
  • Commit
  • Pull
  • Push

Một số hành động nâng cao trong Git là:

  • Branch
  • Merge
  • Rebase

Trước tiên khi đi vào từng nội dung, chúng ta hãy tìm hiểu về kiến trúc và cách thức hoạt động của kho Git. Hãy xem sơ đồ của Git dưới đây:

Các thao tác trong Git

Sơ đồ Git

Dựa vào các hướng dẫn dưới đây khi sử dụng từng dòng lệnh cơ bản của git và sơ đồ trên tôi sẽ giải thích để bạn có thể nắm được nguyên lý hoạt động cơ bản của Git. Nhưng trước hết, bạn cần cài đặt Git trên hệ thống của mình trước. Nếu bạn cần hướng dẫn với việc cài đặt, để xem lại kiến thức bài trước nha.

Trong hướng dẫn sử dụng Git này, để làm quen với các dòng lệnh tôi sẽ chỉ cho bạn làm việc với Git Bash. Git Bash là giao diện dòng lệnh (CLI) chỉ có văn bản để sử dụng Git trên Windows, cung cấp các tính năng để chạy các tập lệnh tự động. Sau khi cài đặt Git trong hệ thống Windows của bạn, chỉ cần mở thư mục của bạn nơi mà bạn muốn lưu trữ tất cả các tệp dự án của mình; nhấp chuột phải và chọn ‘Git Bash here ‘.

Điều này sẽ mở ra một cửa sổ dòng lệnh Git Bash nơi bạn có thể nhập các lệnh bắt đầu từ dấu $ để thực hiện các hoạt động Git khác nhau.

Bây giờ, nhiệm vụ tiếp theo là khởi tạo kho lưu trữ của bạn.

Sơ đồ Git

Các lệnh trong Git

Lệnh Git Init

Git init tạo một kho Git trống hoặc khởi tạo lại một kho hiện có. Về cơ bản, nó tạo ra một thư mục .git với các thư mục con và các tệp mẫu. Chạy lệnh git init trong kho lưu trữ hiện tại sẽ không ghi đè lên những thứ đã có. Bây giờ để khởi tạo kho lưu trữ, bạn hãy gõ dòng lệnh tại cửa sổ Git bash vừa được mở ở trên: git init

Khi kết thúc dòng lệnh kho lưu trữ của bạn đã được khởi tạo, việc tiếp theo chúng ta hãy tạo một số tệp trong thư mục / kho lưu trữ. Ví dụ: tôi đã tạo hai tệp văn bản là aptechbmt-1.txt và aptechbmt-2.txt bằng cách sử dụng lệnh touch sau đó liệt kê danh sách các tệp trong thư mục hiện hành bằng lệnh dir

Bây giờ hãy xem liệu các tệp này đã có trong chỉ mục của tôi hay không bằng cách sử dụng lệnh git status . Chỉ mục ở đây là gì? Chỉ mục giữ một ảnh chụp nhanh “snapshot” nội dung của cây / thư mục làm việc và ảnh chụp nhanh này được lấy làm nội dung cho phiên bản tiếp theo được thực hiện trong kho lưu trữ cục bộ. Để dễ hình dung, sau khi khởi tạo kho lưu trữ git, phiên bản đầu tiên của chúng ta chưa có gì đúng không? Khi chúng ta thêm 2 tập tin mới như trên, nghĩa là kho lưu trữ của chúng ta đã có sự thay đổi. Do đó phiên bản thứ 2 sẽ chứa ảnh chụp nội dung thay đổi (thêm 2 file mới) đó. ^^

Lệnh Git Status

Lệnh git status liệt kê tất cả các tệp đã bị sửa đổi, sẵn sàng để thêm vào kho lưu trữ cục bộ. Bạn hãy thử gõ: git status

Kết quả cho thấy kho lưu trữ của tôi hiện có hai tệp chưa được thêm vào để lập chỉ mục nội dung. Điều này có nghĩa là tôi không thể cam kết “commit” các thay đổi với các tệp này.

Lệnh Git Add

Lệnh này giúp chúng ta cập nhật chỉ mục nội dung bằng cách sử dụng nội dung hiện tại được tìm thấy trong thư mục làm việc hiện hành “working directory” để lập chỉ mục nội dung mới, và sau đó sẵn sàng chuyển chỉ mục nội dung được lập này sang một khu vực khác được tổ chức cho lần cam kết “commit” tiếp theo gọi là “staging area”.

Quay trở lại sơ đồ mô tả quy trình làm việc của Git, rõ ràng là trước khi chúng ta thực hiện commit, thì nội dung chỉ mục của sự thay đổi trong kho được lưu trữ và luân chuyển từ khu vực working directory sang khu vực stagging area.

Như vậy, sau khi bạn thực hiện thay đổi bất kỳ đối với thư mục làm việc working directory và trước khi chạy lệnh cam kết “commit”, bạn phải sử dụng lệnh add nhằm thêm file và lập chỉ mục nội dung thay đổi cho nó để tiếp tục chuyển sang lưu trữ tại stagging area chuẩn bị sẵn sàng cho commit. Để thực hiện hãy sử dụng các lệnh dưới đây:

git add <đường dẫn thư mục> hoặc là git add <đường dẫn file>

Hãy để tôi chứng minh lệnh git add cho bạn để bạn có thể hiểu nó tốt hơn. Tôi sẽ lập chỉ mục nội dung thay đổi của kho cho các tập tin bằng lệnh git add -A . Lệnh này sẽ thêm tất cả các tệp vào chỉ mục trong thư mục nhưng chưa được cập nhật trong chỉ mục.

Bây giờ các tệp mới được thêm vào và lập chỉ mục nội dung, bạn đã sẵn sàng để commit chúng.

Lệnh Git Commit

Lệnh này được hiểu như là việc ghi lại các ảnh chụp nhanh “snapshot” của kho lưu trữ tại một thời điểm nhất định. Ảnh chụp nhanh đã được commit sẽ không bao giờ thay đổi trừ khi chúng ta có sự thay đổi trong kho lưu trữ một cách rõ ràng.

Ở đây, C1 là commit ban đầu, tức là ảnh chụp nhanh của thay đổi đầu tiên mà từ đó một ảnh chụp nhanh khác được tạo với các thay đổi có tên là C2. Lưu ý rằng bản gốc master (Head) sẽ trỏ đến commit mới nhất.

Bây giờ, khi tôi cam kết một lần nữa, một ảnh chụp nhanh C3 khác được tạo và bây giờ, bản gốc trỏ đến C3 thay vì C2.

Git nhằm mục đích giữ cho cam kết càng nhẹ càng tốt. Vì vậy, nó không sao chép một cách mù quáng toàn bộ thư mục mỗi khi bạn commit; nó lưu trữ bao gồm các commit như một tập hợp các thay đổi hoặc nó chuyển phiên bản của kho lưu trữ từ phiên bản này sang phiên bản khác mới hơn. Nói một cách dễ hiểu, nó chỉ sao chép những thay đổi được thực hiện trong kho lưu trữ. Bạn có thể commit bằng cách sử dụng lệnh dưới đây:

git commit

Hoặc bạn có thể sử dụng:

git commit -m <nội dung thông điệp cần lưu trữ>

Thử xem sao nhé

Như bạn có thể thấy ở trên, lệnh git commit đã cam kết các thay đổi trong hai tệp trong kho lưu trữ cục bộ.

Bây giờ, nếu bạn muốn thực hiện một commit ảnh chụp nhanh tất cả các thay đổi trong thư mục làm việc cùng một lúc, bạn có thể sử dụng lệnh dưới đây:

git commit -a

Bây giờ tôi sẽ tạo thêm hai tệp văn bản trong thư mục làm việc của tôi là aptechbmt-3.txt và aptechbmt-4.txt và chỉnh sửa một chút đối với file aptechbmt-1.txt bằng cách thêm nội dung cho nó.

Lưu ý: tất cả các file này đều chưa được thêm vào để lập chỉ mục nội dung.

Tôi sẽ thêm file aptechbmt-3.txt bằng lệnh:

git add aptechbmt-3.txt

Lúc này tôi chỉ thêm aptechbmt-3.txt vào chỉ mục còn aptechbmt-4.txt thì không. Bây giờ, tôi muốn commit tất cả các thay đổi trong thư mục cùng một lúc.

Lệnh này sẽ commit một ảnh chụp nhanh về tất cả các thay đổi trong thư mục làm việc nhưng chỉ bao gồm các sửa đổi đối với các tệp được theo dõi, tức là các tệp đã được thêm bằng git add tại một số điểm trong lịch sử của chúng. Do đó, aptechbmt-4.txt không được commit vì nó chưa được thêm vào chỉ mục. Nhưng những thay đổi trong tất cả các tệp trước đó trong kho lưu trữ đã được cam kết. Ví dụ: aptechbmt-1.txt, aptechbmt-2txt, aptechbmt-3.txt. Bây giờ tôi đã thực hiện các commit mong muốn của mình trong kho lưu trữ cục bộ của tôi.

Lưu ý rằng trước khi bạn tác động đối với kho lưu trữ trung tâm bằng cách thực hiện các thay đổi trong kho lưu trữ, bạn phải luôn luôn nhớ rằng nên thay đổi từ kho lưu trữ trung tâm sang kho lưu trữ cục bộ của mình trước, để kho lưu trữ cục bộ của mình được cập nhật mới nhất với kho lưu trữ cộng tác viên khác đã đóng góp trong kho lưu trữ trung tâm. Để luôn cập nhật kho lưu trữ cục bộ của mình từ kho lưu trữ trung tâm (ở đây là kho lưu trữ Git Hub) tôi sẽ sử dụng lệnh pull .

Các lệnh trong Git

Lệnh Pull

Lệnh git pull tìm nạp các thay đổi từ kho lưu trữ từ xa sang kho lưu trữ cục bộ. Nó hợp nhất các thay đổi ở nguồn trong kho lưu trữ cục bộ của bạn, đây là một nhiệm vụ phổ biến trong việc cộng tác dựa trên Git.

Để làm được điều này, trước tiên bạn cần đặt kho lưu trữ trung tâm của mình làm gốc “origin” hay có thể hiểu là thiết lập kết nối giữa kho lưu trữ từ xa và kho lưu trữ cục bộ bằng lệnh:

git remote add origin <đường dẫn liên kết đến kho lưu trữ trung tâm của bạn>

Trong đó để có đường dẫn liên kết đến kho lưu trữ trung tâm thì trên GitHub bạn phải tạo cho mình một kho lưu trữ (Cách tạo xem lại bài này nhé).

Đầu tiên tôi sử dụng lệnh git remote -v để kiểm tra xem mình đã cấu hình tới các máy chủ từ xa nào, nó sẽ liệt kê tên của mỗi máy chủ từ xa kèm theo đường dẫn. Nếu bạn đã thực hiện sao chép từ một kho chứa có sẵn về kho lưu trữ cục bộ của mình, thì ít nhất bạn sẽ thấy bản gốc (origin) – đây là tên gọi mặc định mà Git đặt cho phiên bản trên máy chủ mà bạn đã sao chép từ đó bạn có thể đặt tên khác cho nó để dễ nhớ hơn.

Ở ví dụ này, trước đây tôi chưa từng thực hiện việc kết nối tới một kho lưu trữ từ xa nào, nên để thực hiện thì việc đầu tiên tôi phải thiết lập kết nối với kho lưu trữ từ xa bằng lệnh git remote add

Sau khi đã làm xong các bước chuẩn bị, bây giờ chỉ việc sử dụng dòng lệnh sau:

git pull origin master

Lệnh này sẽ sao chép tất cả các tệp từ nhánh chính master của kho lưu trữ từ xa vào kho lưu trữ cục bộ của bạn.

Việc này sẽ hoàn toàn diễn ra suôn sẻ nếu kho lưu trữ cục bộ của bạn và kho lưu trữ từ xa có lịch sử cam kết khớp nhau. Còn trong trường hợp này Git báo lỗi “fatal: refusing to merge unrelated histories” . Để tôi giải thích lỗi này cho bạn hiểu: Lỗi này thường xảy ra do 2 nguyên nhân:

  • Một là, bạn đã sao chép một dự án và bằng cách nào đó, thư mục .git đã bị xóa hoặc bị hỏng. Điều này dẫn đến việc Git không biết về lịch sử commit tại kho cục bộ của bạn và do đó sẽ khiến gây ra lỗi này khi bạn cố gắng đẩy hoặc kéo từ kho lưu trữ từ xa.
  • Hai là, bạn đã tạo một kho lưu trữ mới và đã thêm một vài commit (từ đầu bài đến giờ ^^ mình thêm khá khá rồi nhỉ) và bây giờ bạn đang cố gắng lấy từ một kho lưu trữ từ xa đã có một số commit của riêng nó. Git cũng sẽ đưa ra lỗi trong trường hợp này, vì nó không biết hai dự án có liên quan như thế nào. Đây là trường hợp trong ví dụ này. Để khắc phục, rất đơn giản, bạn chỉ cần gõ lại lệnh sau:

git pull origin master –allow-unrellated-histories

Lệnh này được hiểu như chúng ta sẽ hợp nhất tất cả các commit trên kho lưu trữ từ xa về kho lưu trữ cục bộ một cách bắt buộc (Nhiều khi ép mới chịu làm ^^) và mặc định Git sẽ tạo ra một commit thông báo về việc hợp nhất này, nên sau khi bạn kết thúc dòng lệnh trên Git sẽ hiển thị cửa sổ cho phép chúng ta chỉnh sửa nội dung commit.

Sử dụng lệnh git log –oneline để xem nhanh lịch sử commit trên máy tính cục bộ đã thay đổi thế nào

Như bạn thấy, các commit của kho lưu trữ từ xa đều được ghép vào kho lưu trữ cục bộ của mình. Trong đó, có 1 commit trên cùng “Merge branch ‘master’ … ” được tạo thêm. Ngoài ra, bạn có thể kiểm tra lại ngoài Windows Explorer để thấy các file trên kho lưu trữ từ xa cũng sẽ được tải về lưu trữ tại máy tính nhé.

Lưu ý: Bạn chỉ thực hiện điều này, khi thực sự hiểu rõ về lịch sử commit của 2 kho lưu trữ nhé. Ngoài ra, chúng ta cũng có thể thử kéo các tệp từ một nhánh khác bằng lệnh sau:

git pull origin <tên nhánh cần pull>

Như vậy, chúng ta vừa lấy các nội dung từ kho lưu trữ từ xa về thành công. Vậy làm cách nào để đẩy ngược lại dự án của mình ở cục bộ lên kho lưu trữ từ xa? Hãy tiếp tục bằng cách sử dụng lệnh Push dưới đây.

Lệnh push

Lệnh này chuyển commit từ kho lưu trữ cục bộ của bạn sang kho lưu trữ từ xa. Nó là đối nghịch của lệnh pull.

Pull là để kéo các cam kết vào kho lưu trữ cục bộ trong khi Push là đẩy các cam kết vào kho lưu trữ từ xa.

Việc sử dụng git push là để xuất bản các thay đổi cục bộ của bạn lên một kho lưu trữ từ xa. Sau khi bạn tích lũy được một số cam kết cục bộ và sẵn sàng chia sẻ chúng với các thành viên còn lại trong nhóm, bạn có thể đẩy chúng vào kho lưu trữ từ xa bằng cách sử dụng lệnh sau:

git push <tên remote>

Lưu ý : Điều khiển từ xa này đề cập đến kho lưu trữ từ xa đã được cấu hình ở trên trước khi sử dụng lệnh pull.

Tôi sẽ sử dụng lệnh git push origin master để đẩy kho lưu trữ cục bộ này lên nhánh master của kho lưu trữ từ xa của tôi. Khi kết thúc dòng lệnh trên, Git sẽ xuất hiện cửa sổ thông báo bạn phải đăng nhập vào tài khoản Git Hub nếu như bạn chưa từng đăng nhập trước đây. Tài khoản này phải là chủ sở hữu kho lưu trữ từ xa hoặc phải được cấp quyền truy cập kho lưu trữ.

Lỗi này xảy ra khi quyền truy cập kho lưu trữ từ xa của bạn chưa được cấp do tài khoản đang sử dụng không được truy cập vào kho lưu trữ này. Để khắc phục bạn nên đăng nhập lại bằng cách, truy cập vào Control PanelAll Control Panel ItemsCredential Manager tại tab Windows Credential tìm tài khoản GitHub đã được lưu trước đây và xóa nó đi. Sau đó chạy lại lệnh git push,tiến hành làm theo hướng dẫn sử dụng Git bên trên là được.

Sau khi thực hiện lệnh git push thì các thay đổi từ kho lưu trữ cục bộ sang kho lưu trữ từ xa cùng với tất cả các commit cần thiết và các đối tượng bên trong. Điều này tạo ra một nhánh cục bộ trong kho đích. Bây giờ hãy kiểm tra trên kho lưu trữ từ có gì nhé!

Như vậy, file aptechbmt-4.txt ở dưới kho lưu trữ cục bộ sẽ không được đẩy lên kho lưu trữ từ xa vì nó chưa được thêm vào để lập chỉ mục nội dung bằng git add. Các file và lịch sử commit đều đã được đẩy lên thành công.

Để ngăn việc ghi đè, Git không cho phép push khi kết quả là hợp nhất chuyển tiếp không nhanh trong kho đích.

Lưu ý : Hợp nhất chuyển tiếp không nhanh có nghĩa là hợp nhất ngược dòng tức là hợp nhất với các nhánh tổ tiên hoặc các nhánh cha từ một nhánh con.

Để kích hoạt hợp nhất như vậy, sử dụng lệnh dưới đây:

git push <tên remote> -force

Lệnh trên buộc phải push ngay cả khi nó dẫn đến kết hợp chuyển tiếp không nhanh.

Đến đây, với các lệnh cơ bản của Git chắc các bạn cũng đã hình dung được quy trình làm việc của git và github theo sơ đồ ở đầu bài này. Bây giờ, chúng ta hãy tiếp tục thực hiện các hành động nâng cao hơn.

Các lệnh nâng cao trong Git

Git branch

Các nhánh trong Git không có gì ngoài con trỏ đến một cam kết cụ thể. Git thường thích giữ các nhánh của nó càng nhẹ càng tốt. Về cơ bản có hai loại là local branches và remote tracking branches.

Local branch (nhánh cục bộ) chỉ là một nhánh rẽ khác trên cây làm việc của bạn. Mặt khác, các remote tracking branches (nhánh theo dõi từ xa) có các mục đích đặc biệt. Một số trong số chúng là:

  • Chúng liên kết công việc của bạn từ kho lưu trữ cục bộ với công việc trên kho lưu trữ từ xa.
  • Chúng tự động phát hiện các nhánh từ xa để nhận thay đổi, khi bạn sử dụng git pull .

Bạn có thể kiểm tra nhánh hiện tại của bạn bằng cách sử dụng lệnh:

git branch

Một câu thần chú mà bạn nên luôn luôn tụng trong khi phân nhánh ^^

Để tạo một nhánh mới, tôi sử dụng lệnh sau:

git branch <tên chi nhánh>

Sơ đồ dưới đây cho thấy quy trình làm việc khi một nhánh mới được tạo. Khi chúng ta tạo một nhánh mới, nó sẽ bắt nguồn từ nhánh chính. Ghi chú: dấu * để chỉ Head đang trỏ tới commit tương ứng của nhánh đó, trên sơ đồ Head của nhánh master đang trở tới commit C2, khi tạo nhánh newBranch thì Head của 2 nhánh master và newBranch đều trỏ đến commit C3

Việc tạo nhánh sẽ giúp bạn phân chia và quản lý công việc được dễ dàng hơn. Thay vì, phải tạo một kho lưu trữ mới để phát triển một tính năng mới cho dự án đã có thì bạn có thể phân nhánh ngay trong kho lưu trữ dự án để thực hiện công việc này mà không ảnh hưởng gì tới nhánh chính master.

Bây giờ, chúng ta hãy xem làm thế nào để commit khi sử dụng các nhánh.

Sự phân nhánh bao gồm một cam kết cụ thể cùng với tất cả các cam kết cha. Như bạn có thể thấy trong sơ đồ trên, newBranch đã tách ra khỏi bản gốc và do đó sẽ tạo ra một đường dẫn khác.

git checkout <tên nhánh>
Lệnh này giúp chuyển đổi sang một nhánh khác, mặc định chúng ta đang ở master. Ở đây, tôi đã tạo ra một chi nhánh mới có tên là aptechbmtdev, và chuyển sang nhánh mới bằng cách sử dụng lệnh git checkout.

Một phím tắt cho các lệnh trên là:

git checkout -b <tên nhánh>

Lệnh này sẽ tạo ra một nhánh mới và chuyển sang nhánh đó cùng một lúc. Tuy nhiên tại phiên bản tôi đang sử dụng là git version 2.24.0.windows.2 thì lệnh này không hoạt động nhé T T. Hình ảnh dưới đây mô tả quá trình tạo branch và checkout branch, hãy để ý các ô màu đỏ và trắng để nhận ra sự khác biệt nhé.

Bây giờ trong khi chúng ta đang ở trong nhánh aptechbmtdev, hãy commit tệp văn bản aptechbmt-4.txt bằng các lệnh sau:

git add aptechbmt-4.txtgit commit -m “Thêm aptechbmt-4.txt”

Kiểm tra lịch sử commit bằng lệnh dưới để xem kết quả:

git log –all –oneline

Nhìn ảnh trên, bạn sẽ thấy mình đang ở branch aptechbmtdev để kiểm tra lịch sử commit, con trỏ Head (hiểu nôm na là ngọn ^^) của nhánh này đang trỏ tới commit cuối cùng của nhánh.

Hình ảnh trên mô tả quá trình checkout qua lại giữa các branch, tương ứng phần hiển thị bên tay trái là thư mục làm việc cũng có sự thay đổi về số lượng file.

Công việc tiếp theo của chúng ta là Push thay đổi vừa rồi lên kho lưu trữ từ xa. Đơn giản bằng cách thực hiện lệnh

git push origin aptechbmtdev

Lệnh này sẽ đẩy toàn bộ nhánh aptechbmtdev (bao gồm các file và commit của nhánh) lên kho lưu trữ từ xa mà chúng ta đã thực hiện bên trên.

Bạn hãy kiểm tra lại trên kho lưu trữ của mình đã có thêm file aptechbmt-4.txt và commit của nó không nhé!

Hướng dẫn các hoạt động nâng cao với Git

Git merge

Hợp nhất “Merge” là cách kết hợp công việc của các nhánh khác nhau lại với nhau. Điều này sẽ cho phép chúng ta phân nhánh, phát triển một tính năng mới và sau đó kết hợp lại với nhánh gốc.

Biểu đồ trên cho chúng ta thấy hai nhánh khác nhau giữa newBranch và master. Bây giờ, khi chúng ta hợp nhất công việc của nhánh newBranch (C3) sang nhánh master (C1,C2,C4) nó sao chép tất cả công việc (commit) của newBranch vào master (C1,C2,C3,C4) và tạo ra một commit mới (C5) trên cùng cây. Lúc này, con trỏ Head Master sẽ trỏ đến C5. Câu lệnh hợp nhất 2 nhánh như sau:

git merge <tên nhánh cần hợp nhất vào>

Lưu ý: Bạn phải checkout nhánh đích (là nhánh mà bạn muốn hợp nhất vào) như sơ đồ trên khi hợp nhất newBranch vào master bạn phải checkout master.

Bây giờ, chúng ta hãy hợp nhất tất cả các công việc của nhánh aptechbmtdev vào nhánh master. Vì vậy, trước tiên tôi sẽ kiểm tra nhánh master bằng lệnh git checkout master và hợp nhất với aptechbmtdev với lệnh git merge aptechbmtdev

git checkout mastergit merge aptechbmtdev

Sử dụng lệnh git log –oneline –all để kiểm tra lịch sử commit

Như bạn có thể thấy ở trên, tất cả dữ liệu từ nhánh aptechbmtdev được hợp nhất với nhánh master. Bây giờ, tệp văn bản aptechbmt-4.txt đã được thêm vào nhánh master.

Lệnh Rebase

Đây cũng là một cách kết hợp công việc giữa các nhánh khác nhau. Rebasing tạo một tập hợp các cam kết, sao chép chúng và lưu trữ chúng vào phía sau commit mới nhất trên nhánh đích như biểu đồ bên dưới. Ưu điểm của rebasing là nó có thể được sử dụng để tạo các chuỗi commit có trình tự.

Bây giờ, các commit từ newBranch được đặt ngay sau nhánh chính và chúng ta có một chuỗi các cam kết tuyến tính nhìn đẹp hơn ^^ là merge.

Bây giờ, để rebase master, hãy gõ lệnh bên dưới trong Git Bash của bạn:

git rebase master

Lệnh này sẽ chuyển tất cả commit từ nhánh hiện tại sang nhánh master. Chúng trông như thể được phát triển một cách tuần tự, nhưng thực tế chúng lại được phát triển song song.

Ví dụ: Trên dự án sẵn có của chúng ta, tôi tạo thêm một nhánh aptechbmthotfix và thực hiện một vài commit cho nó.

git branch aptechbmthotfixgit checkout aptechbmthotfixtouch aptechbmt-5.txtgit add aptechbmt-5.txtgit commit -m “Thêm file aptechbmt-5.txt”

Tiếp tục tôi lại checkout master và tạo mới 1 commit cho master. Mục đích là để trên nhánh master này có một commit mới hơn trên nhánh aptechbmthotfix

git checkout mastertouch aptechbmt-6.txtgit add aptechbmt-6.txtgit commit -m “Thêm file aptechbmt-6.txt”

Sau khi thực hiện các lệnh trên tôi sử dụng lệnh git log để kiểm tra lịch sử commit (dạng cây) bao gồm tất cả các branch từ đầu đến giờ. Lưu ý: Head sẽ trỏ đến commit mới nhất của nhánh hiện tại bạn đang checkout.

git log –oneline –graph –color –decorate –all

Bạn để ý hiện tại commit của nhánh master có số hiệu d739a1c đang đúng trên cùng và commit của nhánh aptechbmthotfix có số hiệu 4e5b0a0 đang ở ngay bên dưới. Bây giờ, tôi sẽ checkout aptechbmthotfix và thực hiện rebase master bằng lệnh:

git rebase master

Kết quả sau khi rebase

Bạn sẽ thấy rằng sau khi rebase commit của nhánh aptechbmthotfix có số hiệu 4e5b0a0 lúc đầu đã được git đổi sang số hiệu khác là e5dec9e và đặt nó ngay trên commit của nhánh master có số hiệu d739a1c.

Tổng kết lại

Để hợp nhất các nhánh chúng ta có thể sử dụng Rebase và Merge đều được. Điểm khác nhau dễ thấy nhất của Rebase và Merge là trình tự sắp xếp các commit vào nhánh đích. Đối với Rebase nó sẽ tạo ra phiên bản commit mới (được sao chép từ commit của nhánh nguồn) và hợp nhất vào sau commit cuối cùng của nhánh đích. Còn đối với Merge thì nó sẽ giữ nguyên các commit của nguồn và hợp nhất vào nhánh đích theo trình tự thời gian commit chung của kho.

Hướng dẫn Git – Mẹo và thủ thuật

Bây giờ bạn đã trải qua tất cả các hoạt động trong bài viết Hướng dẫn sử dụng Git này, đây là một số mẹo và thủ thuật bạn nên biết.

Lưu trữ kho lưu trữ của bạn

git archive master | gzip > <tên file>.tgz

Nó lưu trữ tất cả các file và dữ liệu trong một file gzip chứ không phải là thư mục .git .

Lưu ý: điều này đơn giản chỉ tạo ra một phiên bản sao lưu của kho lưu trữ và nó hoàn toàn bỏ qua việc kểm soát phiên bản. Bạn làm điều này khi bạn muốn gửi các file cho khách hàng không cài đặt Git trong máy tính của họ để xem xét.

Hướng dẫn Git - Mẹo và thủ thuật

Gói kho của bạn

Nó sẽ biến một kho lưu trữ thành một tập tin duy nhất.

Sử dụng lệnh sau:

git bundle create <tên file>.bundle master

Điều này đẩy nhánh master đến một nhánh từ xa, chỉ được chứa trong một tệp thay vì một kho lưu trữ.

Một cách khác để làm điều đó là:

cd <đường dẫn>git clone repo.bundle repo-copy -b mastercd repo-copygit logcd.. /my-git-repo

Git stash – không thực hiện commit ngay

Khi chúng ta muốn hoàn tác tạm thời việc thêm một tính năng hoặc bất kỳ loại dữ liệu được thêm nào, chúng ta có thể tạm thời bỏ qua chúng.

Sử dụng lệnh dưới đây:

git statusgit stashgit status

Và khi bạn muốn áp dụng lại các thay đổi mà bạn sử dụng, hãy sử dụng lệnh bên dưới:

git stash apply

Bài viết khá dài và tôi hy vọng bạn đã thích bài viết hướng dẫn sử dụng Git này và học các lệnh và thao tác trong Git. Hãy cho tôi biết nếu bạn muốn biết thêm về Git trong phần bình luận bên dưới.

Arguments Java

Tìm hiểu cách sử dụng đối số của Java bằng các ví dụ cụ thể

Ngôn ngữ lập trình Java rất linh hoạt ở mọi khía cạnh, độc lập với nền tảng, nó làm cho Java trở thành “kẻ chiến thắng” với bất kỳ ngôn ngữ đối thủ nào. Tìm hiểu xem cách truyền các đối số trong chương trình java bằng cách sử dụng các đối số dòng lệnh như thế nào. Tiếp tục với series hướng dẫn học Java của Aptech, trong bài viết này, bạn sẽ tìm hiểu cách bạn có thể sử dụng các đối số dòng lệnh Arguments Java.

Đối số ‘Arguments’ dòng lệnh Java là gì?

Các đối số dòng lệnh được truyền cho chương trình vào thời gian chạy. Truyền các đối số dòng lệnh trong một chương trình Java khá dễ dàng. Chúng được lưu trữ dưới dạng các chuỗi trong mảng String được truyền cho tham số args của phương thức main () trong Java. Ta có ví dụ sau:

public class Example0 { public static void main(String[] args) { System.out.println(“Khoa hoc ” + args[0] + ” tai Aptech Buon Ma Thuot”); System.exit(0); }}

Để biên dịch và chạy chương trình java trong dấu nhắc lệnh, hãy làm theo các bước được viết dưới đây.

  • Lưu chương trình của bạn trong một tệp có phần mở rộng .java
  • Mở dấu nhắc lệnh và đi đến thư mục lưu tập tin của bạn.
  • Chạy lệnh: javac filename.java
  • Sau khi biên dịch chạy lệnh: java filename
  • Hãy chắc chắn rằng đường dẫn Java được đặt chính xác.

Đối số 'Arguments' dòng lệnh Java là gì?

Các ví dụ khi sử dụng đối số arguments Java

Dưới đây là một vài ví dụ để cho thấy cách chúng ta có thể sử dụng các đối số dòng lệnh trong một chương trình Java.

Mỗi lớp Number như Integer, Float, Double, v.v đều có các phương thức parse’XXX’ chuyển đổi kiểu chuỗi String thành đối tượng tương ứng của loại của chúng. Ví dụ như: trong lớp interger có phương thức parseInt

Như chúng ta đều biết rằng mảng ‘array’ bắt đầu chỉ mục của nó bằng không. Do đó, args [0] là chỉ mục đầu tiên trong mảng String [] được lấy từ bàn điều khiển. Tương tự, args [1] là thứ hai, args [2] là phần tử thứ ba,…args[n] là phần thứ thứ n.

Khi một ứng dụng được khởi chạy, hệ thống sẽ thực thi lệnh ‘run-time’ chuyển các đối số dòng lệnh đến phương thức main() của ứng dụng thông qua một mảng chuỗi String.

Tính giai thừa của một số sử dụng đối số dòng lệnh trong java

public class Example1 { public static void main(String[] args) { int a, b = 1; //Chuyển đổi đối số đầu vào kiểu chuỗi sang một giá trị kiểu số int n = Integer.parseInt(args[0]); for (a = 1; a <= n; a++) { b = b * a; } System.out.println(“Giai thua cua ” + n + ” la:” + b); System.exit(0); }}

Công thức tính giai thừa của 5 là 1 * 2 * 3 * 4 * 5 = 120. Kết quả: 5! = 120.

Tính tổng hai số bằng cách sử dụng đối số dòng lệnh trong Java

public class Example2 { public static void main(String[] args) { int a = Integer.parseInt(args[0]); int b = Integer.parseInt(args[1]); int sum = a + b; System.out.println(“Tong cua ” + a + ” va ” + b + ” la: ” + sum); System.exit(0); }}

Các ví dụ khi sử dụng đối số arguments Java

Chương trình xuất dãy số Fibonacci sử dụng đối số dòng lệnh

Dãy Fibonacci được biết đến là dãy vô hạn các số tự nhiên bắt đầu bằng hai phần tử 0 và 1 hoặc 1 và 1, sau đó  các phần tử này được thiết lập theo quy tắc giá trị của nó bằng tổng giá trị của hai phần tử trước nó. Ví dụ:

|0 |1 |1=1+0 |2 =1+1 |3=2+1=> 0 1 1 2 3 5 8 13 21 34

Chương trình tham khảo:

public class Example3 { public static void main(String[] args) { int n = Integer.parseInt(args[0]); int t1 = 0; int t2 = 1; for (int i = 1; i <= n; i++) { System.out.print(t1 + ” “); int sum = t1 + t2; t1 = t2; t2 = sum; } }}

Những điểm quan trọng cần nhớ

  • Trong khi khởi chạy ứng dụng của bạn, bạn có thể sử dụng các đối số dòng lệnh để chỉ định thông tin cấu hình.
  • Khi bạn đang sử dụng đối số dòng lệnh, không có giới hạn về số lượng đối số. Bạn có thể sử dụng nhiều như yêu cầu của bạn.
  • Thông tin trong các đối số dòng lệnh được truyền dưới dạng Chuỗi .
  • Các đối số dòng lệnh được lưu trữ trong các đối số String của phương thức main() của chương trình.

Những điểm quan trọng cần nhớ

Như vậy chúng ta đã tìm hiểu về các đối số dòng lệnh Arguments Java với các ví dụ. Tôi hy vọng bạn đã hiểu tất cả những gì đã được chia sẻ với bạn trong bài này. Hẹn gặp lại các bạn trong phần hướng dẫn học Java tiếp theo!