Thứ Bảy, 26 tháng 5, 2012

ProgDVB 6.84.5 Standard: Xem miễn phí hơn 4.000 kênh truyền hình, radio

ProgDVB 6.84.5 Standard (ProgDVB) là phiên bản mới nhất của phần mềm xem miễn phí các kênh truyền hình trên máy tính.

ProgDVB được cung cấp tại đây (dung lượng: 11,81 MB), tương thích với Windows XP/Vista/7 (cả phiên bản 32-bit và 64-bit).
Cài đặt
Sau khi tải về xong, bạn kích hoạt tập tin thu được > chọn I Agree.
Nhấn Browse tại trường Destination Folder để chỉ định thư mục cài đặt > nhấn Next.
Ở bước tiếp theo, bạn cần chọn thiết bị bắt sóng truyền hình, radio mà đang kết nối với máy tính. Nếu chỉ sử dụng đường truyền Internet thì bạn chọn Internet TV, Internet Radio, YouTube là được.

Sau đó, bạn chỉ định nơi lưu trữ dữ liệu mà ProgDVB buffer được trong quá trình tải về. Bạn có thể dùng bộ nhớ RAM để lưu phần dữ liệu này, đây cũng là cách lưu trữ cho tốc độ nhanh hơn, tuy nhiên chỉ dành cho máy tính có bộ nhớ RAM lớn, bạn chọn In Memory… Ngoài ra, bạn có thể chọn In File… > nhấn để chỉ định nơi lưu trữ tập tin buffer. Bạn nhập dung lượng dữ liệu buffer (nạp) sẽ được lưu trữ, mặc định là 200MB. Sau khi ProgDVB buffer đủ lượng dữ liệu này thì sẽ tiến hành phát xem và liên tục xóa, ghi những dữ liệu đó, song không bao giờ vượt quá dung lượng mà bạn chỉ định.


Các bước cài đặt sau đó, bạn cứ nhấn Next. Xong, nhấn Install để cài đặt theo các cấu hình đã thiết lập.
Sử dụng
Hoàn thành cài đặt, bạn kích hoạt tập tin ProgDVB 6 trên màn hình để sử dụng. Giao diện ProgDVB 6 khá đơn giản, trong đó quan trọng nhất là danh sách các kênh, đài ở bên trái giao diện. Bạn chỉ việc lựa chọn quốc gia và nhấn đôi chuột vào kênh TV, radio muốn xem. Nếu kênh vừa chọn có tín hiệu tốt thì bạn chỉ việc đợi một chút cho ProgDVB 6 buffer phần dữ liệu đầu và phát cho bạn xem xuyên suốt, hạn chế tối đa bị đứng hình.

- Đổi tên kênh: Các kênh TV, radio hiện thị trong danh sách với tên mặc định của nhà đài có thể gây khó khăn cho người dùng nếu tên khó nhớ. Để thay đổi tên một kênh, bạn chọn kênh đó trong danh sách > vào Edit > Rename > nhập tên mới > nhấn Enter.
- Tạo kênh mới: Nếu có đường dẫn phát dữ liệu của một kênh TV, Radio miễn phí nào đó mà chưa có trong danh sách, bạn có thể dùng để tạo một kênh mới. Trước tiên, bạn vào Edit > New > chọn Folder để tạo nhóm chứa các kênh cho dễ quản lí. Sau đó, vào lại Edit > New > chọn Channel để khởi tạo kênh mới trong nhóm vừa tạo. Sau đó, bạn đặt tên cho kênh tại ô Name, dán đường dẫn truyền dữ liệu của kênh mà bạn có vào ô URL. Ngoài ra, bạn còn có thể thiết lập một số thông tin phụ khác. Xong, nhấn OK. Lúc này, kênh vừa tạo đã có trong danh sách bên phải giao diện ProgDVB 6, bạn có thể chọn xem bất kỳ lúc nào.

Lưu ý: Khi xem truyền hình qua đường truyền Internet, bạn nên sử dụng ADSL trọn gói vì lượng dữ liệu tải về rất lớn.

