Các lỗi thường gặp khi thiết kế trang web

Phân chia các mục không rõ ràng và khó tìm kiếm khiến người xem cảm giác “lạc đường” trên website. Ngoài ra, một số thiết kế còn để quá nhiều ảnh động, pop-up… gây rối mắt.

1. Link đơn thuần là để nhấn chuột

Nếu cho rằng cứ có một đường link là người xem sẽ nhấn vào, người làm web đã sai lầm. Một click, hai click, ba click… rồi họ sẽ bỏ đi nếu không tìm thấy ngay mục họ cần ở những cái nhấn chuột đầu tiên.

2. Nhấn chuột vào các biểu tượng màu mè

Nhiều người bỏ nhiều công sức để thiết kế các kỹ thuật tương tác và di chuyển mục nọ sang mục kia rất rườm rà, lạ mắt. Tuy nhiên, không nên đặt cho chức năng đơn giản này một hình thức quá lạ lùng vì người sử dụng cần nhất sự nhanh chóng khi di chuyển trên web.

3. Hãy chiêm ngưỡng những bức ảnh

Một số website đưa ảnh có dung lượng lớn ngay trên trang chủ, khiến người xem phải chờ rất lâu trước khi biết trong trang có những mục gì. Do đó, nếu thấy rằng không thể cải thiện tốc độ truy cập, nhà thiết kế cần đặt ảnh nhẹ hơn và dùng kỹ thuật chỉnh sửa để bức ảnh vẫn sắc nét.

4. Gắn chặt với tập lệnh (script)

Các ngôn ngữ script rất hữu ích trong việc thiết kế nhiều tiện ích trên web nhưng có một số trường hợp bạn bấm vào link thấy thông báo lỗi script. Do đó, ở những chỗ HTML hoạt động tốt thì không cần dùng scripting.

5. Trình diễn quá nhiều thứ

Vô số hình ảnh động đậy, các biểu tượng sao sa bay lướt qua màn hình, âm thanh tưng bừng cho mỗi mục, cửa sổ pop-up nhảy ra tứ tung… là những thứ không khác nào một biển báo: “Tránh xa tôi ra”.

6. Quên đặt chữ ở nơi cần thiết

Nhiều trang chú trọng đặt ảnh một cách hoa mỹ (thường thấy ở website thuộc lĩnh vực mỹ thuật) mà không cho người xem thấy ngay từ đầu chủ điểm chính của trang, thông tin hoạt động và địa chỉ liên hệ. Một số ảnh không có chú thích khiến độc giả “biết để đấy” mà không hiểu sâu hơn điều gì.

7. Thừa chữ, sai ngữ pháp

Độc giả thường đọc lướt rất nhanh nên các từ khóa thể hiện rõ bản chất của trang cần được làm nổi bật. Họ sẽ mau chóng bỏ qua những bài viết rườm rà, dây cà ra dây muống và chứa nhiều lỗi ngữ pháp, chính tả.

8. Bảng màu lóa mắt

Nhà thiết kế nên chú trọng tính giản dị khi đặt các tông màu cho từng khu vực vì mắt người xem dễ mỏi trong lúc nhìn màn hình máy tính. Thường thì phần văn bản và các tiêu đề của trang cần làm nổi bật trên nền nhạt.

9. Kết cấu các mục thiếu định hướng

Điều khiến người xem thích nhất khi vào một trang web là họ có thể làm chủ “đường đi” của mình qua các phân loại. Họ biết mình đang đứng ở đâu, tìm được cái gì và chắc chắn tìm thấy nó vài ngày sau gặp lại. Một số trang đặt chế độ hiển thị ngẫu nhiên, xáo lại các bài đăng từ lâu hoặc đặt bài vào mục không tương ứng, khiến người xem mất định hướng.

10. Để nhiều định dạng file khác nhau

Một trang đưa nhiều tập tin để tải nhưng chỗ này là file Word, chỗ kia là file PDF, khiến người ta rối mắt. Tốt nhất, hãy đưa về định dạng đọc ngay trên nền web.

Theo VNE- eWeek


Đấu giá trực tuyến hàng đầu Việt Nam

Lập trình Ajax Suggestion

Từ khi xuất hiện vào đầu năm 2005 trên một bài báo của Jesse James Garette, Ajax đã ngày càng trở nên phổ biến và được ứng dụng rộng rãi, điển hình là các dịch vụ như Google Maps, Google Suggest, Gmail, Yahoo! Mail beta… Đặc biệt là công cụ Google Suggest gợi ý trước cho bạn một số từ khoá liên quan ngay khi bạn mới chỉ gõ một phần của từ khoá và số lượng kết quả tìm kiếm có được nếu bạn thực hiện tìm kiếm với từ gợi ý được chọn. (Hình)

Cách gợi ý như của Google Suggest có thể áp dụng vào rất nhiều ứng dụng khác nhau như từ điển, tìm kiếm nhanh trên một danh sách dữ liệu… Và để áp dụng tính năng gợi ý đó vào trang web của bạn cũng không quá khó. Bài viết này hướng dẫn cách xây dựng tính năng như vậy cho một trang web, ngôn ngữ lập trình sử dụng là Java (đòi hỏi bạn phải biết lập trình web với JSP, Servlet, biết sử dụng web server Tomcat, lập trình Javascript, HTML, và một chút CSS).

Trang web chỉ có một trang duy nhất và có chức năng tìm kiếm tên các nước trên thế giới. Khi bạn gõ một phần tên của nước cần tìm vào ô tìm kiếm, Ajax sẽ hiển thị danh sách tên các nước có bắt đầu bằng cụm từ mà bạn đang gõ, cùng một số thông tin liên quan như thủ đô, dân số, diện tích và mã điện thoại quốc tế. Bạn có thể dùng bàn phím hoặc chuột để chọn một nước trong danh sách này.

Để cho đơn giản, dữ liệu về các nước trên thế giới được lưu trong một file text (trong thực tế có thể là một hoặc nhiều bảng trong cơ sở dữ liệu). File này gồm có nhiều dòng, mỗi dòng là thông tin về một nước, cấu trúc của một dòng như sau:

