Cài đặt Fedora Workstation

Giới thiệu

Theo wiki thì Fedora, trước đây gọi là Fedora Core, là một Bản phân phối Linux dựa trên RPM Package Manager, được phát triển dựa trên cộng đồng theo “Dự án Fedora (Fedora Project) và được bảo trợ bởi Red Hat.

Fedora hiện có hai phiên bản: Fedora Workstation dành cho máy tính cá nhân; Fedora Server dành cho các hệ thống máy chủ.

Dự án Fedora nhắm tới mục đích tạo ra một hệ điều hành mã nguồn mở hoàn chỉnh để sử dụng cho các mục đích tổng quát. Fedora được thiết kế để có thể dễ dàng cài đặt với chương trình cài đặt mang giao diện đồ họa.

Trong bài này, chúng ta sẽ cùng nhau tìm hiểu việc cài đặt phiên bản Fedora Workstation 31 dành cho các máy tính cá nhân.

Tiến hành cài đặt

Bước 1.

Chúng ta thực hiện download file cài đặt Fedora Workstation tại địa chỉ:

Here

Bước 2.

Chúng ta thực hiện ghi file iso ra đĩa DVD hoặc USB để tiến hành cài đặt.

Màn hình khởi động bằng đĩa DVD hoặc USB Fedora Workstation hiện ra.

Chúng ta lựa chọn Start Fedora-Workstation-Live 31 để vào màn hình chính của Fedora Workstation.

Bước 3.

Hệ thống thực hiện kiểm tra file iso trên đĩa DVD hoặc USB.

Bước 4.

Hệ thống bắt đầu khởi động các package và service.

Bước 5.

Màn hình giao diện chính của Fedora Workstation khi chạy trực tiếp trên đĩa DVD hoặc USB:

Chúng ta lựa chọn nút Install to Hard Drive để tiến hành cài đặt.

Bước 6.

Màn hình lựa chọn ngôn ngữ trong quá trình cài đặt hiện ra.

Chúng ta có thể để mặc định là Tiếng Việt.

Chúng ta lựa chọn nút Continue để tiếp tục.

Bước 7.

Màn hình tổng hợp những chức năng cần cài đặt hiện ra.

Chúng ta lựa chọn mục SYSTEM > Installation Destination để tiếp tục.

Bước 8.

Màn hình cấu hình ổ cứng và phân vùng cài đặt hiện ra.

Chúng ta lựa chọn mục Storage Configuration > Automatic để mặc định cho hệ thống sẽ phân vùng tự động.

Chúng ta lựa chọn nút Done để thực hiện.

Bước 9.

Quay trở lại màn hình tổng hợp những chức năng cần cài đặt.

Chúng ta lựa chọn mục LOCALIZATION > Time & Date để điều chỉnh vùng thời gian.

Bước 10.

Màn hình lựa chọn vùng thời gian hiện ra.

Chúng ta lựa chọn khu vực Châu Á > Tp Hồ Chí Minh.

Chúng ta lựa chọn nút Done để thực hiện.

Bước 11.

Quay trở lại màn hình tổng hợp những chức năng cần cài đặt.

Chúng ta lựa chọn nút Begin Installation để bắt đầu cài đặt.

Bước 12.

Hệ thống bắt đầu được cài đặt lên ổ cứng.

Bước 13.

Hệ thống thực hiện tự cấu hình trong quá trình cài đặt.

Bước 14.

Hệ thống hoàn tất cài đặt.

Chúng ta lựa chọn nút Finish Installation để hoàn tất.

Bước 15.

Chúng ta khởi động lại và lựa chọn khởi động từ ổ cứng đã được cài đặt Fedora Workstation.

Màn hình chào mừng lần đầu tiên sử dụng hiện ra.

Chúng ta lựa chọn nút Tiếp để tiếp tục.

Bước 16.

Màn hình cấu hình sự riêng tư hiện ra.

Chúng ta lựa chọn bật những chức năng riêng tư.

Chúng ta lựa chọn nút Tiếp để tiếp tục.

Bước 17.

Màn hình lựa chọn đăng nhập tài khoản trực tuyến hiện ra.

Chúng ta có thể lựa chọn nút Bỏ qua để tiếp tục.

Bước 18.

Màn hình nhập thông tin tài khoản sử dụng thông thường hiện ra.

Chúng ta nhập Họ tênTài khoản mong muốn.

Chúng ta lựa chọn nút Tiếp để tiếp tục.

Bước 19.

Màn hình nhập mật khẩu của tài khoản vừa được tạo ra.

Chúng ta nhập mật khẩu như mong muốn.

Chúng ta lựa chọn nút Tiếp để tiếp tục.

Bước 20.

Màn hình sẵn sàng khởi động hiện ra.

Chúng ta lựa chọn nút Bắt đầu sử dụng Fedora để vào màn hình chính.

Bước 21.

Màn hình chính của Fedora Workstation hiện ra.

Chúng ta có thể tắt cửa sổ Getting Started để bắt đầu sử dụng.

Tổng kết

Trong bài này, chúng ta đã cùng nhau tìm hiểu việc cài đặt Fedora Workstation 31.

Nhìn chung, chúng ta có thể lựa chọn sử dụng thoải mái giữa Ubuntu và Fedora Workstation mà không cần mất nhiều thời gian tìm hiểu mới.

Chuyển đổi dữ liệu từ định dạng XML sang định dạng JSON và ngược lại sử dụng bộ thư viện JAXB và Gson

Giới thiệu

Trong nội dung bài này, chúng ta cùng nhau tìm hiểu kỹ thuật cơ bản trong Java chuyển đổi dữ liệu sang định dạng Json sử dụng bộ thư viện Gson và định dạng XML sử dụng bộ thư viện JAXB.

Những nội dung chính được trình bày trong bài này:

  • Giới thiệu bộ thư viện Gson.
  • Giới thiệu bộ thư viện JAXB.
  • Kỹ thuật đọc / ghi dữ liệu theo định dạng Json sử dụng bộ thư viện Gson.
  • Kỹ thuật đọc / ghi dữ liệu theo định dạng XML sử dụng bộ thư viện JAXB.

Kế hoạch thực hiện chung

Chúng ta cùng lên kế hoạch thực hiện chung cho nhóm bài này bằng MindMap như sau:

Giới thiệu bộ thư viện Gson