(http://xahoithongtin.com.vn/2012051602543662p0c252/progdvb-6845-standard-xem-mien-phi-hon-4000-kenh-truyen-hinh-radio.htm)

Tuyển chọn các Plugin Wordpress tốt nhất cho SEO

Để hỗ trợ cho các bạn trong việc SEO website, chúng tôi xin giới thiệu với các bạn các plugin WordPress tốt nhất cho SEO.
1. All in One SEO Pack

All in One SEO Pack là một trong số các Plugin hàng đầu hỗ trợ SEO cho blogger, và nó luôn nằm trong nhóm plugin được sử dụng khi mới tiến hành cài đặt blog bằng mã nguồn WordPress. All in One SEO là một trong rất nhiều plugin hỗ trợ SEO cho WordPress.
Với plugin All in One SEO pack, bạn có thể:

  • Đặt title cho bài viết, các trang con và các trang chính.
  • Đặt thẻ meta description, meta keyword.
  • Định dạng Title bài viết, chuyên mục (category), page… tự động.
  • Linh động tạo ra các keyword, description phù hợp cho từng bài viết.
all-in-one-seo-pack.zip (320.1 KiB)
2. Akismet

Akismet là một phugin thứ hai trong số các plugin hỗ trợ về SEO. Plugin này sẽ giúp bạn ngăn chặn các spammer cố ý post vào blog của bạn. Nếu không hạn chế số lượng Spam thì càng nhiều Spam khả năng phát triển của website càng bị hạn chế.
akismet.zip (30.2 KiB)
3. Google XML Sitemap

Đây là plugin nằm trong top 3 blog hỗ trợ SEO. Plugin này sẽ giúp bạn dễ dàng tạo được các sitemap.xml nhanh nhất. Đây là phần không thể thiếu cho quá trình phát triển của website. Nếu websitecủa bạn không có hỗ trợ sitemap.xml khả năng index của Google và các bộ máy tìm kiếm khác sẽ bị hạn chế RẤT nhiều.
google-sitemap-generator.zip (578.4 KiB)
4. SEO Friendly Images

Plugin này tự động thêm thuộc tính alt và title cho tất cả các hình ảnh trong bài viết của bạn nhằm tăng lưu lượng truy cập từ công cụ tìm kiếm thông qua hình ảnh.
seo-image.zip (5.4 KiB, 43 hits)
5. WP Vietnamese URL (Cho web tiếng Việt)

Plugin giúp chuyển trọn vẹn chuỗi tiếng Việt có dấu thành không dấu cho tiêu đề, catergory và tag. Nếu không sử dụng plugin này một số bài viết sẽ bị lỗi nếu đường dẫn trên URL là tiếng Việt có dấu.
Chú ý: Để plugin có tác dụng bạn phải đặt Đường dẫn tĩnh (Permalinks) như sau:
  • Trong phần Setting/Chọn Permalinks
  • Chọn Custom Structure rồi nhập giá trị: /%post_id%/%postname%/
wp-vietnamese-url.zip (2.2 KiB)

Hy vọng rằng với một số Plugin quan trọng cho SEO chúng tôi đưa ra ở trên sẽ giúp bạn SEO website một cách nhanh và hiệu quả. Chúc các bạn thành công!
Nguồn: toolforseo.org
 
(http://www.thegioiseo.com/diendan/showthread.php/45452-Tuyen-chon-cac-Plugin-Wordpress-tot-nhat-cho-SEO)

Triệu hồi và sửa thư… trót gửi với MS Outlook

Một ngày bạn lỡ gửi mail bằng Outlook, nhưng chợt phát hiện nội dung còn 1 vài sai sót, bạn lo lắng khôn biết có cách nào "undo" việc gửi thư không. bạn không phải lo lắng, MS Outlook sẽ giúp bạn giải quyết khó khăn đó trong nháy mắt.

Gọi về lá thư trót gửi

Trong MS Outlook, bạn có thể gọi về một lá thư đã (trót) gửi bằng một thủ tục rất đơn giản. Trước tiên, cần bấm vào mục Mail, chọn Favorite Folders > Sent Items. Khung bên phải sẽ liệt kê các lá thư đã gửi đi. Bạn bấm kép lên lá thư muốn thu hồi để mở nó lên. Bây giờ, hãy vào mục Actions > Recall This Message… Cửa sổ hiện lên cung cấp các tuỳ chọn để bạn thu hồi lá thư đã gửi. Tại mục “Are you sure you want to”, đánh dấu chọn “Delete unread copies of this message” để hệ thống tự động thu hồi lại lá thư kia cho bạn.

Tuy nhiên, không phải lá thư nào cũng có thể thu hồi được, vì MS Outlook hiện chỉ có khả năng thu hồi các lá thư mà người nhận chưa đọc. Vì thế, bạn cũng nên thiết lập để hệ thống báo cho bạn trong trường hợp thư đã được thu hồi hay chưa thu hồi, bằng cách đánh dấu chọn “Tell me if recall succeeds or fails for each recipient”. Cuối cùng, nhấn OK để xác nhận.

Sửa thư đã gửi

Đôi khi, bạn viết một lá thư mà sau khi gửi mới nhận ra đã gửi… nhầm người hay nhầm nội dung. Những thao tác dưới đây sẽ giúp bạn thay đổi nội dung cho lá thư đó:

Bạn mở lá thư muốn sửa nội dung, rồi vào Action > Resend This Message. Sau khi nội dung lá thư hiện ra trong phần cửa sổ biên tập, bạn tha hồ chỉnh sửa lại nội dung rồi gửi đi thay thế lá thư cũ trước đó.

Xóa thư đã gửi

Bạn muốn xoá lá thư đã gửi lầm cho người khác, hay sửa lại nội dung thư đã gửi đi? Chuyện chẳng có gì là khó với MS Outlook! Đầu tiên, bạn cũng mở lá thư đã gửi, rồi vào Action > Recall This Message… Trong cửa sổ hiện ra, đánh dấu chọn “Delete unread copies and replace with a new message” để hệ thống thu hồi lại thư đã gửi và thay thế bằng lá thư mới; đánh dấu chọn thêm “Tell me if recall succeeds or fail for reach recipient” để nhận thông báo về kết quả chỉnh sửa thư đã gửi đi. Cuối cùng, nhấn OK. Ngay sau đó, cửa sổ soạn thư sẽ hiện ra và bạn viết lại nội dung mới cho lá thư dã gửi đi. Cuối cùng, bấm Send để gửi lại. Lá thư cũ sẽ được thu hồi và thay thế bằng lá thư mới.

Hủy… thư
Dĩ nhiên, đây không phải là thư rác như bạn có thể hiểnlầm. Việc huỷ thư sẽ giống một dạng thư điện tử có lệnh huỷ trong nó. Tưởng tượng như bạn đặt một “quả bom” hẹn giờ trong thư, và nó sẽ “nổ tung” để “phá huỷ” bức thư khi đến thời gian bạn đặt lệnh “gây nổ”.

Sau khi gõ xong nội dung lá thư, bạn nhấn nút Options…; trong dòng Delivery opitions, đánh dấu chọn Expires after rồi định thời gian hủy thư – tương tự như định thời gian gửi thư trong tương lai vậy. Chọn xong, nhấn OK để xác nhận và nhấn Send để gửi thư đi. Khi đến đúng ngày hẹn, thư sẽ tự huỷ và không còn dấu vết để thu hồi.

(http://web4v.net/kinh-nghiem-thu-thuat/thu-thuat-internet/1965-trieu-hoi-va-sua-thu-trot-gui-voi-ms-outlook.html)

Khắc phục lỗi trùng lặp nội dung trong SEO

Hôm nay mình viết bài về một khái niệm rất đỗi quen thuộc với anh chị em Webmaster nói chung. Đó là Duplicate Content (trùng lặp nội dung).
Trước hết chúng ta cần hiểu Duplicate Content xuất hiện là do:
- Khi tags được sử dụng và chuyển đến bản gốc của mã nguồn trong một hệ thống CMS.
- Khi website của bạn chưa được tối ưu hóa cấu hình đúng trên server cấp cơ sở (tức là sự không đống bộ giữa http:// và http://www. hoặc tồn tại nhiều trang chủ dạng domain/ và domain/index.php…)
- Khi các url chưa các mã số theo dõi, track code, id…
- Khi có nhiều biến thể của 1 trang, có thể là thiếu nội dung (vì vậy mặc định chuyển hướng và khía cạnh nội dung được xem như tương tự) hoặc chứa 1 khả năng chính xác cao với một số từ và cụm từ.
Vậy làm cách nào để tránh trùng lặp nội dung
1. Trước hết ta giải quyết vấn đề http:// và http://www. bằng việc sử dụng .htaccess
Nếu bạn muốn sử dụng dạng www.domain.com thì hãy sử dụng đoạn mã sau :


Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/ [R=301,L]

Ngược lại bạn muốn sử dụng dạng domain.com (giống như Web4v.net đang sử dụng ) thì sử dụng đoạn mã :

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} !^domain\.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/ [R=301,L]

(Trong cả 2 đoạn mã trên bạn nhớ thay domain.com thành tên miền mà bạn đang sử dụng)
2. Tiếp theo ta giải quyết vấn đề nội dung trang
Chúng ta sử dụng thẻ rel=”canonical” để phân biệt url chủ, như vậy các trang không phải cạnh tranh với các bản sao của mình, nhờ đó search engine có thể dễ dàng loại bỏ việc đánh chỉ mục các trang trùng lặp.
duplicate1content
Plugin thêm rel=canonical cho joomla các bạn download tại đây: 

(http://web4v.net/kien-thuc-website/joomla/1912-khac-phuc-loi-trung-lap-noi-dung-trong-seo.html)

Chèn quảng cáo trượt 2 bên nhanh chóng, đơn giản

chỉ mất 2 phút để có thể thêm quảng cáo trượt 2 bên cho Joomla.
Module sử dụng của maxdesign
1. sửa file file /templates/temp_cua_ban/index.php :
Thêm vào trước thẻ dòng sau:
2.Sửa file /templates/temp_cua_ban/templateDetails.xml :
thêm vào giữa các thẻ dòng sau:
float-ad
3. Cài đặtt module bình thường, chọn vị trí hiện thị là float-ad
http://www.mediafire.com/?bej9n2dqk18bgzg


(http://web4v.net/kien-thuc-website/joomla/1911-chen-quang-cao-truot-2-ben-nhanh-chong-don-gian.html)

Cách thay đổi thẻ Meta Generator "Joomla! xx - Open Source Content Management

Nhiều bạn sử dụng Joomla nhưng quên hoặc không hề biết một dòng bản quyền của joomla mà trong phần administrator không có chổ tùy chỉnh chỉ khi từ trình duyệt tại thẻ view >> page soucre thì bạn mới thấy được dòng chử này
web4v.net xin giới thiệu 2 cách để thay đổi dòng chữ này

Cách 1
Bạn tìm theo đường dẫn
libraries/joomla/document/html/renderer/head.php
Tìm dòng 84

$strHtml .= $tab.'getGenerator().'" />'.$lnEnd;

đặt vào trước nó dấu chú thích.:

//$strHtml .= $tab.'

content="'.$document->getGenerator().'" />'.$lnEnd;

Cách 2: tìm tới
libraries/joomla/document/document.php
mở file đó lên tìm dòng

var $_generator = 'Joomla! 1.5 - Open Source Content Management';


Và bạn chỉ cần sửa lại cho phù hợp với website bạn.

(http://web4v.net/kien-thuc-website/joomla/1907-can-thay-the-meta-generator-qjoomla-xx-open-source-content-management.html)
Trên các trang web Joomla, chúng ta thường cho hiển thị các module vào các position (vị trí) đã có sẵn. Chẳng hạn cho hiển thị module quảng cáo Google Adsense vài vị trí left (bên trái), cho hiển thị module tin liên quan vào vị trí right (bên phải), cho hiển thị banner quảng cáo tại vị trí top...
Và do đó nhiều người đã đặt câu hỏi đại loại như:
  • Liệu Joomla có thể cho phép chèn module vào bài viết thay vì vào các vị trí đã có sẵn hay không?
  • Làm thế nào để chèn module quảng cáo Google Adsense, module quảng cáo Adbrite, module tin liên quan, module menu... vào bài viết?
Câu trả lời là: "Joomla hoàn toàn có thể làm được, thậm chí rất nhanh và dễ dàng".

Các thao tác thực hiện chỉ gồm các bước sau:

Bước 1: Thêm mới hoặc nhân bản một module mà bạn muốn chèn vào bài viết.

  • Mở menu Extensions -> Module Manager
  • Thêm mới module bằng cách nhấn vào nút [New], chọn loại module.
  • Nếu bạn muốn nhân bản một module đã có sẵn thì nhấn vào nút [Copy].

Bước 2: Mở module mới được tạo thêm hoặc vừa được nhân bản

  • Mở module mà bạn đã tạo ở bước trên
  • Nếu bạn nhân bản một module đã có sẵn thì module mới sẽ có tên bắt đầu bằng "Copy of..."

Bước 3: Gán cho module vị trí mới

  • Tại mục "Postion", thay vì chọn những vị trí đã có sẵn trong danh sách thả xuống chúng ta có thể gõ vào một vị trí mới, chẳng hạn "vi-tri-quang-cao-Adsense" (nên chọn một cái tên bất kỳ khác với những cái đã có trong danh sách)

Bước 4: Mở bài viết mà bạn muốn chèn module

  • Mở bài viết mà bạn muốn chèn module, và tại vị trí cần chèn, bạn gõ đoạn mã sau:
  • {load position vitrimodule}   (giữa load và position không có khoảng trắng nhá)

  • Thay "vitrimodule" bằng tên vị trí mà bạn đã gán cho module cần chèn, chẳng hạn "vi-tri-quang-cao-Adsense" (không có dấu ")

Lưu ý:

Nếu không thấy module xuất hiện trong bài viết thì bạn cần kiểm tra xem plugin_loadmodule đã được bật chưa (vào menu Extensions -> Plugin Manager)
Để điều khiển định dạng của module được chèn mới trong bài viết, bạn có thể vào phần quản lý Plugin (menu Extensions -> Plugin Manager), chọn plugin có tên "Content - Load Module", trong phần tham số bên tay phải, tìm mục "Style" và chọn định dạng muốn xuất ra.
Không bao giờ sử dụng các vị trí đã có sẵn như "left", "right", "user1"... vì Joomla! sẽ hiện tất cả các module mà trước đó đã được gán cho các vị trí này và chúng ta sẽ khó mà kiểm soát cách chúng hiển thị.
Tham khảo Vinarao

(http://web4v.net/kien-thuc-website/joomla/1909-chen-module-vao-bai-viet-trong-joomla.html)

Joomla 2.5 bug fix

  1. Class 'JParameter' not found:
    You can fix the error by adding: jimport( 'joomla.html.parameter' );
    (http://forum.joomla.org/viewtopic.php?p=2727562)

Thứ Ba, 22 tháng 5, 2012

Tăng tốc cho Firefox

Firefox lúc hoạt động cũng như khi ở trạng thái minimize đều chiếm dung lượng bộ nhớ rất nhiều, tốc Tuy nhiên nếu bạn biết một số tính năng ẩn của nó, ,Opera,Google sẽ cải thiện được đáng kể tốc độ của phần mềm này.
Tăng
trình 1, Tăng Giảm nhiệt bộ nhớ
,Opera,Google
trình Firefox lúc hoạt động cũng như khi ở trạng thái minimize đều chiếm dung lượng bộ nhớ rất nhiều, Chrome) Nhưng nó có một đặc điểm ít được biết đến là cho phép Windows sử dụng lại bộ nhớ khi nó không hoạt động, toàn hay nói c��ch khác là Windows sẽ lấy lại RAM khi Firefox ở trạng thái minimize, duyệt Tuy nhiên tính năng này bình thường không hoạt động, Chrome) để kích hoạt bạn mở Firefox, diện gõ lệnh about:config vào trong khung Address và bấm Enter.
toàn
Chrome) Sau đó bấm chuột lên khoảng trống ở bất kỳ đâu trong cửa sổ mở ra, Chrome) bạn chọn New > Boolean, duyệt Tiếp theo điền đoạn mã config.trim_on_minimize, tốc bấm OK rồi chọn giá trị cho nó là true, Tăng Bấm OK lần nữa để xác định lại việc tạo giá trị mới cho Firefox.
diện
Chrome) Bây giờ khởi động lại Firefox bạn sẽ thấy nó không lấy nhiều RAM nữa khi bạn thu nhỏ cửa sổ trình duyệt, tốc dung lượng RAM sử dụng sẽ giảm đi hẳn.
toàn
tốc
tốc 2, duyệt Tinh chỉnh Cache
web(Firefox,IE
web(Firefox,IE Firefox thường lưu các cache của mỗi trang web vào bộ nhớ của nó,mục đích là để bạn có thể mở nhanh trang web trong lần đăng nhập sau hay phục hồi lại trang cũ khi bạn bấm các phím Back / Forward trong trình duyệt, ,Opera,Google Theo mặc định, web(Firefox,IE giá trị cache được thành lập để có thể lưu lại trong bộ nhớ của Firefox, cho một cache có thể đạt dung lượng 4MB hoặc tăng lên tới 8MB, Tăng Nếu bạn duyệt nhiều trang web thì máy sẽ cần dung lượng RAM rất lớn - "mà lượng tài nguyên này chỉ dùng duy nhất cho 2 phím Back / Forward" , Tăng đó là một điều hết sức lãng phí.
duyệt
duyệt
web(Firefox,IE Để tăng tốc Firefox bằng cách hạ cache của nó xuống, trình bạn gõ lệnh about:config vào trong khung Address để mở cửa sổ điều chỉnh, toàn Trong khung Filter, duyệt gõ browser.sessionhistory.max_total_viewers rồi bấm Enter, tốc Sau đó bạn bấm đôi lên giá trị Value rồi đổi sang 0.
tốc
diện Tiếp tục với giá trị với giá trị browser.cache.memory.enable, diện bấm đôi lên chữ true để đổi nó sang giá trị false, tốc Sau đó bấm chuột lên khoảng trắng bất kỳ đâu trong cửa sổ mới mở ra, trình chon New > Boolean, ,Opera,Google điền đoạn mã browser.cache.memory.capacity, tốc Bấm OK rồi chọn giá trị cho nó là true, diện Bấm OK lần nữa để xác nhận lại việc tạo giá trị mới cho Firefox.
trình
cho
toàn 3, cho Tăng tốc load web
toàn
cho Tốc độ load một trang web ngoài việc phụ thuộc đường truyền còn phụ thuộc vào trình duyệt, tốc vì vậy mới có nhưng trình duyệt nhanh như tên bắn cỡ K-Ninja hay rùa bò như SpaceTime 3D, trình Trong trình duyệt, tốc ngoài vấn đề với các cách hiển thị hình ảnh, cho âm thanh và các hiệu ứng còn có cách mà trình duyệt tương tác với máy chủ nữa, Chrome) và đây là cái khiến cho cả trăm trình duyệt không cái nào giống cái nào.
Chrome)
toàn Firefox đôi lúc nhanh không thể tưởng tượng nổi nhưng cũng có lúc nó chậm đến dễ sợ, Chrome) đơn giản chỉ vì gặp những trang web dễ tính thì nó load rất nhanh còn với những trang khó tính, Chrome) đòi hỏi nhiều cái thì nó lại load rất chậm, diện Các cách dưới đây sẽ giúp Firefox của bạn mở một trang web nhanh hơn bằng cách tăng các kết nối với trang web đó.
trình
Tăng - Giảm thời gian chờ: bấm chuột phải lên khoảng trống, web(Firefox,IE chọn New > Integer, duyệt tạo một filter mới với nội dung là nglayout.initialpaint.delay và đặt value cho nó là 50, tốc Lựa chọn này sẽ cho phép Firefox load ngay website mà không cần chờ 0,25 giây như trước nữa, Chrome) Vào New > Boolean và tạo filter mới tên là content.notify.ontimer sau đó chọn value là true, duyệt Tạo một Integer có tên content.notify.interval và đặt giá trị là 1000000.
Tăng
Tăng - Tăng lượng data tải về: bình thường thì Firefox sẽ tải trang web về theo từng gói dữ liệu, cho Bạn hãy tăng tốc load web bằng cách tăng dung lượng gói data tải về, Tăng Tạo một Integer với tên content.max.tokenizing.time và đặt value là 9000000, web(Firefox,IE Sau đó tại thêm một Boolean với tên content.interrupt.parsing và đặt giá trị cho nó là true.
trình
Tăng - Giảm thời gian tương tác với người dùng: tức là khoảng thời gian Firefox hiển thị các thông tin load web cho bạn, trình nếu giảm thời gian này xuống, Tăng tốc độ mở trang web sẽ nhanh hơn, Chrome) Tạo một Integer tên content.switch.threshold và đặt value là 3000000.
Tăng
trình
Tăng 4, Chrome) Tăng tốc server
web(Firefox,IE
Chrome) Để load nhanh một trang web bạn cần phải tăng tốc kết nối Firefox với trang web lên con số cao nhất có thể được, Tăng Theo mặc định, toàn con số kết nối này của Firefox là 24, cho tuy nhiên chúng ta có thể tăng lên mức tối đa mà Firefox cho phép để việc mở trang web nhanh nhất.
diện
Tăng Trong khung Filter, cho bạn gõ từ khóa network.http.max-connections, Chrome) sau đó bạn tăng value lên 64, cho Tiếp tục tìm network.http.max-persistent-connections-per-server và network.http.max-persistent-connections-per-proxy rồi đổi giá trị của nó lên thành 8.
toàn
Tăng
toàn 5, web(Firefox,IE Giảm thời gian tương tác
trình
tốc Khi Firefox load một trang web, duyệt nó thường tạo ra một loạt các liên kết để tải dữ liệu từ trang web đó và trang web của bạn sẽ được tải về bằng nhiều đường truyền, web(Firefox,IE mỗi đường truyền thường được đặt một giới hạn thời gian tương tác, web(Firefox,IE Vì vậy muốn Firefox nhanh hơn, web(Firefox,IE bạn có thể giảm thời gian tương tác này xuống.
tốc
web(Firefox,IE Tìm từ khóa network.http.request.max-start-delay rồi hạ giá trị của nó từ 10 còn xuống 0, web(Firefox,IE Tạo tiếp một Integer với tên network.http.pipelining.maxrequests và đặt value là 128, Tăng Cuối cùng tìm từ khóa network.http.proxy.pipelining và networl.http.pipelining rồi đổi giá trị thành true.
web(Firefox,IE
duyệt
,Opera,Google 6, cho Xóa các config
web(Firefox,IE
trình Theo mặc định, cho khi tạo một config cho Firefox thì bạn không thể xóa nó được, trình Để khắc phục, ,Opera,Google nếu có một config nào mà bạn lỡ tay tạo sai thì để xóa nó đi, web(Firefox,IE bạn bấm chuột phải lên nó rồi chọn Reset, web(Firefox,IE Khởi động lại Firefox thì config đó sẽ bị xóa

(http://diendan.hiha.vn/Tang-toc-toan-dien-cho-trinh-duyet-web-Firefox-IE-Opera-Google-Chrome-tp314179.aspx)

Thứ Hai, 21 tháng 5, 2012

Hướng dẫn Việt hóa Joomla 1.5

Joomla! 1.5 ra đời đánh dấu sự nhảy vọt cả về cách trình bày, giao diện, tính năng, kiến trúc và "...hỗ trợ tất cả các ngôn ngữ có tập ký tự được biểu diễn bằng bảng mã UTF-8..." (trích dẫn từ http://vi.wikipedia.org/wiki/Joomla). Với Joomla! 1.5 việc bản địa hóa đã trở nên dễ dàng hơn, toàn diện hơn (sử dụng bảng mã Unicode và cho phép bản địa hóa cả phần front-end, back-end). Bài viết này sẽ giúp các bạn nhanh chóng Việt hóa Joomla! (Việt hóa cả phần front-end và back-end) chỉ sau vài bước đơn giản

Việt hóa phần tiền sảnh front-end (phía người sử dụng)

Các gói ngôn ngữ phần tiền sảnh của Joomla! 1.5 được lưu trong thư mục "\language". Gói ngôn ngữ tiếng Anh sẽ được lưu trong thư mục "\language\en-GB". Trong thư mục này lại có các file sau:
  • index.html: Để tránh các hacker liệt kê các file và thư mục.
  • en-GB.xml: Mô tả các thông tin liên quan tới gói ngôn ngữ.
  • en-GB.ignore.php: Danh sách các ký tự bỏ qua khi tìm kiếm.
  • en-GB.ini: File ngôn ngữ chính của Joomla!
  • en-GB.com_xxx.ini: File ngôn ngữ cho component có tên là com_xxx.
  • en-GB.mod_xxx.ini: File ngôn ngữ cho module có tên là mod_xxx.
  • en-GB.plg_xxx.ini: File ngôn ngữ cho các plugin có tên liên quan.

Để tạo gói ngôn ngữ tiếng Việt. Chúng ta làm như sau:

Bước 1. Tạo thư mục chứa gói ngôn ngữ tiếng Việt: "\language\vi-VN"
Bước 2. Copy toàn bộ các file trong thư mục "\language\en-GB" tới thư mục "\language\vi-VN"
Bước 3. Thay phần tiền tố của tên các file tiếng Anh (en-GB) bằng tiền tố của file tiếng Việt (vi-VN). Nghĩa là ta có cấu trúc thư mục chứa gói ngôn ngữ tiếng Việt như sau:
\language\vi-VN\
---------------\index.html
---------------\vi-VN.xml
---------------\vi-VN.ignore.php
---------------\vi-VN.ini
---------------\vi-VN.com_xxx.ini
---------------\vi-VN.mod_xxx.ini
---------------\vi-VN.plg_xxx.ini
Bước 4. Thay file "vi-VN.xml", "vi-VN.ignore.php" bằng 2 file đính kèm sau:Download
Bước 5. Mở các file *.ini bằng trình soạn thảo Notepad++ (khuyến cáo).
Bước 6. Chọn định dạng (mở menu Format) khi lưu các file này: "UTF-8 without BOM" (lưu các ký tự tiếng Việt nhưng không chèn thêm ký tự đánh dấu UTF-8 ở đầu file).
Bước 7. Tiến hành Việt hóa. Thay các từ/cụm từ tiếng Anh bằng từ/cụm từ tiếng Việt tương đương.

Việt hóa phần hậu sảnh back-end (phía người quản trị)

Gói ngôn ngữ tiếng Anh của phần hậu sảnh Joomla! được lưu trong thư mục "administrator\language\en-GB".
Việc Việt hóa được tiến hành tương tự như phần tiền sảnh front-end của Joomla!.

Chú ý:

Tất cả các file nếu nội dung có chứa tiếng Việt thì đều phải lưu với lựa chọn "UTF-8 without BOM".

(http://sites.google.com/site/ktdtk4/thiet-ke-website/joomla/huong-dan-viet-hoa-joomla-1-5)

Rút gọn địa chỉ login admin cpanl trong joomla

Tạo file có tên .htaccess có nội dung:
            Redirect /123 http://domain name/administrator
rồi upload lên thư mục chứa joomla trên host khi đó địa chỉ login vào admin cpanel không còn là
 http://domain name/administrator bạn chỉ cần đăng nhập bằng đường link: http://domain name/123

(http://sites.google.com/site/ktdtk4/thiet-ke-website/joomla)

Thay đổi các trang thông báo lỗi

Để thay đổi các thông báo lỗi, copy file [Joomla]/templates/system/error.php vào thư mục template của bạn (VD: [Joomla]/templates/vinaora_template). Khi đó Joomla sẽ sử dụng file "error.php" trong template của bạn thay vì file "error.php" trong thư mục /system ở trên. Bạn có thể định dạng hoặc tùy biến file này sao cho nó phù hợp với yêu cầu của bạn.

Copy file "error.php" trong thư mục "system"

[Joomla]
|-------/templates
|-----------------/system
|------------------------/error.php

Chuyển tới thư mục chứa template của bạn

[Joomla]
|-------/templates
|-----------------/vinaora_template
|---------------------------------/error.php


Thay đổi định dạng, kiểu dáng của thông báo lỗi

Nếu bạn muốn thay đổi định dạng, kiểu dáng của các thông báo lỗi thì copy file  [Joomla]/templates/system/error.css vào thư mục template của bạn (VD: [Joomla]/templates/vinaora_template).

Copy file "error.css" trong thư mục "system"

[Joomla]
|-------/templates
|-----------------/system
|------------------------/error.css

Chuyển tới thư mục chứa template của bạn

[Joomla]
|-------/templates
|-----------------/vinaora_template
|---------------------------------/error.css
 Tiếp theo, cập nhật lại file "error.php" ở trên sao cho nó nhận file css mới bằng cách chèn đoạn mã sau:
Rồi thì thay đổi file "error.css" theo yêu cầu của bạn.
Nhớ thay "vinaora_template" bằng tên template mà bạn đang sử dụng

(http://sites.google.com/site/ktdtk4/thiet-ke-website/joomla/thay-doi-cac-thong-bao-loi)

Chỉ hiển thị vùng {mainbody} hay vùng {component} của một Website Joomla

Để hiển thị vùng {mainbody} hay vùng {component} của một Website Joomla 1.5 mà không có bất cứ một module nào và cũng không áp dụng định dạng do file CSS quy định bạn có thể sử dụng mẹo sau:
Thêm "?tmpl=component" hoặc "&tmpl=component" và phía cuối đường link của một trang bất kỳ mà bạn muốn hiện vùng {mainbody} / {component}.
Thí dụ: Nếu muốn hiển thị vùng {mainbody} / {component} của website http://tapthietkeweb.tk bạn chỉ cần thêm "?tmpl=component" vào phía cuối của đường link để có link dạng như sau:
        http://tapthietkeweb.tk/?tmpl=component
Vùng {mainbody} / {component} là vùng (P) trong hình trên, nơi sẽ nạp component của trang.
Trong trường hợp bạn lại không muốn mọi người xem được vùng {mainbody} /{component} của Website bạn có thể sử dụng đoạn mã sau, đặt vào file .htaccess.
    Options +FollowSymLinks
    RewriteEngine On
    RewriteCond %{QUERY_STRING} tmpl=
    RewriteRule ^(.*)$ http://vinaora.com/index.php [F,L] 
Chú ý: Thay http://tapthietkeweb.tk bằng địa chỉ Website của bạn.
Và nếu muốn chuyển hướng về trang chủ thì thay [F,L] bằng [R,L] 
F: Fobridden, R: Redirect, L: Last Rule) 

(http://sites.google.com/site/ktdtk4/thiet-ke-website/joomla/hien-thi-vung-mainbody-hay-vung-component-cua-mot-website-joomla)

Thêm một vị trí module mới vào template

Đối với Joomla 1.5.x

Mở file chứa template của bạn chẳng hạn "\templates\vinaora\index.php", xác định chỗ mà bạn muốn thêm một vị trí module mới và đặt vào đoạn mã sau:
 if ($this->countModules('vinaora_new_position')) : ?>
    
include type="modules" name="vinaora_new_position" style="xhtml" />
endif; ?>
Tiếp theo, mở file "\templates\vinaora\templateDetails.xml", thêm vào mục đoạn mã sau:
vinaora_new_position
Trong đó thuộc tính "style" có thể là: rounded, none, table, horz, xhtml, outline

Đối với Joomla 1.0.x

Mở file chứa template của bạn chẳng hạn "\templates\vinaora\index.php", xác định chỗ mà bạn muốn thêm một vị trí module mới và đặt vào đoạn mã sau:
 if (mosCountModules('vinaora_new_position')>0) { ?>
         mosLoadModules('vinaora_new_position',-2); ?>
 } ?>
Trong đó tham số thứ hai của hàm mosLoadModules là một trong 5 số nguyên: 1 = horizontal, 0 = normal, -1 = raw, -2 = XHTML và -3 = extra divs.

(http://sites.google.com/site/ktdtk4/thiet-ke-website/joomla/them-mot-vi-tri-module-moi-vao-template)

Cách sửa lỗi hiển thị tiếng việt trên URL của Joomla! 1.5

Không biết các bạn có để ý thấy là khi bật chế độ SEF (Search Engine Friendly URLs) của Joomla! thì trên thanh địa chỉ của trình duyệt hiển thị không đúng với tên bài viết, cụ thể là bị mất một số ký tự có dấu tiếng Việt.
Thí dụ tên bài viết là:
    "Tạo biểu đồ Gantt trong excel 2007"
Còn trên thanh địa chỉ là:
    http://quocbinhvip.tk/tin-hc/microsoft-excel/359-to-biu-gantt-trong-excel.html
Sau đây là cách sửa lỗi này:
1. Mở tập tin:
                    /libraries/joomla/filter/filteroutput.php
Tìm dòng:
 function stringURLSafe($string)
   {
      //remove any '-' from the string they will be used as concatonater
      $str = str_replace('-', ' ', $string);
      $lang =& JFactory::getLanguage();
      $str = $lang->transliterate($str);
      // remove any duplicate whitespace, and ensure all characters are alphanumeric
      $str = preg_replace(array('/\s+/','/[^A-Za-z0-9\-]/'), array('-',''), $str);
      // lowercase and trim
      $str = trim(strtolower($str));
      return $str;
   }
 Xóa hết các dòng này đi và thay thế bằng:
 function stringURLSafe($string)
        {
      $trans = array(
      "đ"=>"d","ă"=>"a","â"=>"a","á"=>"a","à"=>"a",
      "ả"=>"a","ã"=>"a","ạ"=>"a",
      "ấ"=>"a","ầ"=>"a","ẩ"=>"a","ẫ"=>"a","ậ"=>"a",
      "ắ"=>"a","ằ"=>"a","ẳ"=>"a","ẵ"=>"a","ặ"=>"a",
      "é"=>"e","è"=>"e","ẻ"=>"e","ẽ"=>"e","ẹ"=>"e",
      "ế"=>"e","ề"=>"e","ể"=>"e","ễ"=>"e","ệ"=>"e",
      "í"=>"i","ì"=>"i","ỉ"=>"i","ĩ"=>"i","ị"=>"i",
      "ư"=>"u","ô"=>"o","ơ"=>"o","ê"=>"e",
      "Ư"=>"u","Ô"=>"o","Ơ"=>"o","Ê"=>"e",
      "ú"=>"u","ù"=>"u","ủ"=>"u","ũ"=>"u","ụ"=>"u",
      "ứ"=>"u","ừ"=>"u","ử"=>"u","ữ"=>"u","ự"=>"u",
      "ó"=>"o","ò"=>"o","ỏ"=>"o","õ"=>"o","ọ"=>"o",
      "ớ"=>"o","ờ"=>"o","ở"=>"o","ỡ"=>"o","ợ"=>"o",
      "ố"=>"o","ồ"=>"o","ổ"=>"o","ỗ"=>"o","ộ"=>"o",
      "ú"=>"u","ù"=>"u","ủ"=>"u","ũ"=>"u","ụ"=>"u",
      "ứ"=>"u","ừ"=>"u","ử"=>"u","ữ"=>"u","ự"=>"u",
      "ý"=>"y","ỳ"=>"y","ỷ"=>"y","ỹ"=>"y","ỵ"=>"y",
      "Ý"=>"Y","Ỳ"=>"Y","Ỷ"=>"Y","Ỹ"=>"Y","Ỵ"=>"Y",
      "Đ"=>"D","Ă"=>"A","Â"=>"A","Á"=>"A","À"=>"A",
      "Ả"=>"A","Ã"=>"A","Ạ"=>"A",
      "Ấ"=>"A","Ầ"=>"A","Ẩ"=>"A","Ẫ"=>"A","Ậ"=>"A",
      "Ắ"=>"A","Ằ"=>"A","Ẳ"=>"A","Ẵ"=>"A","Ặ"=>"A",
      "É"=>"E","È"=>"E","Ẻ"=>"E","Ẽ"=>"E","Ẹ"=>"E",
      "Ế"=>"E","Ề"=>"E","Ể"=>"E","Ễ"=>"E","Ệ"=>"E",
      "Í"=>"I","Ì"=>"I","Ỉ"=>"I","Ĩ"=>"I","Ị"=>"I",
      "Ư"=>"U","Ô"=>"O","Ơ"=>"O","Ê"=>"E",
      "Ư"=>"U","Ô"=>"O","Ơ"=>"O","Ê"=>"E",
      "Ú"=>"U","Ù"=>"U","Ủ"=>"U","Ũ"=>"U","Ụ"=>"U",
      "Ứ"=>"U","Ừ"=>"U","Ử"=>"U","Ữ"=>"U","Ự"=>"U",
      "Ó"=>"O","Ò"=>"O","Ỏ"=>"O","Õ"=>"O","Ọ"=>"O",
      "Ớ"=>"O","Ờ"=>"O","Ở"=>"O","Ỡ"=>"O","Ợ"=>"O",
      "Ố"=>"O","Ồ"=>"O","Ổ"=>"O","Ỗ"=>"O","Ộ"=>"O",
      "Ú"=>"U","Ù"=>"U","Ủ"=>"U","Ũ"=>"U","Ụ"=>"U",
      "Ứ"=>"U","Ừ"=>"U","Ử"=>"U","Ữ"=>"U","Ự"=>"U",);
    
        //remove any '-' from the string they will be used as concatonater
        $str = str_replace('-', ' ', $string);
      $str = strtr($str, $trans);
        $lang =& JFactory::getLanguage();
        $str = $lang->transliterate($str);
        // remove any duplicate whitespace, and ensure all characters are alphanumeric
        $str = preg_replace(array('/\s+/','/[^A-Za-z0-9\-]/'), array('-',''), $str);
                // lowercase and trim
                $str = trim(strtolower($str));
                return $str;
        }
Sau khi sửa xong thì save file này lại. Tuy nhiên việc sửa đổi này chỉ có hiệu lực đối với các bài viết từ nay về sau mà thôi, còn các bài viết trước vẫn còn bị lỗi. Bạn phải mở (Edit) bài viết ra và xóa hết toàn bộ ký tự trong ô Alias (nằm ngay phía dưới Title) và nhấn Save (hoặc Apply) các lỗi sẽ được tự động sửa.
Bây giờ trên thanh địa chỉ sẽ là:
            http://quocbinhvip.tk/tin-hc/microsoft-excel/359-tao-bieu-do-gantt-trong-excel-2007.html
Không còn lỗi mất chữ nữa!

(http://sites.google.com/site/ktdtk4/thiet-ke-website/joomla/cach-sua-loi-hien-thi-tieng-viet-tren-url-cua-joomla-1-5)

Thứ Bảy, 19 tháng 5, 2012

Sending e-mail from localhost in PHP in Windows Environment

Have you ever been frustrating, why e-mail is not going from the localhost while using XAMPP or WAMP or any other PHP servers in windows environment? well in that situation i think i can help you.In this article i am going to tell you how to send e-mail from localhost in PHP.

1) Open the “php.ini“. You should know where it is located because it depends upon the particular server you’re running.
2) Search for the attribute called “SMTP” in the php.ini file.Generally you can find the line “SMTP=localhost“. change the localhost to the smtp server name of your ISP. And, there is another attribute called “smtp_port” which should be set to 25.I’ve set the following values in my php.ini file.

SMTP = smtp.wlink.com.np
smtp_port = 25
3) Restart the apache server so that PHP modules and attributes will be reloaded.
4) Now try to send the mail using the mail() function ,


mail(“you@yourdomain.com”,”test subject”,”test body”);
you might get the warning like this,
Warning: mail() [function.mail]: “sendmail_from” not set in php.ini or custom “From:” header missing in C:\Program Files\xampp\htdocs\testmail.php on line 1
5) Now specify the following headers and try to send the mail again,
$headers = ‘MIME-Version: 1.0′ . “\r\n”;
$headers .= ‘Content-type: text/html; charset=iso-8859-1′ . “\r\n”;
$headers .= ‘From: sender@sender.com’ . “\r\n”;
mail(“you@yourdomain.com”,”test subject”,”test body”,$headers);
Well that’s all, the mail is sent to “you@yourdomain.com” from the localhost.
Note : Some smtp server verifies the email address of the sender so the email address which is in the place of “sender@sender.com” should be a valid and existing email address otherwise mail might not be sent to the “you@yourdomain.com”.
If you have any question or feedback then write at bhattarairoshan at yahoo dot com.

(http://roshanbh.com.np/2007/12/sending-e-mail-from-localhost-in-php-in-windows-environment.html)

5 useful url rewriting examples using .htaccess

If you are looking for the examples of URL rewriting then this post might be useful for you. In this post, I’ve given five useful examples of URL rewriting using .htacess. If you don’t know something about url rewriting then please check my older post about url rewriting using .htaccess.

Now let’s look at the examples
1)Rewriting product.php?id=12 to product-12.html
It is a simple redirection in which .php extension is hidden from the browser’s address bar and dynamic url (containing “?” character) is converted into a static URL.
RewriteEngine on
RewriteRule ^product-([0-9]+)\.html$ product.php?id=$1

2) Rewriting product.php?id=12 to product/ipod-nano/12.html
SEO expert always suggest to display the main keyword in the URL. In the following URL rewriting technique you can display the name of the product in URL.
RewriteEngine on
RewriteRule ^product/([a-zA-Z0-9_-]+)/([0-9]+)\.html$ product.php?id=$2

3) Redirecting non www URL to www URL
If you type yahoo.com in browser it will be redirected to www.yahoo.com. If you want to do same with your website then put the following code to .htaccess file. What is benefit of this kind of redirection?? Please check the post about SEO friendly redirect (301) redirect in php and .htaccess.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^optimaxwebsolutions\.com$
RewriteRule (.*) http://www.optimaxwebsolutions.com/$1 [R=301,L]

4) Rewriting yoursite.com/user.php?username=xyz to yoursite.com/xyz
Have you checked zorpia.com.If you type http://zorpia.com/roshanbh233 in browser you can see my profile over there. If you want to do the same kind of redirection i.e http://yoursite.com/xyz to http://yoursite.com/user.php?username=xyz then you can add the following code to the .htaccess file.
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ user.php?username=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ user.php?username=$1

5) Redirecting the domain to a new subfolder of inside public_html.
Suppose the you’ve redeveloped your site and all the new development reside inside the “new” folder of inside root folder.Then the new development of the website can be accessed like “test.com/new”. Now moving these files to the root folder can be a hectic process so you can create the following code inside the .htaccess file and place it under the root folder of the website. In result, www.test.com point out to the files inside “new” folder.

RewriteEngine On
RewriteCond %{HTTP_HOST} ^test\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.test\.com$
RewriteCond %{REQUEST_URI} !^/new/
RewriteRule (.*) /new/$1



(http://roshanbh.com.np/2008/03/url-rewriting-examples-htaccess.html)

Thứ Năm, 10 tháng 5, 2012

CSS Transparency Settings for All Browsers

.transparent {
 /* Required for IE 5, 6, 7 */
 /* ...or something to trigger hasLayout, like zoom: 1; */
 width: 100%; 

 /* Theoretically for IE 8 & 9 (more valid) */
 /* ...but not required as filter works too */
 /* should come BEFORE filter */
 -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";

 /* This works in IE 8 & 9 too */
 /* ... but also 5, 6, 7 */
 filter: alpha(opacity=50);

 /* Older than Firefox 0.9 */
 -moz-opacity:0.5;

 /* Safari 1.x (pre WebKit!) */
 -khtml-opacity: 0.5;

 /* Modern!
 /* Firefox 0.9+, Safari 2?, Chrome any?
 /* Opera 9+, IE 9+ */
 opacity: 0.5;
}
 
(http://css-tricks.com/css-transparency-settings-for-all-broswers/) 

Thứ Năm, 3 tháng 5, 2012

Why won't QueryString values work with Server.Execute / Server.Transfer?

The Server.Execute and Server.Transfer commands are fairly useful replacements for #includes. However, as many people have pointed out, if you use a QueryString value, you receive this error:

Server object error 'ASP 0235 : 80004005'
Server.Transfer Error
/.asp, line
Invalid URL form or fully-qualified absolute URL was used. Use relative URLs.

or
Server object error 'ASP 0231 : 80004005'
Server.Execute Error
/.asp, line
Invalid URL form or fully-qualified absolute URL was used. Use relative URLs.

Even when your URL *IS* relative (removing the QueryString value makes the page function properly).

Unfortunately, Microsoft has yet to recognize this officially as a bug. So in the meantime, you must rely on session variables or database entries to retrieve any information you would like to pass to the target page.

However, keep in mind that if you had QueryString values coming in to the calling page, you can access those without difficulty in the target page. So as an example, let's say a.asp calls b.asp, and a.asp was called with a.asp?x=1&y=2:

<%
    ' a.asp
    Server.Execute("b.asp")
%>

<%
    ' b.asp
    Response.Write(Request.QueryString("x"))
    Response.Write("
")
    Response.Write(Request.QueryString("y"))
%>

You will see the results printed in the browser, because b.asp still has access to the ServerVariables context.

If you really need to pass *new* QueryString information into b.asp and you can't change that file or change the call to a.asp to include that new information, you can make a.asp redirect to itself with the new information. A simple logic tree will ensure that you only suffer the hit when the new information is not included.

<%
    ' a.asp
    if Request.QueryString("foo") = "" then
        Response.Redirect "a.asp?foo=bar"
    else
        Server.Execute("b.asp")
    end if
%>

<%
    ' b.asp
    Response.Write(Request.QueryString("foo"))
%>

You could also do this using a new go-between page instead of adding logic to a.asp.

(http://classicasp.aspfaq.com/general/why-won-t-querystring-values-work-with-server-execute/server-transfer.html)

How do I make my ASP page pause or 'sleep'?

There is a free component that will help you do this; it is called WaitFor 1.0 and is available at ServerObjects Inc.

If you are using SQL Server (or have access to one), you can try out the following script (adapted from a post by Pierre W):

<%

    Set conn = CreateObject("ADODB.Connection")
    conn.Open ""

    ' indicate a number of seconds, up to 59
    sleep = 10

    ' make sure timeout doesn't expire!
    conn.commandTimeout = sleep + 5

    ' if you neede more than 59 seconds, you will need to adjust the SQL:
    sql = "WAITFOR DELAY '00:00:" & right(clng(sleep),2) & "'"

    Response.Write(now & "")
    conn.Execute sql,,129
    Response.Write(now & "
")

    conn.close:     Set conn = Nothing
%>

Some people will suggest a loop like this:

<%
Response.Buffer = true

Function WaitFor(SecDelay,ShowMsg)
    timeStart = Timer()
    timeEnd = timeStart + SecDelay

    Msg = "Timer started at " & timeStart & "
"
    Msg = Msg & "Script will continue in "

    i = SecDelay
    Do While timeStart < timeEnd
        If i = Int(timeEnd) - Int(timeStart) Then
        Msg = Msg & i
        If i <> 0 Then Msg = Msg & ", "
        If ShowMsg = 1 Then Response.Write Msg
%>

<%         Response.Flush() %>

<%
        Msg = ""
        i = i - 1
        End if
        timeStart = Timer()
    Loop
    Msg = "...
Slept for " & SecDelay & " seconds (" & _
        Timer() & ")"
    If ShowMsg = 1 Then Response.Write Msg
End Function

Call WaitFor(20,0)
Call WaitFor(3,1)
%>

This is BAD, BAD news. If you can't immediately see why this is a problem, run it and watch task manager:


Look at the page faults, and look at the CPU usage for w3wp.exe. And this is on a dual-processor workstation; it literally pegs a single-CPU server at 99% running through that loop.

(http://classicasp.aspfaq.com/general/how-do-i-make-my-asp-page-pause-or-sleep.html)

How do I read the contents of a remote web page?

You can include static txt and HTML files from remote servers by using a component (such as AspHTTP, ASPTear 1.50, or VB's built in InetCtrls) to parse the remote URL's content.

You can also try this method out; it was tested with the MSXML objects which are installed with Windows 2000. You should make sure you have the latest versions of MSXML and XML Core Services (see MSXML Downloads). If you download the newer version, take special note of the new ProgID you should be using -- MSXML 4.0 now supports side-by-side installation, which means the ProgID below will actually use the older version.

<%
    url = "http://www.espn.com/main.html"
    set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP")
    xmlhttp.open "GET", url, false
    xmlhttp.send ""
    Response.write xmlhttp.responseText
    set xmlhttp = nothing
%>

And here it is in JavaScript:


If you use a URL that doesn't exist, or you are behind a firewall that blocks certain web sites, or the site is behind a firewall that blocks traffic to port 80 / 443, or you are using a proxy server, or the site requires authentication, you will receive this error:

msxml4.dll (0x80072EE7)
Server name or address could not be resolved

To correct, you will have to figure out which of the issue(s) is standing in your way, and discuss workarounds with your or their network administrator(s).

Don't forget that if your remote page has relative image URLs, or style sheets, or JavaScript files, or frames, or links, it won't work perfectly when ported to your server(s). To overcome this, you'll want to add a BASE HREF tag to keep all the images coming from the correct location. For example, the above code (which gets all the text from espn.com, but is formatted weird and doesn't function 100% as intended), is modified only slightly to work correctly:

<%
    url = "http://www.espn.com/main.html"

    ' add a BASE HREF tag
    Response.write ""

    set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP")
    xmlhttp.open "GET", url, false
    xmlhttp.send ""
    Response.write xmlhttp.responseText
    set xmlhttp = nothing
%>

For information on increasing or decreasing the time allowed for the XMLHTTP objects to retrieve a response from a remote server, see Article #2407.

If you need to POST data you can so by adding a header that tells the receiver you're sending FORM data:

<%
    url = "http://www.espn.com/main.html"
    set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP")
    xmlhttp.open "POST", url, false
    xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    xmlhttp.send "x=1&y=2"
    Response.write xmlhttp.responseText
    set xmlhttp = nothing
%>

Another thing you may want to do, going back to the original script, is make sure the server is there! If not, you can display a message... and you can customize it to display whether the server was not found at all, or if the server was found but you got a bad response (e.g. a 404 Page Not Found). Note that if you do not need to parse the content of the remote web page, that using the HEAD method here is far more efficient than using GET or POST... since only the headers are retrieved from the remote server, not any of the content.

<%
    ' deliberate typo:
    url = "http://www.espn.co/main.html"

    set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP")
    on error resume next
    xmlhttp.open "HEAD", url, false
    xmlhttp.send ""
    status = xmlhttp.status
    if err.number <> 0 or status <> 200 then
        if status = 404 then
            Response.Write "Page does not exist (404)."
        elseif status >= 401 and status < 402 then
            Response.Write "Access denied (401)."
        elseif status >= 500 and status <= 600 then
            Response.Write "500 Internal Server Error on remote site."
        else
            Response.write "Server is down or does not exist."
        end if
    else
        Response.Write "Server is up and URL is available."
    end if
    set xmlhttp = nothing
%>

You might want to parse the results, instead of sending them straight to the client:

<%
    url = "http://www.espn.com/main.html"
    set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP")
    on error resume next
    xmlhttp.open "GET", url, false
    xmlhttp.send ""
    if err.number <> 0 then
        response.write "Url not found"
    else
        if instr(xmlhttp.responseText,"Stanley Cup")>0 then
            response.write "There's a story about the playoffs."
            response.write "Go there?"
        else
            response.write "There is no story about the playoffs."
        end if
    end if
    set xmlhttp = nothing
%>

You may be interested in performing an asynchronous request, e.g. hitting an ASP page that acts like a batch file that gets fired but does not need to return any results. You can simply change the third parameter of the open call to TRUE (and leave out the reference to the responseText value):

<%
    url = "http://www.espn.com/main.html"
    set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP")
    xmlhttp.open "GET", url, true
    xmlhttp.send ""
    set xmlhttp = nothing
%>

Finally, you may want to spoof your user agent, since the MSXML object sends something like "Mozilla/4.0 (compatible; Win32; WinHttp.WinHttpRequest.5)" -- many sites will view this as a spider or 'screen scraper', and for various reasons, might present alternate content -- here are two samples:

<%
    url = "http://www.espn.com/main.html"


    ' this sample posts as the actual browser being used:


    br = Request.ServerVariables("HTTP_USER_AGENT")
    set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP")
    on error resume next
    xmlhttp.open "GET", url, false
    xmlhttp.setRequestHeader "User-Agent",br
    xmlhttp.send ""
    if err.number <> 0 then
        response.write "Url not found"
    else
        response.write xmlhttp.responseText
    end if
    set xmlhttp = nothing



    ' this sample posts as "My funky browser."


    set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP")
    on error resume next
    xmlhttp.open "GET", url, false
    xmlhttp.setRequestHeader "User-Agent","My funky browser."
    xmlhttp.send ""
    if err.number <> 0 then
        response.write "Url not found"
    else
        response.write xmlhttp.responseText
    end if
    set xmlhttp = nothing
%>



If you encounter errors... you can use ParseError to determine the problem.

<%
    set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP")
    ' ... stuff ...
    on error resume next
    xmlhttp.send ""
    if err.number <> 0 then
        response.write "Error: " & xmlhttp.parseError.URL & _
            "
" & xmlhttp.parseError.Reason
        response.end
    end if
    ' ... stuff ...
%>

A common error you might receive:

msxml3.dll error '80072efd'
A connection with the server could not be established

Make sure that the URL is actually reachable. You may have spelled the domain name wrong, or the site may actually be down.

Test using a browser from that machine, or simply running a tracert / ping. Note that ping won't always return results, because many sites block all such traffic (mainly to help eliminate DOS attacks). However, ping should at least let you know the IP address, which means that the domain name was resolved correctly through DNS. Otherwise, it might be that your DNS server is preventing connection.
(http://classicasp.aspfaq.com/general/how-do-i-read-the-contents-of-a-remote-web-page.html)

Can I create an array's size dynamically?


VBScript's arrays have quite a few limitations. You may have noticed if you try this:

<%
    x = 15
    Dim demoArray(x)
%>

You get this error:

Microsoft VBScript compilation (0x800A0402)
Expected integer constant

To work around this, you need to declare the array without a size (or with a constant size, e.g. 0), and then re-dimension it from the variable. Here are two examples; one using a simple array, the other a multi-dimensional array:

<%
    x = 15
    Dim demoArray()
    ReDim demoArray(x)
%>

<%
    x = 15
    y = 10
    Dim demoArray()
    ReDim demoArray(x,y)
%>

Note that if you want to increase the size of an array within a loop, and want to preserve the existing values assigned to the array, you need to use the Preserve keyword (otherwise, the array gets erased and re-created, thus destroying all your values):

<%
    Dim demoArray()
    for i = 1 to 5
        ReDim Preserve demoArray(i)
        DemoArray(i) = "test" & i
    next
%>
(http://classicasp.aspfaq.com/general/can-i-create-an-array-s-size-dynamically.html)