Trong các bài xử lý tập tin XML với DOM, JDOM, JAXB và xử lý chuỗi, ta dùng dẫn giải (annotation) @Test cho các hàm để dùng chúng như các kiểm thử đơn vị (unit test). Thực ra các hàm này minh hoạ cách xử lý XML, chỉ có duy nhất dòng lệnh Assert.assertEquals() thực hiện việc kiểm thử đơn vị. Cứ giả dụ đấy là các kiểm thử đơn vị, trong bài này ta sẽ dùng Ant để thực thi một lèo những kiểm thử đơn vị này và sau đó phát sinh báo cáo cho chúng.
Trước tiên ta tải JUnit tại đây và lưu nó trong thư mục lib.
Thư mục dự án (project) trong Eclipse có cấu trúc sau:
Nội dung tập tin Ant testBuild.xml :
Thứ Sáu, 30 tháng 11, 2012
Thứ Tư, 28 tháng 11, 2012
Java : Xử lý tập tin Xml bằng cách xử lý chuỗi
Trong Java, ngoài việc sử dụng các thư viện, ta cũng có thể đọc và xử lý tập tin Xml bằng cách thao tác trên chuỗi ký tự.
Nội dung tập tin Xml "mobile phone.xml" cần đọc xem tại đây.
Nội dung mã trong tập tin TextManipulationTest.java
Nội dung tập tin Xml "mobile phone.xml" cần đọc xem tại đây.
Nội dung mã trong tập tin TextManipulationTest.java
Java : Xử lý tập tin Xml dùng JAXB
Trong Java, tùy theo nhu cầu và mục đích xử lý tập tin Xml, ta có nhiều lựa chọn. Dưới đây, ta dùng JAXB (viết tắt của Java Architecture for XML Binding) để đọc, viết, sửa, thêm nốt (node) con.
Nội dung tập tin Xml "mobile phone.xml" cần đọc xem tại đây.
JAXB thường được dùng trong trao đổi thông tin giữa các dịch vụ web (Web Service). Dùng JAXB thì ta cần biết đến hai khái niệm Marshalling (hay cũng gọi Serialization) và Unmarshalling (hay còn gọi Deserialization) mà ở đây tôi dịch một cách hình tượng tương ứng là Chuyển xẹp và Chuyển phồng:
- Chuyển xẹp (marshal/serialize): là quá trình chuyển một trạng thái thông tin trong bô nhớ - một cấu trúc dữ liệu (data structure) hay một đối tượng (object) chẳng hạn - sang một dạng thức thông tin nhỏ hơn tức một chuỗi các bit, các byte hay tập tin để có thể lưu trữ hoặc truyền đi.
- Chuyển phồng (unmarshal/deserialize) : là quá trình ngược của chuyển xẹp, nhằm rút ra một cấu trúc dữ liệu hay đối tượng từ một chuỗi các bit, byte hay từ một tập tin.
Nội dung tập tin Xml "mobile phone.xml" cần đọc xem tại đây.
JAXB thường được dùng trong trao đổi thông tin giữa các dịch vụ web (Web Service). Dùng JAXB thì ta cần biết đến hai khái niệm Marshalling (hay cũng gọi Serialization) và Unmarshalling (hay còn gọi Deserialization) mà ở đây tôi dịch một cách hình tượng tương ứng là Chuyển xẹp và Chuyển phồng:
- Chuyển xẹp (marshal/serialize): là quá trình chuyển một trạng thái thông tin trong bô nhớ - một cấu trúc dữ liệu (data structure) hay một đối tượng (object) chẳng hạn - sang một dạng thức thông tin nhỏ hơn tức một chuỗi các bit, các byte hay tập tin để có thể lưu trữ hoặc truyền đi.
- Chuyển phồng (unmarshal/deserialize) : là quá trình ngược của chuyển xẹp, nhằm rút ra một cấu trúc dữ liệu hay đối tượng từ một chuỗi các bit, byte hay từ một tập tin.
Thứ Ba, 27 tháng 11, 2012
Java : Xử lý tập tin Xml dùng JDOM
Trong Java, tùy theo nhu cầu và mục đích xử lý tập tin Xml, ta có nhiều lựa chọn. Dưới đây, ta dùng JDOM để đọc, viết, sửa, thêm nốt (node) con, thêm thuộc tính (attribute) cho một nốt. JDOM có thể được tải về tại đây.
Nội dung tập tin Xml "mobile phone.xml" cần đọc xem tại đây
Ta tạo thư mục dự án (project) trong Eclipse có cấu trúc sau, trong ví dụ ta dùng jdom-2.0.4:
Nội dung tập tin Xml "mobile phone.xml" cần đọc xem tại đây
Ta tạo thư mục dự án (project) trong Eclipse có cấu trúc sau, trong ví dụ ta dùng jdom-2.0.4:
Java : Xử lý tập tin Xml dùng DOM
Trong Java, tùy theo nhu cầu và mục đích xử lý tập tin Xml, ta có nhiều lựa chọn. Dưới đây, ta dùng DOM, viết tắt của Document Object Model (Mô hình đối tượng tài liệu), để đọc, viết, sửa, thêm nốt (node) con, thêm thuộc tính (attribute) cho một nốt.
Nội dung tập tin Xml "mobile phone.xml" cần đọc:
Nội dung tập tin Xml "mobile phone.xml" cần đọc:
<?xml version="1.0" encoding="UTF-8"?> <mobile_phones xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="mobile phone.xsd"> <mobile_phone category="smartphone"> <name>Samsung Galaxy II</name> <manufacturer>Samsung</manufacturer> <os>Android</os> <description>smartphone of Samsung</description> </mobile_phone> <mobile_phone category="smartphone"> <name>iPhone 4</name> <manufacturer>Apple</manufacturer> <os>iOS</os> <description>smartphone of Apple</description> </mobile_phone> </mobile_phones>
Thứ Hai, 26 tháng 11, 2012
Cài đặt Apache Tomcat trên Linux
Dưới đây ta sẽ cài Tomcat trên hệ điều hành OpenSuse theo các bước sau :
- Tải gói nén của Tomcat về máy,
- Giải nén gói vừa tải về
- Chép phần vừa giải nén này vào thư mục /opt/
- Tạo một đường dẫn tượng trưng (symbolic link) cho thư mục này, /opt/tomcat là đường dẫn tượng trưng chỉ tới thư mục /opt/apache-tomcat-7.0.29/
- Khởi động Tomcat, để kiểm tra
- Tải gói nén của Tomcat về máy,
$ wget http://mir2.ovh.net/ftp.apache.org/dist/tomcat/tomcat-7/v7.0.29/bin/apache-tomcat-7.0.29.tar.gz
- Giải nén gói vừa tải về
$ tar xzvf apache-tomcat-7.0.29.tar.gz
- Chép phần vừa giải nén này vào thư mục /opt/
$ mv apache-tomcat-7.0.29 /opt/
- Tạo một đường dẫn tượng trưng (symbolic link) cho thư mục này, /opt/tomcat là đường dẫn tượng trưng chỉ tới thư mục /opt/apache-tomcat-7.0.29/
$ ln -s /opt/apache-tomcat-7.0.29/ /opt/tomcat
- Khởi động Tomcat, để kiểm tra
$ /opt/tomcat/bin/startup.sh
Thứ Sáu, 23 tháng 11, 2012
Dùng khung hiển thị danh sách (ListView) với VBA
Trong ví dụ dưới đây, ta sẽ tạo một ứng dụng để in các tập tin excel. Hộp thoại của ứng dụng gồm :
- Một hộp nhập liệu. Nút Browse cho phép chọn thư mục chứa các tập tin excel. Khi chọn xong, đường dẫn này hiển thị trong hộp nhập liệu, và các tập tin excel xuất hiện trong Khung hiển thị danh sách (ListView)
- Khung hiển thị danh sách với thuộc tính (property) Checkboxes có giá trị True cho phép hiển thị các hộp chọn trước mỗi tập tin. Và thuộc tính View có giá trị 2-lvwList để hiển thị nội dung dưới dạng danh sách.
- Một hộp nhập liệu. Nút Browse cho phép chọn thư mục chứa các tập tin excel. Khi chọn xong, đường dẫn này hiển thị trong hộp nhập liệu, và các tập tin excel xuất hiện trong Khung hiển thị danh sách (ListView)
- Khung hiển thị danh sách với thuộc tính (property) Checkboxes có giá trị True cho phép hiển thị các hộp chọn trước mỗi tập tin. Và thuộc tính View có giá trị 2-lvwList để hiển thị nội dung dưới dạng danh sách.
Dùng khung hiển thị hình cây (TreeView) với VBA
Trong ví dụ dưới đây ta hiển thị các thư mục (folder) của một ổ đĩa (drive) trong khung hiển thị dạng cây (TreeView) của VBA. Ta tạo một hộp thoại (dialog) gồm :
- Một thanh cuộn (ComboBox) tên cbDisc : chứa danh sách các ổ đĩa của máy tính.
- Môt khung hiển thị dạng cây : khi ta chọn một ổ đĩa trong danh sách cuộn phía trên, khung này sẽ hiển thị các thư mục của ổ đĩa vừa được chọn.
- Một thanh cuộn (ComboBox) tên cbDisc : chứa danh sách các ổ đĩa của máy tính.
- Môt khung hiển thị dạng cây : khi ta chọn một ổ đĩa trong danh sách cuộn phía trên, khung này sẽ hiển thị các thư mục của ổ đĩa vừa được chọn.
Mã hoá mã nguồn html để tránh kí tự đặc biệt
- Để hiển thị mã với Syntaxhighlighter trong thẻ <pre> ta phải mã hoá để tránh các kí tự đặc biệt trong html như ", ', &, <, >
- Đoạn mã Javascript sau giúp làm điều này :
- Đoạn mã Javascript sau giúp làm điều này :
Chèn bộ gõ tiếng việt MUDIM vào Blogger
Chèn đoạn mã sau trước thẻ </head> trong template của blogger (xem tại đây):
Gõ tiếng Việt tại đây :
<script src="http://mudim.googlecode.com/files/mudim-0.8-r153.js"></script>Trong "src" là đường dẫn trực tiếp đến mã nguồn của MUDIM.
Gõ tiếng Việt tại đây :
Thứ Năm, 22 tháng 11, 2012
Hiển thị mã nguồn (code) trong Blogger với Syntaxhighliter
Hiển thị mã nguồn (code) trong Blogger với Syntaxhighliter
* Syntaxhighliter có thể tải về tại đường kết nối (link) sau : http://alexgorbatchev.com/SyntaxHighlighter/download/
* Trong cửa sổ quản lý blog chọn Template>Edit HTML
* Lưu một bản sao của template phòng trường hợp cần khôi phục lại
* Tìm thẻ (tag) </head> và chèn vào trước nó phần mã sau :
* Syntaxhighliter có thể tải về tại đường kết nối (link) sau : http://alexgorbatchev.com/SyntaxHighlighter/download/
* Trong cửa sổ quản lý blog chọn Template>Edit HTML
* Lưu một bản sao của template phòng trường hợp cần khôi phục lại
* Tìm thẻ (tag) </head> và chèn vào trước nó phần mã sau :