Trong bài "Tạo dịch vụ Web dạng REST (JAX-RS)" ta đã tạo và đăng (publish) dịch vụ Web ở phía máy chủ (server). Bài này ta sẽ tạo một ứng dụng phần máy khách (client) để tiêu thụ dịch vụ Web này.
Ta tải về máy thư viện Jersey tại http://jersey.java.net/.
Tạo một thư mục dự án như sau :
Như ta thấy ở hình trên, trong ứng dụng khách này ta sử dụng hai tập tin jar jersey-client và jersey-core của thư viện Jersey vừa tải về.
Ta dùng JAXB để phát sinh lớp MobilePhones từ tập tin "mobile phone.xsd". Xem chi tiết tại đây.
Thứ Tư, 5 tháng 12, 2012
Thứ Ba, 4 tháng 12, 2012
Java : Tạo dịch vụ Web dạng REST (JAX-RS)
Trong bài này ta sẽ tạo dịch vụ Web dạng REST (Representational State Transfer). Trước tiên ta sẽ tải về thư viện jersey tại http://jersey.java.net/.
Ta tạo thư mục dự án (project) như sau :
Trong thư mục dự án, ta tạo thư mục webapp. Trong đó, tạo thư mục WEB-INF chứa một thư mục con lib và tập tin web.xml. Thư mục WEB-INF được quy ước khi ta tạo ứng dụng Web với Java, trong đó thư mục lib quy ước chứa các thư viện dùng trong ứng dụng Web và tập tin web.xml dùng để cấu hình ứng dụng này.
Ta giải nén thư viện Jersey vừa tải về và chép toàn bộ các tập tin jar trong đó vào thư mục lib trong WEB-INF.
Ta tạo thư mục dự án (project) như sau :
Trong thư mục dự án, ta tạo thư mục webapp. Trong đó, tạo thư mục WEB-INF chứa một thư mục con lib và tập tin web.xml. Thư mục WEB-INF được quy ước khi ta tạo ứng dụng Web với Java, trong đó thư mục lib quy ước chứa các thư viện dùng trong ứng dụng Web và tập tin web.xml dùng để cấu hình ứng dụng này.
Ta giải nén thư viện Jersey vừa tải về và chép toàn bộ các tập tin jar trong đó vào thư mục lib trong WEB-INF.
Thứ Sáu, 30 tháng 11, 2012
Java : Kiểm thử phần mềm với JUnit và phát sinh báo cáo kiểm thử bằng Ant
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 :
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ứ 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 :
Đăng ký:
Bài đăng (Atom)