Tổng quan về lập trình web
Trang 1 trong tổng số 1 trang
Tổng quan về lập trình web
1. Kỹ năng lập trình
Kỹ năng lập trình hướng đối tượng (OOP) là ưu tiên số 1. Tới version
4.x, PHP vẫn không đánh giá cao lập trình OOP nhưng PHP5 đã hỗ trợ OOP
rất tốt để dành được sự tin yêu của giới lập trình. Học OOP nên có bài
bản. Lý thuyết OOP không nhiều nhưng cũng là rất nhiều và sâu xa. Khi
học tới một mức độ nhất định thì có thể tiếp cận các design pattern là
các mô hình thiết kế đối tượng chuẩn mực để giái quyết các vấn đề thiết
kế ứng dụng khó.
Nắm vững OOP sẽ là cơ sở để tiếp cận mô hình xây dựng ứng dụng 3 tier.
Hầu hết các ứng dụng PHP đều sử dụng mô hình 3 tier nổi tiếng là MVC.
Ngay cả APS.NET 2.0 cũng có một framework cho người yêu MVC mới ra đời
vào khoảng đầu 12/06.
2. Kiến thức về HTML và CSS
HTML không phải là ngôn ngữ gì quá phức tạp mà thực tế là chỉ có 1 quy
luật duy nhất cần nắm bắt là <tag>. Tuy nhiên, HTML vẫn là nền
tảng quan trọng của web, bạn nên dành từ 3 - 10 ngày để thật tập trung
giải quyết dứt điểm nó.
CSS phức tạp hơn với một số cái niệm về selector và người làm designer
thì cần nắm vững về CSS nhiều hơn coder. Tuy nhiên, nắm vững CSS là thế
mạnh để giải quyết các bài toán về giao diện đôi khi tưởng như khó
nhưng lại rất dễ dàng. Đơn cử là bài toán Menu đa cấp hiển thị
horizontal hay vertical. Với CSS, chỉ cần thêm một chút kiến thức JS là
bạn có thể giải quyết gọn gạng một menu động với các menu item lấy ra
từ CSDL
Web 2.0 cũng là chuẩn mà CSS tham gia và đóng vai trò khá quan trọng.
HTML, CSS nên học một cách bài bản để tuân thủ nghiêm ngặt chuẩn XHTML
và CSS của W3C. Rất nhiều bạn coder không chú ý điểm này nhưng thực tế
công việc nếu phải làm việc cho cty nước ngoài hay khách hàng US, EU
thì vấn đề theo đúng chuẩn W3C là rất quan trọng.
3. Mô hình Client/Server
Ứng dụng web là ứng dụng bản thân nó đã tuân thủ mô hình Client/Server
và bạn cần nắm vững ngôn ngữ lập trình tại client side và server side.
Cơ chế giao tiếp giữa Client và Server của ứng dụng web dựa trên giao
thức HTTP và sử dụng Request/Response cũng cần phải được nắm rõ.
HTTP protocol không phải là giao thức phức tạp nhưng cũng nhiều chi
tiết vặt và thông số. Bạn sẽ có nhiều cơ hội tiếp cận HTTP khi đi sâu
vào PHP nên ngay từ đầu, không cần quá đặt nặng vào tìm hiểu HTTP.
Đối với Request/Response và các thành phần cơ bản của một ứng dụng web
như Server, Session, các biến môi trường, Cookie,... thì bạn lại phải
nắm rất vững. Điều này quan trọng vì nó là nền tảng của tất cả các ứng
dụng web dù viết bằng ngôn ngữ gì gì đi nữa. Một khi đã nắm vững,
chuyển đổi giữa các ngôn ngữ sẽ không gặp khó khăn gì.
Thực hành những khái niệm về Client/Server, bạn cần tiếp cận PHP và
JavaScript song song. Ở mức độ beginner, sẽ gặp vô số lỗi PHP và
JavaScript rất dễ nảng lòng vì PHP cũng như JavaScript không thực sự
cung cấp các tool lập trình sành điệu như Visual Studio của M$ để các
bạn debug.
Rất may là tại thời điểm này, PHP coder đã có thêm tool IDE như phpEdit
(NuSphere) hay Eclipse, Zend Studio Neon. Bạn nên chọn dùng Eclipse
hoặc Zend vì NuSphere là bản thương mại. Zend hiện đang có bản Neon
Beta miễn phí (những IDE này đều có tool debug dùng DBG debuger của
NuSphere có thể không dễ cài và cấu hình). Trên trình duyệt, bạn chọn
FireFox thì sẽ có plug-in Web Developer tools để view code, CSS và
debug JavaScript.
4. PHP, MySQL
Chỉ cần vài kiến thức JS cơ bản để bắt đầu với web, nếu đi sâu và JS
trứơc bạn sẽ nản. Bạn nên tiếp tục với PHP và MySQL. Nếu chưa có kiến
thức Database, bạn nên dành khoảng 7 ngày học về SQL. Thực hành trên
MySQL, bạn có thể dùng MySQL console nhưng chắc sẽ ngán ngẩm, thay vào
đó, bạn có thể download SqlYog hoặc Navicat hoặc dùng trực tiếp
PhpMyAdmin (sau này sẽ dùng nhiều khi bạn quản lý các host đi thuê) để
thực hành, tương tự Query Analyzer của SQL Server.
PHP phiên bản 5.x đã viết lại thư viện kết nối MySQL, bạn nên nắm sơ
qua về nó qua 1 cuốn ebook dạy về PHP-MySQL (rất nhiều, đừng câu nệ,
học cuốn nào cũng vậy cả).
Thời gian rèn luyện PHP và MySQL tùy vào từng người. Vì ở mức độ này,
bạn cũng đã tương đối hoàn chỉnh 1 ứng dụng Web nên bạn sẽ tập trung
vào việc xử lý dữ liệu nhập xuất và tính toán, hiển thị. Để nâng cao kỹ
năng coding, đừng tìm cách sử dụng các thư viện vào lúc này mà hãy cố
gắng viết code PHP phát sinh ra HTML code thật tốt. Một vài project làm
thật hoàn thiện các chức năng trên giao diện sẽ giúp bạn nâng cao skill
về PHP, HTML và JS.
Đừng quan trọng các vấn đề gửi mail, parsing RSS, upload file, phát
sinh PDF,... bạn có cả đời coder để tìm hiểu những thứ lặt vặt này.
5. Begin professional
Nếu bạn theo lời tôi dụ dỗ tới bước này thì bạn đã khá là đau khổ với
PHP và MySQL. Bước 5 này chia sẻ cho bạn nhiều súng đạn để vào đời
giang hồ đi ... code dạo kiếm cơm . Đây là thời điểm bạn sẽ quay về rèn
luyện thêm skill về OOP và MVC.
Đầu tiên là cải thiện ngay thói quen xử lý dữ liệu với MySQL thông
thường bằng PHP. Có nhiều khả năng code của bạn sẽ bị tấn công SQL
Inject nên cách tốt hơn là tìm một thư viện "xịn" cho việc này. Hai thư
viện khá dễ cài và học là PDO của PEAR và ADODB. Đạt tới mức độ cao
nhất về xử lý DB hiện nay kể đến viện hiểu rõ và sử dụng tốt ORM
(Object - Relational Mapping). Vì bản chất thiết kế ứng dụng là các
class mà object của nó cần được lưu trữ xuống Database để tái sử dụng
lại, người lập trình tiếp cận theo hướng ngược lại là đọc DB lên và
chuyển nó thành các object. ORM là khái niệm này và có nhiều tool làm
chuyện này cho bạn trong đó có cả ADODB và PDO.
ORM là khái niệm rất hữu ích bạn cần nắm vững do nó liên quan tới thiết
kế ứng dụng, các entity class và business object. ORM không chỉ dùng
trong PHP/MySQL mà dùng trong hầu hết các ngôn ngữ khác.
(Tới đây, nếu bạn gặp khó khăn về xây dựng một project tương đối các
chức năng. Các vấn đề như gửi nhận dữ liệu giữa các trang, quản lý
user, xử lý form data,... thì hãy tìm xuống phần về MVC ở dưới nhé.)
Khi bạn có thể thoải mái với xử lý dữ liệu, bước tiếp theo là tìm đồ
chơi hỗ trợ việc hiển thị dữ liệu đó cho user. PHP coder dùng các
template engine khác nhau để hiển thị dữ liệu. 2 template khá hay là
Smarty và Flexi. Ngoài ra, một số template còn cho bạn tạo control như
ASP.NET nhưng sẽ bàn tới sau nhé.
Tiện thể làm việc với template, bước này bạn cũng cần một đồ chơi ngon
lành về JS. Trước đây web developer rất sợ JS nhưng kể từ khi có AJAX
thì JS cũng sống lên mạnh mẽ và nhiều library nổi tiếng ra đời, nhiều
đến nỗi ngập ngụa mà sự lựa chọn hoàn toàn do bạn. Sau đây là một số ưu
tiên mà bạn nên chọn: YUI của Yahoo, jQuery, jPrototype và
Scriptaculous.
Bạn cũng sẽ quan tâm tới việc nâng cao kiến thức JS của mình nếu muốn
đào sâu vào những thư viện này. Nếu vậy, hãy tìm hiểu và học JSON. Một
lần nữa, bạn cần luyện công về OOP.
6. Rapid application development, let find an MVC framework
Phần này có 2 bước nhỏ độc lập nhau mà những người thực sự muốn đào sâu vào coding sẽ thích thú.
Ở bước 5, bạn sẽ gặp khó khăn nếu skill về giải quyết các vấn đề logic
của bạn không đủ tốt để tạo nên một "cơ chế" làm việc chung cho ứng
dụng của bạn. Nếu gặp vấn đề này mà đã cố gắng nhiều nhưng không thể
giải quyết nổi, bạn cần một framework. Có nhiều MVC framework tốt như
CakePHP, CodeIgniter, Zoop,... hay thậm chí bạn có thể chọn dùng ngay
Symfony hay Zend Framework. Tất cả đều tốt và thử thách khả năng
research của bạn.
Tận dụng framework này, đôi khi sẽ lại làm khó khăn và mất đi cơ hội
cho bạn luyện tập những thư viện Smarty hày PDO mà tôi đã đề cập. Lý do
là đa số framework đều có sẵn những cơ chế hỗ trợ những vấn đề này và
thực tế bạn có thể bỏ hẵn bước 5 thú vị và đốt cháy giai đoạn sang bước
6.
Tôi không dám dánh giá các framework nào là tốt hơn để lựa chọn nhưng
Zend có vẻ là một framework được nhiều người ưa chuộng, ít nhất cũng vì
tên tuổi của Zend. Thực tế, Zend là một tập hợp nhiều library hơn một
framework hoàn thiện, nó sẽ rất tốt cho ai có khả năng kết nối các
library với nhau và không thích một cơ chế gò bó như các framework khác
thường có. Tuy nhiên, nến xét về mức độ nhanh chóng, các framework khác
sẽ dễ tiếp cận hơn hẳn.
Với nhiều người thì cách tiếp cận lại ngược lại, họ muốn có một
framework MVC do chính mình xây dựng và làm được như vậy, người đó thực
sự có nhiều cơ hội thành một developer hàng đầu. Lời khuyên là bạn nên
có một framework cho mình và quen thuộc với nó. Khái niệm làm việc trên
1 framework cũng sẽ giúp đỡ nhiều khi bạn làm trong 1 công ty vì như
vậy sẽ tạo ra 1 chuẩn mực chung cho các member làm trong cùng 1 nhóm.
7. More than an application
Cuối cùng thì nội lưc của bạn cũng kha khá thâm hâu để đục đẽo các open
source của Joomla, Drupal, Wordpress, PhpBB,... hay gì gì đi nữa. Đây
là công việc thú vị mà dân nghiền code chắc chắn không bỏ qua. Nghiên
cứu các open source này cho bạn tìm hiểu những ứng dụng được thiết kế
để có thể thay đổi cấu hình, liên tục phát triển thêm các module,
component hỗ trợ và mở rộng gần như vô hạn
Kỹ năng lập trình hướng đối tượng (OOP) là ưu tiên số 1. Tới version
4.x, PHP vẫn không đánh giá cao lập trình OOP nhưng PHP5 đã hỗ trợ OOP
rất tốt để dành được sự tin yêu của giới lập trình. Học OOP nên có bài
bản. Lý thuyết OOP không nhiều nhưng cũng là rất nhiều và sâu xa. Khi
học tới một mức độ nhất định thì có thể tiếp cận các design pattern là
các mô hình thiết kế đối tượng chuẩn mực để giái quyết các vấn đề thiết
kế ứng dụng khó.
Nắm vững OOP sẽ là cơ sở để tiếp cận mô hình xây dựng ứng dụng 3 tier.
Hầu hết các ứng dụng PHP đều sử dụng mô hình 3 tier nổi tiếng là MVC.
Ngay cả APS.NET 2.0 cũng có một framework cho người yêu MVC mới ra đời
vào khoảng đầu 12/06.
2. Kiến thức về HTML và CSS
HTML không phải là ngôn ngữ gì quá phức tạp mà thực tế là chỉ có 1 quy
luật duy nhất cần nắm bắt là <tag>. Tuy nhiên, HTML vẫn là nền
tảng quan trọng của web, bạn nên dành từ 3 - 10 ngày để thật tập trung
giải quyết dứt điểm nó.
CSS phức tạp hơn với một số cái niệm về selector và người làm designer
thì cần nắm vững về CSS nhiều hơn coder. Tuy nhiên, nắm vững CSS là thế
mạnh để giải quyết các bài toán về giao diện đôi khi tưởng như khó
nhưng lại rất dễ dàng. Đơn cử là bài toán Menu đa cấp hiển thị
horizontal hay vertical. Với CSS, chỉ cần thêm một chút kiến thức JS là
bạn có thể giải quyết gọn gạng một menu động với các menu item lấy ra
từ CSDL
Web 2.0 cũng là chuẩn mà CSS tham gia và đóng vai trò khá quan trọng.
HTML, CSS nên học một cách bài bản để tuân thủ nghiêm ngặt chuẩn XHTML
và CSS của W3C. Rất nhiều bạn coder không chú ý điểm này nhưng thực tế
công việc nếu phải làm việc cho cty nước ngoài hay khách hàng US, EU
thì vấn đề theo đúng chuẩn W3C là rất quan trọng.
3. Mô hình Client/Server
Ứng dụng web là ứng dụng bản thân nó đã tuân thủ mô hình Client/Server
và bạn cần nắm vững ngôn ngữ lập trình tại client side và server side.
Cơ chế giao tiếp giữa Client và Server của ứng dụng web dựa trên giao
thức HTTP và sử dụng Request/Response cũng cần phải được nắm rõ.
HTTP protocol không phải là giao thức phức tạp nhưng cũng nhiều chi
tiết vặt và thông số. Bạn sẽ có nhiều cơ hội tiếp cận HTTP khi đi sâu
vào PHP nên ngay từ đầu, không cần quá đặt nặng vào tìm hiểu HTTP.
Đối với Request/Response và các thành phần cơ bản của một ứng dụng web
như Server, Session, các biến môi trường, Cookie,... thì bạn lại phải
nắm rất vững. Điều này quan trọng vì nó là nền tảng của tất cả các ứng
dụng web dù viết bằng ngôn ngữ gì gì đi nữa. Một khi đã nắm vững,
chuyển đổi giữa các ngôn ngữ sẽ không gặp khó khăn gì.
Thực hành những khái niệm về Client/Server, bạn cần tiếp cận PHP và
JavaScript song song. Ở mức độ beginner, sẽ gặp vô số lỗi PHP và
JavaScript rất dễ nảng lòng vì PHP cũng như JavaScript không thực sự
cung cấp các tool lập trình sành điệu như Visual Studio của M$ để các
bạn debug.
Rất may là tại thời điểm này, PHP coder đã có thêm tool IDE như phpEdit
(NuSphere) hay Eclipse, Zend Studio Neon. Bạn nên chọn dùng Eclipse
hoặc Zend vì NuSphere là bản thương mại. Zend hiện đang có bản Neon
Beta miễn phí (những IDE này đều có tool debug dùng DBG debuger của
NuSphere có thể không dễ cài và cấu hình). Trên trình duyệt, bạn chọn
FireFox thì sẽ có plug-in Web Developer tools để view code, CSS và
debug JavaScript.
4. PHP, MySQL
Chỉ cần vài kiến thức JS cơ bản để bắt đầu với web, nếu đi sâu và JS
trứơc bạn sẽ nản. Bạn nên tiếp tục với PHP và MySQL. Nếu chưa có kiến
thức Database, bạn nên dành khoảng 7 ngày học về SQL. Thực hành trên
MySQL, bạn có thể dùng MySQL console nhưng chắc sẽ ngán ngẩm, thay vào
đó, bạn có thể download SqlYog hoặc Navicat hoặc dùng trực tiếp
PhpMyAdmin (sau này sẽ dùng nhiều khi bạn quản lý các host đi thuê) để
thực hành, tương tự Query Analyzer của SQL Server.
PHP phiên bản 5.x đã viết lại thư viện kết nối MySQL, bạn nên nắm sơ
qua về nó qua 1 cuốn ebook dạy về PHP-MySQL (rất nhiều, đừng câu nệ,
học cuốn nào cũng vậy cả).
Thời gian rèn luyện PHP và MySQL tùy vào từng người. Vì ở mức độ này,
bạn cũng đã tương đối hoàn chỉnh 1 ứng dụng Web nên bạn sẽ tập trung
vào việc xử lý dữ liệu nhập xuất và tính toán, hiển thị. Để nâng cao kỹ
năng coding, đừng tìm cách sử dụng các thư viện vào lúc này mà hãy cố
gắng viết code PHP phát sinh ra HTML code thật tốt. Một vài project làm
thật hoàn thiện các chức năng trên giao diện sẽ giúp bạn nâng cao skill
về PHP, HTML và JS.
Đừng quan trọng các vấn đề gửi mail, parsing RSS, upload file, phát
sinh PDF,... bạn có cả đời coder để tìm hiểu những thứ lặt vặt này.
5. Begin professional
Nếu bạn theo lời tôi dụ dỗ tới bước này thì bạn đã khá là đau khổ với
PHP và MySQL. Bước 5 này chia sẻ cho bạn nhiều súng đạn để vào đời
giang hồ đi ... code dạo kiếm cơm . Đây là thời điểm bạn sẽ quay về rèn
luyện thêm skill về OOP và MVC.
Đầu tiên là cải thiện ngay thói quen xử lý dữ liệu với MySQL thông
thường bằng PHP. Có nhiều khả năng code của bạn sẽ bị tấn công SQL
Inject nên cách tốt hơn là tìm một thư viện "xịn" cho việc này. Hai thư
viện khá dễ cài và học là PDO của PEAR và ADODB. Đạt tới mức độ cao
nhất về xử lý DB hiện nay kể đến viện hiểu rõ và sử dụng tốt ORM
(Object - Relational Mapping). Vì bản chất thiết kế ứng dụng là các
class mà object của nó cần được lưu trữ xuống Database để tái sử dụng
lại, người lập trình tiếp cận theo hướng ngược lại là đọc DB lên và
chuyển nó thành các object. ORM là khái niệm này và có nhiều tool làm
chuyện này cho bạn trong đó có cả ADODB và PDO.
ORM là khái niệm rất hữu ích bạn cần nắm vững do nó liên quan tới thiết
kế ứng dụng, các entity class và business object. ORM không chỉ dùng
trong PHP/MySQL mà dùng trong hầu hết các ngôn ngữ khác.
(Tới đây, nếu bạn gặp khó khăn về xây dựng một project tương đối các
chức năng. Các vấn đề như gửi nhận dữ liệu giữa các trang, quản lý
user, xử lý form data,... thì hãy tìm xuống phần về MVC ở dưới nhé.)
Khi bạn có thể thoải mái với xử lý dữ liệu, bước tiếp theo là tìm đồ
chơi hỗ trợ việc hiển thị dữ liệu đó cho user. PHP coder dùng các
template engine khác nhau để hiển thị dữ liệu. 2 template khá hay là
Smarty và Flexi. Ngoài ra, một số template còn cho bạn tạo control như
ASP.NET nhưng sẽ bàn tới sau nhé.
Tiện thể làm việc với template, bước này bạn cũng cần một đồ chơi ngon
lành về JS. Trước đây web developer rất sợ JS nhưng kể từ khi có AJAX
thì JS cũng sống lên mạnh mẽ và nhiều library nổi tiếng ra đời, nhiều
đến nỗi ngập ngụa mà sự lựa chọn hoàn toàn do bạn. Sau đây là một số ưu
tiên mà bạn nên chọn: YUI của Yahoo, jQuery, jPrototype và
Scriptaculous.
Bạn cũng sẽ quan tâm tới việc nâng cao kiến thức JS của mình nếu muốn
đào sâu vào những thư viện này. Nếu vậy, hãy tìm hiểu và học JSON. Một
lần nữa, bạn cần luyện công về OOP.
6. Rapid application development, let find an MVC framework
Phần này có 2 bước nhỏ độc lập nhau mà những người thực sự muốn đào sâu vào coding sẽ thích thú.
Ở bước 5, bạn sẽ gặp khó khăn nếu skill về giải quyết các vấn đề logic
của bạn không đủ tốt để tạo nên một "cơ chế" làm việc chung cho ứng
dụng của bạn. Nếu gặp vấn đề này mà đã cố gắng nhiều nhưng không thể
giải quyết nổi, bạn cần một framework. Có nhiều MVC framework tốt như
CakePHP, CodeIgniter, Zoop,... hay thậm chí bạn có thể chọn dùng ngay
Symfony hay Zend Framework. Tất cả đều tốt và thử thách khả năng
research của bạn.
Tận dụng framework này, đôi khi sẽ lại làm khó khăn và mất đi cơ hội
cho bạn luyện tập những thư viện Smarty hày PDO mà tôi đã đề cập. Lý do
là đa số framework đều có sẵn những cơ chế hỗ trợ những vấn đề này và
thực tế bạn có thể bỏ hẵn bước 5 thú vị và đốt cháy giai đoạn sang bước
6.
Tôi không dám dánh giá các framework nào là tốt hơn để lựa chọn nhưng
Zend có vẻ là một framework được nhiều người ưa chuộng, ít nhất cũng vì
tên tuổi của Zend. Thực tế, Zend là một tập hợp nhiều library hơn một
framework hoàn thiện, nó sẽ rất tốt cho ai có khả năng kết nối các
library với nhau và không thích một cơ chế gò bó như các framework khác
thường có. Tuy nhiên, nến xét về mức độ nhanh chóng, các framework khác
sẽ dễ tiếp cận hơn hẳn.
Với nhiều người thì cách tiếp cận lại ngược lại, họ muốn có một
framework MVC do chính mình xây dựng và làm được như vậy, người đó thực
sự có nhiều cơ hội thành một developer hàng đầu. Lời khuyên là bạn nên
có một framework cho mình và quen thuộc với nó. Khái niệm làm việc trên
1 framework cũng sẽ giúp đỡ nhiều khi bạn làm trong 1 công ty vì như
vậy sẽ tạo ra 1 chuẩn mực chung cho các member làm trong cùng 1 nhóm.
7. More than an application
Cuối cùng thì nội lưc của bạn cũng kha khá thâm hâu để đục đẽo các open
source của Joomla, Drupal, Wordpress, PhpBB,... hay gì gì đi nữa. Đây
là công việc thú vị mà dân nghiền code chắc chắn không bỏ qua. Nghiên
cứu các open source này cho bạn tìm hiểu những ứng dụng được thiết kế
để có thể thay đổi cấu hình, liên tục phát triển thêm các module,
component hỗ trợ và mở rộng gần như vô hạn
Admin- -‘๑’-[T]hành [V]iên -‘๑’-
- Tổng số bài gửi : 23
Join date : 24/11/2009
Tuổi : 35
Đến từ : HN
Similar topics
» Tổng quan về CF League
» Bắt đầu với lập trình PHP : cài đặt PHP,MySQL... và viết chương trình đầu tiên!
» Học lập trình PHP toàn tập
» Giáo trình Professional ASP.NET 2.0 AJAX
» [BoomSpeed] Hành trình miền Tây – Những kỷ niệm đẹp
» Bắt đầu với lập trình PHP : cài đặt PHP,MySQL... và viết chương trình đầu tiên!
» Học lập trình PHP toàn tập
» Giáo trình Professional ASP.NET 2.0 AJAX
» [BoomSpeed] Hành trình miền Tây – Những kỷ niệm đẹp
Trang 1 trong tổng số 1 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết