blog.Ring.idv.tw

Articles

CSProxy - 跨平台&跨瀏覽器&維持一般網頁操作模式

今天,「CSProxy」已接近完成度90%了~

它是一個俱備維持一般網頁上的操作模式,且能夠跨平台以及跨瀏覽器的一種技術應用~

以往我們只能透過Cross Domain Proxy的方式請求外部的網頁資源~

不過一旦遇上大量的請求~ 有可能導致Proxy負荷過載~ 或是遭到對方伺服器封鎖的情況發生~

面對這樣的需求,我們需要一種技術能夠透過客戶端請求的方式,來將運算資源分散到各個客戶端的電腦上,如此一來也可以避免遭受到對方伺服器的封鎖~

所以我們提出一個「CSProxy」的技術應用來達成這樣的方式~

「CSProxy」.可以看成「Client Side Proxy」~ 也可以是「Cross Site Proxy」~ 巧合的是我和學弟兩人的英文名字也是「Ching Shen、Chen Shin」^^

有待將此「CSProxy」論文完成並發表後,再行附上更詳細的技術實作細節 ^^V

2008-03-16 23:31:19 | Comments (3)

Nutch - 打造一個屬於自己的搜尋引擎

首先請先至Nutch官網下載「nutch-0.9.tar.gz」~

安裝步驟

請先解壓縮「nutch-0.9.tar.gz」

tar zxvf nutch-0.9.tar.gz

然後建立一個爬行器的爬行清單檔案~ 這裡以筆者的部落格為範例:

cd nutch-0.9
echo http://blog.ring.idv.tw/index.ser > urls

修改「conf/crawl-urlfilter.txt」中的「MY.DOMAIN.NAME」改成下述:

+^http://([a-z0-9]*.)*ring.idv.tw/

修改「conf/nutch-site.xml」,加上一個「http.agent.name」的參數值:

<property>  
<name>http.agent.name</name>  
<value>crawler</value>  
</property>  

啟動Crawler開始抓網頁~ 預設啟動十個Thread來爬~

bin/nutch crawl urls -dir ring -depth 5 -topN 50 &

抓完網頁的相關資料並建立索引之後~ 就要開始部署搜尋引擎了~

請將「nutch-0.9.war」搬移至你JBoss或Tomcat部署的資料夾下

mkdir nutch.war
mv nutch-0.9.war nutch.war
unzip nutch-0.9.war

修改「nutch.war/WEB-INF/classes/nutch-site.xml」,為它加上要搜尋的資料夾,也就是我們剛剛透過Crawler所建立的那些索引檔~

<property>  
<name>searcher.dir</name>  
<value>/usr/local/data/nutch-0.9/ring</value>  
</property>  

修改「server.xml」,如果你的環境是JBoss 4.2.2GA的話~ 請參考下述做法:

cd JBoss-4.2.2.GA/server/default/deploy/jboss-web.deployer
vi server.xml

找到「<Connector port="8080"」這一行,為它加上「URIEncoding="UTF-8" useBodyEncodingForURI="true"」即可~ 避免利用Get傳送方式導致編碼錯誤~

最後啟動你的JBoss來玩嚕~

參考資源

.Nutch 笔记(一):Quick Start

.Nutch 0.9 安裝心得(小攻略)

相關資源

.Introduction to Nutch, Part 1: Crawling

.Introduction to Nutch, Part 2: Searching

.Nutch 笔记(二):Craw more urls and Recrawl

.Nutch 初体验之二

2008-03-16 16:41:58 | Add Comment

Adobe AIR: 打造自己的SystemTray

每次當我們將電腦一開機,進入到桌面系統之後~ 隨之而來的就是載入一連串的常駐程式~ 或是開機自動執行的相關程式~

而這些程式有些會出現System Tray Icon在右下角的工具列中~

下述程式就是要處理這樣的動作滴~ 不過我改了一點小東西~

有裝過Apache 或 Tomcat Server嗎?它們右下角的System Tray Icon會隨著啟動或關閉伺服器而有所變化~ 底下程式可以為你做到~ 玩玩看吧~ ^^

P.S. 請準備16x16、128x128的圖示

SystemTray.as

/**
 * Date: 2008-03-11
 * Shen (http://blog.ring.idv.tw)
 **/
