Archive for Tháng Chín 23rd, 2008

Lập trình web và các khái niệm

Tháng Chín 23, 2008

Cùng với sự phát triển của CNTT cũng như Internet, việc phát triển các ứng dụng trên một máy đơn cũng đã mang lại nhiều lợi ích và được áp dụng trong nhiều lĩnh vực của đời sống. Tuy nhiên, với sự gia tăng phát triển của ngành công nghiệp máy tính, xu hướng toàn cầu hoá nhất hiện nay, tin học phải mở rộng hơn để có thể khai thác nguồn tài nguyên Internet

Trong mỗi doanh nghiệp việc phát triển các ứng dụng quản lý trên mạng càng có ý nghĩa hơn khi các mạng LAN hay WAN bùng nổ và ngày càng phổ biến. Các ứng dụng đó đảm bảo tính truy nhập tương tác từ nhiều phía và tài nguyên chỉ đặt một nơi mà ta gọi là server. Như thế các mạng sẽ mang lại cho chúng ta những lợi nhuận đáng kể. Và thực tế đã chứng tỏ điều đó, các ứng dụng đều hướng tới mạng và Internet, từ kinh doanh trên Internet, quảng cáo, hệ thống thư điện tử, cũng như thương mại điện tử. Các khái niệm đó đang gần gũi với chúng ta hơn.
Bài viết giới thiệu với các bạn một số khái niệm có liên quan đến lập trình Web. Đó là những khái niệm thường gặp khi làm việc với môi trường mạng và đó cũng là những nét đặc trưng khác biệt mà các bạn ít gặp khi lập trình trên các ứng dụng đơn lẻ.
1. URL
URL (Uniform Resource Locator) dùng để chỉ tài nguyên trên Internet. Sức mạnh của web là khả năng tạo ra những liên kết siêu văn bản đến các thông tin liên quan. Những thông tin này có thì là những trang web khác, những hình ảnh, âm thanh… Những liên kết này thường được biểu diễn bầng những chữ màu xanh có gạch dưới được gọi là anchor.
Các URL có thể được truy xuất thông qua một trình duyệt (Browser) như IE hay Netscape.
Ví dụ: Một URL có dạng http://www.hcmut.edu.vn/index.html
Trong đó: http: là giao thức
http://www.hcmut.edu.vn/ là địa chỉ máy chứa tài nguyên.
index.html là tên đường dẫn trên máy chứa tài nguyên.
Nhờ địa chỉ url mà ta có thể từ bất kỳ một máy nào trong mạng Internet truy nhập tới các trang web ở các website khác nhau.
2.Web Server/mail Server và hoạt động của browser WWW (World Wide Web)
Hoạt động truy xuất WWW giữa máy khách và web server theo cơ chế sau:
Server ứng dụng cung cấp dữ liệu mà người sử dụng cần đến hoặc trao đổi. Chỉ những người sử dụng đã đăng ký account mới được cấp web site chứa dữ liệu riêng của mình trên server này, mọi người sử dụng đều có thể truy xuất các URL được phép dùng chung trong server này.
Trước tiên trình duyệt thực hiện kết nối để nhận được program/server. Browser dùng địa chỉ miền tên như số điện thoại hay địa chỉ để đạt tới server.
Browser tìm địa chỉ tên miền – thông tin đi ngay sau http:// như trong http://www.hcmut.edu.vn/ ví dụ trên, trong đó http://www.hcmut.edu.vn/ là địa chỉ miền tên (cũng là địa chỉ máy chứa tài nguyên).
Sau đó browser sẽ gửi request header sau tới miền xác định:
* Một request header xác định file hay dịch vụ đang được request.
* Các fields request header, xác định browser.
* Thông tin đặc biệt thêm vào request.
* Bất kỳ dữ liệu nào đi cùng với request.
Tất cả những thông tin đó được gọi là request header HTTP. Chúng xác định đối với server thông tin căn bản mà client đang request và loại đáp ứng có thể được client chấp nhận. Scrver cũng lấy tất cả các header do client gửi tới thông qua biến môi trường (environments variables) để chương trình server xử lý. Server đáp ứng với response header. Header đáp ứng đầu tiên là dòng trạng thái cho client biết kết quả của việc tìm kiếm request url. Nếu trạng thái là thành công (Success) thì nội dung của request url được gửi trả lại client/browser và hiển thị trên màn hình máy tính của client.
3. HTML và Web page
Ngôn ngữ siêu văn bản (Hyper Text Markup Language) là một ngôn ngữ dùng để tạo trang web, chứa các trang văn bản và những tag (thẻ) định dạng báo cho web browser biết làm thế nào thông dịch và thể hiện trang web trên màn hình.
Web page là trang văn bản thô (text only), nhưng về mặt ngữ nghĩa gồm 2 nội dung:
– Đoạn văn bản cụ thể.
– Các tag (trường văn bản được viết theo qui định) miêu tả một hành vi nào đó, thường là một mối liên kết (hyperlink) đến trang web khác.
4. E-mail
– e-mail (electronic mail – thư điện tử) là hình thức gửi thông điệp (messages) ở dạng điện tử từ máy này sang máy khác trong mạng.
– Format của một e-mail:
Dạng format một e-mail cơ bản gồm hai thành phần: header + body:
+ header: chứa các hàng text kiểm soát e-mail.
+ body: nội dung cụ thể của e-mail.
Phần header gồm các nội dung cụ thể sau:
To: địa chỉ người nhận e-mail
Cc: địa chỉ người nhận cộng thêm
Bcc: địa chỉ những người nhận cộng thêm
From: thông tin về người gửi e-mail (địa chỉ)
Sender: địa chỉ người trực tiếp gửi e-mail
Rcceived: danh sách các Mail- Server trung chuyển
Return path: đường dẫn ngược trở lại Received
Date: ngày giờ gửi nhận e-mail
Reply to: địa chỉ hồi âm
Message: chỉ số nhận dạng e- mail
In Reply to: chỉ số nhận dạng e-mail này quay trở lại
Referece: những chỉ số e-mail tham khảo khác
Keywords: các keywords chính về nội dung
Subject: chủ đề chính của e-mail.
– Để nới rộng thêm ra ngoài văn bản thô người ta thêm vào các field kiểm soát gọi là MIME nới rộng sau:
Mime-Version: chỉ số version của MIME
Content-Description: chú thích về nội dung e-mail
Content-Id: chỉ số duy nhất
Content-Transfer-Encoding: cách thức mã hóa nội dung e-mail
Text: Text Only
Image : ảnh dạng .GIF, .JPEG
Audio: âm thanh WAVE
Video: Film Mfeg/chương trình bất kỳ (Octet-stream)
Application: Post Scripts chương trình dàn trang.
Chú ý: Các thông tin về phần header của e-mail trình bày ở đây rất cần để xử lý mail.

