
2009年8月3日
內容如下:

Code
<script>
setInterval( function() {
var date = new Date();
if (date.getMinutes() == 0 || date.getMinutes() == 30) {
alert("老大,喝點水,休息一下!");
}
}, 1000 * 60);
</script>
大家注意身體啊

--------------------------
09博客園紀念T恤新聞:
網站評測:搜狐博客 VS 我燒網網站導航:
博客園首頁 個人主頁 新聞 社區 博問 閃存 找找看文章來源:
http://www.cnblogs.com/xiaoao808/archive/2009/08/25/1553578.html
posted @
2009-08-25 13:33 破名超難起 閱讀(157) |
評論 (0) |
編輯 收藏
防盜鏈原理:
http標準協議中有專門的字段記錄referer
一來可以追溯上一個入站地址是什么
二來對于資源文件,可以跟蹤到包含顯示他的網頁地址是什么。
因此所有防盜鏈方法都是基于這個Referer字段
網上比較多的2種
一種是使用apache文件FileMatch限制,在httpd.conf中增加 ( 其實也可以將把下面的語句存成一個.htaccess文件),并放到你的網站的根目錄(就是www/html目錄),這樣子別人就沒有辦法盜連你的東東了~~
SetEnvIfNoCase Referer "^
Order Allow,Deny
Allow from env=local_ref
Allow from 127.0.0.1
這種很方便禁止非允許訪問URL引用各種資源文件
請大家注意,把第一句"^http://www.linji.cn
我應該這么寫的
"^
第二種是使用rewrite,需要增加apache的mode_rewrite,支持.htaccess文件目錄權限限制
在虛擬主機根目錄增加.htaccess文件,描述從定向,把非本地地址refer的圖片文件都從定向到警告圖片或者警告網頁上。
首先要確認你的服務器或空間的服務器解譯引擎為Apache2,還有支持.htaccess客戶設置文件,
如果你有自己的服務器就請先對./conf/httpd.conf 文件做以下修改
找到:#LoadModule rewrite_module modules/mod_rewrite.so
把前面的 # 給去丟
找到等一個 AllowOverride None 改為 AllowOverride All
重啟Apache2服務器
接下就是做一個 .htaccess 文件了,其 .htaccess 文件內容為
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://aaoo.net/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://aaoo.net$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.aaoo.net/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.aaoo.net$ [NC]
RewriteRule .*.(jpg|jpeg|gif|png|bmp|rar|zip|exe)$ http://down.yoyo.com.ru/err.html [R,NC]
其中有色的地方都是要改為你的:
紅色:就是改為你提供下載頁面的地址,也就是只有通過這個地址才可以下載你所提供的東東。
藍色:就是要保護文件的擴展名(以|分開),也就是說以這些為擴展名的文件只有通過紅色的地址才可以訪問。
綠色:如果不是通過紅色的地址訪問藍色這些為擴展名的文件時就回重定向到綠色地址上。
這個方法有個好處是,不同的虛擬主機用不同的描述定義。
接下就是怎么用 .htaccess 文件來實現防盜鏈了。
首先要在空間上建兩個目錄(當然目錄名隨你),一個為 web 另一個為 down ,
web 是用來放下載頁面的(或下載程序),down 當然就是放你提供的東東的啦,
把 .htaccess 文件的紅色部分改一下,改為http://你的域名/web。藍色部分
改為你要保護文件的擴展名。綠色部分改為http://你的域名/web。改后保存
.htaccess 文件把它上傳到 down 目錄。
還有第三種:
我在解決plog禁止盜鏈的時候,發現個問題,也算個好方法。
plog把所有資源都自己管理起來,用resserver.php來動態顯示,這樣統一的入口方便添加權限操作。
同時造成上面2種方法無法使用,因為不再是apache直接訪問資源文件,而是php通過文件讀取。
因此只能在代碼中做手腳:在讀取資源文件輸出之前,加如下判斷代碼
引用
$referer = $_SERVER['HTTP_REFERER'];
$selfurl = $_SERVER['HTTP_HOST'];
if(false == strpos($referer,$selfurl))
{
echo '非法盜鏈!';
exit(1);
}
這里有些偷懶,直接看引用地址中是否包含host地址,不過原理就是這樣,判斷referer是否是本站地址。
我們常常在下載的時候,也碰到盜鏈網站無法下載,報盜鏈的問題。要下載這類文件最簡單的方法就是改referer
比方flashget中,網址下面的"引用"一欄中,直接填寫下載地址就可以了。

