Modifiers trong Java

Modifiers trong Java là gì Cách thức truy cập Access Modifiers

“Modifier” là một từ hoặc cụm từ hoặc mệnh đề mô tả, thay đổi hoặc sửa đổi nghĩa của một từ hoặc cụm từ khác theo một cách nào đó. Trong Java, modifier được hiểu là một công cụ sửa đổi truy cập ‘Access modifierS’, có nghĩa là nó được sử dụng để đặt mức truy cập cho các lớp, thuộc tính, phương thức và hàm tạo. Trong bài này, Aptech Vietnam sẽ giúp bạn hiểu tầm quan trọng của Access Modifiers trong Java chi tiết nhất.

Công cụ sửa đổi truy cập Access Modifiers trong Java là gì?

Bạn có thể bắt gặp các từ khóa công khai Public , riêng tư Private và được bảo vệ trong khi thực hành bất kỳ chương trình Java nào, chúng được gọi là Công cụ sửa đổi truy cập. Như tên cho thấy, Bộ sửa đổi truy cập trong Java giúp hạn chế phạm vi của một lớp, hàm tạo, biến, phương thức hoặc thành viên dữ liệu.

Bộ sửa đổi truy cập có thể được chỉ định riêng cho một lớp, trường, phương thức và hàm tạo. Chúng cũng được gọi là các bộ xác định truy cập trong Java , nhưng tên chính xác là các bộ sửa đổi truy cập Java .

Vì vậy, chúng ta hãy đi sâu vào các loại Công cụ sửa đổi truy cập khác nhau trong Java.

Công cụ sửa đổi truy cập Access Modifiers trong Java là gì?

Các loại sửa đổi truy cập Access Modifiers trong Java

Bạn hãy nhớ 4 kiểu sửa đổi truy cập trong Java sau đây:

  • Default Access Modifier – Công cụ sửa đổi truy cập mặc định
  • Private Access Modifier – Công cụ sửa đổi truy cập riêng tư
  • Public Access Modifier – Công cụ sửa đổi truy cập công cộng
  • Protected Access Modifier – Bảo vệ truy cập sửa đổi

Công cụ sửa đổi truy cập mặc định Default Access Modifier

Khi không có công cụ sửa đổi truy cập nào được chỉ định cho một lớp, phương thức hoặc thành viên dữ liệu cụ thể, nó được cho là có công cụ sửa đổi truy cập mặc định .

Các thành viên, lớp hoặc phương thức không được khai báo sử dụng bất kỳ công cụ sửa đổi nào, sẽ có công cụ sửa đổi mặc định chỉ có thể truy cập được trong một gói package tương tự. Điều đó có nghĩa là bạn không khai báo rõ ràng một công cụ sửa đổi truy cập cho một lớp, trường, phương thức, v.v.

package p1;//Class Course có Default access modifier class Course{ void display() { System.out.println(“Hello World!”); }}

Tiếp theo, chúng ta hãy chuyển sang loại tiếp theo, sửa đổi truy cập riêng tư.

Công cụ sửa đổi truy cập mặc định Default Access Modifier

Công cụ sửa đổi truy cập riêng tư Private Access Modifier

Các phương thức hoặc thành viên dữ liệu được khai báo là riêng tư chỉ có thể truy cập được trong lớp mà chúng được khai báo.

Các lớp hoặc giao diện cấp cao nhất không thể được khai báo là riêng tư vì thực tế là:

  • Dấu hiệu riêng tư “chỉ nhìn thấy được ở bên trong lớp kèm theo”
  • Dấu hiệu bảo vệ “chỉ thấy rõ ràng ở bên trong lớp kèm theo và bất kỳ lớp con nào”

Nếu một lớp có được xây dựng riêng tư (nghĩa là thiết lập Private Access Modifier cho class đó) thì bạn không thể tạo đối tượng của lớp đó từ bên ngoài lớp.

Các lớp không thể được đánh dấu bằng công cụ sửa đổi truy cập riêng tư.

Việc biểu thị một lớp với công cụ sửa đổi truy cập riêng tư sẽ ngụ ý rằng không có lớp nào khác có thể nhận được nó. Điều này thường ngụ ý rằng bạn không thể sử dụng lớp bằng bất kỳ sự tưởng tượng nào. Theo cách này, công cụ sửa đổi truy cập riêng không đưa vào các lớp tài khoản.

Lưu ý : Lớp hoặc Giao diện không thể được khai báo là riêng tư.

Cú pháp:

public class Clock { private long time = 0;}

Hãy xem một ví dụ để có ý tưởng rõ ràng về công cụ sửa đổi truy cập riêng tư này.