Tên nước-Thủ đô-Dân số-Diện tích-Mã điện thoại

Các thông tin trên một dòng được ngăn cách bằng dấu gạch nối (-). Ví dụ:

Argentina-Kabul-21.92-647,497-54

Australia-Canbera-19.10-7,686,848-61

Austria-Vienna-8.10-83,853-43

Vietnam-Hanoi-84.51-329,556-84

Kiến trúc hoạt động của ứng dụng này xây dựng trên mô hình ba lớp, được thể hiện như sau:


Trong đó ở tầng nghiệp vụ (Business tier) ta dùng web server là Tomcat để triển khai ứng dụng web viết bằng Java, gồm có Servlet để phân tích và xử lý yêu cầu từ trình duyệt (client); Business object thực hiện việc tìm dữ liệu theo yêu cầu của client và chuyển kết quả tìm được thành JavaBean. Tầng cơ sở dữ liệu (Database tier) có thể dùng các hệ quản trị CSDL phổ biến như MySQL, MS SQL, … Tuy nhiên để cho đơn giản, trong ứng dụng này ta chỉ dùng một text file để lưu dữ liệu.

Sơ đồ các thao tác thực hiện ở phía server như sau:


Sơ đồ xử lý ở phía client như sau:


Như đã nói ở trên, để đơn giản ta không dùng hệ quản trị CSDL nào mà chỉ dùng một file text để lưu thông tin về các nước trên thế giới. Bạn tạo một text file có cấu trúc như mô tả ở trên và đặt tên là countries.txt chẳng hạn.

Chúng ta tạo ra một JavaBean để chứa đựng thông tin về các quốc gia, bao gồm các thuộc tính sau (tất cả các thuộc tính đều có hàm setXxx() và getXxx(), trong đó Xxx là tên thuộc tính):

STT

Tên thuộc tính

Kiểu dữ liệu

Mô tả

1

area

String

Diện tích

2

capital

String

Thủ đô

3

code

String

Mã điện thoại

4

name

String

Tên nước

5

population

String

Dân số


Lớp này ta đặt tên là CountryBean.java, mã nguồn rất đơn giản:

package com.hainasoft.ajax.suggestion;

public class CountryBean {

private String name;

private String capital;

private String population;

private String area;

private String code;

public CountryBean(String name, String capital, String pop, String area, String code) {

this.name = name;

this.capital = capital;

this.population = pop;

this.area = area;

this.code = code;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getCapital() {

return capital;

}

public String getArea() {

return area;

}

public void setCapital(String capital) {

this.capital = capital;

}

public void setArea(String area) {

this.area = area;

}

public String getPopulation() {

return population;

}

public String getCode() {

return code;

}

public void setPopulation(String population) {

this.population = population;

}

public void setCode(String code) {

this.code = code;

}

}

Bạn để ý trong mã nguồn trên thì gói ứng dụng của chúng ta là com.hainasoft.ajax.suggestion.

Tiếp theo chúng ta cần có một lớp để thực hiện thao tác nghiệp vụ, ở ứng dụng này là đọc dữ liệu từ file text và ánh xạ (mapping) các thuộc tính trong file text vào JavaBean. Chúng ta đọc qua từng dòng trong file. Với mỗi dòng đọc được, ta tách các thuộc tính trong chuỗi bằng ký tự ngăn cách là dấu gạch nối (-), kết quả được một mảng String với phần tử thứ 0 là tên nước, phần tử thứ 1 là thủ đô, … Sau đó chúng ta tạo một object của lớp CountryBean để ánh xạ các thuộc tính này vào thông qua constructor của lớp, và mỗi object chứa thông tin của một nước này lại được thêm vào một List là kết quả trả về. Tất cả đặt trong một phương thức duy nhất là getCountries() của lớp CountryManager.java, mã nguồn của lớp này cũng rất đơn giản:

package com.hainasoft.ajax.suggestion;

import java.io.*;

import java.util.*;

public class CountryManager {

private static final String countryFile = “countries.txt”;

public List getCountries() throws FileNotFoundException, IOException {

List result = new ArrayList();

File f = new File(countryFile);

FileInputStream fis = new FileInputStream(f);

BufferedReader reader = new BufferedReader(new InputStreamReader(fis));

String strLine = null;

while((strLine = reader.readLine()) != null) {

String[] lineData = strLine.split(“-“);

result.add(new CountryBean(lineData[0], lineData[1], lineData[2], lineData[3], lineData[4]));

}

reader.close();

return result;

}

}

Tiếp theo chúng ta xây dựng một Servlet để nhận yêu cầu từ client, phân tích yêu cầu này và trả kết quả tương ứng về cho client, đặt tên cho servlet này là AjaxServlet.java. Mọi thứ chúng ta sẽ làm trong phương thức doGet() của servlet, còn phương thức doPost() thì gọi lại doGet(). Chúng ta xem qua mã nguồn trước:

package com.hainasoft.ajax.suggestion;

import javax.servlet.*;

import javax.servlet.http.*;

import java.io.*;

import java.util.*;

public class AjaxServlet extends HttpServlet {

private static final String CONTENT_TYPE = “text/xml; charset=utf-8”;

//Initialize global variables

public void init() throws ServletException {

}

//Process the HTTP Get request

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

/* Get keyword from query string */

String keyword = request.getParameter(“keyword”);

if(keyword == null) keyword = “”;

/* Set content type for response document */

response.setContentType(CONTENT_TYPE);

/* Set cache control on browser is no cache */

response.setHeader(“Cache-Control”, “no-cache”);

/* Get writer from HttpServletResponse object */

PrintWriter out = response.getWriter();

/* XML document string response to client */

String xmlText = “<?xml version=\”1.0\” encoding=\”utf-8\”?>”;

/* Retrieve data from database or other data sources

In this sample application, we read a list of country name and code from

a text file which is stored on server

*/

List countries = new CountryManager().getCountries();

if(countries != null && countries.size() > 0) {

xmlText += “<countrieslist>”;

for (Iterator it = countries.iterator(); it.hasNext(); ) {

CountryBean country = (CountryBean) it.next();

if(country.getName().startsWith(keyword)) {

xmlText += “<country>”;

xmlText += “<name>” + country.getName() + “</name>”;

xmlText += “<capital>” + country.getCapital() + “</capital>”;

xmlText += “<pop>” + country.getPopulation() + “</pop>”;

xmlText += “” + country.getArea() + “”;

xmlText += “" + country.getCode() + "“;

xmlText += “</country>”;

}

}

xmlText += “</countrieslist>”;

} else {

response.setStatus(HttpServletResponse.SC_NO_CONTENT);

}

out.write(xmlText);

out.flush();

}

//Process the HTTP Post request

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doGet(request, response);

}