--------------------------
09博客園紀念T恤新聞:
微軟:不一樣的PowerPoint 2010網站導航:
博客園首頁 個人主頁 新聞 社區 博問 閃存 找找看文章來源:
http://www.cnblogs.com/xiaoao808/archive/2009/08/21/1551756.html
posted @
2009-08-21 23:30 破名超難起 閱讀(330) |
評論 (0) |
編輯 收藏
這兩天完善了一下視頻轉換這個東西,以前做的那套東西上傳完之后就開始轉換,無法適應大并發量下的視頻轉換(我覺得同時有10個ffmpeg進程在轉視頻服務器肯定要掛掉),所以我用了另一套方案,視頻上傳之后先不轉換,把視頻的基本信息存到數據庫中,然后由程序定時的從數據庫中讀取數據,依次轉換視頻。具體做法是:1、上傳文件,將文件名存入數據庫,同時在數據庫標明videostat字段為0(表示未轉換)
2、通過程序,每隔30秒(根據不同情況可以改變)取出一個未轉換(videostat=0)且失敗次數小于5(confailtime<5)的紀錄
3、開始轉換視頻,這里要先將數據庫中videostat字段改為2(表示正在轉換)不然30秒鐘轉換不完下個進程又會讀到這條紀錄開始轉換......
4、等待轉換進程結束,如果成功將相應紀錄的videostat字段的值改為1(表示轉換成功),若轉換失敗則將失敗次數字段加一(confailtime=confailtime+1)
在鼓搗這東西的過程中,遇到了一個問題,如果一個進程先執行p.waitFor();方法而后輸出命令行中的結果是不行的,即:

Code
int flag = p.waitFor();
InputStream inErr = p.getErrorStream();
InputStream inIns = p.getInputStream();
BufferedReader brErr = new BufferedReader(new InputStreamReader(
inErr));
BufferedReader brIns = new BufferedReader(new InputStreamReader(
inIns));
// inErr讀取輸出信息開始
String strsErr = "";
String strErr = brErr.readLine();
while (strErr != null) {
strsErr = strsErr + strErr + "\n";
System.out.println(strErr);
strErr = brErr.readLine();
}
// inErr讀取輸出信息結束
// inIns讀取輸出信息開始
String strsIns = "";
String strIns = brIns.readLine();
while (strIns != null) {
strsIns = strsIns + strIns + "\n";
System.out.println(strIns);
strIns = brErr.readLine();
}
如果這樣執行的話進程會掛起,無法繼續下午,而正確的方法是先讀取命令行的數據,再來waitFor();
還有一點需要注意的是獲得命令行的輸出結果先要從錯誤流中獲得,即(ErrorStream),而非從輸入流(InputStream)中獲得,很有用的經驗。

--------------------------
09博客園紀念T恤新聞:
自由軟件基金會列舉Windows 7之七宗罪網站導航:
博客園首頁 個人主頁 新聞 社區 博問 閃存 找找看文章來源:
http://www.cnblogs.com/xiaoao808/archive/2009/08/04/1538824.html
posted @
2009-08-04 17:45 破名超難起 閱讀(272) |
評論 (0) |
編輯 收藏
很久不在這里發帖子了,最近在家閑來無事,想到轉視頻的那東西又要做了,遂翻出以前的帖子,看到一年前豐哥讓我做一下文件上傳的進度條....額~~那就做一下吧。
東西很簡單,主要用到commons-fileupload,其中有一個progressListener的接口,該接口可以實現實時更新已上傳文件的大小,有了這個還說什么呢?
給出代碼

代碼
package lc.progress;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import lc.progress.vo.fileUploadStatus;
import org.apache.commons.fileupload.ProgressListener;
public class myProgressListener implements ProgressListener {
private HttpSession session;
public myProgressListener(HttpServletRequest req) {
session=req.getSession();
fileUploadStatus status = new fileUploadStatus();
session.setAttribute("status", status);
}
/* pBytesRead 到目前為止讀取文件的比特數
* pContentLength 文件總大小
* pItems 目前正在讀取第幾個文件
* 只要在session中實時保存文件上傳的狀態(這里我用fileUploadStatus類來封裝)
*/
public void update(long pBytesRead, long pContentLength, int pItems) {
// TODO Auto-generated method stub
fileUploadStatus status = (fileUploadStatus) session.getAttribute("status");
status.setPBytesRead(pBytesRead);
status.setPContentLength(pContentLength);
status.setPItems(pItems);
}
}
然后在上傳得servlet或action中加入這樣一段代碼,就可以把自定義的progressListener添加進去

代碼
myProgressListener getBarListener = new myProgressListener(req);
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setProgressListener(getBarListener);
最后就是通過js來不斷的訪問另一個servlet來實時返回上傳狀態就可以了,限于篇幅我就不再貼代碼了,有興趣的讀者可以自己下載來看。
代碼下載(目標另存為就行了)

--------------------------
09博客園紀念T恤新聞:
網速調查報告:韓國互聯網網速全球居首網站導航:
博客園首頁 個人主頁 新聞 社區 博問 閃存 找找看文章來源:
http://www.cnblogs.com/xiaoao808/archive/2009/08/03/1537870.html
posted @
2009-08-03 19:46 破名超難起 閱讀(4898) |
評論 (7) |
編輯 收藏