[Question] Bourne Shell Server Pages |
31/12/2007 16:01:52 (+0700) | #1 | 107262 |
|
onlinehack
Member
|
0 |
|
|
Joined: 04/12/2007 23:07:12
Messages: 116
Location: Ma maison
Offline
|
|
Bạn đã nghiên cứu JSP hay các công nghệ server pages khác , nhưng bạn đã nghe đến Bourne Shell Server Pages ? Hãy đọc bài viết http://hyperrealm.com/wtfd00d/shsp/
Implementation
Ý tưởng cơ bản đằng sau mọi công nghệ server page là : thay vì viết code tạo ra các tài liệu HTML bằng cách viết một loạt các câu lệnh print, bạn bắt đầu bằng một tài liệu HTML làm "skeleton" và nhúng code vào bên trong. Thay vì bằng một loạt code HTML rắc rối, khó đọc và duy trì nhúng trong source code, ta làm ngược lại
Bourne Shell Server Pages là các files text ASCII thông thường, với phần mở rộng .shit ( viết tắt của "Shell-Interpreted Template." ) Kết quả thể hiện của trình dịch trên file shit chính là shell script.
Có các thành tố cơ bản có thể được nhúng trong HTML : các code block, expression và các chỉ thị include. Chúng được đánh dấu bằng các thẻ HTML đặc biệt được xử lý bởi trình dịch để đưa ra các "thực thể" có thể chạy được, khi chúng thi hành, tạo ra kết quả là các tài liệu HTML. Chúng ta sẽ thảo luận lần lượt về chúng
Code Blocks
Các code block bất kì có thể được đưa vào trong tài liệu HTML. Bourne Shell Server Pages cung cấp thẻ <$ ... $> cho mục đích này. Shell code xuất hiện giữa các thẻ này sẽ được thực thi, và kết quả sẽ được đưa ra trong HTML .Lấy ví dụ
Code Blocks
Code:
<html>
<body>
<h1><$ echo "Hello, world!" $></h1>
</body>
</html>
Code có thể kéo dài trong nhiều dòng, và có thể phức tạp tuỳ ý. Tất cả các code blocks trong một Bourne Shell Server Page thực sự là các phần của một shell script, do đó một block có thể tham chiếu đến các biến đã được chỉ định ở các block trước đó.
Expressions
Các Bourne Shell expressions bất kì có thể được nhúng trong HTML sử dụng thẻ <` ... `> .Các thẻ này cùng phục vụ một mục đích như trong Bourne Shell: expression được đánh giá và đưa ra kết quả cùng vị trí. Lấy ví dụ, để đặt tiêu đề của một tài liệu dựa trên nội dung của biến shell $title, chúng ta có thể làm :
Code:
<title><` $title `></title>
Ví dụ trên thừa nhận rằng giá trị của biến $title đã được chỉ định sớm hơn trong page.,cụ thể là với block <$ ... $>
Includes
Server pages có thể được bao gồm các server pages khác sử dụng chỉ dẫn include. Trình dịch đánh giá trang theo cách đệ quy, do đó chúng có thể lồng nhau với bao nhiêu lớp tuỳ ý. Trong Bourne Shell Server Pages, thẻ <^ ... ^> thể hiện một include. Ví dụ
Code:
sẽ được thay bằng kết quả của việc đánh giá Bourne Shell Server Page more.shit.
Trình dịch Bourne Shell Server Pages (shspc.sh) được giao nhiệm vụ chuyển file .shit thành shell script, thực sự bao gồm một chuỗ các lệnh sed. Các lệnh trên thực hiện việc thay thế sau :
Các mảng kề nhau của HTML được bao gồm trong tài liệu.
Chỉ dẫn include được thay thế bằng các câu lệnh đệ quy đến shspc.sh để xử lý các trang Bourne Shell Server Pages.
Các Expression tags được thay thế bằng việc gọi đến lệnh eval.
Kết quả của script, được thông dịch bởi Bourne Shell, đuợc đưa ra trang HTML yêu cầu.
Hầu hết các công nghệ server page khác phụ thuộc vào sự tồn tại của web server, đòi hỏi các bộ phận phần mềm phức tạp thường yêu cầu việc bảo dưỡng đáng kể. Bourne Shell Server Pages không yêu cầu các công nghệ kể trên , nó bao gồm một webserver của riệng nó, thực thi giống như một shell script nhỏ ( in.httpd.sh) được đưa ra từ inetd. Dù không phải là một webserver đầy đủ chức năng, nhưng nó cũng thực hiện được các việc đáng ngưỡng mộ như phục vụ các tài liệu HTML, ảnh, và dĩ nhiên Bourne Shell Server Pages.
Mình sẽ nói thêm về các web services đối với Bourne Shell Server Pages vào ngày mai còn đây là
http://hyperrealm.com/wtfd00d/shsp/shspc.sh
http://hyperrealm.com/wtfd00d/shsp/in.httpd.sh |
|
|
|
|
[Question] Re: Bourne Shell Server Pages |
01/01/2008 06:25:49 (+0700) | #2 | 107399 |
|
onlinehack
Member
|
0 |
|
|
Joined: 04/12/2007 23:07:12
Messages: 116
Location: Ma maison
Offline
|
|
2 file mình đã cung cấp ở trên , có thể cài đặt đơn giản bằng cách copy vào /usr/local/bin, rồi đặt file http://hyperrealm.com/wtfd00d/shsp/http vào thư mục /etc/xinet.d
Tiếp tục về Web Services :
Bourne Shell Server Pages là một cách tiếp cận đầy hấp dẫn cho vấn đề cung cấp truy cập Web cho các thành phần phần mềm , đã tình cờ trở thành tiêu điểm chính của các Web Services. Các công nghệ Web khác đòi hỏi các phần mềm phức tạp, các mẫu adapter, bridge và framework để đưa ra một hệ thống phần mềm hợp lệ cho ứng dụng Web. Tuy nhiên, xứng đáng với sự tự nhiên linh hoạt và đầy ý nghĩa của Bourne Shell, Bourne Shell Server Pages làm cho những vấn đề trên biến mất hoàn toàn, chương trình bất kì trong hệ thống có thể được gọi đến trong trang Bourne Shell Server Page, và kết quả xuất hiện ngay lập tức trên Web
Lấy ví dụ, cung cấp một ứng dụng tìm kiếm Web cho một file dữ liệu CSV lớn là rất tầm thường với Bourne Shell Server Pages, vì nó dựa vào sự tồn tại của các chương trình mạnh mẽ để quản lý dữ liệu, ví dụ :
Code:
<table>
<tr>
<th>Last Name</th>
<th>First Name</th>
<th>Phone</th>
<th>State</th>
</tr>
<$ IFS=','; grep -i $pattern datafile.csv | \
( while read lname fname phone state;
do
$>
<tr>
<td><` $lname `></td>
<td><` $fname `></td>
<td><` $phone `></td>
<td><` $state `></td>
</tr>
<$ ;; done ) $>
</table>
Sức mạnh thực sự của Bourne Shell Server Pages bắt nguồn từ thực tế là bất cứ chương trình nào có thể thi hành từ bên trong Server Page, không đòi hỏi môt "glue" logic cao cấp.
Mong mọi người đóng góp thêm về công nghệ này, xin chân thành cảm ơn |
|
|
|
|
|
|
|
Users currently in here |
1 Anonymous
|
|
Powered by JForum - Extended by HVAOnline
hvaonline.net | hvaforum.net | hvazone.net | hvanews.net | vnhacker.org
1999 - 2013 ©
v2012|0504|218|
|
|