blog.Ring.idv.tw

Articles

Flyer : Open Source Python + Flash Lite Framework

Flyer Framework.什麼時候會用到這個Framework呢?或者應該說為什麼有這個Framework的出現~

寫行動裝置的應用程式現階段有相當多種類可以選擇~ 這包含:Flash Lite、Java ME、Python、Symbian C++、Google Android 等等…

這裡我們拿「Flyer Framework」來說好了~ 它是一個利用Python程式在手機端執行當local Server的方式,以提供更多手機的應用功能給Flash Lite來使用~ 因為Flash Lite沒有辦法控制到使用手機的藍芽功能~ 也沒辦法取得手機的照相機~ 而這會導致許多應用的不方便性~ 所以有了Flyer Framework來解決這方面的問題~ 不過自從去年五月到現在~ 好像一直就沒有更新過了~

不過這樣類似的技術應用也值得參考~ 剛看了一下原始碼~ 它的Python程式全部還不到16kb,主要是利用「Flyer_1_0_35.py」開啟一個IP:127.0.0.1、Port:9100的Server Socket以提供Flash Lite使用XMLSocket來連線~

有興趣的人不妨玩玩看~ 不然也可以自行造車打造一個JavaME or Symbian C++的方式來結合Flash Lite ^^

2008-03-18 14:18:01 | Add Comment

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」搬移至你JBossTomcat部署的資料夾下

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在右下角的工具列中~

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

有裝過ApacheTomcat 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

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

::: 搜尋 :::

::: 分類 :::

::: 最新文章 :::

::: 最新回應 :::

::: 訂閱 :::

Atom feed
Atom Comment