|
|
Hiện giờ có 1 vài bộ gõ tiếng Việt xuất hiện. Nhưng mình thấy người ta vẫn chọn dùng Unikey và Vietkey là chủ yếu. Vì vậy mình muốn hỏi bạn là phần mềm của bạn có gì khác, hoặc nổi bật hơn 2 phần mềm kia không? Có điều gì đáng để mình thử khi mà 2 cái kia đều đang hoạt động tốt?
PS: Bạn nếu muốn phát triển phần mềm này 1 cách lâu dài thì nên chọn domain khác, mình nhớ là RegToy của bạn cũng khá nổi tiếng, nhưng domain thì ko ổn định nên người dùng ko tìm được thông tin cần thiết.
PS2: Thay đổi lại link của screenshot đi bạn.
|
|
|
Ko, cache và file robots.txt này khác nhau mà.
File robots.txt là ngăn ko cho các con robots duyệt các trang web trong website của mình, gần như tương đương với thẻ meta robots. Còn việc cache là do trước đó SE đã duyệt site của mình và lưu lại nội dung. Sau 1 thời gian bạn ngăn chặn ko cho SE đọc các trang web thì lúc đó nó sẽ ko còn dữ liệu để update vào cache, khi đó cache mới hết dần. Nghĩa là xóa index thì đã mất thời gian rồi, xóa cache còn mất thời gian hơn nữa.
Bạn nên kết hợp thêm các tool trong Google Webmaster Tools theo các link mà Bướm Đêm chỉ. Ở đó có 1 công cụ là URL Remover, dùng để thực hiện mục đích này. Dùng nó có lẽ nhanh hơn cách dùng robots.
|
|
|
Cách đơn giản hơn là dùng thẻ meta robots với 2 giá trị là noindex và nofollow.
Tuy vậy, cần 1 khoảng thời gian khá dài để Google loại bỏ website của bạn. Site càng lớn thì cần càng nhiều thời gian. Cái này ko thể làm 1 cái bụp được đâu.
|
|
|
Bạn có thể tìm lại trong HVA bài viết của anh nlfb về việc cài đặt Windows sau khi đã cài Ubuntu (trong thư viện hoặc diễn đàn)
|
|
|
Diễn đàn mà cho phép dùng thẻ script thì chắc là nó xứng đáng nhận giá đó
|
|
|
Mình góp ý 1 chút, hình như proA.Vito chưa thực sự thử với ajax thì phải. Nên chú ý 1 chút là nếu đứng về phía client thì ajax thực ra chỉ là Javascript. Vì thế, hacker ko thể trực tiếp "hack" vào database trên server được.
Cái mà bạn nói:
view source sẽ có đoạn onblur='tên hàm javascript', xóa đoạn đấy đi, lưu vào 1 file html khác, rồi chạy file đó lên. Thế là ko còn kiểm tra được cái tên user đó đã tồn tại chưa
thì đối với cái nhìn từ phía server, các thông tin được submit lên (cho dù bạn dùng cách nào đi nữa, ajax hay js thông thường, hoặc chỉ là HTML) thì nó sẽ chứa tên của user đang cần check. Và vì thế, vấn đề kiểm tra được hay ko, nó ko hề phụ thuộc vào phía client, mà là do phía server đảm nhiệm.
Điều này
giả sử mình sử dụng ajax để thêm 1 user vào db
Như đã nói ở trên là client ko thể thêm user vào db được nếu phía server ko cho phép. Vì thế, vấn đề của bạn là chạy các script 1 cách cẩn thận ở phía server, kiểm tra input rõ ràng, ... chứ ko phải đề phòng "hacker lo mấy vụ chỉnh sửa html, chèn js ở phía client".
Tóm lại, là bạn thử viết 1 ứng dụng ajax cho client chèn user vào db xem sao, bạn sẽ thấy cái nào là mấu chốt trong việc chèn user, và ajax có vai trò gì trong quá trình đó. Nếu ko thực sự làm, mình e là các thắc mắc của bạn sẽ xa vời mãi.
|
|
|
(Nhờ mod xóa giùm, bài bị gửi trong lúc mạng chập chờn nên bị trùng lặp)
|
|
|
24x7 wrote:
Em hỏi thêm tí, site em làm ở lunarpage, ban đầu nó cho nameservers là ns1.lunarbreeze.com (74.50.25.3) và ns2.lunarbreeze.com (74.50.26.3). Nhưng khi addon domain thì nó bảo thế này:
Using nameservers with the following IPs: 64.158.219.3,71.6.202.220,78.129.207.168,208.76.56.56
Vậy em phải trỏ domain (ở everydns) về IP nào, 2 cái ns1 ns2 ban đầu hay là mấy cái IP bên dưới ???
Vì mấy IP này khác nhau nên cách tốt nhất là ... thử , mình thường dùng tên hơn là mấy IP, vì thi thoảng các IP của host cũng bị đổi.
Về vụ Google Apps, mình kiểm tra cách cấu hình của mình và so sánh với của bạn thì cũng ko có gì khác. Bạn thử xóa hết đi rồi làm lại xem sao. Có thể chọn thêm cách verify bằng CNAME xem thế nào.
|
|
|
Khi dùng js (clien script) để gửi thông tin lên web server, ở đó bạn sẽ chạy 1 script nào đó như PHP (server script) dùng để tiếp nhận thông tin đó, xử lí nó và trả lại kết quả cho client script trên. Để tránh lỗi bảo mật thì khi server script khi nhận được thông tin cần phải kiểm tra rõ ràng trước khi xử lí, để tránh các lỗi phát sinh, VD như request ko hợp lệ, request chứa các mã nguy hiểm, ...
VD như script về register ngonchan nói ở trên, có thể minh họa tạm thế này:
người dùng đăng kí, điền vào username => js được kích hoạt kèm theo sự kiện nào đó (onblur chẳng hạn) => gửi request (chứa username) đến server => server client, giá sử là PHP sẽ nhận username đó => PHP query database xem username tồn tại ko => PHP trả lại kết quả cho client => JS bắt được kết quả này và hiển thị cho người dùng.
Ajax cũng có 1 quy ước nhằm tránh lỗi bảo mật là không cho phép cross-domain, nếu file js của bạn ko nằm cùng 1 domain với serverscript thì ko thể gửi request đến được.
PS: gọi là server-side và client-side chắc hợp lí hơn nhỉ
|
|
|
Em dùng thử http://rapidshare.com/files/207678122/ABBYY_Fine_Reader_9.0_TaiPhanMem.org.zip xem sao, dùng khá tốt, chuyển được từ file ảnh thường sang word, hoặc tích hợp sẵn với máy scan để vừa scan vừa chuyển luôn. Tuy nhiên, nó hiện tại ko hỗ trợ tiếng Việt
|
|
|
Bạn đã http://www.google.com/support/a/bin/topic.py?topic=9196 domain chưa? Mình dùng Cname record để verify luôn.
EveryDNS mình thấy dùng rất nhanh, có khi chỉ 10-15 phút là đã hoạt động. Hồi xưa dùng Sitelutions thấy phải nửa tiếng trở lên.
|
|
|
Mặc dù CSS thì cũng khó, đặc biệt là nó dính đến những "trường hợp đặc biệt" cần phải biết để giải quyết, nhưng mình thấy Javascript khó hơn . Ko phải ở cách dùng Javascript thế nào mà ở cái lõi của nó, tựa như 1 framework vậy, đến giờ mình vẫn chưa học được nhiều về JS .
CSS thì mình thích cuốn CSS Mastery. Để mình tìm thử cuốn của choc_ giới thiệu xem thế nào, cám ơn nha.
PS: ko khéo choc_ mở màn cho 1 cuộc tranh luận về CSS vs JS , lạc mất chủ đề!
|
|
|
Bạn search thêm với từ khóa Adsense for RSS, Adsense for Feed.
|
|
|
Có 2 bài này mình search được giùm bạn:
http://mahzeh.org/?p=23 (bài này dùng js để xử lí)
http://jonathanstegall.com/2009/01/15/ie-z-index-bug-with-css-dropdown-menu/ (bài này dùng CSS, chỉ tiếc là hình minh họa bị hỏng)
Mình đọc lướt qua 2 bài đó thì cách fix là "ép" các element đều có position dạng relative hết. Bạn thử xem có ok ko.
|
|
|
VD bạn có 1 câu lệnh sau trong file index.php để sinh ra các link của các mục chính trong website:
showMainCategories();
lệnh này sẽ tự động sinh ra mã HTML dạng sau:
Code:
<ul id="main-categories">
<li><a href="http://.../index.php?tabid=1">Item 1</a></li>
<li><a href="http://.../index.php?tabid=2">Item 2</a></li>
<li><a href="http://.../index.php?tabid=3">Item 3</a></li>
...
</ul>
Vấn đề của bạn là phải sửa lại hàm đó để nó phải sinh ra mã HTML dạng như bạn muốn:
Code:
<ul id="main-categories">
<li><a href="http://.../index.php/1">Item 1</a></li>
<li><a href="http://.../index.php/2">Item 2</a></li>
<li><a href="http://.../index.php/3">Item 3</a></li>
...
</ul>
|
|
|
Ubuntu rất dễ dùng, nhưng muốn dùng nó tốt thì phải luôn có bạn hiền Google bên cạnh
|
|
|
dg0102 wrote:
Vẫn không được bạn ạ. Hay là tai vì nó là 1 link trong web nên không được hả bạn. Vì đường dẫn gốc của mình là http://www.abc.org/web/index.php sau đó link tới 1 mục khác thì mới có đường dẫn là http://www.abc.org.vn/web/index.php?tabid=1130 . Nếu vậy các bạn có thể giúp mình làm gọn lại cái đường dẫn gốc không . Vì mình thấy nó vẫn hơi dài
Bạn hãy chú ý 2 điểm sau để rewrite được link:
- thứ nhất là bạn phải cho website của bạn "sinh ra được link" dạng index.php/1130
- sau đó mới dùng htaccess để rewrite link index.php/1130 thành dạng index.php?tabid=1130
Các thảo luận trong topic này từ đầu tới giờ chỉ làm nhiệm vụ thứ 2 là khi có request tới index.php/1130, nó sẽ chuyển thành request tới index.php?tabid=1130. Bạn muốn thử xem việc làm đó có đúng ko thì phải thử bằng cách gõ đường dẫn index.php/1130 vào ô address, xem nó có chạy ko. Chứ ko phải bằng việc bạn xem link của 1 mục trên website bạn có dạng index.php/1130 hay ko nhé. Việc website bạn sinh ra link dạng như thế nào là vấn đề khác, nó phụ thuộc vào cấu hình và cách code của website.
|
|
|
Bạn sửa thêm
RewriteBase /web
và dùng lại Rule của ducmanh xem thế nào?
|
|
|
Bạn có chắc là nếu có được code của các website đó thì có "tham khảo" được ko? Khi mà trước mặt bạn là vài trăm file ngổn ngang, ko có tài liệu kèm theo?
Thử "tham khảo" theo các cách khác thế này xem có hiệu quả hơn ko:
- open source, có đủ code và hướng dẫn cho bạn
- các trang share script như hotscripts.com, share nhiều script "nhỏ" tiện tra cứu hơn là 1 dự án, website hoàn chỉnh
Cuối cùng là ko có cách lấy các script đó 1 cách đàng hoàng như view source đâu
|
|
|
Mình gợi ý hướng như vậy thôi, chứ ko viết mã nguồn cho bạn được. Bạn có thể tìm kiếm trên Google 1 số bài tut về cách sử dụng PHP làm 1 download manager (ở vninformatics.com của anh nbthanh cũng có 1 bài viết chi tiết bằng tiếng Việt) là có thể làm được. Nếu trong quá trình bạn code, gặp khó khăn gì thì gửi lên đây, chúng ta thảo luận tiếp.
|
|
|
Để tớ nói rõ hơn 1 chút, ý tớ là bạn dùng PHP để đọc nội dung của file MP rồi trả về cho người dùng, thông qua header('application/octet-stream'). Khi nào đọc hết (tức là người dùng download xong) thì có thể wwwect đến trang thankyou (hoặc ko cần cũng được) và tăng bộ đếm lên. Cách này bạn ko cần phải tính toán thời gian người dùng download, vì nó phụ thuộc vào việc bạn đọc nội dung file và trả về cho người ta.
Còn nếu bạn chỉ đơn thuần làm 1 link cho người dùng click vào, rồi wwwect trực tiếp đến file mp3 để download thì e là khó có thể thực hiện được ý muốn của bạn. Việc file download xong, "tự nó cộng vào bảng download" hình như ko có thì phải.
|
|
|
Hoặc bạn thử thêm directive [L] vào sau quy tắc 1 để nó khỏi bị lẫn sang quy tắc 2 xem sao.
|
|
|
Ý tưởng của bạn khá hay và độc đáo. Tuy vậy, làm như thế chúng ta sẽ phải lưu giữ ID của link thay vì nội dung text, tức là việc lưu giữ vẫn ko bỏ được, chỉ có điều kích thước giảm xuống thôi. Nếu như lưu trong DB thì thường vấn đề về kích thước ko phải là lớn lắm, nên cái này chưa thực sự ấn tượng. Hơn nữa, nếu làm 1 site dùng nó 1 cách hệ thống thì sẽ rất dở ở chỗ ko search được. Nhưng xét trên khía cạnh dùng nó ở mức độ nhỏ nhỏ, thì lại khá hay
|
|
|
Có thể làm cách này cũng được:
Người dùng click -> Server trả về file mp3 để download -> Download xong wwwect đến trang thankyou -> Tại trang thankyou thì thực hiện tăng bộ đếm download lên.
Mấu chốt chỉ là thời điểm tăng bộ đếm download, bạn có thể cho nó thực hiện ở bất cứ đâu nếu muốn. Có điều, thực hiện khi người dùng click vào link download là hợp lí với ý nghĩa thông thường nhất.
|
|
|
MrMe đã trả lời về cách "có thể làm được" đó thôi, bạn đã thử chưa, sao lại nói là spam vậy?
|
|
|
Bạn xem cấu hình PHP ở file php.ini và điều chỉnh nó lên là được. Đây là thời gian thực thi script PHP chứ ko phải thời gian thực thi của trình duyệt đâu.
|
|
|
canh_nguyen wrote:
Response headers của raovat :
Code:
Date: Tue, 17 Feb 2009 12:50:46 GMT
Server: Apache/2
X-Powered-By: PHP/5.2.8
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Encoding: gzip
Vary: Accept-Encoding,User-Agent
Content-Length: 22845
X-Content-Encoded-By: class.gzip_encode 0.67
Keep-Alive: timeout=1, max=100
Connection: Keep-Alive
Content-Type: text/html
200 OK
Response headers từ code của l2h :
Code:
Date: Tue, 17 Feb 2009 12:58:14 GMT
Server: Apache/2
X-Powered-By: PHP/5.2.6
Vary: Accept-Encoding,User-Agent
Content-Encoding: gzip
Content-Length: 23127
Keep-Alive: timeout=1, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8
200 OK
So sánh xem thiếu gì thì thêm vào array header thử
Ko phải thêm gì đâu anh à, 2 đoạn response này chỉ khác nhau ở 2 điểm: 1 là các tham số về cache (ko cần thiết lắm trong trường hợp này), 2 là tham số X-Content-Encoded-By, mà cái này đã được gửi đi từ trước nhờ Accept-Encode rồi.
À, mà anh làm thế nào mà "bắt" được những header mà CURL của PHP gửi đi/nhận về vậy? Em dùng LiveHTTPHeaders thì chỉ thấy respond của script PHP thôi, chứ ko thấy được headers mà raovat.com gửi trả cho script.
Lỗi ko đọc được tiếng Việt đúng như phần trên em nói là dữ liệu trả về ở dạng gziped raw, nên phải decode nó đã. Tiếc là trong PHP5 chưa hỗ trợ hàm gzdecode, chỉ từ http://www.php.net/manual/en/function.gzdecode.php mới có, đọc ở link về gzdecode kia thì có 1 người viết 1 hàm thực hiện chức năng tương tự cho PHP < 6 thế này:
Code:
function gzdecode($data){
$g=tempnam('/tmp','ff');
@file_put_contents($g,$data);
ob_start();
readgzfile($g);
$d=ob_get_clean();
return $d;
}
Ghép vào đoạn code trên của em thì đọc được toàn bộ site raovat.com:
Code:
<?php
$url = 'raovat.com';
$header_array[0] = 'GET / HTTP/1.1';
$header_array[1]= 'User-Agent: '.$_SERVER['HTTP_USER_AGENT'];
$header_array[2]= "Host: $url";
$header_array[3]= 'Accept: application/xml,application/xhtml+xml,text/html;q=0.9,*/*;q=0.8';
$header_array[4]= 'Accept-Language: en-us,en;q=0.5';
$header_array[5]= 'Accept-Encoding: gzip,deflate';
$header_array[6]= 'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7';
$header_array[7]= 'Keep-Alive: 300';
$header_array[8] = 'Connection: keep-alive';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://raovat.com/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header_array);
$result = curl_exec($ch);
function gzdecode($data){
$g = tempnam('/tmp','ff');
@file_put_contents($g,$data);
ob_start();
readgzfile($g);
$d = ob_get_clean();
return $d;
}
?>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body>
Nội dung raovat.com nè:<br/>
<textarea cols="100" rows="20">
<?php echo gzdecode($result); ?>
</textarea>
</body>
</html>
@gamma95: py hay thật, chạy đơn giản mà output được hết , CURL của PHP nghe chừng còn kém hơn.
@FAL: anh dùng curl command với những tham số gì vậy? Em dùng ko tham số thì ko thu được gì cả, trừ dòng "Rao là có ngay".
|
|
|
Bạn thử với CURLOPT_HTTPHEADER chưa? Trong trường hợp mà các option trên ko làm việc, hãy dùng cái này và LiveHTTPHeaders để "mô phỏng 1-1" các thứ mà browser gửi đi.
Đây là code tớ viết thử, có hiển thị kết quả nhưng bị lỗi font, thử đổi charset vài lần nhưng ko được. Có lẽ do họ nén gzip khi truyền tải nên lấy raw thế này ko ổn. Nếu cậu biết cách nào có thể xem được thì chỉ tớ nhé.
Code:
<?php
$url = 'raovat.com';
$header_array[0] = 'GET / HTTP/1.1';
$header_array[1]= 'User-Agent: '.$_SERVER['HTTP_USER_AGENT'];
$header_array[2]= "Host: $url";
$header_array[3]= 'Accept: application/xml,application/xhtml+xml,text/html;q=0.9,*/*;q=0.8';
$header_array[4]= 'Accept-Language: en-us,en;q=0.5';
$header_array[5]= 'Accept-Encoding: gzip,deflate';
$header_array[6]= 'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7';
$header_array[7]= 'Keep-Alive: 300';
$header_array[8] = 'Connection: Close';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://raovat.com/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header_array);
$result = curl_exec($ch);
echo $result;
?>
|
|
|
|
|
|
|