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ỉ:
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 – JsonReader và JsonWriter để 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() và 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() và 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.
Thư mục input và output 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.json và sample.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 position và salary 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> và <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") và @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") và @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 roles và persons 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> và <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.
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:
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.
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.
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.
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:
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.
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ính – giá 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ính – giá 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ính – giá 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 category và product 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.
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ính và nộ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 đầu và thẻ 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 category và product 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.
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] và 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] và 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.