Đăng ký Đăng nhập
Trang chủ Xây dựng cms module cho hệ thống intranet của công ty tma - 1...

Tài liệu Xây dựng cms module cho hệ thống intranet của công ty tma - 1

.PDF
42
88
61

Mô tả:

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN CÔNG NGHỆ PHẦN MỀM ĐẶNG ĐÌNH VƯƠNG BÙI VĨNH PHÚ XÂY DỰNG CMS MODULE CHO HỆ THỐNG INTRANET CỦA CÔNG TY TMA KHÓA LUẬN CỬ NHÂN TIN HỌC TP. HCM, NĂM 2005 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN CÔNG NGHỆ PHẦN MỀM ĐẶNG ĐÌNH VƯƠNG – 0112458 BÙI VĨNH PHÚ – 0112024 XÂY DỰNG CMS MODULE CHO HỆ THỐNG INTRANET CỦA CÔNG TY TMA KHÓA LUẬN CỬ NHÂN TIN HỌC GIÁO VIÊN HƯỚNG DẪN TS. TRẦN VIẾT HUÂN KS. NGUYỄN TẤN HỘ KS. LÊ THANH NHÀN TP. HCM, NĂM 2005 LỜI CẢM ƠN Chúng tôi xin chân thành cảm ơn Khoa Công nghệ Thông tin, trường Đại học Khoa học Tự nhiên, Thành phố Hồ Chí Minh và Công ty TMA đã tạo điều kiện cho chúng tôi thực hiện đề tài tốt nghiệp này. Xin cảm ơn Thầy Trần Viết Huân, Anh Nguyễn Tấn Hộ, Anh Lê Thanh Nhàn, người đã tận tình hướng dẫn, chỉ bảo chúng tôi trong suốt thời gian thực tập tại Công ty. Chúng tôi cảm ơn các anh chị trong nhóm TIS đã giúp đỡ, đóng góp ý kiến cho chúng tôi trong quá trình cài đặt, thử nghiệm chương trình. Xin gửi lời cảm ơn chân thành đến gia đình, ba mẹ và bè bạn vì đã luôn là nguồn động viên to lớn, giúp đỡ chúng tôi vượt qua những khó khăn trong suốt quá trình làm việc. Mặc dù đã cố gắng hoàn thiện luận văn với tất cả sự nỗ lực của bản thân, nhưng chắc chắn không thể tránh khỏi những thiếu sót. Kính mong quý Thầy Cô tận tình chỉ bảo. Một lần nữa, chúng tôi xin chân thành cảm ơn và luôn mong nhận được sự đóng góp quý báu của tất cả mọi người. Tháng 7 năm 2005 Đặng Đình Vương Bùi Vĩnh Phú Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA MỤC LỤC DANH SÁCH CÁC HÌNH VẼ......................................................................................1 MỘT SỐ KÝ HIỆU VÀ TỪ VIẾT TẮT......................................................................4 MỞ ĐẦU .........................................................................................................................6 Chương 1 Giới thiệu đề tài ........................................................................................7 TỔNG QUAN ...............................................................................................................12 Chương 2 Tổng quan về sự phát triển của các hệ CMS .......................................13 NGHIÊN CỨU..............................................................................................................16 Chương 3 Nhu cầu sử dụng hệ CMS trong các tổ chức........................................17 1. Nhu cầu hiện tại ..................................................................................................18 1.1 Tình hình các web site của các tổ chức ở Việt Nam.....................................18 1.2 Nhu cầu cập nhật và quản lý nội dung..........................................................18 1.2.1 Nhu cầu của các doanh nghiệp...............................................................18 1.2.2 Nhu cầu của các tờ báo điện tử ..............................................................20 1.2.3 Nhu cầu trong các hệ thống thông tin của các công ty ..........................21 2. Những lợi ích mà một hệ CMS mang lại cho các công ty..................................23 Chương 4 Hệ thống intranet hiện tại của công ty .................................................25 1. Yêu cầu khi phát triển hệ thống intranet của công ty TMA ...............................26 1.1 Tình hình hiện tại ..........................................................................................26 1.2 Quy định về kiến trúc....................................................................................27 1.2.1 Kiến trúc mạnh .......................................................................................27 1.2.2 Xây dựng các công cụ hệ thống phi chức năng .....................................28 1.2.3 Bảo mật ..................................................................................................28 1.2.4 Khả năng tích hợp ..................................................................................29 1.3 Yêu cầu lúc phát triển ...................................................................................29 2. Portal hiện tại của TMA .....................................................................................30 2.1 Đặc điểm và các thành phần của portal ........................................................30 2.2 Các thành phần đã được xây dựng................................................................31 2.3 Kiến trúc hệ thống của portal........................................................................34 2.3.1 Kiến trúc hệ thống của các portal phổ biến............................................34 2.3.2 Kiến trúc hệ thống của portal TMA .......................................................35 3. Công nghệ được sử dụng để phát triển hệ thống intranet...................................36 Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA 4. Các chuẩn dùng để phát triển hệ thống...............................................................36 5. Nhu cầu của công ty TMA khi xây dựng một hệ CMS ......................................37 5.1 Nhu cầu chia sẻ thông tin giữa các dự án và các vị trí công việc .................39 5.2 Xây dựng hệ CMS dưới dạng một portlet có thể được sử dụng bởi các ứng dụng và các thành phần khác ..............................................................................41 5.3 Các kỹ thuật sử dụng trong quá trình phát triển............................................41 Chương 5 Chuẩn JSR 168 .......................................................................................43 1. Giới thiệu về chuẩn JSR 168 ..............................................................................44 2. Một số khái niệm chính ......................................................................................45 2.1 Portal .............................................................................................................45 2.2 Portlet ............................................................................................................45 2.3 Portlet Container ...........................................................................................46 3. So sánh Portlet và Servlet ...................................................................................46 3.1 Điểm giống nhau giữa Portlet và Servlet......................................................46 3.2 Điểm khác nhau giữa Portlet và Servlet .......................................................46 3.3 Đặc trưng của Portlet mà không có ở servlet................................................47 4. Giao diện portlet .................................................................................................47 5. Portlet URL.........................................................................................................48 6. Portlet Mode .......................................................................................................48 7. Window State......................................................................................................49 8. Portlet Request....................................................................................................50 9. Portlet Response .................................................................................................50 10. Portlet Preferences ............................................................................................51 11. Caching .............................................................................................................51 12. Ứng dụng Portlet...............................................................................................53 12.1 Các thành phần của ứng dụng Portlet .........................................................53 12.2 Cấu trúc cây thư mục ..................................................................................53 12.3 Tập tin lưu trữ của ứng dụng Portlet...........................................................54 13. Các đặc tả đóng gói và triển khai......................................................................54 13.1 Đặc tả triển khai của ứng dụng Web và ứng dụng Portlet ..........................54 13.2 Triển khai ứng dụng Portlet và ứng dụng Web...........................................55 13.3 Các thành phần của đặc tả triển khai Portlet...............................................55 13.4 Tính duy nhất của các giá trị trong đặc tả triển khai Portlet.......................59 14. Thư viện các thẻ Portlet ....................................................................................59 14.1 Thẻ actionURL............................................................................................60 14.2 Thẻ renderURL ...........................................................................................60 Chương 6 Chuẩn JSR 170 .......................................................................................61 1. Giới thiệu về chuẩn JSR 170 ..............................................................................62 2. Mô hình repository..............................................................................................63 Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA 3. Một số API cơ bản ..............................................................................................64 3.1 Thao tác trên repository ................................................................................66 4. Sự liên hệ giữa Node, Property và Item..............................................................67 5. Sự sắp xếp các Item con .....................................................................................67 6. Namespace ..........................................................................................................68 7. Property...............................................................................................................69 7.1 Property đa trị................................................................................................69 7.2 Các kiểu dữ liệu của Property .......................................................................69 7.2.1 Kiểu Date................................................................................................70 7.2.2 Kiểu Reference, Path và Name ..............................................................70 8. Node....................................................................................................................71 8.1 Quan hệ giữa các node cùng tên và cùng cha ( Same-Name Siblings ) .......71 8.2 Các kiểu của Node ........................................................................................71 8.2.1 Kiểu node chính và kiểu node phụ.........................................................73 8.2.2 Property definitions ................................................................................73 8.2.3 Child Node Definitions ..........................................................................74 8.2.4 Các kiểu node được định nghĩa sẵn .......................................................75 8.3 Node tham chiếu (Referenceable Nodes) .....................................................78 9. Workspace ..........................................................................................................79 9.1 Repository có một workspace.......................................................................79 9.2 Repository có nhiều Workspace và sự tương ứng các node .........................80 10. Tạo phiên bản ( Versioning ) ............................................................................82 10.1 Version History ...........................................................................................83 10.2 Mối quan hệ giữa các versionable node và version history ........................84 10.3 Đồ Thị Biểu Diễn Các Phiên Bản Trên Repository....................................84 10.4 Phiên Bản Cơ Bản (Base Version)..............................................................85 10.5 Khởi Tạo Một Version History...................................................................85 10.6 Tạo Phiên Bản Mới Của Một Node ............................................................86 10.7 Phục Hồi Lại Trạng Thái Trước Đó Của Node ..........................................87 10.8 Checkout .....................................................................................................88 10.9 Update .........................................................................................................88 10.10 Các Node Có Thể Tạo Phiên Bản Trên Repository..................................89 10.11 Thuộc Tính OnParentVersion ...................................................................91 10.11.1 COPY .................................................................................................92 10.11.2 VERSION...........................................................................................93 10.11.3 INITIALIZE .......................................................................................93 10.11.4 COMPUTE.........................................................................................94 10.11.5 IGNORE.............................................................................................94 10.11.6 ABORT ..............................................................................................94 10.12 Ví dụ về một Repository có hỗ trợ tạo phiên bản .....................................95 Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA 11. Lắng Nghe Sự Kiện Trên Repository (Observation)........................................96 11.1 Phát sinh sự kiện .........................................................................................96 11.2 Các loại sự kiện...........................................................................................97 11.3 Đối tượng lắng nghe và xử lý sự kiện.........................................................98 11.4 Lựa chọn sự kiện để lắng nghe ...................................................................99 11.5 Các sự kiện xảy ra đối với một hành động trên Repository........................99 11.5.1 Hành động thêm một Item....................................................................99 11.5.2 Hành động thay đổi giá trị của Property ............................................100 11.5.3 Hành động thêm vào một Node đã tồn tại trong Repository .............100 11.5.4 Khôi phục lại trạng thái của một Node ..............................................101 11.5.5 Sao chép một Node ............................................................................101 11.5.6 Xóa một Item......................................................................................102 11.5.7 Di chuyển vị trí của một Node ...........................................................102 11.5.8 Tạo Phiên Bản Của Item ....................................................................102 11.5.9 Khoá một Item....................................................................................103 11.5.10 Mở khóa một Item............................................................................103 12. Vấn đề bảo mật trên Repository .....................................................................104 13. Cơ chế khóa trên Repository ..........................................................................104 13.1 Mức độ khóa .............................................................................................104 13.2 Phạm vi khóa.............................................................................................104 13.3 Loại khóa...................................................................................................105 14. Tìm kiếm nội dung trên Repository................................................................105 14.1 Ngôn ngữ truy vấn JCRQL .......................................................................106 14.1.1 Mệnh đề SELECT ..............................................................................106 14.1.2 Mệnh đề FROM .................................................................................106 14.1.3 Mệnh đề LOCATION ........................................................................106 14.1.4 Mệnh đề WHERE...............................................................................109 14.1.5 Mệnh đề SEARCH .............................................................................110 14.1.6 Mệnh đề ORDER BY.........................................................................111 15. Một số ví dụ về việc cài đặt JCR ....................................................................112 15.1 JCR cài đặt bên trên File System ..............................................................112 15.2 JCR cài đặt bên trên một Database ...........................................................113 Chương 7 So sánh một số giải pháp CMS mã nguồn mở phổ biến ...................115 1. Giới thiệu các giải pháp hiện tại .......................................................................116 1.1 Xu hướng phát triển của các hệ CMS .........................................................116 1.1.1 Xu hướng về mặt thương mại ..............................................................116 1.1.2 Xu hướng về công nghệ, kỹ thuật ........................................................117 1.2 So sánh các giải pháp CMS thông dụng .....................................................118 1.2.1 Tiêu chí lựa chọn các giải pháp CMS để so sánh ................................118 Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA 1.2.2 Các tiêu chí so sánh..............................................................................118 2. Mô tả các giải pháp đã so sánh .........................................................................123 2.1 Giải pháp Cofax 2.0 ....................................................................................123 2.2 Giải pháp Daisy 1.1.....................................................................................125 2.2.1 Repository chứa nội dung ....................................................................126 2.2.2 Giao diện web.......................................................................................126 2.3 Giải pháp Magnolia 2.1...............................................................................127 2.4 Giải pháp OpenCMS 5.0.............................................................................129 3. Kết luận.............................................................................................................130 ỨNG DỤNG................................................................................................................132 Chương 8 Các chức năng của TMA CMS ...........................................................133 1. Mô hình Use case..............................................................................................134 2. Mô tả các chức năng .........................................................................................135 2.1 Quản lý vai trò.............................................................................................135 2.2 Quản lý người sử dụng................................................................................135 2.3 Phân quyền sử dụng cho vai trò ..................................................................136 2.4 Phân phối vai trò đến người sử dụng ..........................................................137 2.5 Tối ưu hoá các thông tin cấu hình hệ thống................................................138 2.6 Biên soạn nội dung trang web.....................................................................138 2.7 Áp dụng template vào trang web ................................................................139 2.8 Phân loại nội dung.......................................................................................139 2.9 Truy nhập vào hệ CMS ...............................................................................139 2.10 Tìm kiếm nội dung....................................................................................140 2.11 Lựa chọn ngôn ngữ ...................................................................................140 Chương 9 Tích hợp hệ thống CMS vào TMA portal ..........................................141 1. System Architecture của Magnolia CMS .........................................................142 1.1 Mô hình một số package quan trọng của Magnolia CMS ..........................142 1.2 Mô tả các package.......................................................................................142 1.2.1 Package info.magnolia.cms..................................................................142 1.2.2 Package info.magnolia.cms. security ...................................................143 1.2.3 Package info.magnolia.cms.servlets ....................................................143 1.2.4 Package info.magnolia.cms.core..........................................................143 1.2.5 Package info.magnolia.module.adminInterface...................................143 1.2.6 Package info.magnolia.module.templating ..........................................144 1.2.7 Package info.magnolia.repository........................................................144 1.2.8 Package info.magnolia.exchange .........................................................144 2. Hướng tiếp cận để tích hợp...............................................................................144 2.1 Hướng tiếp cận thứ 1...................................................................................144 Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA 2.2 Hướng tiếp cận thứ 2...................................................................................145 3. Cách thức thực hiện ..........................................................................................146 3.1 Tạo dự án J2EE dựa trên mã nguồn của Magnolia .....................................147 3.2 Chuẩn hoá dự án J2EE theo chuẩn JSR 168 ...............................................147 3.3 Tích hợp hệ thống bảo mật .........................................................................151 KẾT LUẬN .................................................................................................................152 HƯỚNG PHÁT TRIỂN.............................................................................................155 TÀI LIỆU THAM KHẢO .........................................................................................157 Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA DANH SÁCH CÁC HÌNH VẼ Hình 1: Hệ CMS quản lý tự động nội dung trang web ....................................................8 Hình 2: Giao diện hệ thống intranet của công ty TMA ...................................................9 Hình 3: Hệ thống thông tin hiện tại của công ty TMA ..................................................10 Hình 4: Quy trình cập nhật thông tin trong doanh nghiệp .............................................19 Hình 5: Quy trình cập nhật thông tin trong doanh nghiệp khi sử dụng CMS................19 Hình 6: Quy trình cập nhật thông tin trong một tờ báo địên tử .....................................20 Hình 7: Quy trình cập nhật thông tin trong toà soạn báo điện tử có sử dụng hệ CMS..21 Hình 8: Quy trình cập nhật thông tin trong một hệ thống thông tin ..............................22 Hình 9: Quy trình cập nhật thông tin trong một hệ thống thông tin có CMS ................23 Hình 10: Kiến trúc SOA của intranet của công ty TMA ...............................................26 Hình 11: Các thành phần trong portal của công ty TMA ..............................................33 Hình 12: Kiến trúc hệ thống của các portal phổ biến ....................................................34 Hình 13: Kiến trúc hệ thống của portal TMA................................................................35 Hình 14: Chia sẻ thông tin giữa các dự án và vị trí công việc trong công ty TMA.......40 Hình 15: Mô hình chuẩn JSR 168..................................................................................44 Hình 16: Cấu trúc một đặc tả triển khai Portlet .............................................................57 Hình 17: Cấu trúc một đặc tả triển khai Portlet (tt) .......................................................58 Hình 18: Chuẩn JSR 170 giao tiếp với cơ sở dữ liệu.....................................................62 Hình 19: Mô hình một workspace của một repository ..................................................63 Hình 20: Mối liên hệ giữa Node, Property và Item .......................................................67 Hình 21: Repository có một workspace........................................................................79 Hình 22: Repository có nhiều workspace .....................................................................81 Hình 23: Đồ thị mô tả một Version History..................................................................83 Hình 24: Repository có nhiều workspace và hỗ trợ tạo phiên bản ................................95 Hình 25: Giao diện Cofax ............................................................................................123 Bùi Vĩnh Phú 1 Đặng Đình Vương Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Hình 26: Giao diện Daisy.............................................................................................125 Hình 27: Giao diện Magnolia.......................................................................................127 Hình 28: Giao diện OpenCMS.....................................................................................129 Hình 29: Các gói chính của Magnolia CMS ................................................................142 Hình 30: Cấu trúc dự án J2EE của hệ CMS.................................................................148 Bùi Vĩnh Phú 2 Đặng Đình Vương Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA DANH SÁCH CÁC BẢNG Bảng 1: Một số thành phần đã được xây dựng trong hệ thống portal của Công ty .......32 Bảng 2: Các hằng số trong giao diện javax.jcr.version.OnParentVersionAction..........92 Bảng 3: Các hằng số định nghĩa trong giao diện javax.jcr.observation.EvenType ......97 Bảng 4: So sánh yêu cầu hệ thống của một số CMS ...................................................119 Bảng 5: So sánh tính bảo mật của một số CMS...........................................................119 Bảng 6: So sánh tính tiện dụng của một số CMS ........................................................120 Bảng 7: So sánh hiệu suất hoạt động của một số CMS ...............................................120 Bảng 8: So sánh tính khả chuyển của một số CMS .....................................................121 Bảng 9: So sánh khả năng quản lý của một số CMS ...................................................121 Bảng 10: So sánh các khả năng hỗ trợ khác của một số CMS.....................................122 Bùi Vĩnh Phú 3 Đặng Đình Vương Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA MỘT SỐ KÝ HIỆU VÀ TỪ VIẾT TẮT API Application Programming Interface CMS Content Management System Drag’n’drop Thuật ngữ Drag and Drop Eclipse Phần mềm miễn phí dùng phát triển các ứng dụng trên Java http://www.eclipse.org/ HTML Hyper Text Markup Language HTTP Hypertext Transfer Protocol HTTPS Secure Hypertext Transfer Protocol JBoss Web application server miễn phí http://www.jboss.org/products/jbossas JCR Java Content Repository JDK Java Development Kit JSR Java Specification Request Lomboz plug-in giúp Eclipse giao tiếp với JBoss và tạo các dự án J2EE http://www.objectlearn.com/index.html MIME Multipurpose Internet Mail Extensions MVC Mô hình thiết kế Model-View-Controller ORB Object Request Broker RMI-IIOP Remote Method Invocation over internet Inter-ORB Protocol SOA Service Oriented Architecture SOAP Simple Object Access Protocol Bùi Vĩnh Phú 4 Đặng Đình Vương Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA SPI Service Provider Interface URI Uniform Resource Identifiers URL Uniform Resource Locator XHTML eXtensible Hyper Text Markup Language XML eXtensible Markup Language WSRP web Services for Remote portlets WYSIWYG What You See Is What You Get Bùi Vĩnh Phú 5 Đặng Đình Vương Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA MỞ ĐẦU Bùi Vĩnh Phú 6 Đặng Đình Vương Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Chương 1 Giới thiệu đề tài Bùi Vĩnh Phú 7 Đặng Đình Vương Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Một cách đơn giản nhất, CMS là một hệ thống hỗ trợ người sử dụng trong việc tạo ra các trang web, quản lý nội dung các trang web. Sau cùng, các trang web sẽ được xuất bản để phân phối đến mọi người. Cả quy trình từ lúc tạo ra nội dung trang web, quản lý nội dung được tạo ra và sau cùng phân phối nội dung này đều hoàn toàn tự động. Hình vẽ sau sẽ mô tả cho quy trình tự động này. Hình 1: Hệ CMS quản lý tự động nội dung trang web Luận văn này được thực hiện trong quá trình thực tập của chúng tôi tại công ty phần mềm Tường Minh (TMA). Khi luận văn bắt đầu thì hệ thống thống tin (intranet) của công ty đang được xây dựng lại. Việc xây dựng này dựa trên các chuẩn mở và các công nghệ, giải pháp mã nguồn mở. Bùi Vĩnh Phú 8 Đặng Đình Vương Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Hình 2: Giao diện hệ thống intranet của công ty TMA Hệ thống Intranet của công ty TMA hỗ trợ các công cụ, các chức năng như sau: • Quản lý nhân sự • Quản lý năng lực của nhân viên • Quản lý tuyển dụng • Quản lý thông tin các dự án • Hệ quản lý tài liệu • Tìm kiếm thông tin • Hệ thống bảo mật • Các sự kiện nội bộ của công ty • … Bùi Vĩnh Phú 9 Đặng Đình Vương Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA Hệ thống thông tin này nếu được nhìn dưới góc độ của người phát triển sẽ bao gồm các thành phần như sau: Employee Contact HR DMS Project Information CMS Cung cấp Các ứng dụng Reporting Engine Recruitment PA Search Engine Event Authentification Cung cấp Các dịch vụ Scheduling System HR Workflow Engine Search Recruitment Cung cấp Các thành phần chức năng Các thành phần phi chức năng Portal được xây dựng dựa trên Liferay Hình 3: Hệ thống thông tin hiện tại của công ty TMA Hệ thống thông tin này bao gồm các ứng dụng, các dịch vụ dùng để hỗ trợ hoạt động cho các ứng dụng. Ngoài ra, còn có các thành phần chức năng dùng để cung cấp Bùi Vĩnh Phú 10 Đặng Đình Vương Phát triển CMS module cho hệ thống Intranet cuả Công ty TMA các chức năng cho các dịch vụ. Các thành phần phi chức năng dùng để hỗ trợ hoạt động cho các ứng dụng, các dịch vụ và các thành phần chức năng. Hệ CMS cần xây dựng cho công ty TMA sẽ thuộc nhóm các thành phần phi chức năng như trên hình vẽ trên đã minh hoạ. Mục đích chính của đề tài này là xây dựng và tích hợp CMS module vào trong hệ thống intranet của công ty TMA. Để thực hiện điều này, chúng tôi đã thực hiện 3 công việc chính như sau: • Nghiên cứu về CMS. • Tìm hiểu và so sánh các giải pháp xây dựng CMS để chọn ra giải pháp thích hợp nhất với yêu cầu công ty. • Tích hợp giải pháp đã chọn vào trong hệ thống intranet của công ty. Chúng tôi thực hiện đề tài này ngoài mong muốn bảo vệ thành công khoá luận của mình, còn muốn qua đó học hỏi thêm nhiều kiến thức và kinh nghiệm trong việc phát triển một hệ CMS, một lãnh vực mới mẻ và đầy tiềm năng. Bùi Vĩnh Phú 11 Đặng Đình Vương
- Xem thêm -

Tài liệu liên quan