package 
{
	import flash.desktop.*;
	import flash.events.*;
	import flash.display.*;
	import flash.net.*;
	
	public class SystemTray
	{
		private static var _instance:SystemTray;
		public static function getInstance():SystemTray
		{
			if(SystemTray._instance == null)
			{
				SystemTray._instance = new SystemTray(new PrivateClass());
			}
			return SystemTray._instance;
		}
		public function SystemTray(pvt:PrivateClass)
		{
			trace("SystemTray initialized!");
			NativeApplication.nativeApplication.autoExit = false;
			var icon:Loader = new Loader();
			var iconMenu:NativeMenu = new NativeMenu();
			var exitCommand:NativeMenuItem = iconMenu.addItem(new NativeMenuItem("Exit"));
			exitCommand.addEventListener(Event.SELECT, Exit);

			if (NativeApplication.supportsSystemTrayIcon)
			{
				icon.contentLoaderInfo.addEventListener(Event.COMPLETE, iconLoadComplete);
				icon.load(new URLRequest("icons/StopWatchIcon16.png"));

				var systray:SystemTrayIcon = NativeApplication.nativeApplication.icon as SystemTrayIcon;
				systray.tooltip = "CSProxy";
				systray.menu = iconMenu;
			}

			if (NativeApplication.supportsDockIcon)
			{
				icon.contentLoaderInfo.addEventListener(Event.COMPLETE,iconLoadComplete);
				icon.load(new URLRequest("icons/StopWatchIcon128.png"));
				var dock:DockIcon = NativeApplication.nativeApplication.icon as DockIcon;
				dock.menu = iconMenu;
			}
		}
		private function iconLoadComplete(event:Event):void
		{
			NativeApplication.nativeApplication.icon.bitmaps = [event.target.content.bitmapData];
		}
		public function onConnected()
		{
			var icon:Loader = new Loader();
			icon.contentLoaderInfo.addEventListener(Event.COMPLETE,iconLoadComplete);
			
			if (NativeApplication.supportsSystemTrayIcon)
				icon.load(new URLRequest("icons/logo16.jpg"));
				
			if (NativeApplication.supportsDockIcon)
				icon.load(new URLRequest("icons/logo128.jpg"));	
		}
		public function onDisconnected()
		{
			var icon:Loader = new Loader();
			icon.contentLoaderInfo.addEventListener(Event.COMPLETE,iconLoadComplete);
			
			if (NativeApplication.supportsSystemTrayIcon)
				icon.load(new URLRequest("icons/StopWatchIcon16.png"));
				
			if (NativeApplication.supportsDockIcon)
				icon.load(new URLRequest("icons/StopWatchIcon128.png"));	
		}
		private function Exit(event:Event):void
		{
			NativeApplication.nativeApplication.icon.bitmaps = [];
			NativeApplication.nativeApplication.exit();
		}
	}
}
class PrivateClass
{
	public function PrivateClass( )
	{
		trace("PrivateClass called");
	}
}

Flash

var singleton:SystemTray = SystemTray.getInstance();
//改變啟動圖示
singleton.onConnected();
//改變關閉圖示
singleton.onDisconnected();

相關資源

.Working with the dock and the system tray

.Flash LiveDocs:Taskbar icons

2008-03-11 15:43:36 | Comments (4)

Preparing for the Flash Player 9 April 2008 Security Update

Preparing for the Flash Player 9 April 2008 Security Update

下個月Flash Player 9 將有安全性的更新~

主要專注於「Policy file control」、「DNS rebinding attack」的安全性更新~

由於這和我目前預計開發的「CSProxy」有點相關~ 所以值得關注...

有興趣的人可以參考Stanford Security Lab所發表的:「Protecting Browsers from DNS Rebinding Attacks」

2008-03-11 11:16:30 | Add Comment

這位騎士你也太衝了吧~ 哈~

今天和老師一同去新竹討論一些事項~ 就在回途台中的中港路上~ 停一個紅燈時~

這位重機騎士就很衝地直接停在我們前面~ 哈哈~ 猛啊~

不過這幾天仍呈現忙碌狀態~ 尤其是今天又多了一件緊急的要事必須趕在禮拜四之前完成~

當我寫好這篇po文時~ 發覺... 我剩下不到七十二小時... 呃...

2008-03-11 00:25:29 | Add Comment

Next Posts~:::~Previous Posts
Copyright (C) Ching-Shen Chen. All rights reserved.

::: 分類 :::

::: 最新文章 :::

::: 最新回應 :::