Gson (https://github.com/google/gson) là một bộ thư viện dành cho ngôn ngữ Java, cho phép người sử dụng chuyển đổi một đối tượng Java (lưu trữ dữ liệu) sang định dạng chuỗi Json và có thể chuyển đổi ngược lại từ một chuỗi Json sang một đối tượng Java.

Gson có thể làm việc với các đối tượng Java tùy ý bao gồm các đối tượng hiện có mà không cần có mã nguồn của chúng.

Từ phiên bản 1.6, Gson giới thiệu hai lớp xử lý mới – JsonReaderJsonWriter để cung cấp tiến trình xử lý trực tiếp trên dữ liệu Json.

  • JsonWriter – Ghi trực tiếp thành Json. Cú pháp để thực thi tổng quan như sau. Chúng ta tạo một đối tượng JsonWriter. Để bắt đầu và kết thúc việc tạo một chuỗi Json, chúng ta sử dụng phương thức beginObject()endObject(). Trong khoảng giữa việc thực thi hai phương thức này, chúng ta thực hiện việc ghi dữ liệu với những cặp (khóa => giá trị).

JsonWriter writer = new JsonWriter();

writer.beginObject();

writer.name("khóa").value("giá trị");

writer.endObject();

  • JsonReader – Đọc trực tiếp từ Json. Cú pháp để thực thi tổng quát như sau. Chúng ta tạo một đối tượng JsonReader. Để bắt đầu và kết thúc việc đọc một chuỗi Json, chúng ta sử dụng phương thức beginObject()endObject(). Trong khoảng giữa việc thực thi hai phương thức này, chúng ta thực hiện việc ghi dữ liệu với những cặp (khóa => giá trị).

JsonReader reader = new JsonReader();

reader.beginObject();

while (reader.hasNext()) {

String name = reader.nextName();

if (name.equals("key")) { String value = reader.nextString(); }

}

reader.endObject();

Gson xử lý trực tiếp nhanh. Tuy nhiên, chúng ta cần xử lý từng cặp (khóa => giá trị) xử lý dữ liệu Json.

Giới thiệu bộ thư viện JAXB

JAXB là viết tắt của Java Architecture for XML Binding, là một thư viện sử dụng các chú thích để chuyển đổi các đối tượng Java thành nội dung XML và ngược lại.

Vì JAXB được định nghĩa thông qua một đặc tả, chúng ta có thể sử dụng các triển khai khác nhau cho tiêu chuẩn này.

Với JAXB, chúng ta thường sử dụng các chú thích cơ bản sau, cụ thể là:

  • @XmlRootElement: Annotation này chỉ rõ thẻ ngoài cùng của file XML là gì và do đó, nó được khai báo trên đầu một lớp.
  • @XmlElementWrapper: Annotation này tạo ra một phần tử XML bao quanh một danh sách.
  • @XmlElement: Annotation này sử dụng để khai báo một thuộc tính của đối tượng là một thẻ của file XML.
  • @XmlAttribute: Annotation này cũng được sử dụng để khai báo một thuộc tính của đối tượng là một thẻ của file XML.

Cú pháp để thực hiện chung là như sau. Đầu tiên, chúng ta sẽ khởi tạo đối tượng JAXBContext với đối tượng MyObject để chuyển đổi.

JAXBContext jaxbContext = JAXBContext.newInstance(MyObject.class);

Trong đối tượng JAXBContext này, nó có một phương thức để tạo một đối tượng chuyển đổi nội dung XML thành một đối tượng Java, Unmarshaller.

Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();

Trong đối tượng JAXBContext này, nó có một phương thức để tạo đối tượng chuyển đổi đối tượng Java thành nội dung XML là Marshaller.

Marshaller marshallerObj = jaxbContext.createMarshaller ();

Thiết lập chương trình

Bước 1.

Chúng ta thực hiện tạo một project Java mới.

Chúng ta đặt tên project là XmlToJsonExample.

Bước 2.

Chúng ta nhấn chuột phải vào tên project.

Chúng ta lựa chọn New → Folder để tạo thư mục mới.

Bước 3.

Màn hình tạo thư mục mới hiện ra.

Chúng ta đặt tên thư mục là data.

Thư mục này sẽ dùng để lưu trữ những file dữ liệu XML và Json sẵn có.

Chúng ta lựa chọn nút Finish để thực hiện.

Bước 4.

Chúng ta thực hiện download file gson-2.8.5.jar tại địa chỉ:

Here

Bước 5.

Chúng ta tiếp tục tạo các thư mục:

  • Thư mục inputoutput nằm bên trong thư mục data.
  • Thư mục lib để lưu trữ các thư viện.

Chúng ta chép file gson-2.8.5.jar vào trong thư mục lib.

Bước 6.

Chúng ta nhấn chuột phải vào tên project.

Chúng ta lựa chọn Properties.

Bước 7.

Màn hình tùy chỉnh Properties hiện ra.

Chúng ta lựa chọn mục Java Build Path và tab Libraries.

Chúng ta lựa chọn nút Add JARs để thực hiện nạp thêm thư viện.

Bước 8.

Màn hình JAR Selection hiện ra.

Chúng ta lựa chọn file gson-2.8.5.jar trong thư mục lib.

Chúng ta lựa chọn nút OK để thực hiện.

Bước 9.

Quay trở lại cửa sổ Properties.

Chúng ta nhận thấy thư viện gson-2.8.5.jar đã được nạp vào project.

Chúng ta lựa chọn nút Apply and Close để thực hiện.

Bước 10.

Màn hình chính của project hiện ra.

Chúng ta nhận thấy trong mục Referenced Libraries đã hiển thị thông tin về thư viện gson-2.8.5.jar.

Đặc tả XML và Json

Bước 1.

Chúng ta sẽ đặc tả định dạng XML / Json đối với mối quan hệ giữa các đối tượng sau:

  • Quan hệ <1 – n> giữa <department – role>.
  • Quan hệ <1 – n> giữa <role – person>.

Bước 2.

Chúng ta tạo ra 02 file sample.jsonsample.xml trong folder data / input.

Bước 3.

Chúng ta đặc tả dữ liệu trong file sample.xml như sau:

Bước 4.

Chúng ta đặc tả dữ liệu trong file sample.json như sau:

Thực hiện chương trình

Đặc tả đối tượng

Bước 1 – Tạo mới các đối tượng.

Chúng ta tạo ra package model để lưu trữ các đối tượng.

Chúng ta tạo ra các class tương ứng với đặc tả trong XML / Json như sau:

Bước 2 – Đặc tả đối tượng Role – Thuộc tính.

Trước tiên chúng ta đặc tả đối tượng Role với những thuộc tính sau:

Những kỹ thuật lập trình đáng chú ý:

  • Chúng ta định nghĩa annotation @XmlRootElement(name = "role") vào phía trên của tên lớp đối tượng.
  • Điều này giúp cho JAXB biết được rằng đối tượng Role sẽ liên hệ trực tiếp đến thẻ trong định dạng XML.

Bước 3 – Đặc tả đối tượng Role – Phương thức.

Tiếp theo chúng ta đặc tả những phương thức của đối tượng Role:

Những kỹ thuật lập trình đáng chú ý:

  • Chúng ta định nghĩa annotation @XmlAttribute(name = "id") vào phía trên tên của phương thức getId().
  • Điều này giúp cho JAXB biết được rằng thuộc tính id sẽ là một thuộc tính nội tại của thẻ <role> trong định dạng XML.
  • Chúng ta tiếp tục định nghĩa annotation @XmlElement(name = "position") vào phía trên tên của phương thức getPosition() và annotation @XmlElement(name = "salary") vào phía trên tên của phương thức getSalary().
  • Điều này giúp cho JAXB biết được rằng thuộc tính positionsalary sẽ là 02 thuộc tính nội tại của thẻ <role> được định nghĩa thành thẻ riêng <position><salary> trong định dạng XML.

Bước 4 – Đặc tả đối tượng Person – Thuộc tính.

Trước tiên chúng ta đặc tả đối tượng Person với những thuộc tính sau:

Bước 5 – Đặc tả đối tượng Person – Phương thức.

Tiếp theo chúng ta đặc tả những phương thức của đối tượng Person:

Bước 6 – Đặc tả đối tượng Department – Thuộc tính.

Trước tiên chúng ta đặc tả đối tượng Department với những thuộc tính sau:

Bước 7 – Đặc tả đối tượng Department – Phương thức.

Tiếp theo chúng ta đặc tả những phương thức của đối tượng Department:

Những kỹ thuật lập trình đáng chú ý:

  • Chúng ta định nghĩa những annotation @XmlElementWrapper(name = "roles")@XmlElement(name = "role") vào phía trên của phương thức getRoles().
  • Chúng ta định nghĩa những annotation @XmlElementWrapper(name = "persons")@XmlElement(name = "person") vào phía trên của phương thức getPersons().
  • Thứ nhất, điều này giúp cho JAXB biết được rằng thuộc tính rolespersons sẽ là 02 thuộc tính nội tại của thẻ <department> được định nghĩa thành thẻ riêng <roles><persons> trong định dạng XML.
  • Thứ hai, điều này giúp cho JAXB biết được rằng là thẻ <roles> sẽ bao quanh một danh sách những thẻ <role> bên trong.
  • Tương tự nhu vậy, điều này giúp cho JAXB biết được rằng là thẻ <persons> sẽ bao quanh một danh sách những thẻ <person> bên trong.

Bước 8 – Đặc tả đối tượng XMLModel

Đây là đối tượng được đặc tả tương ứng với những thẻ ngoài cùng của sample.xml.

Chúng ta đặc tả đối tượng XMLModel như sau:

Đặc tả xử lý

Bước 1 – Tạo mới các lớp xử lý

Chúng ta tạo ra package service để lưu trữ các lớp xử lý.

Chúng ta tạo ra các class xử lý sau:

Bước 2 – Đặc tả lớp xử lý XMLService – Định nghĩa phương thức

Chúng ta đặc tả lớp xử lý XMLService với những phương thức như sau:

  • Phương thức getObjectFromXmlFile() thực hiện tác vụ trích xuất dữ liệu từ một file XML và chuyển đổi thành một đối tượng Java.
  • Phương thức getObjectFromXMLString() thực hiện tác vụ trích xuất dữ liệu từ một chuỗi định dạng XML và chuyển đổi thành một đối tượng Java.
  • Phương thức parseObjectToXml() thực hiện tác vụ chuyển đổi dữ liệu được lưu trữ trong một đối tượng Java thành định dạng XML và lưu thành file.

Bước 3 – Đặc tả lớp xử lý XMLService – Hiện thực getObjectFromXmlFile().

Chúng ta hiện thực phương thức getObjectFromXmlFile() như sau:

Bước 4 – Đặc tả lớp xử lý XMLService – Hiện thực getObjectFromXMLString().

Chúng ta hiện thực phương thức getObjectFromXMLString() như sau:

Bước 5 – Đặc tả lớp xử lý XMLService – Hiện thực parseObjectToXml().

Chúng ta hiện thực phương thức parseObjectToXml() như sau:

Bước 6 – Đặc tả lớp xử lý JsonService – Định nghĩa phương thức.

Chúng ta đặc tả lớp xử lý JsonService với những phương thức như sau:

  • Phương thức getDataFromJsonFile() thực hiện tác vụ trích xuất dữ liệu từ một file Json.
  • Phương thức writeDataToJsonFile() thực hiện chuyển đổi dữ liệu thành định dạng Json và ghi ra thành file.

Bước 7 – Đặc tả lớp xử lý JsonService – Hiện thực getDataFromJsonFile().

Chúng ta hiện thực phương thức getDataFromJsonFile() như sau:

Tiếp tục với phần nội dung bên trong đoạn mã:

else if (nameRole.equals("persons")) {}

Bước 8 – Đặc tả lớp xử lý JsonService – Hiện thực writeDataToJsonFile().

Chúng ta hiện thực phương thức writeDataToJsonFile() như sau:

Bước 9 – Đặc tả lớp xử lý XmlToJsonService – Định nghĩa phương thức.

Chúng ta đặc tả lớp xử lý XmlToJsonService với những phương thức như sau:

  • Phương thức transformXmlToJson() thực hiện tác vụ trích xuất dữ liệu từ một file XML và chuyển đổi thành định dạng Json và ghi thành file.
  • Phương thức transformJsonToXml() thực hiện tác vụ trích xuất dữ liệu từ một file Json và chuyển đổi thành định dạng XML và ghi thành file.

Bước 10 – Đặc tả lớp xử lý XmlToJsonService – Hiện thực transformXmlToJson().

Chúng ta hiện thực phương thức transformXmlToJson() như sau:

Bước 11 – Đặc tả lớp xử lý XmlToJsonService – Hiện thực transformJsonToXml().

Chúng ta hiện thực phương thức transformJsonToXml() như sau:

Thực thi chương trình.

Chúng ta thực thi chương trình như sau:

Kết luận

Trong nội dung bài này, chúng ta đã cùng nhau tìm hiểu những công nghệ:

  • Đọc và ghi dữ liệu theo định dạng XML với bộ thư viện JAXB.
  • Đọc và ghi dữ liệu theo định dạng Json với bộ thư viện Gson.

Trong những bài tiếp theo, chúng ta sẽ tiếp tục tìm hiểu những bộ thư viện khác để có nhiều sự chọn lựa hơn khi xử lý 02 định dạng này.

Thiết lập Anaconda cho Python 3.7 trên CentOS 7

Giới thiệu

Anaconda Distribution là trình quản lý gói, quản lý môi trường và phân phối Python miễn phí, dễ cài đặt với bộ sưu tập hơn 1000 gói nguồn mở với sự hỗ trợ cộng đồng miễn phí.

Anaconda là độc lập nền tảng, vì vậy chúng ta có thể sử dụng trên Windows, macOS hay Linux.

Trong bài này chúng ta thực hiện nội dung thứ hai là cài đặt Anaconda cho Python 3.7 trên CentOS 7.

Các bước cài đặt Anaconda cho Python 3.7

Bước 1.

Chúng ta thực hiện download Anaconda cho Python 3.7 trên Linux tại website:

Here

Chúng ta chú ý lựa chọn phiên bản dành cho Python 3.7.

Bước 2.

Chúng ta mở chương trình Terminal.

Chúng ta thực hiện kiểm tra mã hóa với chuỗi lệnh:

sha256sum /Documents/Software/Anaconda3-2019.10-Linux-x86_64.sh

Bước 3.

Chúng ta thực hiện cài đặt Anaconda với chuỗi lệnh:

bash ~/Documents/Software/Anaconda3-2019.10-Linux-x86_64.sh

Bước 4.

Trong quá trình cài đặt, hệ thống yêu cầu lựa chọn phím Enter để xem bản quyền.

Bước 5.

Chúng ta liên tục lựa chọn phím Enter để xem bản quyền.

Bước 6.

Sau khi xem hết bản quyền, hệ thống yêu cầu nhập yes để chấp nhận.

Bước 7.

Hệ thống tiếp tục thông báo về thư mục mặc định để cài đặt Anaconda.

Chúng ta lựa chọn phím Enter để chấp nhận thư mục mặc định.

Bước 8.

Hệ thống thực hiện cài đặt Anaconda.

Bước 9.

Trong quá trình cài đặt, hệ thống hỏi có khởi tạo chức năng conda không.

Chúng ta nhập yes để chấp nhận thực hiện.

Bước 10.

Hệ thống hoàn thành cài đặt Anaconda.

Chúng ta nhập chuỗi sau để việc cài đặt có hiệu lực ngay:

source ~/.bashrc

Bước 11.

Chúng ta thực thi chương trình Anaconda Navigator, là giao diện đồ họa điều khiển, với chuỗi lệnh:

anaconda-navigator

Bước 12.

Màn hình giao diện chính của Anaconda Navigator.

Tổng kết

Trong bài này chúng ta đã cùng nhau thực hiện cài đặt Anaconda cho Python 3.7 trên CentOS 7.

Thiết lập Mono Develop để phát triển Desktop và Web Applications bằng ngôn ngữ C# trên CentOS 7

Giới thiệu

MonoDevelop (https://www.monodevelop.com/) là một open-source GNOME IDE (intergrated development environment) hỗ trợ lập trình đa ngôn ngữ (với mục tiêu ban đầu là .Net) trên các hệ điều hành Linux, Mac OS X và Windows.

Phiên bản hiện tại 7.6 (7.6.9.22) ra mắt vào đầu 2019.

Với giao diện tương tự Visual Studio, chúng ta có thể nhanh chóng làm quen và phát triển các dự án .Net trên những platform khác nhau.

Những chức năng chính

  • Multi-platform: Supports Linux, Windows and macOS.
  • Advanced Text Editing: Code completion support for C#, code templates, code folding.
  • Configurable workbench: Fully customizable window layouts, user defined key bindings, external tools.
  • Multiple language support: C#, F#, Visual Basic .NET, Vala.
  • Integrated Debugger: For debugging Mono and native applications.
  • GTK# Visual Designer: Easily build GTK# applications.
  • ASP.NET: Create web projects with full code completion support and test on XSP, the Mono web server.
  • Other tools: Source control, makefile integration, unit testing, packaging and deployment, localization.

Cài đặt MonoDevelop trên CentOS 7

Bước 1.

Chúng ta khởi động chương trình Terminal.

Chúng ta nhập chuỗi sau để cập nhật KEY vào CentOS 7:

sudo rpm --import "http://keyserver.ubuntu.com/pks/lookup? op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF"

Bước 2.

Chúng ta nhập mật khẩu của tài khoản hiện tại:

Bước 3.

Chúng ta thực hiện cài đặt repository tương ứng bằng chuỗi lệnh:

su -c 'curl https://download.mono-project.com/repo/centos7-vs.repo | tee /etc/yum.repos.d/mono-centos7-vs.repo'

Chúng ta lựa chọn phím Enter để thực hiện.

Bước 4.

Chúng ta nhập mật khẩu của tài khoản root.

Chúng ta lựa chọn phím Enter để thực hiện.

Bước 5.

Chúng ta thực hiện cài đặt MonoDevelop với chuỗi lệnh:

sudo yum install monodevelop

Chúng ta nhấn phím Enter để thực hiện.

Bước 6.

Hệ thống thực hiện lựa chọn gói sẽ download.

Bước 7.

Hệ thống yêu cầu chúng ta lựa chọn phím chứa ký tự y để đồng ý download những gói cài đặt.

Chúng ta lựa chọn phím Enter để tiếp tục.

Bước 8.

Hệ thống tiến hành download MonoDevelop.

Bước 9.

Hệ thống tiến hành cài đặt MonoDevelop.

Bước 10.

Hệ thống hoàn thành tiến trình cài đặt MonoDevelop.

Bước 11.

Chúng ta chọn chức năng Show Applications ở phía dưới cùng trên thanh Toolbars bên trái màn hình.

Chúng ta nhập chuỗi mono để lựa chọn ứng dụng MonoDevelop.

Bước 12.

Màn hình giao diện chính của MonoDevelop hiện ra:

Tổng kết

Trong bài này chúng ta đã cùng nhau thực hiện cài đặt MonoDevelop để phát triển Desktop và Web Applications bằng ngôn ngữ C# trên CentOS 7.

Thiết lập môi trường lập trình C# – Cài đặt dotNet Core trên CentOS 7

Giới thiệu

Trong bài này chúng ta cùng tìm hiểu việc cài đặt dotNet Core 3.1 trên Hệ điều hành CentOS 7.

dotNet là gì

.NET là một nền tảng phát triển mã nguồn mở, đa nền tảng, miễn phí để xây dựng nhiều loại ứng dụng khác nhau.

Với .NET, chúng ta có thể sử dụng nhiều ngôn ngữ, trình soạn thảo và thư viện để xây dựng cho web, thiết bị di động, máy tính để bàn, chơi game và IoT.

Cho dù chúng ta đang làm việc với ngôn ngữ C#, F# hoặc Visual Basic, mã nguồn sẽ chạy tự nhiên trên mọi hệ điều hành tương thích. Những triển khai .NET khác nhau xử lý các tác vụ nặng cho chúng ta:

  • .NET Core là một triển khai .NET đa nền tảng cho các trang web, máy chủ và ứng dụng bảng điều khiển trên Linux, Windows và macOS.
  • .NET Framework hỗ trợ các trang web, dịch vụ, ứng dụng máy tính để bàn và nhiều hơn nữa trên Windows.
  • Xamarin / Mono là một triển khai .NET để chạy các ứng dụng trên tất cả các hệ điều hành di động chính.

dotNet Core

.NET Core có các đặc điểm sau:

  • Đa nền tảng: Chạy trên các hệ điều hành Windows, macOS và Linux.
  • Nhất quán trên các kiến trúc: Chạy mã nguồn với cùng một hành vi trên nhiều kiến trúc, bao gồm x64, x86 và ARM.
  • Các công cụ dòng lệnh: Bao gồm các công cụ dòng lệnh dễ sử dụng có thể được sử dụng để phát triển cục bộ và trong các tình huống tích hợp liên tục.
  • Triển khai linh hoạt: Có thể được bao gồm trong ứng dụng riêng hoặc được cài đặt song song (cài đặt toàn người dùng hoặc toàn hệ thống).
  • Tương thích: .NET Core tương thích với .NET Framework, Xamarin và Mono, thông qua .NET Standard.
  • Nguồn mở: Nền tảng .NET Core là nguồn mở, sử dụng giấy phép MIT và Apache 2. .NET Core là một dự án .NET Foundation.
  • Được hỗ trợ bởi Microsoft: .NET Core được Microsoft hỗ trợ, theo Hỗ trợ .NET Core.

Các bước cài đặt dotNet Core 3.1 trên CentOS 7

Bước 1.

Chúng ta mở ứng dụng Terminal.

Trước khi cài đặt .NET, chúng ta sẽ cần phải đăng ký khóa Microsoft, đăng ký kho sản phẩm và cài đặt các phụ thuộc cần thiết.

Điều này chỉ cần được thực hiện một lần trên mỗi máy.

Chúng ta thực hiện công việc trên với chuỗi lệnh:

sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm

Chúng ta lựa chọn phím Enter để tiếp tục.

Bước 2.

Chúng ta nhập mật khẩu của tài khoản hiện tại để thực hiện.

Bước 3.

Chúng ta chuỗi lệnh để thực hiện download và cài đặt .NET Core 3.1:

sudo yum install dotnet-sdk-3.1

Chúng ta lựa chọn phím Enter để tiếp tục.

Bước 4.

Hệ thống tiến hành xác định các gói sẽ cài đặt.

Bước 5.

Hệ thống yêu cầu chúng ta nhập ký tự y để đồng ý download các gói cài đặt .NET Core 3.1:

Bước 6.

Hệ thống tiến hành download các gói cài đặt.

Bước 7.

Hệ thống yêu cầu chúng ta nhập ký tự y để đồng ý tích hợp Microsoft KEY.

Bước 8.

Hệ thống tiến hành cài đặt các gói đã được download.

Bước 9.

Hệ thống đã cài đặt xong các gói cần thiết.

Chúng ta kiểm tra tiếp theo bằng việc thử cài đặt ASP.NET Core runtime:

sudo yum install aspnetcore-runtime-3.1

Chúng ta lựa chọn phím Enter để tiếp tục.

Bước 10.

Hệ thống nhận thấy chúng ta đã cài đặt đầy đủ ASP.NET Core runtime.

Chúng ta tiếp tục kiểm tra bằng cách cài đặt .NET Core runtime:

sudo yum install dotnet-runtime-3.1

Bước 11.

Hệ thống nhận thấy chúng ta đã cài đặt đầy đủ .NET Core runtime.

Hệ thống cài đặt xong toàn bộ các gói:

Tổng kết

Trong bài này chúng ta đã thực hiện cài đặt dotNet Core SDK 3.1 trên Hệ điều hành CentOS 7.

Hi vọng rằng chúng ta có thể phát triển tốt Desktop và Web Applications bằng ngôn ngữ lập trình C# với nền tảng này.

Mọi tác vụ đều được thực hiện tương tự như trên Windows.

Cài đặt LAMP Stack trên CentOS 7

Giới thiệu

Trong bài này chúng ta cùng tìm hiểu việc cài đặt LAMP Stack cho PHP 7 trên Hệ điều hành CentOS 7.

LAMP Stack là một bộ phần mềm sửa dụng trên Linux (L) bao gồm Apache (A), Mysql (M) và PHP (P) được tích hợp để xây dựng Web Applications bằng PHP trên Linux.

Nếu so với XAMPP thì bộ LAMP Stack có một số điểm giúp việc cấu hình và xây dựng Web Applications dễ dàng hơn.

Các bước cài đặt LAMP Stack

Bước 1.

Chúng ta download LAMP 7.3.14 tại địa chỉ:

Here

Đây là phiên bản dành cho x64. Rất phù hợp để cài đặt trên CentOS 7.

Bước 2.

Chúng ta chọn ứng dụng thực thi dòng lệnh Terminal.

Bước 3.

Cửa sổ Terminal hiện ra.

Trước tiên chúng ta chuyển đến thư mục chứa tập tin cài đặt vừa được download ở Bước 1.

Giả sử rằng chúng ta để tập tin cài đặt trong thư mục Downloads/Software.

Chuỗi lệnh để thực hiện chuyển đến thư mục Downloads:

cd Downloads/Software

Bước 4.

Tiếp theo, chúng ta xác lập quyền thực thi cho tập tin cài đặt bằng chuỗi lệnh:

chmod +x bitnami-lampstack-7.3.14-0-linux-x64-installer.run

Tiếp theo, chúng ta thực thi tập tin cài đặt bằng chuỗi lệnh:

./bitnami-lampstack-7.3.14-0-linux-x64-installer .run

Bước 5.

Màn hình thông báo về việc có thể thiếu module Perl hiện ra.

Chúng ta có thể bỏ qua và tiến hành cài đặt sau đó.

Bước 6.

Màn hình bắt đầu thực hiện cài đặt hiện ra.

Chúng ta lựa chọn chút Next > để tiếp tục.

Bước 7.

Màn hình lựa chọn các thành phần để cài đặt hiện ra.

Chúng ta nhận thấy có nhiều framework được tích hợp sẵn.

Chúng ta lựa chọn framework nào phù hợp để thực hiện cài đặt.

Chúng ta lựa chọn chút Next > để tiếp tục.

Bước 8.

Màn hình lựa chọn thư mục mặc định để cài đặt.

Chúng ta có thể để nguyên thư mục mặc định.

Một số điểm chú ý ở đây:

  • So với XAMPP khi cài sẽ lựa chọn mặc định là /opt/lampp mà chúng ta không thể thay đổi được.
  • Đối với XAMPP, nếu chúng ta muốn tự do hơn trong việc phát triển phần mềm thì cần cấu hình lại thư mục lưu trữ tập tin PHP.
  • Ngược lại, đối với LAMP Stack, cho phép chúng ta lựa chọn thư mục mặc định và nằm trong thư mục của tài khoản chính.
  • Như vậy chúng ta không cần cấu hình lại thư mục lưu trữ tập tin PHP.

Chúng ta lựa chọn chút Next > để tiếp tục.

Bước 9.

Màn hình yêu cầu nhập mật khẩu cho tài khoản root của cơ sở dữ liệu MySQL / MariaDB.

Chúng ta nhập mật khẩu vào cả hai ô.

Chúng ta lựa chọn chút Next > để tiếp tục.

Bước 10.

Màn hình đề nghị tạo tài khoản trên hệ thống đám mây của Bitnami.

Chúng ta có thể lựa chọn tạo hoặc không.

Chúng ta lựa chọn chút Next > để tiếp tục.

Bước 11.

Màn hình thông báo sẵn sàng cài đặt hiện ta.

Chúng ta lựa chọn chút Next > để tiếp tục.

Bước 12.

Hệ thống thực hiện cài đặt LAMP Stack.

Bước 13.

Sau khi cài đặt hoàn tất, màn hình thông báo khởi động Control Panel để quản trị hiện ra.

Chúng ta lựa chọn chút Finish để tiếp tục.

Bước 14.

Màn hình chính của Control Panel hiện ra.

Bước 15.

Để hiển thị giao diện chính của LAMP Stack trên trình duyệt, chúng ta lựa chọn nút Go to Application trên Control Panel.

Bước 16.

Để hiển thị giao diện chính của phpMyAdmin quản trị MySQL / MariaDB, chúng ta lựa chọn nút Open phpMyAdmin trên Control Panel.

Bước 17.

Màn hình quản trị chính của Control Panel.

Chúng ta có thể lựa chọn các chức năng Start / Stop / Restart các máy chủ.

Cài đặt bổ sung Module Perl

Bước 1.

Chúng ta nhập chuỗi lệnh để cài đặt module Perl còn thiếu:

sudo yum install perl perl-Data-Dumper

Bước 2.

Chúng ta thực hiện nhập mật khẩu của tài khoản hiện tại.

Bước 3.

Hệ thống yêu cầu nhập ký tự y để đồng ý thực hiện download module perl.

Bước 4.

Hệ thống tiếp tục yêu cầu nhập ký tự y để đồng ý nhập chuỗi khóa cho CentOS 7.

Bước 5.

Hệ thống hoàn tất việc cài đặt module Perl bổ sung.

Tổng kết

Trong bài này chúng ta đã thực hiện cài đặt LAMP Stack 7.3.6 trên Hệ điều hành CentOS 7.

Cài đặt Hệ điều hành máy chủ CentOS 7 trên phần mềm tạo máy ảo Oracle VirtualBox

Giới thiệu

Trong nội dung bài này, chúng ta cùng tìm hiểu việc cài đặt Hệ điều hành máy chủ CentOS 7. Chúng ta có thể cài đặt trên một máy chủ vật lý thực sự hoặc một máy chủ ảo.

Những nội dung chính được trình bày trong bài này:

  • Sử dụng phần mềm Oracle VirtualBox để tạo một máy chủ ảo.
  • Thực hiện download chương trình cài đặt CentOS 7. Phiên bản hiện tại là 8.x. Tuy nhiên vẫn còn nhiều phần mềm ứng dụng hiện đang chỉ chạy trên nền tảng CentOS 7.
  • Tiến hành cài đặt CentOS 7 trên máy ảo. Các bước thực hiện hoàn toàn tương tự như cài đặt trên máy chủ thật.

Tạo máy ảo để cài đặt CentOS trên Oracle VirtualBox

Bước 1.

Chúng ta khởi động chương trình Oracle VirtualBox.

Chúng ta lựa chọn nút New để thực hiện tạo một máy ảo mới.

Bước 2.

Màn hình tạo máy ảo mới hiện ta.

Chúng ta thực hiện lựa chọn như trong hình:

Chúng ta lựa chọn nút Create để thực hiện.

Bước 3.

Màn hình thiết lập dung lượng ổ cứng cho máy ảo hiện ra.

Chúng ta lựa chọn đường dẫn đến thư mục lưu trữ tập tin chứa máy ảo và thiết lập dung lượng ổ cứng theo mong muốn.

Chúng ta lựa chọn nút Create để thực hiện.

Bước 4.

Chúng ta nhận thấy máy ảo CentOS đã được tạo ra.

Chúng ta lựa chọn nút Settings để thực hiện điều chỉnh thông tin phần cứng.

Bước 5.

Màn hình Settings hiện ra.

Bước 6.

Chúng ta lựa chọn tab Processor trong mục System.

Chúng ta thiết lập 02 CPU cho máy ảo trong mục này.

Bước 7.

Chúng ta lựa chọn mục Storage.

Chúng ta chỉ đường dẫn đến tập tin cài đặt CentOS 7 (xem chương tiếp theo để thực hiện download) trong Storage Tree > Controller: IDE.

Bước 8.

Chúng ta chọn tab Adapter 1 trong mục Network.

Chúng ta thực hiện lựa chọn như trong hình để kết nối Internet cho máy ảo:

Bước 9.

Màn hình chính với những thông tin về phần cứng đã được điều chỉnh:

Download CentOS 7

Bước 1.

Chúng ta vào trang chủ của CentOS tại địa chỉ:

Here

Chúng ta lựa chọn nút Get CentOS Now để chuyển sang trang chứa tập tin download.

Bước 2.

Chúng ta lựa chọn link trong mục Older Versions tại địa chỉ:

Here

Bước 3.

Chúng ta lựa chọn link mirrors trong bảng chỉ đến CentOS 7.

Bước 4.

Chúng ta lựa chọn link phù hợp trong trang trình bày những link download CentOS 7.

Ví dụ ở đây có thể chọn link viethosting.com:

Bước 5.

Chúng ta lựa chọn link download file iso của DVD CentOS chừng 4.3 GB để download.

Thực hiện cài đặt CentOS 7

Bước 1.

Chúng ta lựa chọn nút Start để khởi động máy ảo CentOS 7.

Bước 2.

Màn hình khởi động máy ảo CentOS 7 từ đĩa DVD hiện ra.

Chúng ta sử dụng phím mũi tên lên xuống để lựa chọn mục Install CentOS 7.

Chúng ta lựa chọn phím Enter để thực hiện.

Bước 3.

Màn hình thực hiện chuẩn bị cài đặt hiện ra.

Bước 4.

Màn hình lựa chọn ngôn ngữ trong quá trình cài đặt hiện ra.

Chúng ta lựa chọn ngôn ngữ English (United States).

Bước 5.

Màn hình thiết lập các thông tin cơ bản của hệ thống hiện ra.

Đầu tiên chúng ta lựa chọn mục SYSTEM > INSTALLATION DESTINATION để phân vùng ổ cứng.

Bước 6.

Màn hình chính để thiết lập phân vùng ổ cứng hiện ra.

Chúng ta lựa chọn I will configure partitioning trong mục Other Storage Options.

Chúng ta lựa chọn nút Done để thực hiện.

Bước 7.

Màn hình thực hiện phân vùng thủ công hiện ra.

Chúng ta lựa chọn nút có dấu + để tạo phân vùng mới.

Đầu tiên chúng ta tạo phân vùng /boot để lưu trữ thông tin khởi động.

Phân vùng này chỉ cần dung lượng khoảng 500 MB là đủ.

Bước 8.

Chúng ta tiếp tục tạo phân vùng / chứa toàn bộ hệ thống.

Phân vùng này có thể cần dung lượng chiếm gần hết dung lượng ổ cứng hiện có.

Chúng ta thiết lập định dạng file cho phân vùng này là ext4 trong mục File System.

Bước 9.

Chúng ta tiếp tục tạo phân vùng hoán chuyển swap.

Thông thường phân vùng này cần dung lượng khoảng xấp xỉ dung lượng RAM hiện có trở lên.

Bước 10.

Màn hình tổng hợp các phân vùng được tạo ra.

Chúng ta lựa chọn nút Done để thực hiện.

Bước 11.

Màn hình tổng hợp tất cả các thông tin được thiết lập.

Chúng ta lựa chọn nút Accept Changes để thực hiện.

Bước 12.

Trở lại với màn hình chính ở Bước 5.

Chúng ta lựa chọn mục LOCALIZATION > DATE & TIME để thiết lập timezone hiện tại.

Chúng ta lựa chọn vùng Asia > Ho Chi Minh City.

Chúng ta lựa chọn nút Done để thực hiện.

Bước 13.

Trở lại với màn hình chính ở Bước 5.

Chúng ta lựa chọn mục SOFTWARE > INSTALLATION SOURCE để lựa chọn những gói phần mềm cài đặt.

Chúng ta cũng có thể lựa chọn sau khi cài đặt xong nếu để mặc định.

Ví dụ ở đây chúng ta lựa chọn một số gói phần mềm cho giao diện GNOME.

Chúng ta lựa chọn nút Done để thực hiện.

Bước 14.

Trở lại với màn hình chính ở Bước 5.

Chúng ta lựa chọn mục SYSTEM > NETWORK & HOSTNAME để thiết lập mạng.

Chúng ta bật cấu hình kết nối Ethernet.

Chúng ta lựa chọn nút Done để thực hiện.

Bước 15.

Trở lại với màn hình chính ở Bước 5.

Chúng ta lựa chọn nút Begin Instasllation để thực hiện.

Bước 16.

Màn hình bắt đầu cài đặt hiện ra.

Bước 17.

Hệ thống bắt đầu được cài đặt.

Bước 18.

Hệ thống được cài đặt xong.

Bước 19.

Từ màn hình ở Bước 18.

Chúng ta lựa chọn mục USER SETTINGS > ROOT PASSWORD để thiết lập mật khẩu cho tài khoản root cao nhất.

Màn hình thiết lập mật khẩu cho tài khoản root hiện ra.

Chúng ta nhập mật khẩu theo mong muốn.

Chúng ta lựa chọn nút Done để thực hiện.

Bước 20.

Từ màn hình ở Bước 18.

Chúng ta lựa chọn nút Finish configuration để thực hiện hoàn tất cài đặt.

Chú ý rằng chúng ta cũng có thể tạo tài khoản user ở thời điểm hiện tại hoặc khi khởi động lần đầu tiên thì CentOS cũng yêu cầu việc này.

Bước 21.

Hệ thống thực hiện thiết lập tiếp theo.

Bước 22.

Hệ thống hoàn tất việc cài đặt và thiết lập.

Chúng ta lựa chọn nút Reboot để khởi động lại lần đầu tiên đối với CentOS.

Bước 23.

Màn hình khởi động hệ thống CentOS 7.

Chúng ta sử dụng phím mũi tên để lựa chọn mục bên trên.

Chúng ta lựa chọn phím Enter để thực hiện.

Bước 24.

Màn hình khởi động CentOS 7 lần đầu tiên hiện ra.

Chúng ta lựa chọn mục LICENSING > LICENSE INFORMATION để thực hiện thiết lập đồng ý với những điều khoản về bản quyền.

Bước 25.

Màn hình thiết lập về điều khoản bản quyền hiện ra.

Chúng ta lựa chọn mục I accept the license agreement.

Chúng ta lựa chọn nút Done để thực hiện.

Bước 26.

Từ màn hình ở Bước 24.

Chúng ta lựa chọn nút FINISH CONFIGURATION để thực hiện.

Bước 27.

Màn hình lựa chọn ngôn ngữ để hiển thị trong hệ thống hiện ra.

Chúng ta lựa chọn English > United States.

Chúng ta lựa chọn nút Next để thực hiện tiếp.

Bước 28.

Màn hình lựa chọn dạng bàn phím nhập liệu hiện ra.

Chúng ta lựa chọn mục English (US).

Chúng ta lựa chọn nút Next để thực hiện tiếp.

Bước 29.

Màn hình thiết lập cho phép các chương trình truy cập thông tin vị trí hiện ra.

Chúng ta có thể lựa chọn việc cho phép hoặc không.

Chúng ta lựa chọn nút Next để thực hiện tiếp.

Bước 30.

Màn hình thiết lập timezone hiện ra.

Chúng ta đã thiết lập trước đó rồi nên ở đây không cần điều chỉnh gì thêm.

Chúng ta lựa chọn nút Next để thực hiện tiếp.

Bước 31.

Màn hình thiết lập những tài khoản online hiện ra.

Chúng ta có thể bỏ qua hoặc lựa chọn những tài khoản mong muốn.

Chúng ta lựa chọn nút Skip để bỏ qua.

Bước 32.

Màn hình thiết lập tài khoản sử dụng thông thường hiện ra.

Chúng ta nhập những thông tin cần thiết.

Chúng ta lựa chọn nút Next để thực hiện tiếp.

Bước 33.

Màn hình thiết lập mật khẩu cho tài khoản sử dụng vừa được tạo ra.

Chúng ta nhập mật khẩu theo mong muốn.

Chúng ta lựa chọn nút Next để thực hiện tiếp.

Bước 34.

Hệ thống đã được thiết lập xong.

Màn hình thông báo hiện ra.

Chúng ta lựa chọn nút Start Using CentOS Linux để thực hiện tiếp.

Bước 35.

Giao diện chính của CentOS 7.

Tổng kết

Trong nội dung bài này, chúng ta đã cùng nhau tìm hiểu việc cài đặt Hệ điều hành CentOS 7 trên máy ảo được tạo bởi Oracle VirtualBox.

Chúng ta cũng có thể cài đặt CentOS 7 trên máy chủ thực với những bước tương tự.

Chú ý rằng có rất nhiều gói phần mềm khác nhau phục vụ những nhu cầu sử dụng khác nhau. Chúng ta có thể lựa chọn trong quá trình cài đặt hoặc trong quá trình sử dụng.

JavaScript Object Notation – JSON

Giới thiệu

Trong nội dung bài này, chúng ta cùng tìm hiểu một định dạng biểu diễn dữ liệu quen thuộc là JSON.

JavaScript Object Notation (JSON) là một kiểu dữ liệu mở.

Kiểu dữ liệu này bao gồm chủ yếu là text, có thể đọc được theo dạng cặp: thuộc tínhgiá trị.

JSON là một kiểu dữ liệu trung gian được dùng để luân chuyển thông tin giữa các thành phần của một chương trình.

Đặc điểm – Cú pháp

Cấu trúc JSON:

  • 1 đối tượng là 1 hổn hợp của các cặp: thuộc tínhgiá trị. 1 đối tượng bắt đầu bởi dấu ngoặc đơn trái { và kết thúc với dấu ngoặc đơn phải }. Từng tên được theo sau bởi dấu 2 chấm : và các cặp thuộc tínhgiá trị được tách ra bởi dấu phẩy ,.
  • 1 mảng là 1 tập hợp các giá trị. 1 mảng bắt đầu bởi dấu ngoặc vuông trái [ và kết thúc với dấu ngoặc vuông phải ]. Các giá trị được cách nhau bởi dấu phẩy ,.
  • Những thuộc tính được chúng ta định nghĩa phù hợp với yêu cầu của chương trình.
  • 1 giá trị có thể là 1 chuỗi string trong những trích dẫn kép hay là 1 số, hay true hay false hay null, hay là 1 đối tượng hay là 1 mảng. Những cấu trúc này có thể đã được lồng vào nhau.

Biểu diễn dữ liệu

Chúng ta thực hiện biểu diễn dữ liệu trong JSON theo đặc tả trong các Hệ quản trị cơ sở dữ liệu.

Bước 1.

Chúng ta có đặc tả cơ sở dữ liệu trong PostgreSQL như sau:

Bước 2.

Chúng ta đặc tả file category.json cho bảng category có bao gồm cả dữ liệu như sau:

Bước 3.

Chúng ta đặc tả file product.json cho bảng product có bao gồm cả dữ liệu như sau:

Bước 4.

Chúng ta cũng có thể đặc tả file complex.json cho cả 02 bảng categoryproduct lồng nhau.

Chú ý rằng với cách này thì cần chú ý về độ lớn của dữ liệu và sự phức tạp trong quá trình truy xuất.

Kết luận

Trong bài này chúng ta đã cùng tìm hiểu sơ bộ về định dạng JSON để đặc tả và lưu trữ dữ liệu.

Trong các bài tiếp theo chúng ta sẽ cùng nhau tìm hiểu cách thức truy xuất định dạng JSON với những kỹ thuật lập trình phù hợp.

Extensible Markup Language – XML

Giới thiệu

Trong nội dung bài này, chúng ta cùng tìm hiểu một định dạng biểu diễn dữ liệu quen thuộc là XML.

XML (eXtensible Markup Language), nghĩa là “Ngôn ngữ đánh dấu mở rộng”, là ngôn ngữ đánh dấu với mục đích chung do World Wide Web Consortium (W3C) đề nghị.

Đây là một tập con được kế thừa từ Standard Generalized Markup Language (SGML), có khả năng mô tả nhiều loại dữ liệu khác nhau.

Mục đích chính của XML là đơn giản hóa việc chia sẻ dữ liệu giữa các platform và các hệ thống được kết nối với mạng Internet.

Chính vì vậy, XML có tác dụng rất lớn trong việc chia sẻ, trao đổi dữ liệu giữa các hệ thống.

Đặc điểm

Đặc trưng làm XML hữu ích:

  • XML được dùng cho dữ liệu có cấu trúc.
  • XML là có thể mở rộng: chúng ta có thể tạo các thẻ theo qui ước riêng để phù hợp với ứng dụng.
  • XML mang dữ liệu chứ không hiển thị: chúng ta có thể lưu giữ dữ liệu mà không quan tâm đến cái cách nó sẽ được hiển thị.
  • XML là một chuẩn chung: XML được phát triển bởi tổ chức World Wide Web Consortium (W3C) như một chuẩn mở.
  • Về trực quan, XML khá giống với HTML.
  • XML có thể đọc và phân tích nguồn dữ liệu khá dễ dàng nên nó được sử dụng với mục đích chính là trao đổi dữ liệu giữa các chương trình, các hệ thống khác nhau.

Cú pháp

Cú pháp XML cơ bản cho một phần tử là

<tên thuộc_tính=“giá trị”>nội dung</tên>

Ví dụ nội dung của một file XML bao gồm 02 dòng:

<?xml version=“1.0” encoding=“UTF-8”?>

<category_list>Đây là thông tin danh mục</category_list>

Dòng đầu tiên là Khai báo XML (XML declaration): đó là một dòng không bắt buộc, với nhiệm vụ thông báo phiên bản XML đang được sử dụng (thường là phiên bản 1.0), và còn có thể chứa thông tin về mã hóa ký tự và các phụ thuộc bên ngoài.

Phần còn lại của XML chứa các phần tử lồng nhau, một số phần tử trong đó có các thuộc tínhnội dung.

Một phần tử thường bao gồm hai thẻ (tag): một thẻ bắt đầu và một thẻ kết thúc.

Thẻ bắt đầu bao gồm một cái tên đặt trong một cặp ngoặc nhọn như: <category_list>.

Thẻ kết thúc bao gồm chính cái tên đó đặt trong một cặp ngoặc nhọn với một dấu gạch chéo đứng trước như: </category_list>.

Nội dung của phần tử là tất cả những gì nằm giữa thẻ bắt đầuthẻ kết thúc, bao gồm văn bản và các phần tử (con) khác.

Biểu diễn dữ liệu

Chúng ta thực hiện biểu diễn dữ liệu trong XML theo đặc tả trong các Hệ quản trị cơ sở dữ liệu.

Bước 1.

Chúng ta có đặc tả cơ sở dữ liệu trong PostgreSQL như sau:

Bước 2.

Chúng ta đặc tả file category.xml cho bảng category có bao gồm cả dữ liệu như sau:

Bước 3.

Chúng ta đặc tả file product.xml cho bảng product có bao gồm cả dữ liệu như sau:

Bước 4.

Chúng ta cũng có thể đặc tả file complex.xml cho cả 02 bảng categoryproduct lồng nhau.

Chú ý rằng với cách này thì cần chú ý về độ lớn của dữ liệu và sự phức tạp trong quá trình truy xuất.

Kết luận

Trong bài này chúng ta đã cùng tìm hiểu sơ bộ về định dạng XML để đặc tả và lưu trữ dữ liệu.

Trong các bài tiếp theo chúng ta sẽ cùng nhau tìm hiểu cách thức truy xuất định dạng XML từ với những kỹ thuật lập trình phù hợp.

Phương pháp sinh – PHP

Giới thiệu

Trong nội dung bài này, chúng ta cùng nhau tìm hiểu một số bài toán cơ bản về phương pháp sinh.

Phương pháp sinh có thể áp dụng để giải bài toán liệt kê tổ hợp.

Hai điều kiện để có thể áp dụng phương pháp sinh:

  • Xác định được một thứ tự trên tập các cấu hình tổ hợp. Từ đó suy ra cấu hình đầu tiên và cấu hình cuối cùng.
  • Xây dựng được thuật toán từ một cấu hình trung gian. Từ đó sinh ra cấu hình kế tiếp.

Những bài toán được tìm hiểu trong bài này:

  • Sinh các dãy nhị phân độ dài n.
  • Liệt kê các tập con k phần tử của tập {1, 2, …, n} theo thứ tự từ điển.
  • Liệt kê các hoán vị của {1, 2, …, n} theo thứ tự từ điển.

Thiết kế chương trình

Bước 1.

Chúng ta tạo một PHP Project trong Eclipse IDE và đặt tên là PHPAlgorithmGenerationMethod.

Chúng ta tạo file index.php.

Bước 2.

Chúng ta tạo folder algorithmclass GenerationAlgorithm.php.

Chúng ta cũng định nghĩa những phương thức chính để thực hiện các bài toán đặt ra.

Phương thức generateBinarySequences()

Phương thức generateBinarySequences() được đặc tả để sinh một dãy nhị phân độ dài n.

Một dãy nhị phân độ dài n là một dãy x[1…n] trong đó x[i] ∈ {0, 1} (∀i : 1 ≤ i ≤ n).

Ví dụ: Khi n = 3, chúng ta có 8 dãy nhị phân độ dài 3 được liệt kê lần lượt như sau:

{000; 001; 010; 011; 100; 101; 110; 111}

Như vậy dãy đầu tiên sẽ là 00…0 và dãy cuối cùng sẽ là 11…1.

Ý tưởng giải thuật:

  • Xét từ cuối dãy về đầu (xét từ hàng đơn vị lên), tìm số 0 gặp đầu tiên.
  • Nếu thấy thì thay số 0 đó bằng số 1 và đặt tất cả các phần tử phía sau vị trí đó bằng 0.
  • Nếu không thấy thì thì toàn dãy là số 1, đây là cấu hình cuối cùng.

Bước 1.

Chúng ta định nghĩa một mảng gồm n phần tử.

Bước 2.

Chúng ta gán giá trị 0 cho từng phần tử trong mảng.

Bước 3.

Chúng ta thực hiện thuật toán sinh trong vòng lặp while() {}.

Nội dung chính của thuật toán bao gồm các bước từ 3.1 đến 3.4.

Bước 3.1.

Tại từng bước lặp, chúng ta nhận được một dãy nhị phân.

Chúng ta thêm dãy nhị phân này vào danh sách sequences.

Bước 3.2.

Chúng ta duyệt các phần tử từ cuối dãy trở lại.

Bước 3.3.

Chúng ta thực hiện điều chỉnh giá trị của x[i] và những phần tử đứng sau trên dãy.

Bước 3.4.

Thuật toán sinh dừng lại khi đã sinh ra dãy 11…1.

Thử nghiệm

Chúng ta thử nghiệm phương thức generateBinarySequences() trong file index.php.

Phương thức generateSubSets()

Phương thức generateSubSets() được đặc tả để liệt kê các tập con k phần tử của tập {1, 2, …, n} theo thứ tự từ điển.

Ví dụ: với n = 5, k = 3, chúng ta ta phải liệt kê đủ 10 tập con:

1.{1, 2, 3} 2.{1, 2, 4} 3.{1, 2, 5} 4.{1, 3, 4} 5.{1, 3, 5} 6.{1, 4, 5} 7.{2, 3, 4} 8.{2, 3, 5} 9.{2, 4, 5} 10. {3, 4, 5}

Như vậy tập con đầu tiên là {1, 2, …, k}.

Tập con kết thúc là {n - k + 1, n - k + 2, …, n}.

Ý tưởng giải thuật:

  • Tìm từ cuối dãy lên đầu cho tới khi gặp một phần tử x[i] chưa đạt giới hạn trên n - k + i.
  • Nếu tìm thấy: (i) Tăng x[i] đó lên 1; (ii) Gán tất cả các phần tử sau x[i] bằng giới hạn dưới x[i-1] + 1.
  • Nếu không tìm thấy tức là mọi phần tử đã đạt giới hạn trên, đây là tập con cuối cùng.

Bước 1.

Chúng ta định nghĩa một mảng gồm k phần tử.

Bước 2.

Chúng ta gán giá trị là chỉ số vị trí tương ứng cho từng phần tử trong mảng.

Bước 3.

Chúng ta thực hiện thuật toán sinh trong vòng lặp while() {}.

Nội dung chính của thuật toán bao gồm các bước từ 3.1 đến 3.4.

Bước 3.1.

Tại từng bước lặp, chúng ta nhận được một tập con.

Chúng ta thêm tập con này vào danh sách sequences.

Bước 3.2.

Chúng ta duyệt các phần tử từ cuối dãy trở lại.

Bước 3.3.

Chúng ta thực hiện điều chỉnh giá trị của x[i] và những phần tử đứng sau trên dãy.

Bước 3.4.

Thuật toán sinh dừng lại khi tất cả các phần tử đã đạt giới hạn trên.

Thử nghiệm

Chúng ta thử nghiệm phương thức generateSubSets() trong file index.php.

Phương thức generatePermutation()

Phương thức generatePermutation() được đặc tả để liệt kê các hoán vị của tập {1, 2, …, n} theo thứ tự từ điển.

Ví dụ với n = 4, ta phải liệt kê đủ 24 hoán vị:

1.1234 2.1243 3.1324 4.1342 5.1423 6.1432 7.2134 8.2143 9.2314 10.2341 11.2413 12.2431 13.3124 14.3142 15.3214 16.3241 17.3412 18.3421 19.4123 20.4132 21.4213 22.4231 23.4312 24.4321

Như vậy hoán vị đầu tiên sẽ là <1, 2, …, n>.

Hoán vị cuối cùng là <n, n-1, …, 1>.

Ý tưởng giải thuật:

  • Xác định đoạn cuối giảm dần dài nhất.
  • Xác định chỉ số i của phần tử x[i] đứng liền trước đoạn cuối đó.
  • Nếu tìm thấy chỉ số i như trên: (i) tìm phần tử x[k] nhỏ nhất thoả mãn điều kiện x[k] > x[i]; (ii) Đảo giá trị x[k]x[i]; (iii) Lật ngược thứ tự đoạn cuối giảm dần (từ x[i+1] đến x[k]) trở thành tăng dần.
  • Nếu không tìm thấy tức là toàn dãy đã sắp giảm dần, đây là cấu hình cuối cùng.

Bước 1.

Chúng ta định nghĩa một mảng gồm n phần tử.

Bước 2.

Chúng ta gán giá trị là chỉ số vị trí tương ứng cho từng phần tử trong mảng.

Bước 3.

Chúng ta thực hiện thuật toán sinh trong vòng lặp while() {}.

Nội dung chính của thuật toán bao gồm các bước từ 3.1 đến 3.4.

Bước 3.1.

Tại từng bước lặp, chúng ta nhận được một hoán vị.

Chúng ta thêm hoán vị này vào danh sách sequences.

Bước 3.2.

Chúng ta duyệt các phần tử từ cuối dãy trở lại.

Bước 3.3.

Chúng ta thực hiện xem xét nếu chưa gặp phải hoán vị cuối.

Việc kiểm tra được thực hiện từ Bước 3.3.1 đến 3.3.3.

Bước 3.3.1.

Chúng ta duyệt các phần tử từ cuối dãy trở lại.

Bước 3.3.2.

Chúng ta lùi dần k.

Bước 3.3.3.

Chúng ta thực hiện đổi chỗ x[k]x[i].

Bước 3.3.4.

Chúng ta điều chỉnh những phần tử sau x[i].

Bước 3.4.

Thuật toán sinh dừng lại khi toàn bộ dãy giảm dần.

Thử nghiệm

Chúng ta thử nghiệm phương thức generatePermutation() trong file index.php.

Kết luận

Trong nội dung bài này, chúng ta đã cùng tìm hiểu một số bài toán con đối với thuật toán sinh để liệt kê một danh sách theo yêu cầu cho trước.

Hi vọng chúng ta có thể hiểu thêm về tư duy thuật toán cũng như một số các kỹ thuật lập trình PHP để áp dụng cho các bài khác.