5. Lập trình CGI
– CGI (viết tắt của Common Gateway Interface) là một phương pháp cho phép giao tiếp giữa server và chương trình nhờ các định dạng đặc tả thông tin.
– Lập trình CGI cho phép viết chương trình nhận lệnh khởi đầu từ trang web, trang web dùng định dạng HTML để khởi tạo chương trình. Định dạng HTML trở thành phương pháp được chọn để gửi dữ liệu qua mạng vì dễ thiết lập một giao diện người sử dụng HTML định dạng và thẻ Input.
– Chương trình CGI chạy dưới biến môi trường duy nhất. Khi WWW khởi tạo chương trình CGI nó tạo ra một số thông tin đặc biệt cho chương trình và đáp ứng trở lại từ chương trình CGI. Trước khi chương trình CGI được khởi tạo, server WWW đã tạo ra một môi trường xử lý đặc biệt, môi trường này chứa các dữ liệu từ HTTP request header truyền đến. Sau đó server xác định loại file chương trình cần thực thi.
– Nói tóm lại lập trình CGI là viết chương trình nhận và truyền dữ liệu qua Internet tới WWW server. Chương trình CGI sử dụng dữ liệu đó và gửi đáp ứng HTML trở lại máy khách.
– Vai trò của HTML rất quan trọng trong lập trình CGI. Chương trình CGI được gọi qua một tag định dạng HTML chẳng hạn:
<a href=”index.cgi”Mục lục</a>
trong thông qua tag <a> ..</a> chương trình index.cgi sẽ được thực hiện.
– Dùng thuộc tính HTML định dạng method:
Form tag bắt đầu với một thuộc tính Method để báo cho browser biết cách thức mã hoá dữ liệu và nơi đặt dữ liệu chuyển tới server, nó được dùng để định nghĩa phần gì của file HTML được sử dụng cho người sử dụng input.
Cú pháp: <form method=[post/get] action=”URL” enctype=..>
Thêm vào input tag cho định dạng HTML này ta được một active form:
<input type=”Submit”>
– Input tag:
Có thể tạo input text, radio buttons, check boxes và một số loại khác.
Cú pháp: <Input type=[text/radio…] value=”…” size=”…” maxlength=…>
– Submit button:
Với tag _<input type=”submit”…> dùng để kích khởi gửi dữ liệu.
CGI và tag FORM trong HTML phối hợp với nhau tạo ra submit button dùng để kích hoạt chương trình CGI trên server cùng với các phương pháp.
– Method GET và POST:
Có 2 cách thức cho phép dữ liệu được chuyển tới chương trình CGI trên server.
GET gửi dữ liệu với mã URI header (Uniform Resource Identifier), dùng với HTML định dạng tag ở dạng sau:
<Form method=”get” action=”A CGI program”
Mã hoá URI dữ liệu và bất kỳ thông tin đường dẫn nào đều được đặt vào biến môi trường Querystring và path-info.
POST cũng mã hoá dữ liệu URI, tuy nhiên nó gửi dữ liệu sau khi tất cả các request header đã được gửi tới server. Phương án GET chuyển chuỗi mã hoá URI qua biến môi trường Querystring, còn method Post chuyển dữ liệu này qua STDIN.
Kích thước dữ liệu theo phương án GET bị hạn chế bởi không gian biến môi trường được sử dụng trong khi đó POST không bị giới hạn về kích thước lượng thông tin gửi đi.
Để xác định phương pháp nào được sử dụng, chương trình CGI kiểm tra biến Requestmethod, nếu là POST thì dữ liệu mã hoá sẽ được lưu vào biến Content-length.
Hàm ReadParse sau sẽ giải quyết vấn đề decoding dữ liệu (hàm này nằm trong hàm thư viện mở cgi-lib.pl).
– ứng dụng của lập trình CGI:
Chương trình CGI có thể hiện thực trên nhiều platform cho nhiều ứng dụng khác nhau như:
+ Tạo form, xử lý định dạng.
+ Tạo các đối tượng động trên một trang web.
+ Xử lý imagemaps.
+ Tìm kiếm trên web.
+ Tạo các tài liệu độc lập với platform.
+ Tạo các ứng dụng như: chat rooms, voting booths hay bất cứ kiểu giao tiếp nào (Interactive).
+ Phát sinh động và update các trang web đó.
– Tạo tài liệu theo đặc tả cho mỗi người sử dụng.
– Hạn chế của lập trình CGI:
Thường không dùng CGI cho các vấn đề:
+ Tạo các multi-player games.
+ Tạo stock ticket được update qua trang web.
+ Tạo stock ticket được update qua trang web.
+ Tạo các ứng dụng thời gian thực nhúng trong trang web.
Nói chung, nếu các tài liệu không thay đổi sau khi nó được phát sinh thì thay cho dùng CGI, ta cần dùng ActiveScripts Và Java.
– Cơ chế hoạt động của CGI:
+ Browser của máy khách chuyển encode dữ liệu input đối với web server.
+ Server chuyển input tới chương trình CGI trên server.
+ CGI xử lý input, chuyển nó tới ứng dụng khác (nếu cần) rồi gửi output cho web server.
+ Webserver gửi output do CGI đã xử lý cho browser của máy khách và thể hiện kết quả trên trang web.
6. PERL – ngôn ngữ lập trình cho CGI
– Có thể dùng nhiều ngôn ngữ lập trình khác nhau trên CGI:
Bourne shell; C shell; C/C++; Perl; Python; Visual basic; JavaScripts.
– Ngôn ngữ lập trình PERL (viết tắt của Practical Extraction and Report Languages) do Larry Wall xây dựng được dùng là một công cụ lập trình trên web vì Perl có nhiều ưu điểm:
+ Perl có sức mạnh và sự linh hoạt của ngôn ngữ lập trình cấp cao C.
+ Giống như các ngôn ngữ shell scripts, Perl không đòi hỏi biên dịch và link mã nguồn, thay vào đó chỉ cần gọi Perl thực thi chương trình đó.
+ Chạy được trên nhiều platfrom: UNIX, DOS, WINDOWS.
+ Perl chuyên về xử lý text, có nhiều hàm build-in, thích hợp với xử lý trang web trong thế giới WWW.
Ngoài ra Perl còn rất nhiều điểm mạnh như của các ngôn ngữ lập trình khác.
7. SQUID và WEBMIN
SQUID:
Squid là một proxy caching server cao cấp cho web máy khách, trợ giúp FTP, gopher, HTTP dữ liệu objects. Không giống như các caching software khác, Squid xử lý mọi request bằng quá trình đơn, non-blocking.
Squit chứa chương trình server chính là squid, một chương trình tìm kiếm hệ thống tên miền dnsserver (DNS – Domain Name System), một số chương trình và công cụ quản lý máy khách khác.
WEBMIN:
Webmin là một phần mềm quản trị trên UNIX thông qua web. Webmin có cấu trúc module mở và được cài đặt trên máy có cấu hình thấp, biến nó thành miniserver rất hữu dụng.
Webmin phát hành phiên bản đầu tiên (ver 0.1) ngày 05/10/1997 và phiên bản được sử dụng ở đây là ver 0.72.
Webmin được thiết kế cho phép dễ dàng thêm vào các module mới mà không làm thay đổi bất kỳ mã nguồn nào đã có.
8. Web Server Log Files và thông tin về người sử dụng dịch vụ web
Để quản lý các khách hàng trong dịch vụ của mình, người quản trị cần biết các thông tin về người sử dụng đã sử dụng các dịch vụ Internet thế nào: Số lần request, khối lượng, loại dịch vụ (HTTP, Email), thời gian sử dụng bao lâu và nhiều thông tin liên quan khác. Lấy các thông tin này từ đâu và xử lý nó thế nào? WWW server sẽ ghi lại thông tin về request của người sử dụng đó vào một file gọi là log file. Chẳng hạn như ta muốn tìm các thông tin về những người tới site của mình, dịch vụ HTTP (Hyper Text Transfer Protocol) cho phép giao tiếp giữa browser và web server qua một loạt các kết nối rời rạc để lấy text trên web page và thể hiện chúng, mỗi một lần request được thực hiện thì một bản ghi cho lần request đó được ghi vào một file log. Các request về web được http ghi vào file access_log còn e-mail được ghi vào file syslog trên UNIX.
Tuỳ thuộc vào từng loại mạng và server mà cấu trúc file log có thể khác nhau ở một vài điểm nhưng nhìn chung thông tin ghi lại đều phản ánh tên người sử dụng, ngày giờ sử dụng dịch vụ, khối lượng request và nhiều thông tin khác.
Dựa vào các fields của file log này người quản trị có thể thực hiện các thao tác monitor để quản lý khách hàng của mình.