//Clean up resources

public void destroy() {

}

}

Khi người dùng gõ vào từ khóa trong ô tìm kiếm thì chuỗi gõ vào sẽ được gửi tới servlet này, ví dụ:

AjaxServlet?keyword=vietnam

Servlet sẽ lấy ra giá trị của từ khóa gửi lên từ trình duyệt bằng lệnh:

String keyword = request.getParameter(“keyword”);

Để xác định kiểu của nội dung trả về cho trình duyệt, lệnh:

response.setContentType(CONTENT_TYPE);

sẽ đặt content type trả về cho trình duyệt là giá trị được lưu trong hằng CONTENT_TYPE, hằng này được định nghĩa như sau:

private static final String CONTENT_TYPE = “text/xml; charset=utf-8”;

với câu lệnh trên thì kết quả trả về sẽ được trình duyệt hiểu là tài liệu text hoặc XML và ở dạng mã unicode UTF-8.

Để trình duyệt không lưu cache của kết quả trả về khi tương tác giữa trình duyệt và servlet, ta dùng câu lệnh:

response.setHeader(“Cache-Control”, “no-cache”);

Đây cũng là một câu lệnh rất phổ biến khi viết Servlet trong các ứng dụng Ajax.

Nội dung trả về là một chuỗi thể hiện nội dung của file XML, được lưu trong biến xmlText. Cấu trúc của file XML trả về cho trình duyệt có dạng như sau:

<?xml version=”1.0″ encoding=”utf-8″?>

<countrieslist>

<country>

<name>…</name>

<capital>…</capital>

<pop>…</pop>

...

</country>

<country>

<name>…</name>

<capital>…</capital>

<pop>…</pop>

...

</country>

</countrieslist>

Tiếp theo ta tạo ra một đối tượng của lớp CountryManager, gọi phương thức getCountries() của lớp này để lấy về danh sách tất cả các nước có trong file countries.txt:

List countries = new CountryManager().getCountries();

Kiểm tra xem danh sách kết quả trả về không được null và phải có chứa phần tử:

if(countries != null && countries.size() > 0)

nếu không, thì đặt trạng thái cho thông báo HTTP sẽ gửi về cho trình duyệt là không có nội dung bằng hằng SC_NO_CONTENT của lớp HttpServletResponse:

response.setStatus(HttpServletResponse.SC_NO_CONTENT);

Nếu danh sách kết quả trả về chứa phần tử thì duyệt qua lần lượt từng phần tử trong danh sách này, ép kiểu về đối tượng CountryBean và kiểm tra xem thuộc tính name có bắt đầu bằng từ khóa người dùng vừa gõ vào hay không, nếu có thì tạo ra một element XML có tên là country với các element con là các thuộc tính của nước nó được lấy ra bằng các phương thức get của JavaBean.

if(country.getName().startsWith(keyword)) {

xmlText += “<country>”;

xmlText += “<name>” + country.getName() + “</name>”;

xmlText += “<capital>” + country.getCapital() + “</capital>”;

xmlText += “<pop>” + country.getPopulation() + “</pop>”;

xmlText += “” + country.getArea() + “”;

xmlText += “" + country.getCode() + "“;

xmlText += “</country>”;

}

Cuối cùng ghi kết quả về cho client thông qua phương thức write của đối tượng PrintWriter:

out.write(xmlText);

out.flush();

Ở phía client chúng ta có một file HTML để hiển thị giao diện và một thư viện Javascript để xử lý tương tác giữa client và server. File HTML chúng ta đặt tên là index.html, còn file Javascript tên là ajaxsuggest.js.

File index.html tạo ra một text box để người dùng gõ từ khóa vào:

<input type=”text” name=”country” id=”country” autocomplete=”off” onKeyUp=”doSuggestion(event);”/>

Sự kiện onKeyUp của text box sẽ gọi hàm doSuggestion() trong file ajaxsuggest.js (xem giải thích cụ thể trong mã nguồn). Một thẻ

để hiển thị kết quả tìm kiếm:

Chúng ta sẽ dùng Javascript để cập nhật mã HTML của thẻ

này mỗi khi có kết quả trả về từ server.

Nội dung đầy đủ của file index.html:

<html>

<head>

</head>

<script language=”javascript” src=”ajaxsuggest.js”></script>

<body>

<form method=”POST”>

</form>

Type part of your country name: <input type=”text” name=”country” id=”country” autocomplete=”off” onKeyUp=”doSuggestion(event);”/>

<input type=”hidden” name=”zipCode” id=”zipCode”/>

</body>

<script language=”javascript”>

setupSuggestion(

“ajaxservlet?keyword=”,

“country”,

“zipCode”,

“divCountry”,

“#000000”,

“#FFFFFF”,

“#99CCFF”

);

</script>

</html>

File cấu hình cho ứng dụng web là web.xml ta chỉ cần cấu hình URL của servlet giống với tham số truyền vào trong lời gọi hàm setupSuggestion() của file index.html, nội dung như sau:

<?xml version=”1.0″ encoding=”UTF-8″?>

<!DOCTYPE web-app PUBLIC “-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN” “http://java.sun.com/dtd/web-app_2_3.dtd”&gt;

<web-app>

<display-name>AjaxSuggestion</display-name>

<servlet>

<servlet-name>Suggestion Ajax Servlet</servlet-name>

<servlet-class>com.hainasoft.ajax.suggestion.AjaxServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>Suggestion Ajax Servlet</servlet-name>

<url-pattern>/ajaxservlet</url-pattern>

</servlet-mapping>

<session-config>

<session-timeout>10</session-timeout>