package p; class A { private void display(){ System.out.println(“Aptech Buôn Ma ThuộtThuột”); } } class B { public static void main(String args[]){ A obj = new A(); //Thử truy cập một lớp được thiết lập Private Access Modifier từ một lớp khác obj.display(); }}

Đầu ra của chương trình này là:

error: display() has private access in Aobj.display();

Hy vọng các bạn rõ ràng với sửa đổi truy cập riêng tư. Tiếp theo, hãy chuyển sang loại tiếp theo, công cụ sửa đổi truy cập công cộng Public Access Modifier.

Công cụ sửa đổi truy cập công cộng Public Access Modifier

  • Công cụ sửa đổi truy cập công cộng được chỉ định bằng cách sử dụng từ khóa công khai “public”.
  • Công cụ sửa đổi truy cập công cộng có phạm vi rộng nhất trong số tất cả các công cụ sửa đổi truy cập khác.
  • Các lớp , phương thức hoặc thành viên dữ liệu được khai báo là công khai có thể truy cập ở mọi nơi trong chương trình, không có giới hạn về phạm vi của các thành viên dữ liệu công cộng.

Cú pháp:

package aptechbmt.co;public class PublicClassDemo {// Ở đây tôi không đề cập đến bất kỳ công cụ sửa đổi nào để nó hoạt động như một công cụ sửa đổi mặc định public int myMethod(int x){ return x; }}

Bây giờ, hãy xem một ví dụ để có ý tưởng rõ ràng về công cụ sửa đổi truy cập công cộng này.

Thí dụ: Tôi có 2 file .java với 2 nội dung bên dưới, sau khi javac tôi chạy file có nội dung thứ 2

package p1;public class A{ public void display() { System.out.println(“Học lập trình tại Aptech Buôn Ma Thuột!”); }}

package p2;import p1.*;class B{ public static void main(String args[]) { A obj = new A; obj.display(); }}

Đầu ra: Học lập trình tại Aptech Buôn Ma Thuột!

Công cụ sửa đổi truy cập công cộng Public Access Modifier

Bảo vệ truy cập sửa đổi Protected Access Modifier

  • Công cụ sửa đổi truy cập được bảo vệ được chỉ định bằng cách sử dụng từ khóa được bảo vệ “Protected”.
  • Các phương thức hoặc thành viên dữ liệu được khai báo là ‘được bảo vệ’ có thể truy cập được trong cùng một gói hoặc các lớp con trong một gói khác nhau.
  • Các thành viên được bảo vệ chỉ có thể được truy cập ở lớp con hoặc các lớp dẫn xuất.

Cú pháp:

package packageFourProtected; public class ProtectedClassFour { protected int myMethod(int a){ return a; }}

Chúng ta hãy xem một ví dụ.

spackage p1;//Class Apublic class A{ protected void display() { System.out.println(“Học lập trình Java tại Aptech Buôn Ma Thuột”); }}

File 2:

package p2;import p1.*; //import tất cả class trong package p1//Class B là subclass củacủa Aclass B extends A |{ public static void main(String args[]) { B obj = new B(); obj.display(); }}

Kết quả: Học lập trình Java tại Aptech Buôn Ma Thuột

Đây là mọi thứ bạn cần biết về các phương thức khác nhau của các công cụ sửa đổi truy cập trong Java.

Sửa đổi truy cập với phương thức ghi đè

Nếu trong trường hợp, bạn đang ghi đè bất kỳ phương thức nào, thì phương thức được ghi đè được khai báo trong lớp con không được hạn chế.

Hãy xem ví dụ dưới đây.

class A{ protected void msg() { System.out.println(“Hello java”); }}public class Simple extends A { void msg() { System.out.println(“Hello java”); } //C.T.Error public static void main(String args[]) { Simple obj=new Simple(); obj.msg(); }}

Công cụ sửa đổi mặc định hạn chế hơn bảo vệ. Đây là lý do tại sao có một lỗi thời gian biên dịch.

Kiểm soát truy cập và kế thừa

  • Nếu trong trường hợp, bạn tạo một lớp con của một số lớp, thì các phương thức trong lớp con đó có thể có các bộ sửa đổi truy cập ít truy cập được gán cho chúng hơn lớp supperclass.
  • Chẳng hạn, nếu một phương thức trong lớp cha là công khai thì nó cũng phải được công khai trong lớp con. Nếu một phương thức trong siêu lớp được bảo vệ, thì nó phải được bảo vệ hoặc công khai trong lớp con được chỉ định.
  • Các phương thức được khai báo là riêng tư không được kế thừa.

Tổng kết

Trên đây là toàn bộ thông tin về Modifiers trong Java mà Aptech Buôn Ma Thuộc đã 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ề công cụ này và ứng dụng được trong các dự án của mình.

Vim là gì

Vim là gì? Các lệnh thường hay sử dụng nhất trong Vim Editor.

Vim là gì? VIM là viết tắt của VI Improved là trình soạn thảo văn bản dòng lệnh được sử dụng để tạo và xem các tệp văn bản. Trong bài này, bạn sẽ tìm hiểu các mẹo hữu ích trong việc sử dụng trình soạn thảo văn bản vim editor. Một khi bạn thành thạo nó, bạn có thể giải quyết nhiều tác vụ liên quan đến văn bản phức tạp.

Các chế độ của Vim

VIM có hai chế độ: chế độ Insert và chế độ Normal.

  • Chế độ Insert cho phép bạn nhập văn bản vào tệp tương tự như khi sử dụng một trình soạn thảo văn bản thông thường.
  • Chế độ Normal cung cấp khả năng điều hướng và thực hiện các thay đổi văn bản.

Để điều hướng giữa 2 chế độ, sử dụng ký tự ESC hoặc i .

Khi bạn mở một tệp văn bản, bạn sẽ vào chế độ bình thường. Để thay đổi chế độ chèn và bắt đầu nhập hoặc chèn văn bản, hãy nhấn chữ i trên bàn phím của bạn. Để quay lại chế độ chỉ huy, nhấn phím Esc.

Các chế độ của Vim

Chế độ chèn ‘Insert” trong Vim

Chế độ chèn cho phép bạn tương tác với văn bản. Ví dụ: bạn có thể nhập văn bản, xóa văn bản và điều hướng lên xuống, sang trái hoặc phải. Khi bạn đã mở tệp văn bản bằng trình chỉnh sửa vim, bạn đang ở chế độ Command.

Để vào chế độ Insert và bắt đầu chèn văn bản, hãy làm theo lệnh bên dưới.

  • Chèn ‘Insert’ văn bản
  • Nhấn phím i để chèn văn bản tại vị trí con trỏ hiện tại.
  • Nhấn phím a để chèn văn bản một ký tự sau vị trí hiện tại của con trỏ.
  • Nhấn phím A để chèn văn bản ở cuối dòng hiện tại.
  • Nhấn phím o để chèn văn bản trên một dòng mới bên dưới dòng hiện tại.
  • Nhấn phím O để chèn văn bản trên một dòng mới phía trên dòng hiện tại.
  • Xóa ‘Delete’ văn bản
  • Nhấn phím s để xóa chữ hiện tại trên con trỏ và chèn văn bản.
  • Nhấn phím S để xóa dòng hiện tại và chèn văn bản.

Chế độ chèn 'Insert'' trong Vim

Các lệnh trong chế độ Command của VIM

Bây giờ chúng ta hãy nhìn vào chế độ lệnh. Có thể cho rằng, đây là chế độ mà bạn có thể thực hiện hầu hết các thao tác.

Điều hướng (lên / xuống, trái / phải) trong chế độ Command của vim

Để điều hướng lên / xuống, trái / phải sử dụng các phím h , j , k và l .

  • Phím k – Di chuyển con trỏ lên trên một dòng.
  • Phím j – Di chuyển con trỏ xuống một dòng.
  • Phím l – Di chuyển con trỏ sang phải theo một ký tự
  • Phím h – Di chuyển con trỏ sang trái bởi một ký tự

Trong chế độ Command, bạn cũng có thể điều hướng đến đầu và cuối của một dòng / tệp. Hãy đi sâu vào các lệnh để đạt được điều này.

Điều hướng đến đầu và cuối của một dòng / tệp trong chế độ Command của vim

  • Phím ^ – Di chuyển con trỏ đến đầu dòng
  • Phím $ – Di chuyển con trỏ đến cuối dòng
  • Phím 1G – Di chuyển con trỏ đến đầu tập tin.
  • Phím G – Di chuyển con trỏ đến cuối tập tin
  • Phím nG – Di chuyển con trỏ đến đầu số dòng n n n trong tập tin

Cách tìm kiếm và thay thế văn bản trong Vim

Chế độ lệnh cũng cung cấp cho người dùng khả năng tìm kiếm và thay thế văn bản trong một tệp. Để tìm kiếm văn bản trong một tệp, nhấn phím ESC để trở ra chế độ Command và sử dụng lệnh sau:

:/<từ khóa cần tìm>

Ví dụ: :/Linux

Để tìm kiếm ngược trong tệp văn bản, nhấn lại phím ESC và sử dụng ? theo sau bởi cụm từ tìm kiếm, vd

:?<từ khóa cần tìm>

Ví du: :?Linux

Nếu bạn muốn tìm kiếm một chuỗi và thay thế nó bằng một chuỗi khác trong tệp, hãy sử dụng cú pháp

:[range]s/search/replace/

Ví dụ: nếu chúng ta muốn tìm kiếm chuỗi Linuxvà thay thế nó bằng Unix từ Dòng 1 đến Dòng 3 trong mã tệp index.html, lệnh sẽ là:

:1,3 s/Linux/Unix/g

/g đảm bảo tất cả các trường hợp của các chuỗi tìm kiếm được thay thế trong phạm vi chỉ định. Nếu bạn bỏ qua tùy chọn /g, chỉ có phiên bản đầu tiên trong mỗi dòng sẽ được thay thế.

Các lệnh trong chế độ Command của VIM

Cách sao chép và dán văn bản trong Vim

Vim cũng cung cấp cho bạn khả năng sao chép và dán văn bản trong tệp.

Sao chép văn bản

Để sao chép một chuỗi và dán nó vào một vị trí khác trong một tệp theo các bước dưới đây

  • Di chuyển con trỏ đến đầu chuỗi hoặc văn bản
  • Nhập v trên bàn phím của bạn và nhấn con trỏ về phía trước để tô sáng văn bản
  • Khi bạn đã đến cuối văn bản, hãy bấm y viết tắt là yank, để sao chép văn bản
  • Di chuyển con trỏ đến vị trí bạn muốn dán văn bản đã sao chép
  • Nhấn p để dán nội dung được sao chép

Ngoài ra, bạn có thể sử dụng các lệnh bên dưới để sao chép các dòng.

  • y$ – Sao chép văn bản từ vị trí hiện tại đến cuối dòng
  • yy – Sao chép toàn bộ dòng
  • 4yy – Sao chép 4 dòng dưới đây
  • Cắt / xóa văn bản trong Vim
  • Nếu bạn muốn xóa một ký tự trong chế độ lệnh, hãy nhấn phím x
  • Để xóa một từ, đặt con trỏ ở phía trước từ đó và nhấn dw
  • Để xóa văn bản từ từ hiện tại đến cuối dòng nhấn d$
  • Để xóa hoặc cắt toàn bộ dòng nhấn dd

LƯU Ý:

Bạn có thể xóa một số dòng bằng cách đặt trước lệnh dd với một số tự nhiên. Ví dụ: để xóa 3 dòng bao gồm dòng hiện tại, hãy chạy 3dd

Lưu và thoát vim Editor

Dưới đây là những cách khác nhau mà bạn có thể sử dụng để thoát khỏi trình soạn thảo vim.

  • :wq – Để lưu các thay đổi và thoát khỏi trình soạn thảo của vim
  • :q! – Để thoát khỏi trình soạn thảo của vim mà không lưu thay đổi
  • 😡 hoặc :exit hoặc :e – Để lưu và thoát khỏi nơi có thay đổi

Lưu và thoát

Tổng kết

Trên đây là một số hướng dẫn cơ bản để sử dụng Vim. Qua bài đọc bạn cũng đã nắm rõ khái niệm Vim là gì?. Hy vọng rằng bạn hiểu và thực hành các hướng dẫn trên một cách dễ dàng nhất ^^. Vui lòng chạy thử trên Vim Editor của bạn và để lại phản hồi cho Aptech Buôn Ma Thuột bên dưới đây.

Git conflicts

Git conflicts? Cách xử lý conflict trong khi merge.

Git là công cụ làm việc nhóm hiệu quả, giúp kiểm soát và quản lý các đóng góp cho dự án giữa nhiều tác giả, thường là nhà phát triển. Khi nhiều nhà phát triển chỉnh sửa cùng một nội dung, có thể xảy ra xung đột. Nếu nhà phát triển A chỉnh sửa mã mà nhà phát triển B cũng đang chỉnh sửa, sẽ có xung đột (conflict). Trong bài này, hãy cùng Aptech tìm hiểu khái niệm Git conflicts và cách giải quyết xung đột khi thực hiện hợp nhất (merge) một cách đơn giản nhất.

Conflict trong Git là gì?

Như đã đề cập, Git conflicts nghĩa là xung đột trong Git. Trong hệ thống kiểm soát nguồn như Git, xung đột xảy ra khi hai hoặc nhiều người thay đổi cùng một tệp. Xung đột có thể xuất hiện tại kho lưu trữ cục bộ của thành viên hoặc kho lưu trữ từ xa trên GitHub.

Ví dụ sau minh họa xung đột khi hai nhánh dev_a và dev_b cùng làm việc trong một dự án. Xung đột xảy ra khi dev_a và dev_b cố gắng hợp nhất mã mới vào master mà không cập nhật các thay đổi từ nhau.

Trong biểu đồ trên, hai nhánh dev_a và dev_b cùng chỉnh sửa tệp person.java.

Đầu tiên, dev_b thay đổi nội dung tại dòng 1 và 2 của tệp person.java và thực hiện commit C2 để ghi lại các thay đổi đó. Sau đó, dev_b hợp nhất các thay đổi này vào nhánh master ở commit C3.

Song song đó, dev_a thay đổi nội dung tại dòng 1, 2, 3 và 4 của tệp person.java và thực hiện hai commit là C4 và C5 để ghi lại các thay đổi của mình. Sau đó, dev_a cũng thực hiện lệnh hợp nhất để cập nhật các commit C4 và C5 vào nhánh master như commit C6.

Lúc này, xung đột xảy ra. Git nhận thấy nội dung trên mỗi dòng của tệp person.java không giống nhau ở hai phiên bản chuẩn bị hợp nhất. Tại thời điểm merge branch dev_a vào master, nội dung của tệp person.java trên dev_a không đồng nhất với nội dung trên tệp person.java của nhánh master. Cụ thể, xung đột bắt đầu từ dòng số 2.

Lưu ý: Xung đột chỉ ảnh hưởng đến nhà phát triển trong quá trình hợp nhất. Phần còn lại của nhóm, những người không tham gia vào quá trình thay đổi tệp này, sẽ không biết về xung đột. Nguyên tắc là ai gây ra xung đột người đó sẽ chủ động giải quyết.

Conflict trong Git là gì?

Giải quyết xung đột conflict trong Git khi thực hiện hợp nhất merge như thế nào?

Quay lại ví dụ trên, Git không thể tự động xác định điều gì là đúng vì nó không biết nội dung nào là mong muốn của người viết. Git sẽ đánh dấu tệp bị Git conflicts và tạm dừng quá trình hợp nhất. Sau đó, các nhà phát triển phải giải quyết xung đột dựa trên những gì Git đã đánh dấu.

Git sẽ thêm một số từ khóa vào tệp person.java để nhà phát triển xem xét và quyết định thay đổi của mình.

Ví dụ:
1……<<<<<<< HEAD=======2……3……>>>>>>> dev_a4……

Các dòng mới trong tệp person.java là “Conflict dividers” (bộ chia xung đột). Trong đó:

  • Dòng `<<<<<<< HEAD` là nội dung hiện có trong nhánh master mà HEAD đang trỏ tới.
  • Phần sau dòng `=======` là “trung tâm” của xung đột, thể hiện nội dung xung đột.
  • Phần sau dòng `>>>>>>> dev_a` là nội dung trong nhánh dev_a chuẩn bị hợp nhất vào master.

Sau khi xác định nội dung xung đột, cách giải quyết xung đột hợp nhất là chỉnh sửa tệp bị xung đột. Mở tệp person.java trong trình soạn thảo yêu thích và loại bỏ các bộ chia xung đột. Nội dung tệp person.java sau khi sửa đổi sẽ trông như sau:
1……2……3……4……

Bước tiếp theo là thực hiện `git add` để tạo nội dung hợp nhất mới và sử dụng `git commit` để tạo một cam kết mới cho kho lưu trữ, hoàn tất việc hợp nhất.

Giải quyết xung đột conflict trong Git khi thực hiện hợp nhất merge như thế nào?

Tổng kết

Để giải quyết Git conflicts, bạn chỉ cần chỉnh sửa nội dung trong tệp gây xung đột và sau đó thực hiện `add` và `commit` cho tệp đó.

Để giảm thiểu xung đột trong một nhóm có nhiều thành viên, nên thiết lập một quy trình từ đầu để tất cả các thành viên trong nhóm biết khi làm việc với Git trên cùng một dự án. Dưới đây là một số gợi ý để làm việc hiệu quả hơn:

  • Thực hiện commit thường xuyên: không chờ đợi cho đến khi có quá nhiều thay đổi để commit và push vào kho lưu trữ từ xa Git. Việc commit thường xuyên giúp dễ dàng hơn trong việc giải quyết xung đột.
  • Trước khi làm việc trên các thay đổi mới và commit, nên pull các thay đổi từ kho lưu trữ từ xa Git.
  • Mỗi thành viên nên làm việc trên từng tính năng trong các nhánh riêng biệt vào một thời điểm.

giải quyết Git conflicts

Trên đây là toàn bộ thông tin về Git conflicts cũng như cách giải quyết xung đột conflict trong Git khi thực hiện hợp nhất merge mà Aptech đã chia sẻ đến cho bạn. Mong rằng với những thông tin ở trên đã có thể dễ dàng áp dụng hơn trong các dự án của mình.

lợi ích của công nghệ thông tin

Những lợi ích của công nghệ thông tin mà có thể bạn chưa biết

Công nghệ thông tin mang đến nhiều lợi ích thiết thực, bên cạnh mức thu nhập cao, công nghệ thông tin còn mang lại nhiều lợi ích khác. Bạn có biết những lợi ích của công nghệ thông tin là gì không? Nếu chưa, hãy để Aptech bật mí cho bạn trong bài viết dưới đây.

Lợi ích khi học công nghệ thông tin

Mở ra nhiều cơ hội học tập

Không ai có thể phủ nhận những lợi ích của công nghệ thông tin hiện nay. Internet như một thư viện khổng lồ, cung cấp vô vàn kiến thức. Truy cập internet giúp tăng tỷ lệ tốt nghiệp đại học, ngoài ra học sinh còn có thể học trực tuyến, linh hoạt về thời gian và có nhiều lựa chọn hơn.

Mở ra nhiều cơ hội học tập

Cơ hội có thu nhập cao

Không chỉ học hỏi kiến thức và kỹ năng, công nghệ thông tin còn mở ra nhiều cơ hội việc làm hấp dẫn. Hiện nay, các công ty tuyển dụng đều đăng thông tin qua internet, giúp việc tìm kiếm việc làm trở nên dễ dàng hơn. Nhiều bạn trẻ trong ngành công nghệ thông tin có thu nhập cao, cải thiện đời sống hiệu quả.

Để đạt mức lương cao và công việc ổn định, mỗi sinh viên công nghệ thông tin cần nỗ lực học tập không ngừng. Điều này sẽ đảm bảo cho tương lai và mang lại mức lương như mong đợi.

Gảm trầm cảm và tăng nhận thức

Theo khảo sát của Pew Research Center, cứ 6 người tuổi teen thì có 1 người dùng internet để tìm hiểu và giãi bày những vấn đề họ không thể chia sẻ với ai. Đối với người già, việc sử dụng internet giảm nguy cơ trầm cảm và tăng cường nhận thức, trí tuệ minh mẫn hơn. Đây là một trong những lợi ích của công nghệ thông tin thiết thực nhất mang lại cho người dùng.

Gọi vốn trên internet dễ dàng

Trước đây, các dự án khởi nghiệp phải gặp gỡ từng nhà đầu tư để kêu gọi vốn. Tuy nhiên, hiện nay nhờ công nghệ thông tin, việc này có thể thực hiện trực tuyến. Nhiều công ty khởi nghiệp đã đạt được thành công lớn ngay từ đầu nhờ tận dụng lợi thế này.

Gọi vốn trên internet dễ dàng

Mang đến thêm nhiều loại hình dịch vụ mới

Công nghệ thông tin mang đến nhiều loại hình dịch vụ mới. Việc xem nội dung số qua internet trở nên phổ biến nhờ tính tiện lợi và đa dạng. Thay vì đến cửa hàng, bạn chỉ cần ngồi tại nhà và nhấp chuột để mua sắm. Hơn nữa, công nghệ thông tin hỗ trợ thanh toán trực tuyến dễ dàng và nhanh chóng, tiết kiệm tối đa thời gian cho người dùng.

Rút ngắn khoảng cách giao tiếp

Sự ra đời của các mạng xã hội như Facebook, Zalo, Twitter đã giúp khoảng cách giữa mọi người trên thế giới ngắn lại. Bạn có thể chat, gọi video, gửi ảnh qua các mạng này, đáp ứng nhu cầu giao tiếp không khoảng cách của con người.

Theo nghiên cứu đăng trên tạp chí khoa học PNAS, internet còn là nơi lý tưởng để tìm thấy nửa kia của mình. Nhờ những lợi ích của công nghệ thông tin này, ngày nay nhiều người trẻ chọn học ngành này. Đây là cơ hội tốt, đặc biệt trong thời đại công nghệ phát triển mạnh mẽ như hiện nay.

Rút ngắn khoảng cách giao tiếp

Học công nghệ thông tin ở đâu chất lượng nhất?

Với việc sử dụng công nghệ thông tin ngày càng nhiều như hiện nay thì việc theo học công nghệ thông tin là một trong những sự lựa chọn sáng suốt và thông minh nhất đối với bạn. Tuy nhiên, để chắc chắn sự lựa chọn của bạn là đúng thì việc cần thiết nhất cho lúc bấy giờ chính là lựa chọn đơn vị đào tạo uy tín, chất lượng cho mình.

Nếu bạn ở Kon Tum, Gia Lai, Đắk Lắk, Đắk Nông thì một trong những địa chỉ mà uy tín mà bạn nên chọn chính là Aptech Buôn Ma Thuột. Với chương trình đào tạo chất lượng đi kèm với mức học phí phải chăng. Chắc chắn đây sẽ là sự lựa chọn lý tưởng dành cho những ai muốn trở thành IT chuyên nghiệp trong tương lai. Hiện tại, Aptech có 2 khóa học, bao gồm: khóa học lập trình viên quốc tế và khóa học lập trình viên ngắn hạn.

Khóa học lập trình ngắn hạn có 3 ngôn ngữ lập trình chủ đạo được Aptech đưa vào đào tạo bao gồm: ngôn ngữ lập trình C#, PHP và Java. Khóa học Lập trình. Để biết thêm thông tin về chi tiết về các khóa đào của Aptech Buôn Ma Thuột. Bạn có thể liên hệ qua hotline hoặc nhắn tin trực tiếp với Aptech Buôn Ma Thuột để được tư vấn tận tình.

Học công nghệ thông tin ở đâu chất lượng nhất?

Bài viết trên của Aptech chia sẻ đến bạn những lợi ích của công nghệ thông tin. Mong rằng những gì mà Aptech Buôn Ma Thuột chia sẻ ở trên chính là câu trả lời cho những thắc mắc của bạn đối với ngành nghề này.

gitgnore là gì

Gitignore là gì? Sử dụng .gitignore sao cho hiệu quả nhất?

Git là một công cụ tuyệt vời để theo dõi tất cả các tệp trong một dự án. Cho dù bạn chỉ có một vài file hay vài ngàn file dự án để theo dõi nhưng có một số file không nhất thiết bạn phải theo dõi nó trong suốt vòng đời của dự án. Hãy xem Gitignore là gì và Gitignore giúp gì cho bạn trong trường hợp này nhé! Trong bài viết này, hãy cùng Aptech sẽ tìm hiểu nguyên nhân tại sao chúng ta nên “nói” với Git bỏ qua một số file nhất định. Cách làm điều đó như thế nào và một số ví dụ thực tiễn tốt nhất cho bạn.

Tại sao nên sử dụng .gitignore?

Bỏ qua thủ công các file mà bạn không muốn theo dõi có thể quản lý được trong một dự án quy mô nhỏ, nhưng ngay khi dự án của bạn bắt đầu phát triển và nó có đến hàng chục hoặc hàng trăm file không được kiểm soát phiên bản, thì chắc chắn đó một vấn đề lớn sẽ khiến bạn đau đầu. Các file này sẽ bắt đầu làm lộn xộn danh sách “Các file không bị theo dõi” trong đầu bạn, điều này có thể khiến bạn bỏ qua các file hợp pháp cần có trong repository.

Để giải quyết vấn đề này, Git có một cơ chế “bỏ qua” dưới dạng một file được gọi .gitignore. Với file này và cách khai báo mẫu rất đơn giản, bạn có thể cho Git biết loại file nào bạn muốn nó bỏ qua và không theo dõi trong repo của bạn. Nếu tên file trong dự án của bạn khớp với một trong các mẫu có trong .gitignorefile thì Git sẽ không cố theo dõi file và nó sẽ không hiển thị trong danh sách “File không bị theo dõi” Untracked files

Tại sao nên sử dụng .gitignore?

Vậy phải bỏ qua “ignore” những tập tin nào?

Điều này tùy thuộc vào sở thích cá nhân, nhưng nói chung chúng ta nên có xu hướng tuân theo các quy tắc chung này về các file không theo dõi như sau:

  • Các file hệ thống (Ví dụ: Trong MacOS: .DS_Store hoặc Thumb.db)
  • File cấu hình ứng dụng (Ví dụ: app.config, .envvv)
  • File được build ra trong quá trình biên dịch (Ví dụ: Python *.pyc hoặc các file *.tmp, *.lock)
  • Thư mục lưu trữ và tìm kiếm các modules (Ví dụ: Trong Node.js có node_modules)
  • Các file văn bản và file thông tin cá nhân (Ví dụ: todo.txt)
  • Cơ sở dữ liệu và các file lưu log (Ví dụ: *.log, *.sqlite, …)

Có khá nhiều loại file khác thường bị bỏ qua, nhưng rất nhiều trong số này thuộc về sở thích cá nhân, như sau:

  • Tập tin cấu hình dev (Ví dụ: .jshintrc)
  • Các mã nguồn được tạo hoặc rút gọn (Ví dụ: *.min.js)
  • .gitignore

Vâng, thậm chí ngay cả việc có nên theo dõi file .gitignore trong chính nó cung đang gây tranh luận.

Lời khuyên đưa ra ở đây là bạn có thể thay đổi tùy thuộc vào người đang làm việc cùng dự án với bạn, vì bạn có thể muốn thực hiện điều này với một số ít người nhưng với những người khác thì file .gitignore phải khác chẳng hạn. Mọi người đều có ý kiến về những gì nên hoặc không nên theo dõi, vì vậy lựa chọn tốt nhất của bạn là xem xét cả hai mặt của cuộc tranh luận và sau đó tự đưa ra quyết định dựa trên những gì tốt nhất cho dự án của bạn.

Vậy phải bỏ qua "ignore" những tập tin nào?

Sử dụng .gitignore sao cho hiệu quả nhất

Việc sử dụng tính năng bỏ qua này của Git khá đơn giản, đó là những gì chúng ta sẽ tìm hiểu trong phần này. Gả sử tôi có một dự án nodejs mới với các file chưa được theo dõi sau:

Việc theo dõi các file .DS_Store và node_modules/file trong repo của chúng ta là hơi thừa , vì vậy tôi sẽ bỏ qua những thứ này. Để làm như vậy, trước tiên chúng ta sẽ tạo một file trong thư mục gốc của dự án có tên .gitignore:

touch .gitignore

Cách đơn giản nhất để bỏ qua một file và phổ biến nhất là chỉ cần thêm tên file đầy đủ vào file bỏ qua. Vì vậy, để bỏ qua các file trên, ví dụ, chúng tôi sẽ muốn thêm các file sau:

.DS_Storenode_modules

Sau khi lưu, Git sẽ hiển thị cho chúng tôi các file chưa được theo dõi sau đây:

Cả hai .DS_Store và node_modules hiện đã đi khỏi danh sách “Untracked files”, nhưng tôi vẫn còn một vài thứ muốn loại bỏ, .env-dev và .env-prod. Để tránh phải thêm từng .gitignorefile một cách rõ ràng (đặc biệt nếu tôi phải thêm nhiều file này cho môi trường thử nghiệm và dàn dựng), tôi sẽ sử dụng ký tự đại diện trong .gitignore như sau:

.DS_Storenode_modules.env-*

Sử dụng .gitignore sao cho hiệu quả nhất

Và bây giờ danh sách “Untracked files” của chúng ta đã bị giảm hơn nữa. Ký tự đại diện ( * ) sẽ khớp với bất cứ ký tự gì kể từ nó trở đi ngoại trừ dấu gạch chéo ( / ).

Sử dụng hai ký tự đại diện trong một hàng ( ** ) theo sau là dấu gạch chéo sẽ khớp với mẫu của bạn trong tất cả các thư mục.

Ví dụ: public/**/*.min.js sẽ bỏ qua tất cả các file JavaScript được rút gọn trong thư mục public, bất kể chúng có nằm trong thư mục con nào của thư mục public.

Cơ chế bỏ qua Git cũng hỗ trợ một số cú pháp giống như biểu thức chính quy đơn giản, với một số cú pháp bổ sung của chính nó:

  • [0-9a-zA-Z]: Khớp với một loạt các ký tự theo mẫu định sẵn
  • ?: Tối đa 1 ký tự xuất hiện cùng với mẫu
  • !: Phủ định kết quả khớp hoặc ký tự trước

Ví dụ:

Mẫu Không theo dõi Theo dõi Giải thích
*.log
!important.log
debug.log
trace.log
important.log
logs/important.log
Dấu chấm than ( ! ) sẽ cho một mẫu phủ nhận. Nếu một file phù hợp với một mẫu, nhưng cũng phù hợp với một mẫu phủ định được xác định sau trong tệp, nó vẫn sẽ bị theo dõi.
debug?.log
debug??.log
debug0.log
debug20.log
debug20.log
debug0.log
Mỗi dấu hỏi ( ? ) khớp chính xác với mỗi ký tự bất kỳ.
debug[0-9].log  debug0.log
debug1.log
debug10.log Dấu ngoặc vuông [ ] được sử dụng để khớp với một ký tự từ một phạm vi được chỉ định.
debug[a-z].log debuga.log
debugz.log
debug1.log
debug[A-Z].log debugA.log
debugZ.log
debuga.log

Hệ thống cấp bậc các file .gitignore

Git thực sự kiểm tra nhiều hơn chỉ một file .gitignore được lưu trữ cục bộ mà từ đó nó biết được các tập tin nào nên bỏ qua. Như chúng ta đã thấy cho đến nay, vị trí phổ biến nhất là đặt một file .gitignore trong thư mục gốc của dự án của bạn. Một tùy chọn khác là có thêm một file .gitignorefile khác được đặt trong một thư mục con trong dự án của bạn. Mặc dù ít phổ biến hơn trong thực tế, nhưng điều này có thể hữu ích cho việc áp dụng luật lệ chung với toàn bộ file trong dự án nhưng có thể sử dụng luật lệ riêng trên thư mục con mà nó chứa đựng quy tắc riêng.

Một tính năng hữu ích khác là tạo ra một tập tin ignore toàn cục. Đây thường là một tập tin.gitignore được đặt trong thư mục home directory của Git

$ touch ~/.gitignore

Nếu cần, bạn có thể thay đổi vị trí của file toàn cục này bằng lệnh sau:

$ git config –global core.excludesFile ~/.gitignore

Nghĩa là bất kỳ mẫu nào được đặt trong file .gitignore toàn cục này phải dành cho loại file mà bạn chắc chắn mình sẽ không bao giờ muốn theo dõi nó, chẳng hạn như .DS_Store hoặc Thumbs.db do OS tự sinh ra. Điều này, giúp bạn dễ dàng hơn trong việc phải thiết lập file .gitignore cho dự án, bạn chỉ cần kiểm tra các file đặc biệt không cần theo dõi trong dự án của mình là đủ vì các file hay gặp đã được chỉ định sẵn trong .gitignore toàn cục.

Hệ thống cấp bậc các file .gitignore

Commit một file .gitignore

Giả sử bạn có một ngoại lệ đó là bạn muốn tạo ra một file và file nằm trong mẫu bị bỏ qua trong file .gitignore, nhưng vì lý do gì dự án này đặc biệt cần nó và phải commit cho nó. Trong trường hợp như thế này, bạn có một vài lựa chọn:

  • Yêu cầu Git không bỏ qua file này bằng cách thêm một tiền tố ( ! ) trong .gitignore, ví dụ: !.env. Điều này sẽ ghi đè bất kỳ file .gitignore toàn cục hoặc bỏ qua các file trong thư mục cha.
  • Sử dụng –force tùy chọn (hoặc -f ) khi thêm các file của bạn vào stagging area, nghĩa là git add .env –force

Làm sao để git cũng không theo dõi luôn file .gitignore nếu bạn muốn. Đơn giản, chỉ cần đặt nó vào chính nó. Nghĩa là thêm “.gitignore” vào trong nội dung file .gitignore

Tổng kết

Trong bài viết này, bạn đã thấy cách Git cung cấp một cơ chế để bạn có thể nói với nó những tập tin nào không nên theo dõi trong repo của mình, giúp bạn khỏi phải theo dõi các tập tin theo cách thủ công. Đây là một tính năng mạnh mẽ cung cấp một cú pháp phong phú, cũng như hệ thống phân cấp để kiểm soát tốt hơn các file nào bị bỏ qua và file nào không.

Bytecode trong Java

Bytecode trong Java là gì? Bytecode hoạt động như thế nào?

Có rất nhiều quy trình diễn ra trong khi một chương trình trong Java được thực thi. Một trong những khái niệm này là Bytecode trong Java. Bài viết này của Aptech sẽ giúp bạn trong việc tìm hiểu cách Java bytecode làm việc và lợi thế của nó như thế nào.

Bytecode trong Java là gì?

Bytecode là lý do khiến java là nền tảng độc lập, ngay sau khi một chương trình Java được biên soạn bytecode được tạo ra. Nói chính xác hơn, Bytecode Java là mã máy ở dạng tệp. Class. Bytecode là tập lệnh cho Máy ảo Java (JVM) và hoạt động tương tự như trình biên dịch.

Bytecode trong Java là gì?

Bytecode trong Java hoạt động như thế nào

Khi một chương trình Java được thực thi, các trình biên dịch biên dịch đoạn mã và một Bytecode được tạo ra cho mỗi phương thức trong chương trình đó dưới dạng một file .class.

Chúng ta cũng có thể chạy bytecode này trên bất kỳ nền tảng nào khác. Nhưng bytecode là một mã không thể tự chạy được, nó yêu cầu và dựa vào trình thông dịch . Đây là nơi JVM đóng một phần quan trọng.

Bytecode được tạo sau khi quá trình biên dịch được chạy bởi máy ảo Java . Các tài nguyên cần thiết cho việc thực thi được cung cấp bởi máy ảo Java để thực thi trơn tru, gọi bộ xử lý để phân bổ tài nguyên.

Bytecode trong Java và mã máy khác nhau như thế nào?

Sự khác biệt chính giữa mã máy và bytecode là mã máy là một tập hợp các hướng dẫn bằng ngôn ngữ máy hoặc kiểu nhị phân có thể được CPU thực thi trực tiếp. Trong khi bytecode là mã không thể chạy và được tạo bằng cách biên dịch mã nguồn dựa vào trình thông dịch để được thực thi.

Bytecode trong Java và mã máy khác nhau như thế nào?

Ưu điểm của Bytecode trong Java

Sau đây là một vài lợi thế của Bytecode:

  • Nó giúp đạt được sự độc lập nền tảng, đó là một trong những lý do khiến James Gosling bắt đầu hình thành Java.
  • Bộ hướng dẫn cho một JVM có thể khác nhau từ hệ thống này sang hệ thống khác nhưng tất cả đều có thể thông dịch được Bytecode.
  • Bytecode là các mã không thể chạy được mà phải dựa trên tính khả dụng của trình thông dịch, đây là lúc JVM phát huy tác dụng.
  • Nó là một mã ngôn ngữ cấp máy chạy trên JVM.
  • Nó bổ sung tính di động cho Java, “write once, read anywhere”.

Trên đây là giải đáp chi tiết khái niệm Bytecode trong Java là gì và cách hoạt động của Bytecode mà Aptech đã chia sẻ đến bạn.

CSS framework

Top 10 CSS framework bạn nên cân nhắc sử dụng trong dự án của mình

Khi xây dựng một trang web, việc lựa chọn và sử dụng một CSS framework sẽ giúp các lập trình viên tiết kiệm kha khá thời gian vì chúng cung cấp các công cụ mà mọi nhà thiết kế web và nhà phát triển front-end cần khi tạo một trang web. Trong bài viết dưới đây, hãy cùng Aptech tìm hiểu về TOP 10+ CSS framework tốt nhất hiện nay, giúp bạn hoàn thành dự án hiệu quả.

CSS Framework là gì?

CSS Framework là một phần mềm được tạo ra để hỗ trợ các nhà thiết kế web theo tiêu chuẩn một cách dễ dàng hơn khi sử dụng HTML / CSS. Nhiều CSS Framework phổ biến được định hướng thiết kế và chứa các thành phần có thể được tái sử dụng lại trong quá trình tạo bất kỳ trang web hoặc ứng dụng nào, cũng như hệ thống lưới được thiết kế để cung cấp bố cục CSS Responsive cho các trang web.

Tất cả các CSS Framework được liệt kê trong bài viết này đều là mã nguồn mở và miễn phí.

CSS Framework là gì?

Top 10 CSS Framework tốt nhất mà bạn nên sử dụng hiện nay

Bootstrap

Không còn nghi ngờ gì nữa, Bootstrap là CSS Framework nguồn mở và miễn phí được sử dụng rộng rãi nhất. Được tạo ra vào năm 2011 bởi nhà phát triển Mark Otto và Jacob Thornton, Bootstrap hiện được hàng triệu trang web sử dụng.

Đặc trưng Bootstrap có các biến Sass và mixins, một hệ thống lưới responsive, các thành phần dựng sẵn mở rộng để xây dựng bố cục và các plugin mạnh mẽ được xây dựng trên jQuery.

Bootstrap là một trong những công cụ được tôi lựa chọn khi xây dựng các trang web đáp ứng hoặc chủ đề WordPress. Nó rất dễ học và tài liệu rất đầy đủ. Nếu bạn muốn trở thành một nhà phát triển web, học Bootstrap là điều bắt buộc.

Bootstrap

Pure CSS

Chỉ có 3,8KB được rút gọn và nén, nhưng chứa rất nhiều tính năng cho nhu cầu thiết kế web của bạn. Được tạo bởi Yahoo vào năm 2014, Pure chuyên cung cấp một bộ bố cục và các thành phần CSS đáp ứng rất nhẹ để hoạt động như một nền tảng để tạo ra một thiết kế đáp ứng.

Pure CSS

Bulma

Với 21kB được rút gọn và nén, Bulma không phải là trọng lượng nhẹ nhất trong danh sách này, nhưng CSS Framework nguồn mở này rất thú vị đến nỗi nó hoàn toàn xứng đáng được đề cập. Bulma được xây dựng với cách tiếp cận đầu tiên trên thiết bị di động, giúp mọi yếu tố được tối ưu hóa cho việc đọc dọc và hệ thống lưới của nó được xây dựng hoàn chỉnh với Flexbox.

Đạt được bố cục linh hoạt với các cột có cùng kích thước cũng đơn giản như việc thêm một class .column vào bất kỳ thành phần HTML nào của bạn. Bulma cũng được xây dựng với Sass, cho phép bạn chỉ sử dụng các tính năng bạn thực sự cần trong các nhiệm vụ phát triển web của mình.

Bulma

Tailwind

Tailwind là một CSS framework tương đối mới, được thiết kế để khác biệt với các đối thủ cạnh tranh. Thay vì các thành phần được thiết kế trước, Tailwind cung cấp các lớp tiện ích cấp thấp cho phép bạn xây dựng các thiết kế của riêng mình.

Hãy để có một cái nhìn nhanh về một số HTML được sử dụng với Tailwind:

<button class = “bg-blue hover:bg-blue-dark text-white font-bold py-2 px-4 rounded”>
Button Example
</button >

Như bạn có thể thấy, ví dụ này đang sử dụng nhiều lớp tiện ích trên một phần tử button. Các lớp đó cho phép bạn tạo kiểu tinh tế cho bất kỳ phần tử nào: Chúng ta có thể dễ dàng phát hiện ra các lớp có tên là text-white, font-bold và rounded, xác định khía cạnh trực quan của nút.

Tailwind

Materialize

Materialize là ngôn ngữ thiết kế được tạo ra vào năm 2014 bởi Google. Nó sử dụng nhiều bố cục dựa trên lưới hơn, hình ảnh động và chuyển tiếp linh hoạt, phần đệm và hiệu ứng chiều sâu như ánh sáng và bóng.

Kể từ năm 2019, Materialize đã được triển khai trên hầu hết các sản phẩm của Google như YouTube, Gmail, Google Drive và Google Docs.

Materialize là một framework responsive hiện đại dựa trên thiết kế Materialize. Dễ sử dụng, nó cung cấp các thành phần, cũng như các mẫu khởi động cho phép bạn bắt đầu thiết kế trang web của mình với thời gian thiết lập tối thiểu.

Materialize

Mini.css

Mini, đúng như tên gọi, một framework nhẹ (7kb được nén) để tạo các trang web nhanh và responsive dễ dàng. Đứng giữa các framework có đầy đủ tính năng như Bootstrap và các framework rất nhỏ như Pure.CSS, Mini chứa nhiều tính năng (Lưới responsive, các thành phần,…) trong một gói nhỏ.

Framework này chỉ dựa vào CSS hiện đại, do đó bạn không phải lo lắng về xung đột JavaScript và bạn có thể tự do quyết định thư viện JavaScript nào bạn sẽ sử dụng trong dự án của mình.

Mini.css

UIkit

UIkit là một CSS framework nhẹ và responsive để phát triển các giao diện web nhanh và mạnh. Bao gồm CSS và JavaScript được biên dịch, UIKit rất dễ sử dụng và cung cấp tất cả các công cụ cần thiết cho thiết kế web hiện đại: Lưới, biểu tượng tùy chỉnh, thành phần, hình động, và nhiều hơn nữa. UIKit tương thích với Less và Sass.

UIkit

Skeleton

Chỉ với 400 dòng mã, Skeleton nhẹ như một chiếc lông vũ. Tuy nhiên, nó có một hệ thống lưới CSS responsive, kiểu chữ, biểu mẫu, truy vấn phương tiện, tất cả những gì bạn cần để xây dựng một trang web chất lượng nhanh chóng.

Được thiết kế như một điểm khởi đầu cho các dự án của bạn, Skeleton chỉ bao gồm các kiểu phần tử HTML và cung cấp một hệ thống lưới đơn giản nhưng hiệu quả. Vì không cần biên dịch hoặc cài đặt, nên framework này giúp bạn dễ dàng tạo bất kỳ loại thiết kế đáp ứng nào.

Skeleton

Base

Base là một framework responsive rất đơn giản nhưng mạnh mẽ. Được xây dựng với mã nhẹ và tối thiểu, Base được thiết kế để cung cấp cho các nhà phát triển và nhà thiết kế một cách dễ dàng để xây dựng các trình duyệt chéo, các trang web trên thiết bị di động và các ứng dụng web. Framework rất tiện dụng này sẽ cung cấp một nền tảng vững chắc để tạo ra các thiết kế đáp ứng chất lượng nhanh chóng.

Skeleton

Spectre

Điểm khởi đầu nhẹ (~ 10KB được nén) cho các dự án của bạn, Spectre cung cấp các thành phần được thiết kế trang nhã, cũng như bố cục dựa trên flexbox, đáp ứng và thân thiện với thiết bị di động.

Kích thước và tính năng nhỏ hơn nhiều so với các framework tính năng đầy đủ như Bootstrap, Spectre là một lựa chọn tuyệt vời cho các trang web dạng landing-page, single-page và các ứng dụng web nhỏ.

Spectre

Milligram

Milligram cung cấp một thiết lập tối thiểu về kiểu dáng cho điểm khởi đầu nhanh và sạch. Chỉ với 2kb được nén, framework nhỏ nhưng mạnh mẽ này nằm trong top ba của framework nhẹ có sẵn. Mặc dù có kích thước rất nhỏ, Milligram cung cấp một bộ công cụ phát triển web hoàn chỉnh và khai thác triệt để các khả năng do CSS3 cung cấp.

Milligram

Dead Simple Grid

Dead Simple Grid không thực sự là một framework. Như tên cho thấy, công cụ này chỉ bao gồm một bố cục lưới đơn giản có thể được sử dụng trong mọi dự án. Chỉ với 250 byte mã CSS, Dead Simple Grid sẽ hữu ích cho các nhà phát triển web cần một hệ thống lưới, không có các thành phần thường được cung cấp bởi một framework hoàn chỉnh hơn.

Dead Simple Grid

Picnic CSS

Với kích thước dưới 10kb khi được nén, Picnic chắc chắn rất nhẹ, nhưng cũng có mọi thứ bạn cần để tạo một trang web chức năng, đẹp mắt. Sử dụng Picnic cực dễ, vì bạn có thể chỉ cần nhúng biểu định kiểu bằng cách thêm dòng sau vào phần <head> trên trang của bạn:

<link rel=”stylesheet” href=”https://cdn.jsdelivr.net/npm/picnic”>

Nhỏ gọn nhưng rất đầy đủ, framework có tất cả các thành phần cần thiết để tạo các trang web hiện đại: Lưới, biểu mẫu, tab, chú giải công cụ, cảnh báo. Picnic được viết bằng Sass / SCSS với nhiều biến và lớp để dễ dàng mở rộng.

Picnic CSS

Trên đây là tổng hợp các CSS framework tốt nhất hiện nay mà bạn nên sử dụng trong dự án của mình. Mong rằng những chia sẻ trên của Aptech sẽ giúp bạn lựa chọn được CSS framework phù hợp nhất với bản thân và đạt được kết quả tốt đẹp khi thực hiện dự án.