Theo VNPT

Common Gateway Interface

Tháng Chín 23, 2008

CWorld VN 10/99

Định nghĩa: Common Gateway Interface (CGI) là chuẩn để kết nối chương trình ứng dụng với Web server. Dữ liệu từ bảng biểu do người dùng điền vào trên trang Web được chuyển cho ứng dụng CGI, ứng dụng này sau đó sẽ gửi trả nội dung Web được tạo ra theo yêu cầu ngược về cho trình duyệt của người dùng.

    Khi được phát triển lần đầu tiên cách đây một thập kỷ, World Wide Web được thiết kế để hiển thị tài liệu. Tuy nhiên, ngay từ lúc khởi đầu, các nhà phát triển Web site đã muốn có một cách thức để gửi dữ liệu từ trình duyệt của người dùng lên Web server, chẳng hạn tên, mật mã người dùng hay yêu cầu tìm kiếm.

    CGI mang lại một phương thức chuẩn hoá để thực hiện những khả năng này. Khi người dùng gõ dữ liệu vào bảng biểu trên trang Web, nội dung này sẽ được gửi về cho Web server và thông qua giao tiếp CGI để đưa đến những chương trình riêng biệt xử lý.

    Chương trình CGI sau đó có thể gửi ngược về cho trình duyệt của người dùng trang Web hiện có, trang Web mới được sinh ra trong quá trình xử lý, hình ảnh hay bất kỳ loại thông tin nào khác có thể hiển thị được trên trình duyệt.

    Vì CGI hết sức linh động nên hầu như bất kỳ chương trình nào có thể chạy trên máy chủ Web và chấp nhận dữ liệu theo kiểu dòng lệnh như những chương trình được viết bằng C, C++, Perl, Visual Basic và thậm chí một số ngôn ngữ kiểu dòng lệnh của Unix – đều có thể dùng được với CGI.

    Một trong những tồn tại lớn nhất của CGI là nó nạp một chương trình mới mỗi khi người dùng nhấn vào bảng biểu, vì thế những máy chủ Web dùng cho site có dòng lưu chuyển dữ liệu lớn có thể chạy hàng ngàn chương trình cùng lúc – một gánh nặng cho tốc độ của Web site.