</session-config>

</web-app>

Như vậy phần code cho ứng dụng đã xong, bạn biên dịch các file .java và đóng gói thành file WAR cùng với các file index.html, ajaxsuggest.js và web.xml. Triển khai ứng dụng trên web server là Tomcat và chạy thử. File countries.txt bạn đặt tại thư mục cài web server hoặc nếu bạn đặt ở thư mục khác thì phải chỉ ra đường dẫn trong hằng countryFile của lớp CountryManager.

Gõ địa chỉ vào trình duyệt, ví dụ: http://localhost/AjaxSuggestion/index.html. Nhập vào ô tìm kiếm chữ “a” thì ngay lập tức tên các nước bắt đầu bằng chữ “a” hiện lên, dùng phím mũi tên lên, xuống hoặc chuột để tô sáng tên nước cần chọn trong danh sách. Muốn chọn thì bấm Enter hoặc nhấn chuột trái. Nếu bạn càng gõ thêm nhiều chữ cái nữa thì danh sách kết quả sẽ càng thu hẹp dần.

(Theo Pcworld)


Đấu giá trực tuyến hàng đầu Việt Nam

Acunetix WVS 5 – Công cụ không thể thiếu cho webmaster

Acunetix WVS (Web Vulnerability Scanner) là chương trình tự động kiểm tra các ứng dụng Web để tìm kiếm các lỗ hổng bảo mật như SQL Injection, hay Cross-Site Scripting,… và tìm kiếm những chính sách đối với mật khẩu đăng nhập cũng như các phương thức xác thực vào Web Site.
Như thường thấy, các lỗi bảo mật ở Việt Nam tập trung vào những lỗ hổng nguy hiểm mà bất cứ công cụ Scan cao cấp nào cũng có thể quét thấy. Nhưng hầu hết các admin dường như quên mất, hoặc không biết đến những lỗ hổng vốn dĩ rất dễ phát hiện này.

Hiện nay, trên thế giới có những công cụ quét lỗi bảo mật khá nổi tiếng như là: Shadow Security Scanner, Retina Network Security Scanner, Metasploit cao cấp hơn và phải có độ hiểu biết nhất định là Nmap, Netcat …

Bài viết này xin giới thiệu đến các bạn phần mềm Acunetix WVS dùng để quét các lỗi bảo mật hệ thống của mình.

