CHƯƠNG I: TỔNG QUAN VỀ ĐỀ TÀI
Cùng với việc phát triển cộng đồng mã nguồn mở càng ngày chúng ta càng có nhiều nền tảng mã nguồn mở mạnh mẽ, đáng tin cậy hơn để sử dụng phát triển website. Một trong những nền tảng đó là wordpress. Wordpress là một hệ thống phát xuất bản blog được viết bằng ngôn ngữ lập trình PHP và sử dụng MySQL làm cơ sở dữ liệu. Wordpress với tính năng phong phú, dung lượng nhỏ, tốc độ cao, đặc biệt dễ tùy biến giao diện ở mức tối đa và có khả năng mở rộng với các plugins nên ngoài chức năng blog nó còn được dùng như là một CMS để xây dựng website.
Đây là mã nguồn mở hoàn toàn miễn phí, nếu muốn sởhữu một blog của riêng mình thì Wordpress hẵn sẽ là lựa chọn tối ưu nhất cho bạn. Yêu cầu của một blog cá nhân là khá đơn giản và Wordpress hầu như đã hỗ trợ sẵn tất cả và ta chỉ việc chỉnh sữa một vài chi tiết là có thể dụng được ngay.
Đối với những yêu cầu cơ bản của một Web blog là post bài, và cho người đọc comment vào bài đó nếu muốn. Ngoài những chi tiết chính kể trên để cho người dùng bình thường cũng có thể sử dụng được, bạn có thể thay đổi hoặc bổ sung một số chức năng cho Wordpress. Phần này chỉ dành cho các lập trình viên có am hiểu về lập trình, đó là phát triển các Plugin bổ sung vào cho Wordpress và tạo ra các Theme mới cho Wordpress.
Hiện nay việc phát triển các Plugin và Theme cho Wordpress là công việc rất thường xuyên của các lập trình viên đi về mảng lập trình PHP về mã nguồn mở. Wordpress là mã nguồn mở, vì vậy bạn có thể thay đổi nội dung của phần “lõi” của nó, nhưng thật sự không nên làm như vậy. Nếu muốn bổ sung phần nào cho Wordpress thì nên viết thêm những Plugin mới cho nó thay vì thay đổi cấu trúc của phần “lõi”.
Tuy nhiên, sau một thời gian sử dụng wordpress, tôi nhận thấy nó vẫn còn có những điểm chưa thật sự tốt sau:
- Hệ thống quản lý plugin cho phép chỉnh sửa trực tiếp mã nguồn trên nền web nhưng có hạn chế là bộ soạn thảo của nó quá đơn giản, gây khó khăn cho người phát triển.
- Hệ thống quản lý giao diện không có khả năng tạo và chỉnh sửa giao diện trực tiếp trên nền web, đó là thiếu sót với những người phát triển từ xa không có điều kiện truy cập trực tiếp vào máy chủ web.
Đề tài nghiên cứu, phát triển wordpress để xây dựng website được thực hiện với mục đích khắc phục các nhược điểm trên của wordpress đồng thời bổ sung tính năng của hệ thống quản lý phiên bản nhằm tăng cường khả năng làm việc nhóm, giảm thiểu rủi ro trong quá trình phát triển.
Hệ quản trị cơ sởdữ liệu MySql.
IDE Eclipse, công cụ viết mã PHP, Javascript, CSS…
MySql Workbench, công cụ quản trị, thiết kế cơ sởdữ liệu
Ngôn ngữ lập trình PHP 5
CHƯƠNG II: CƠ SỞ LÝ THUYẾT
WordPress là phần mềm mã nguồn mở được cung cấp miễn phí, sử dụng ngôn ngữ lập trình PHP và hệ cơ sở dữ liệu MySQL. Do đó, nó thích hợp cho ai muốn đặt blog trên chính website sử dụng tên miền của riêng mình. Tuy nhiên, nếu không có tên miền riêng và chịu được một vài hình ảnh quảng cáo đôi khi xuất hiện, bạn vẫn có thể dùng chung với nhà cung cấp Automattic Production tại địa chỉ http://wordpress.com tương tự các nhà cung cấp khác.
Dịch vụ của Automattic Production đưa ra hơn 50 giao diện mẫu chất lượng cao. Tuy vậy, để tùy biến giao diện bạn phải bỏ ra 15 USD mỗi năm để chỉnh sửa CSS. WordPress không cho phép bạn thêm vào các đoạn mã JavaScript hay RSS bên ngoài (đồng nghĩa với việc bạn không thể đặt bất cứ biển quảng cáo lên blog của mình), nhưng nó cung cấp cho bạn một số ứng dụng nhỏ (widget) để lựa chọn và sử dụng bằng cách rê và thả. Phần soạn thảo làm việc khá tốt khi kết hợp giữa chế độ soạn thảo toàn diện (WYSIWYG) và mã HTML.
WordPress là một blogging platform có mã nguồn mở, một hệ thống quản trị nội dung dành cho cá nhân sử dụng ngôn ngữ lập trình PHP và hệ quản trị CSDL MySQL.
WordPress có từ khoảng năm 2004, tiền thân của nó b2/cafelog. Tuy nhiên đến khoảng tháng 2.2005, với phiên bản 1.5 thì WordPress mới được nhiều người biết đến bởi sự ưu việt và nổi bật trong chức năng của nó.
Phiên bản hiện tại, WordPress 2.5 (ra mắt ngày 29.3.2008 ) thật sự gây được dấu ấn nơi người dùng, nổi trội nhất là Dashboard đã được re-design hoàn toàn, cực kỳ trực quan và thân thiện.
Có thể điểm qua một số chức năng của WordPress:
Hệ thống Template riêng biệt với HTML/CSS. Cho phép người dùng chỉnh sửa, tùy biến giao diện của blog mình ở một mức độ khá thoáng.
Hỗ trợ các tính năng kèm thêm plugin/widget. Plugin dùng cho WordPress.org, Widget dùng cho WordPress.com
Hỗ trợ tag. Quá quen thuộc với người dùng blog Yahoo! 360.
Hỗ chợ tạo chuyên mục. Cho phép một bài viết nằm ở nhiều chuyên mục khác nhau. Kết hợp với tag, đây thật sự là một chức năng đáng giá.
Hỗ trợ Trackback/Pingback. Đây là một tính năng còn tương đối mới mẻ với những ai đã quen dùng Yahoo! 360. Đây là những phương thức cho phép tác giả nhận được những thông báo khi một ai đó link đến một trong những entry của họ.
Hỗ trợ link dạng SEO. Ví dụ http://vuphuong87.wordpress.com/2008/04/16/yahoo-360-chia-tay-nguoi-dung-viet-nam/. Tính năng này tăng cường độ thân thiện với người xem và cả máy tìm kiếm như Google, Yahoo…
Trình soạn thảo tuyệt vời: nhanh và nhẹ. Đổi từ chế WYSIWYG sang HTML Code một cách hoàn hảo chứ không bị thay đổi cấu trúc như Yahoo! 360.
Những module của Dashboard có thể được cấu hình, có thể điều chỉnh trong trong Dashboard để thay đổi cách mà các module hiển thị ra bên ngoài.
Trong kỹ nghệ phần mềm, một hệ thống quản lý phiên bản (còn viết là VCS theo từ tiếng Anh version control system) là một hệ thống lưu giữ các phiên bản của mã nguồn của sản phẩm phần mềm, giúp các lập trình viên có thể dễ dàng lấy lại phiên bản mong muốn.
Hệ thống này có thể được sử dụng bởi một nhóm các lập trình viên, mỗi thành viên trong nhóm thường không được phép thay đổi mã nguồn của các thành viên khác, mà chỉ có thể xem. VCS cho phép người quản trị phân chia các tập tin cho từng thành viên tương ứng. Nó cũng cho phép các thành viên chia sẻ một số tập tin cho nhau trong khi phát triển. Các thành viên có thể phát hiện lỗi và sửa lỗi thuận tiện trong VCS. Trưởng nhóm phải có nhiệm vụ cập nhật lại nội dung của các tập tin đó. VCS giúp cho công việc này được thực hiện một cách tự động.
Khi các thành viên hiệu chỉnh mã của cùng một tập tin tại cùng một thời điểm, để tránh sửa đổi xung đột, họ sẽ phải so sánh xem có gì khác biệt giữa các sửa đổi của các thành viên hay không. VCS giúp cho việc này được thực hiện tự động.
Các chức năng mà các bạn cần quan tâm nhất là chức năng Commit – để đưa các dữ liệu của các bạn lên thư mục dự án (chú ý là mỗi lần các bạn đưa lên thì sẽ là một phiên bản (revision) của dự án nên các bạn chỉ nên đưa lên server một khi đã hoàn thành cơ bản chạy được một tính năng nào đó không có lỗi để tránh trường hợp có người khác update về chạy bị lỗi ở phần của các bạn mà chương trình không chịu chạy, như vậy rất nguy hiểm). Và tính năng thứ 2, là update, để cập nhập tài nguyên của dự án, phần mềm sử tự so sánh mã nguồn từ server và của các bạn và tìm ra chỗ nào khác sẽ tự động nối (merge) vào mã nguồn của các bạn đảm bảo không bị lỗi). Các bạn mỗi khi commit khuyến khích nên update xong rồi hãy update để tránh tình trạng bị lỗi.
Interner xoay quanh mô hình Client – Server. Tại máy địa phương cài đặt những phần mềm như (Internet Explore, Firefox, Safari, Chrome…) gọi là client và tương tác với những phần mềm khác như (Web Server, Mail Server, Database Server) được đặt ở một máy tính ở xa gọi là Server.
Trình duyệt (Browser) tương tác với Server dựa vào giao thức, giao thức giúp trao đổi dữ liệu một cách chính xác từ yêu cầu (request) của client và server trả lại (response) dữ liệu chính xác cho client. Một số giao thức thông dụng như:
Mô hình Client – Server sử dụng giao thức phi trạng thái (connection-less protocol), nghĩa là sau bất kỳ tương tác nào giữa Client và Server thì kết nối giữa chúng sẽ bị mất đi.
Khác với kiểu tương tác bình thường giữa Client và Server, ứng với một yêu cầu từ Client thì Server trả về dữ liệu. AJAX là kỹ thuật lấy thông tin bất đồng bộ với máy chủ Web dựa vào đối tượng XMLHttpRequest (Mặc dù, việc trao đổi này có thể được thực hiện với nhiều định dạng như HTML, văn bản thường, JSON và thậm chí EBML, nhưng XML là ngôn ngữ thường được sử dụng).
JavaScript Object Notation (thường được viết tắt là JSON, đọc gần giống như "dây thừng") là một kiểu dữ liệu trong JavaScript. Kiểu dữ liệu này bao gồm chủ yếu là text. Về cấu trúc, nó mô tả một vật thể bằng cách gói những vật thể con trong vật thể lớn hơn trong dấu ngoặc nhọn ( { } ). JSON là một kiểu dữ liệu trung gian, chủ yếu được dùng để vận chuyển thông tin giữa các thành phần của một chương trình.
Trong hệ thống quản lý phiên bản cho Wordpress , tôi sử dụng JSON để lấy dữ liệu bất đồng bộ từ Server.
CodeMirror là một thư việ Javascript có thể dùng để tạo một giao diện Editor , nó có thể nhận dạng từ khóa của một số ngôn ngữ như XML/HTML, PHP, CSS, Phython… Ứng với một ngôn ngữ được viết, mã của nó sẽ được tô màu, và Editor sẽ tùy chọn ngôn ngữ.
CHƯƠNG III: ĐẶC TẢ CHỨC NĂNG HỆ THỐNG
Một hệ thống quản lý phiên bản cần quản lý, nội dung, sự thay đổi nội dung, ngày thay đổi nội dung, phiên bản ứng với nội dung. Sau đây là phần mô tả theo quy trình viết mã lệnh của một lập trình viên.
Lập trình viên muốn viết 1 Plugin mới cho Wordpress, Plugin đó có thể có nhiều file khác nhau (file_name), các file đó có thể thuộc nhiều phần mở rộng khác nhau (file_type), ở hệ thống quản lý phiên bản này chỉ quản lý 2 loại :
Công việc tiếp theo là quản lý ngày đầu tiên viết Plugin (file_created) ứng với phiên bản đầu tiên (content_revision = 1). Sau khi phát triển lần đầu tiên Plugin ấy, nếu cảm thấy vẫn chưa hài lòng về kết quả đạt được thì lập trình viên có thể thay đổi cho hợp lý (file_modified) và lưu lại thì tăng content_revision lên một đơn vị.
Sau nhiều lần thay đổi, nếu muốn lấy lại phiên bản nào đó thì chỉ cần cung cấp ngày đã viết phiên bản đó và revision tương ứng.
CHƯƠNG IV: THIẾT KẾ CƠ SỞ DỮ LIỆU VÀ CÁC CHỨC NĂNG
Hệ thống quản lý phiên bản cho Wordpress được xây dựng để quản lý mã nguồn. Công việc lưu, sữa, xóa, thêm mới và một số tác vụ cơ bản khác được lưu trữ trực tiếp vào cơ sởdữ liệu.
Để quản lý nội dung của file, bao gồm:
Bảng wp_file lưu trữ hầu hết các thông tin cơ bản của file, sau đây là một số mô tả về bảng wp_file.
Để quản lý phiên bản: hệ thống quản lý một số chức năng sau đây:
Đánh số thứ tự của phiên bản đó để lúc cần có thể khôi phục lại dữ liệu dựa vào số thứ tự của phiên bản.
Đánh dấu việc nội dung của một file nào đó có được hiển thị ra bên ngoài hay không. Một file sau khi bị chỉnh sữa và lưu lại thì lập tức số thứ tự phiên bản (revision) của nó tăng lên, nội dung củ của nó không bị xóa đi mà bị đánh dấu là disabled. Một file không bị xóa thật sự mà nó chỉ bị đánh dấu là không được hiển thị ra bên ngoài.
Để lấy lại một phiên bản nào đó (revesion) thì dựa vào số thứ tự phiên bản. Để hiển thị thì chỉ cần đánh dấu cho phiên bản đó là published và đánh dấu phiên bản hiện tại là disabled.
Bảng wp_file_content: lưu trữ các thông tin chính về việc quản lý phiên bản, cho phép phiên bản đó có được hiển thị ra bên ngoài hay không, sau đây là một số mô tả của bảng wp_file_content.
Lớp DataLayer thực hiện tất cả các thao tác thêm, sữa, xóa dữ liệu, và đây là lớp cơ sởđể các lớp khác thừa kế. Sau đây là mô tả chi tiết của lớp này.
Một số thuộc tính của DataLayer
Một số phương thức của DataLayer
Lớp File được thừa kế từ lớp DataLayer, nhằm lưu trữ những thông tin khi lập trình viên tác động thực sự vào một file nào đó. Sau đây là mô tả chi tiết về lớp này.
Một số phương thức
Hệ thống quản lý phiên bản được xây dựng để quản lý mã nguồn bằng cách cập nhật liên tục nội dung giữa Client và Server, bất cứ một thay đổi nào phía Client đều được đồng bộ với Server thông qua những cuộc gọi AJAX.
CHƯƠNG V: XÂY DỰNG VÀ TRIỂN KHAI HỆ THỐNG
CHƯƠNG VI: KẾT LUẬN