Những chương trình chuyên biệt

    Người dùng thường phàn nàn những chương trình được viết cho CGI không thể dùng lại được khi Web site thay đổi vì chúng thường rất chuyên dụng. Kết quả là trong một số năm qua, nhiều Web site lớn đã từ bỏ CGI để đi theo các máy chủ ứng dụng. Tương tự các chương trình CGI, máy chủ ứng dụng chấp nhận nhập liệu từ phía người dùng và gửi ngược lại các trang Web hay thông tin khác. Điều khác biệt là máy chủ ứng dụng xử lý nhập liệu của nhiều người dùng chỉ bằng một chương trình, do đó cải thiện tốc độ rất nhiều.

Hết sức thích hợp

    Điều này không có nghĩa máy chủ ứng dụng sẽ thích hợp cho tất cả mọi người. CGI rất phù hợp với các mạng nội bộ, nơi thường có lưu lượng thông tin ít hơn những site bên ngoài. Hơn nữa, kinh phí của các phòng ban thường không chấp nhận mức giá 15.000 – 100.000 USD của máy chủ ứng dụng, trong khi CGI thì được thiết kế sẵn trong các máy chủ Web.

    Chương trình CGI có thể được viết bằng bất kỳ ngôn ngữ nào và giao tiếp CGI cũng hết sức đơn giản, vì thế các nhà phát triển Web có thể nhanh chóng kết hợp những tiện ích CGI đơn giản với nhau. Tất cả những điều này làm cho CGI trở thành công cụ thực dụng cho những tiện ích và sửa đổi mang tính tức thời nhưng không thể dùng được trên những Web site thương mại đòi hỏi cao. CGI vẫn có vai trò hết sức quan trọng nhưng ngày càng có nhiều phương thức khác uyển chuyển hơn, hoàn thiện hơn để tích hợp với những hệ thống khác.

Những chọn lựa khác

    Cùng với máy chủ ứng dụng, những phương thức khác này bao gồm Active Server Pages – loại server ứng dụng tổng quát được thiết kế sẵn trong Internet Information Server Web server – và Java Servlet là những chương trình Java nhỏ chạy trên server.

    CGI vẫn có tác dụng trong những công việc nhất định, ngay cả với các site đã chuyển sang dùng những công cụ mạnh hơn thì có lúc vẫn cần đến CGI.

Computerworld 1999