Các bạn download (http://Acunetix.com) phần mềm này về và cài đặt lên. Sau khi cài đặt và chạy thì giao diện của nó như sau:

Cửa sổ bên trái cung cấp cho ta một dãy các công cụ: Web Scanner, Site Crawer, Target Finder, Subdomain Scanner …, chỉ cần nhấp chuột vào công cụ nào đó để AWV thực hiện nhiệm vụ của mình. Ưu điểm của Tool này là tương tác trực quan mà không phải nhớ từng dòng lệnh như Nmap hoặc Netcat …

Acunetix WVS là một công cụ quét lỗi cho ứng dụng Web dựa trên một cơ sở dữ liệu rộng lớn được cập nhật thường xuyên, với các thuật toán heuristic đáp ứng được các cơ chế họat động phức tạp của môi trường Web. Acunetix WVS có thể tự động kiểm tra các lổ hỗng thông dụng như cross site scripting, sql injection và các mối nhạy cảm khác của những web site có thể truy cập bằng trình duyệt, hay những ứng dụng được xây dụng trên các kỹ thuật tiên tiến như AJAX.. để thực hiện được điều này Acunetix WVS dựa trên nhiều phương pháp và công cụ tích hợp để:

• Crawling (lấy về) toàn bộ website gồm tất cả các liên kết trên site và cả trong tập tin robots.txt sau đó hiển thị tòan bộ cấu trúc này một cách chi tiết.
• Sau tiến trình cwarling và khám phá tình trạng của ứng dụng web, Acunetix WVS tự động phát động các đợt tấn công đã được lập trình sẳn dựa trên các lổ hổng, giống như khi web site bị 1 hacker tấn công thực sự, phân tích các trang và những vị trí có thể nhập liệu cùng với các sự kết hợp khác nhau của dữ liệu đầu vào có thể làm cho website hiển thị những thông tin nhạy cảm.
• Sau khi tìm ra được các lổ hổng, Acunetix WVS thông báo trên các “Alerts Node”, mỗi alert gồm các thông tin về lỗi cũng như các mối nguy hiểm có thể gặp phải và “dĩ nhiên” là kèm theo các khuyến nghị về cách thức khắc phục.
• Sau khi tiến trình kiểm tra hòan tất, chúng ta có thể lưu lại thành một tập tin để phân tích sau này, với công cụ báo cáo chuyên nghiệp sẽ giúp cho các web master dễ dàng tổng hợp các kết quả kiểm tra khác nhau trên ứng dụng Web của mình.

Sau khi quét, Acunetix WVS sẽ liệt kê cấu trúc của site, phiên bản webserver đang sử dụng, URL không tồn tại, các lỗi phát hiện được cũng như mức độ Security của site đang quét, nhìn hình các bạn sẽ thấy những liệt kê rất cụ thể.

Mức độ bảo mật của website được AWV đánh giá từ low, medium, high. Nếu website của bạn được liệt kê ở mức low, hãy nhanh chóng fix lỗi mà AWV liệt kê.

Danh sách các lổ hổng bảo mật được kiểm tra bởi Acunetix WVS:
– Code Execution
– Directory Traversal
– File Inclusion
– Script Source Code Disclosure
– CRLF Injection
– Cross Frame Scripting (XFS)
– PHP Code Injection
– XPath Injection
– Full Path Disclosure
– LDAP Injection
– Cookie Manipulation
– MultiRequest Parameter Manipulation
– Blind SQL/XPath Injection
– File Checks
– Checks Backup Files hay Directories – Tìm kiếm các tập tin thông dụng (như là logs, application traces, CVS web repositories)
– Cross Site Scripting trong URL
– Checks Script Errors
– Directory Checks
– Tìm kiếm các tập tin quan trọng như logs, traces, CVS.
– Discover Sensitive Files/Directories
– Kiểm tra các quyền gán cho thư mục không hợp lệ – Weak Permissions
– Cross Site Scripting trong Path and PHPSESSID Session Fixation.
– Web Applications
– Text Search
– Directory Listings
– Source Code Disclosure
– Kiểm tra Common Files
– Kiểm tra Email Addresses
– Microsoft Office Possible Sensitive Information
– Local Path Disclosure
– Error Messages
– GHDB Google Hacking Database
– Over 1200 GHDB Search Entries in the Database

Bên cạnh đó các Web master có thể tiến hành các thao tác penetration test thủ công như input validation, authentication attacke, buffer overflows. Và trong phiên bản Acunetix WVS 5 này, nó còn có thêm những đặc điểm như dò tìm khác, các bạn có thể tự tìm hiểu thêm.

(Theo An ninh mạng)


Đấu giá trực tuyến hàng đầu Việt Nam

Tutorial về Hibernate 3.0

Nếu những ai đang quan tâm về công nghệ J2EE của Java thì chắc chắn sẽ không bỏ qua một framework không thể thiếu đó chính là Hibernate. Đây được đánh giá là framework số 1 hiện nay và được áp dụng rộng rãi vào các dự án của các công ty IT. Do đó mình xin phép giới thiệu với các bạn một tutorial khá hay và căn bản về Hibernate. Hi vọng nó sẽ giúp ích cho các bạn bổ sung vào kiến thức lập trình của mình Smile.

link download.

Theo diendantinhoc

DPI là gì?

Cho những ai chưa biết thuật ngữ “DPI” là chữ viết tắt của “dots per inch”. Bởi vì tất cả hình ảnh kỹ thuật số được cấu tạo bở các Pixel, DPI chỉ đơn giản nói đến tổng số đơn vị Pixel xác định một inch vuông của canvas. Nếu số đơn vị Pixel càng cao thì bức hình càng rõ nét. Hầu hết những tác phẩm tô màu chuyên nghiệp được làm ở mức 400 DPI. Điều đó có nghĩa rằng mỗi hoặc tất cả Inch của một hình được tạo bởi 400 Px ngang và 400 Px dọc. Nếu thiếu những đơn vị pixel này sẽ làm cho hình của bạn bị dạn. Bạn đã hẳn nhìn thấy hình ảnh bậc thang mà không phù hợp với độ phân giải. Trên màn hình máy tính có thể nó nhìn cũng tạm ổn bởi vì màn hình chỉ có thể hiển thị khoảng 72 Px per inch. Nhưng khi bạn in cái gì ra thì lại hoàn toàn khác biệt, bởi vì hầu hết những hình hoạt hoạ được in ra giấy, chứ không phải xem trên màn hình, cho nên 400 DPI được coi như là độ phân giải tối thiểu cho một người tô màu chuyên nghiệp. Bất cứ một hình nào có độ phân giải thấp hơn là bạn sẽ có một tác phẩm răng cưa. Hãy nhớ rắng, DPI là đơn vị đo diện tích hình vuông, cho nên khi bạn gấp đôi độ phân giải là bạn đã gấp 4 số đơn vị Px! bạn có thể thấy dung lượng của file tăng lên nhanh như thế nào, cho nên nếu máy tính của bạn không đủ “đô” để chạy photoshop thì nó trở lên khá chuối và thậm chí báo lỗi. Hãy chọn độ phân giải mà máy tính của bạn có thể chịu được.

Công cụ biến mọi website thành 3D

18/09/2008 10:42:58 PM

1.jpg
Nhà sáng lập Danny Stefanic của ExitReality

Công cụ biến mọi website thành 3D

ICTnews – Một công ty Australia ra mắt một công cụ miễn phí giúp người lướt web cơ hội đầu tiên trên thế giới được chiêm ngưỡng Internet không gian 3 chiều.

Hãng ExitReality có trụ sở ở Melbourne cho hay ứng dụng của họ cho phép người dùng chuyển mọi trang web vào không gian ảo 3D. Ở đó, avatar đại diện cho họ có thể đi lại, gặp gỡ những người lướt web khác đang cùng xem một webstie.

Người sáng lập của công ty, ông Danny Stefanic, cho biết trước đây chỉ những website chuyên dụng như Second Life và World of Warcraft mới cho phép người dùng vào không gian 3D.

“ExitReality cho phép mọi người xem không chỉ một website mà toàn bộ World Wide Web trong 3D”.

Người sử dụng có thể dùng công cụ này để biến các trang mạng xã hội như Facebook và MySpace thành một căn hộ 3D. Khi đó, các bức ảnh được treo trên tường và đường liên kết đến bạn bè chính là những “cánh cửa” dẫn đến các căn hộ khác.

Tương tự, dùng ExitReality trên trang web chia sẻ video YouTube sẽ tạo ra một rạp hát ảo, nơi avatar của người dùng ngồi bên cạnh những avatar khác đang xem cùng một clip.

Những ứng dụng mới sẽ khiến web trở nên hấp dẫn hơn với người dùng, và họ có thể sẽ dành nhiều thời gian hơn với các trang web.

Theo ictnews

Atlas: Ajax kiểu Microsoft


top.document.title = ‘TGVT – ‘+’Atlas: Ajax kiểu Microsoft’;

Công nghệ mới của Microsoft tích hợp thư viện script phía client với nền tảng phía server của ASP.NET 2.0, hứa hẹn cung cấp nền tảng phát triển toàn diện hơn và đơn giản hoá việc phát triển ứng dụng web kiểu Ajax.

Công nghệ mới của Microsoft tích hợp thư viện script phía client với nền tảng phát triển phía server của ASP.NET 2.0, cho phép phát triển ứng dụng web thế hệ mới theo kiểu Ajax.

Sau khi được Jesse James Garret “khai sinh” với bài viết nổi tiếng “Ajax: Giải pháp mới cho ứng dụng web” (“Ajax: A New Approach to Web Applications”, Adaptive Path, tháng 2/2005), Ajax trở nên nổi đình nổi đám trong thế giới web và ngày càng xuất hiện nhiều website “kiểu Ajax” như Google Maps, A9.com và Flickr. (Công nghệ Ajax cho phép tạo nên những ứng dụng web có giao diện phong phú và có thể truy xuất dữ liệu từ server để cập nhật một phần nội dung trang web hiện hành mà không phải nạp lại toàn bộ trang như ở các website truyền thống. Tham khảo bài “Kỹ thuật lập trình Ajax” – TGVT A 12/2005, tr.124)

Microsoft cũng có những ứng dụng web kiểu Ajax như MSN Virtual Earth (http://www.virtualearth.com) và Start.com. Thật ra, Microsoft đã tham gia cuộc chơi Ajax khá sớm. Tất cả các thành phần Ajax – DHTML, JScript và XMLHTTP đã có trong Internet Explorer 5 và Outlook Web Access đã dùng các kỹ thuật này từ năm 1998. Trước khi Ajax trở nên phổ biến, Microsoft đã sử dụng kỹ thuật Script Callbacks có phương thức làm việc tương tự Ajax (nhưng tính năng hạn chế hơn) trong quá trình phát triển ASP.NET 2.0.

Nắm bắt xu thế Ajax, tại PDC 2005 (Professional Developer Conference – hội thảo thường niên dành cho các nhà phát triển chuyên nghiệp) Microsoft đã công bố dự án Atlas đầy tham vọng, hứa hẹn cung cấp một nền tảng toàn diện hơn và đơn giản hoá việc phát triển ứng dụng web kiểu Ajax.

MỤC TIÊU

Mục tiêu đầu tiên của Atlas nhằm hỗ trợ phát triển phía máy khách (client), cung cấp các tính năng:

• Thư viện API hướng đối tượng bổ sung cho JavaScript.

• Tương thích trình duyệt tự động (hỗ trợ ứng dụng chạy với nhiều trình duyệt).

• Thư viện API và các thành phần hỗ trợ tính năng giao diện người dùng (UI) phong phú.

• Phát triển client kiểu khai báo (XML script) nhằm đơn giản hoá mã lệnh chương trình.

Mục tiêu thứ hai của Atlas nhằm kết hợp việc phát triển phía client với việc phát triển phía server. Thay vì chú trọng toàn bộ chương trình phía client hoặc phía server, Atlas cung cấp hỗ trợ cho cả hai, cho phép xử lý tác vụ ở nơi có ý nghĩa nhất. Phía máy chủ (server), ASP.NET có các tính năng sau phục vụ cho ứng dụng Atlas:

• Dịch vụ web có khả năng kết hợp với ứng dụng Atlas.

• Các điều khiển (web server control) sinh mã client cần thiết cho ứng dụng Atlas.

KIẾN TRÚC

Ở dạng đơn giản nhất, ứng dụng web sử dụng thư viện script của Atlas phía client gọi một dịch vụ hay ứng dụng trên máy chủ web. Nhưng với ứng dụng web phức tạp hơn, bạn sẽ phải cần đến thành phần phía server của Atlas. Không đơn thuần là thư viện Ajax bổ sung cho ASP.NET, Atlas được thiết kế để trở thành nền tảng phát triển hoàn chỉnh từ client, server đến truyền thông giữa client và server. Ngoài ra, Atlas còn cung cấp nền tảng ứng dụng – cho phép nhà phát triển “lắp ráp” các thành phần có sẵn để tạo ứng dụng.

Thành phần client

Ở phía client, Atlas cung cấp Client Script Framework có thể xem là mở rộng của JavaScript, hỗ trợ phát triển hướng đối tượng, tương thích đa trình duyệt, giao tiếp với dịch vụ web và các tính năng giao diện người dùng phong phú. Microsoft hứa hẹn Atlas Client Script Framework sẽ làm việc với tất cả trình duyệt và với web server bất kỳ. Nó không yêu cầu bất kỳ cài đặt nào phía client.

Thư viện script phía client của Atlas là tập các file JavaScript (.js), gồm các thành phần sau:

• Nhân (Script Core): bổ sung đặc tính hướng đối tượng cho JavaScript (như lớp, interface, kế thừa, xử lý sự kiện, kiểu dữ liệu…). Đây là có thể xem là .NET CLR thu nhỏ ở phía client.

• Thư viện lớp cơ bản (Base Class Library): cung cấp các lớp và cấu trúc cơ bản được dùng trong phát triển .NET Framework (như StringBuilder, Debug, Event…); cung cấp thư viện API xử lý mã client dạng khai báo (XML). Lớp này còn cung cấp hỗ trợ XMLHTTP với WebRequest và WebResponse, cho phép gọi WebMethod ở các file .asmx và .aspx hay dịch vụ web bất kỳ.

• Lớp mô hình thành phần và khung giao diện (Component Model và UI Framework): định nghĩa các thành phần, cơ chế liên kết các thành phần với nhau và các phương thức thực thi. Phần UI Framework xác định các kiểu thành phần giao diện cùng với hành vi (như kéo-thả).

• Các điều khiển và thành phần (Controls & Components): tập các thành phần xây dựng sẵn và các điều khiển dùng cho phát triển phía client như Timer (bộ định thời), Counter (bộ đếm), các điều khiển form thông thường, điều khiển gắn với dữ liệu (ListView) hay điều khiển bản đồ (dựa trên Virtual Earth).

• Lớp tương thích trình duyệt (Browser Compatibility): xử lý tương thích với các trình duyệt (hiện tại, Atlas có thể chạy trên IE, Safari và Firefox).

Thành phần server

Thành phần server của Atlas được xây dựng trên ASP.NET 2.0, cơ bản gồm các dịch vụ web ASP.NET và các điều khiển server. Các thành phần server này làm việc kết hợp với thư viện client của Atlas.

• Điều khiển server (Atlas Server Controls): thực hiện sinh mã client (mã lệnh JavaScript và mã khai báo XML) có những đặc tính Atlas. Các điều khiển server của Atlas tương tự như các điều khiển server của ASP.NET, có ích cho người có kinh nghiệm phát triển phía server. Ngoài các điều khiển thông thường như nút lệnh, ô text, ô chọn, liên kết… còn có những điều khiển Atlas đặc biệt để xử lý những hành vi ở client như rê và nhấn chuột… Tất cả những điều khiển này sẽ được tích hợp vào Visual Studio để cho phép làm việc ở màn hình thiết kế giống như các điều khiển server của ASP.NET.

• Cầu nối dịch vụ web (Web Services Bridge): cho phép mã client liên lạc (2 chiều: gửi và nhận dữ liệu) với dịch vụ web kiểu .asmx của ASP.NET (cũng như WebMethod được định nghĩa trên trang .aspx) và .svc của Indigo (công nghệ SOA mới nhất dự kiến ra mắt cùng với Windows Longhorn trong năm 2006) hay dịch vụ web bất kỳ.

• Cầu nối dịch vụ ứng dụng (Application Services Bridge): sử dụng Web Services Bridge để cung cấp những những dịch vụ ứng dụng ASP.NET như xác thực hay truy cập và cập nhật dữ liệu.

Thành phần client và server và mã khai báo

Mã khai báo là đặc tính thú vị của Atlas. Điều khiển server tạo ra mã khai báo và gửi đến client trong định dạng XML. Atlas Client Framework sẽ phân tích khai báo này để sinh mã lệnh (thể hiện và hành vi của trang) ngay tại trình duyệt (client) lúc thực thi. Phương thức này nhằm tránh việc tạo hàng đống mã lệnh JavaScript rồi nhúng vào trang trước khi gửi đi từ server. Bằng cách thực hiện việc này ở phía client, kích thước trang có thể giữ khá nhỏ và người phát triển không cần phải bận tâm đến những đặc trưng của từng trình duyệt ở client.

Microsoft dường như chú trọng đến kiểu lập trình khai báo này, tuy nhiên bạn vẫn có thể thực hiện kiểu mã lệnh JavaScript trực tiếp, nhưng lưu ý những tính năng hướng đối tượng hạn chế của JavaScript.

HIỆN THỰC

Atlas vẫn còn trong quá trình phát triển. Microsoft dự kiến sẽ ra mắt Atlas trong năm 2006 này như là thành phần bổ sung cho ASP.NET 2.0 và nó sẽ được tích hợp với Visual Studio 2005.

Tuy nhiên, ngay từ bây giờ bạn đã có thể làm quen với Atlas. Microsoft hiện đã có cung cấp file ASPNETAtlas.vsi để cài đặt dự án Atlas mẫu (Atlas Web Site Template, http://msdn.microsoft.com/asp.net/info/future/atlastemplate/) trên Visual Studio 2005 (http://msdn.microsoft.com/vstudio/) hay Visual Web Developer Express (http://msdn.microsoft.com/vstudio/express/vwd/). Dự án này có đủ mọi thứ cần thiết cho dự án web kiểu Atlas, bao gồm thư viện Atlas.

Hiện cũng đã có một số ứng dụng Atlas mẫu, bạn có thể tham khảo ở webblog của Nikhil Kothari (http://www.nikhilk.net) – kiến trúc sư phần mềm của Microsoft, người đã thuyết trình về Atlas tại PDC 2005. Bạn cũng có thể dễ dàng tìm thấy nhiều mẫu ứng dụng Atlas khác trên Internet.

Ngoài ra, hiện cũng có những giải pháp khác cho phép phát triển ứng dụng kiểu Ajax với ASP.NET 1.0 hay 2.0 như My Ajax.Net của Jason Diamon (http://jason.diamond.name/weblog/category/my-ajax-dot-net/) và Ajax.NET của Michael Schwarz (http://ajax.schwarz-interactive.de/csharpsample/).

CLIENT HAY SERVER??

Một trong những điểm mấu chốt của ứng dụng kiểu Ajax đó là giảm thiểu việc truyền thông giữa client và server. Vấn đề cần cân nhắc là gửi-nhận thông tin gì và tác vụ nào xử lý ở đâu? Việc này liên quan đến mô hình phát triển đặt trọng tâm phía server hay client.
Trong mô hình phát triển đặt trọng tâm phía client, ban đầu server gửi đến client thông tin khai báo “cách trình bày” cùng “cách thức ứng xử” của giao diện người dùng. Khai báo giao diện này thực thi ở client để xử lý hành vi tương tác của người dùng, gửi dữ liệu đến server và nhận dữ liệu (không phải mã HTML) đáp trả, và dùng dữ liệu này để sinh thể hiện và nội dung. Server đưa các tài nguyên khác đến giao diện người dùng thông qua các dịch vụ.
Mô hình này cho phép thực hiện hiệu quả các tình huống từ tính toán đến dữ liệu động ở client. Mô hình này cũng cho phép xử lý tức thời những hành vi của người dùng và có khả năng thực hiện những hiệu ứng thị giác như kéo-thả. Cái giá của giải pháp này gồm công sức viết mã lệnh client không nhỏ và việc chuyển luận lý giao diện từ server sang client dẫn đến yêu cầu xây dựng và học sử dụng các công cụ mới, mô hình thiết kế mới…
Trong mô hình phát triển đặt trọng tâm phía server, server sẽ gửi mã HTML đến client thay vì dữ liệu thuần tuý. Việc xử lý phía client đơn giản hơn nhiều, chủ yếu chịu trách nhiệm gửi yêu cầu rồi nhận mã HTML đáp trả và đặt vào đúng chỗ trong trang. Hầu hết việc xử lý tương tác và giao diện đều nằm ở server.
Trong khi một số người thích “đường lối” mới, nhưng một số người khác lại thích mô hình phát triển phía server quen thuộc. Có những tính năng bạn vẫn có thể thực hiện theo mô hình phát triển truyền thống, nhưng những tính năng như tương tác giao diện người dùng phải cần đến nền tảng phát triển kiểu Atlas – cho phép cân đối giữa mô hình client phong phú với mô hình phía server hiện hữu.

Theo pcworld.com.vn

Tham khảo:
http://atlas.asp.net/
http://www.nikhilk.net/

Favicon là gì ?

Favicon.ico là gì? – Đặc trưng riêng website của bạn


1. Favicon.ico là gì? Đặc trưng riêng website của bạn
Có đôi khi, ai đó hỏi bạn làm thế nào để hiển thị một hình ảnh biểu tượng (icon) bên cạnh địa chỉ trang web (URL) trên thanh địa chỉ (Address) trên trình duyệt của khách hàng (Trên IE, mặc định là hình chữ e màu xanh của Microsoft). Nếu những ai muốn lưu trang web của bạn, họ đặt trang web đó vào “favorites”, trình duyệt sẽ cố gắng lấy file favicon.ico trên website của bạn. Nếu trình duyệt không thể tìm ra một file như vậy thì chúng sẽ nhận được một trang lỗi có mã 404. Ngược lại, nếu file favicon.ico có sẵn, biểu tượng sẽ được hiện lên bên cạnh tên trang web của bạn có tên trong thanh “Favorite”.
Các trình duyệt IE, Mozilla, Netscape, Opera đều hỗ trợ chức năng này. Ngoài ra, Mozilla và Netscape còn hỗ trợ định dạng file ảnh khác như PNG.

2. Các yêu cầu đối với phần mềm
Nếu bạn có một chương trình Window icon editor (thuộc bộ Visual Basic hoặc Visual C++) thì dùng chương trình này. Nếu bạn chưa có thì bạn dễ dàng tìm được trên website http://www.bouffler.freeserve.co.uk/icon_edit.htm

3. Làm thế nào để tạo ra file “FAVICON.ICO”
1. Tạo ra một ảnh cỡ 16×16. Nó quá nhỏ và bạn không thể vẽ nhiều trên đó. Bạn nên tự hạn chế vẽ với 16 màu hoặc cả 256 màu.
2. Lưu hình ảnh dưới dạng file ICO (tất nhiên là file “favicon.ico”)
3. Tải nó lên website của bạn. Đơn giản nhất là bạn đặt chúng vào thư mục gốc và Internet Explore sẽ xác định vị trí của chúng. Bạn cũng có thể đẩy chúng trong thư mục hình ảnh, nhưng bạn sẽ cần phải sửa đổi địa chỉ trỏ đến file favicon.ico.

4. Trợ giúp! Trang chủ của chúng tôi không cho đưa file ICO lên!
Nếu như trang chủ của bạn không cho phép các file có đuôi ICO để tải lên, bạn có thể đổi thành đuôi khác (chẳng hạn GIF). Sau đó bạn đổi lại đuôi file trên server.

5. Giúp trình duyệt xác định vị trí file Favicon.ico
Nếu bạn đã đặt file Favicon.ico trong một thư mục (images) không phải là thư mục gốc, bạn phải giúp chỉ ra vị trí file Favicon.ico bằng cách chỉ ra vị trí của nó bằng thẻ dưới đây trong phần của trang web của bạn.

6. Có bao nhiêu người lưu website của tôi?
Trước đây, “favicon.ico” có ứng dụng khá hay. Nó cho phép bạn xác định bao nhiêu lượt người dùng trình duyệt IE lưu website của bạn trong mục Favorite của họ. Bạn có thể tìm ra số lượt download file favicon.ico trong server logs của web.
Tuy nhiên, việc này không còn thích hợp đối với ngày nay. Mozilla, Netscape và Opera hiển thị favicon.ico trên thanh Address ngay dù người dùng không đưa website của bạn vào Favorite.

7. Kết luận
“Favicon.ico” không phải là thiết yếu cho việc hoạt động của website của bạn. Thực tế có rất ít người biết đến sự hiện hữu của nó, nó thực sự nhỏ để thể hiện bất kỳ điều gì hữu ích. Tuy nhiên việc tạo ra nó có thể tiết kiệm được băng thông cho website của bạn. Khi không có file Favicon.ico, server sẽ gửi trang lỗ 404 đến trình duyệt người dùng hoặc gửi trang báo lỗi 404.shtml nếu bạn đã tạo ra. Có lẽ quan trọng hơn đó là việc tạo ra một biểu tượng như vậy làm tăng tính chuyên nghiệp của bạn, làm cho người dùng tin rằng bạn là một nhà thiết kế web quan tâm tới từng chi tiết.

Khái niệm với Simulink

Simulink là phần mềm dùng để mô hình hóa, mô phỏng và phân tích một hệ thống động. Simulink cho phép mô tả một hệ thống tuyến tính, hệ phi tuyến các phương trình trong thời gian liên tục, gián đoạn hay một hệ kết hợp liên tục và gián đoạn. Hệ thống cũng có thể có nhiều tốc độ khác nhau.

Để mô hình hóa, Simulink cung cấp một giao diện đồ họa để xây dựng mô hình như là một sơ đồ khối sử dụng thao tác nhấp và kéo chuột. Với giao diện này bạn có thể xây dựng một mô hình như xây dựng trên giấy. Đây là sự khác xa các phần mềm mô phỏng trước đó mà người sử dụng phải đưa vào các phương trình vi phân và sai phân bằng ngôn ngữ lập trình.
Việc lập trình trên Simulink sử dụng các đối tượng đồ họa gọi là Graphic Programming Unit. Nó được xây dựng trên cơ sở các ngôn ngữ lập trình hướng đối tượng, tạo điều kiện hết sức thuận lợi cho việc thay đổi các giá trị thuộc tính trong những khối thành phần. Ưu điểm của nó là tình trực quan, dễ viết và dễ hình dung đối với người lập trình không chuyên.
Thư viện Simulink cũng bao gồm toàn bộ thư viện các khối như khối nhận tín hiệu, các nguồn tín hiệu, các phần tử tuyến tính và phi tuyến. Dĩ nhiên là người dùng có thể thay đổi hay tạo ra các khối riêng của mình. Các bài toán trong Simulink được xây dựng theo mô hình phân cấp. Người sử dụng có thể quan sát hệ thống ở mức tổng quan, vừa có thể xét từng khối một cách chi tiết.
Sau khi tạo lập ra được mô hình, người sử dụng có thể mô phỏng nó trong Simulink bằng cách nhập lệnh trong cửa sổ lệnh của Matlab hay sử dụng các menu có sẵn. Người sử dụng có thể thay đổi thông số một cách trực tiếp và nhận biết ảnh hưởng đến mô hình. Kết quả mô phỏng có thể đặt vào Matlab để xử lý hay đưa ra hiển thị.

Theo Ngohaibac