Fold All / Expand All

2008年2月29日 星期五

Google Custom Search on yam media





利用Google可以自定搜尋網域的功能,在天空影音可以搜尋到不少音樂的試聽,例如要找燐光這首,搜尋字串輸入「燐光 茶太」,就可以看到不少連結囉。

2008年2月27日 星期三

[歌詞] アブラムシの唄~デモトラック Ver.~ feat. riya (eufonius)

アブラムシの唄~デモトラック Ver.~ feat. riya (eufonius)

Lyrics:岡田麿里
Music.Arrange:菊地創
Vocal:riya (eufonius)

すぐそこーに、あぶら虫
すぐそこーの、おなべのそこーに、あぶら虫
ランランラララ…
すぐそこーに、あぶら虫
すぐそこーの、牛乳瓶のそこーに、あぶら虫

2008年2月22日 星期五

MOD上的動畫?

既然人家都親自登門來介紹有什麼功能了,當然要稍微轉一下來看,不過這一看…還真是有趣。

(相機直接拍攝電視效果比較差)

本來看到魔法少女的標題,想說是Nanoha吧,結果跑出雷阿斯了@@,明明就是魔法騎士才對。另外還有貼心地標上了「演員:小光;小海」,鳳凰寺風就這樣被遺忘了…

魔法騎士是被放在兒童天地的動畫劇場套餐,裡面還有Slayers。而動畫劇場單點裡面有戰隊系列、Ultraman……魔法小護士!?這…該不會


只有這兩集,標上了輔導級。本來想說在兒童天地的應該要來個中配吧,結果還是日文原音,反倒有點失望呢XD。

另外在連續劇裡,有個日本動漫分區,因為演員名單實在太有趣,就每個都按進去看看,按著按著,突然跳出請輸入密碼!竟然有限制級的動畫

有看過おとボクTVA的可以解釋一下為什麼是限制級嗎。

其他頻道也掃過去後…結論是,唯一有興趣的台可能是BBC World吧,因為畫質比那115台好。

2008年2月18日 星期一

Pro JavaScript Techniques, chapter 4

Pro JavaScript Techniques
http://jspro.org/

chapter 4: Tools for Debugging and Testing

內容和標題一樣,介紹除錯與測試的工具。

首先是各家瀏覽器的Error Console,IE的很爛,大家都知道,不過微軟後來有出個Internet Explorer Developer Toolbar;Firefox的應該js programmer都用過了;Safari的如同上一篇提到,要自己手動去啟用才會出現;Opera的也做的不錯。

然後是DOM Inspectors,Firefox本身內建有一個,在安裝的時候要記得打勾裝起來;Safari的和Error Console一樣,要手動開啟,開啟方法;View Rendered Source,現在已經改名叫View Source Chart,是Firefox的extension,功用是將原始碼以塊狀及不同顏色呈現,對使用者而言,會比較容易看清楚原始碼。

Firebug,另一個Firefox的extension,已經可說是js programmer不可缺少的一項工具。

Venkman,還是Firefox的extension,最初開發目的是做為JavaScript Debugger,所以有debugger會有的功能,例如set break point之類。

Testing Tool
o JSUnit
o J3Unit
o Test.Simple

Enable Debug Menu and Web Inspector for Safari on Windows


Safari Version: 3.0.4 for Windows

Firefox有Error Console和DOM Inspector,其實Safari也有相似功能的東西,只是它們被藏起來了 ̄▽ ̄||,要使用的話必須要動點手腳打開。

[Debug Menu]
1. 開啟檔案「%APPDATA%\Apple Computer\Safari\Preferences.plist」,在Windows XP下預設是「C:\Documents and Settings\[username]\Application Data\Apple Computer\Safari\Preferences.plist」,其中的[username]是使用者名稱。
2. 在檔案裡加入<key>IncludeDebugMenu</key>
<true/>

3. 存檔,再開啟Safari,就會看到工具列上多一個Debug選項。

除了JavaScript Console之外,還有一些其他的功能,包括更改User Agent。

[Web Inspector]
1. 開啟檔案「%APPDATA%\Apple Computer\Safari\WebKitPreferences.plist」,在Windows XP下預設是「C:\Documents and Settings\[username]\Application Data\Apple Computer\Safari\WebKitPreferences.plist」,其中的[username]是使用者名稱。
2. 在檔案裡加入<key>WebKitDeveloperExtras</key>
<true/>

3. 存檔,再開啟Safari。在網頁的任意處按右鍵,右鍵選單多了一個「Inspect Element」選項。

Web Inspector長這樣

2008年2月17日 星期日

Pro JavaScript Techniques, chapter 3

Pro JavaScript Techniques
http://jspro.org/

chapter 3: Creating Reusable Code

這章主要是在介紹各家開發出來的東西,包括framework和一些tool。

framework包括:Prototype, dojo, YUI

出現很多次的Dean Edwards,提到了他的Base (A Base Class for JavaScript Inheritance), Packer (A JavaScript Compressor.).

另一位Douglas Crockford也不遑多讓,提到JSLint (The JavaScript Verifier), JSMin (The JavaScript Minifier), Classical Inheritance in JavaScript.

2008年2月16日 星期六

web喫茶よずりの 第209回 ゲスト:ゆうまお

部分語錄XD
「見た目はおとめ、ココロはプリンス」

「どうも、えびです」

発売日は二月十四日なんですが、失恋のうたが多いぜ。何か悲しいバレンタイン

「失恋三部作」

なんでrinoの初恋にうつった

「このやろう、誰に」
「いやいや、自分に」

「幸せは限界ないよ」

「シャッフル禁止」

二文字シリーズ
1.青春
2.孤独
3.初恋
4.根性
5.最愛
6.陽光
7.黒猫
8.元彼
9.実家
10.幸福
11.未来
12.終了

太搞笑了~~

2008年2月15日 星期五

Pro JavaScript Techniques, chapter 2

Pro JavaScript Techniques
http://jspro.org/

chapter 2: Object-Oriented JavaScript

根據作者的說法,其實對JavaScript而言,Object-Oriented這個詞是多餘的,因為js根本無法在沒有object的情況下運作。

但是在寫code的時候,有沒有利用到其Object-Oriented的特性,就差很多囉。

看完第二章之後發現,難怪之前都看不懂那堆js framework (e.g. jQuery, Prototype),因為對js的知識還停留在古早年代,每看一個範例就心驚膽跳啊,二十頁的內容就花了一個小時才看完,新增的資訊量實在太多了,所謂的"linear independent packet"啊。
(謎:呃…最後那句就太ヲタ向了吧…)

不知道這一本要花多久才能看完,Head First Design Patterns看完singleton之後又停住了…

2008年2月14日 星期四

某處歌詞數量前五名

1. 下川みくに (47)
2. 坂本真綾 (45)
3. 茶太 (38)
4. CooRie (37)
5. eufonius (29)

該說茶太りん的上升速度實在太快了嗎@@。

maaya的部分顯然是太偷懶了,不然要破百是輕而易舉的事。

mikuni的話則是39那張大部分沒有輸入,而網路上有些網站是連翻唱都算進去,不然這邊的cw曲應該是收最多的。

eufonius是因為加上自主製作的曲目,才比網路上的多。而CooRie明明是major盤,也沒多少人放啊…

2008年2月13日 星期三

Linux登出之後,讓程式繼續執行的方法

How to run python script in background after i logout
↑這篇裡面提到很多方法,包括利用cron或是screen。又,可以將Python script寫成daemon。

最後我採用的是非常簡單的nohup,單純在原本的指令前加上nohup即可。$ nohup python TinyHTTPProxy.py &

2008年2月12日 星期二

[耳コピー] 茶太 - 燐光

(耳コピー)

「燐光」

words : bassy music : bassy vocal : 茶太


消えない残像に
いつまで答えを求めているの
どれくらいの人を見送れば
元の場所へと帰れるだろう

汚れた僕の手じゃ
誇れるものなど何もないけど
それでも許されるものならば
その悲しみを僕に分ければいい

激しく散った光の残像の中
時はまたあの頃のままで
途切れた道のその先で
行き返せないまま
君はずっと何を見てるの

今まで重ねた記憶が悲しみなるのに
怯えては先に進めない
ほんの少し嘘をついて
うまく笑えたら
それはきっと答えに変わる


今まで背負ってた
荷物の半分 僕に預けて
君の求めるもの何ひとつ
今の僕には与えられないから

どんだけ君は傷つき 繰り返すのだろう
また同じ場所から動けず
変わり行く世界の中で
一人違う季節
終われない 今もこうして

間違いだらけの世界
つかめない未来
いつだって僕は味方だよ
儚いその瞳の奥
映る景色の中
見た夢はあの場所のまま

いつかまた同じように
君が悲しむのなら
僕は上手に騙せるから

激しく散った光の残像の中
時はまたあの頃のままで
途切れた道のその先で
行き返せないまま
君はずっと何を見てるの

今まで重ねた記憶が悲しみなるのに
怯えては先に進めない
ほんの少し嘘をついて
うまく笑えたら
それはきっと答えに変わる

eufonius Internet Radio 第八回

網站上寫成「2007/02/10」更新啦……其實是2008年。最近更新比較頻繁了,沒有像第2回到第3回之間隔了超過1年。

這集的主題是單曲「リフレクティア」,動畫「true tears」的片頭曲。

一開始先提到聖誕節期間限定在eufonius官網上放的原創歌曲(長度46秒)。

「リフレクティア」是兩個英文單字合在一起的造語,リフレク是由リフレクト(反射),而ティア…riya有說,可是聽不懂是什麼 ̄▽ ̄||,菊地創問說有沒有tear的意思,因為是true tears嘛,riya說當時沒有這個想法,不過要想成是"涙"也可以啦。
(後記:リフレクティア是由「reflect」與「tier」所組成的,「tier」有段、層的意思)

聽眾來信,作詞和作曲是哪一邊先完成呢?回答是,幾乎都是菊地創的曲子先出來,再讓riya填詞,例外是「バランス」這一首(收錄於專輯「スバラシキセカイ」)。而所花的時間呢?兩人都是大概一天左右就把曲或詞完成,當然是從認真開始作業才算,收到曲子三天後才開始寫詞也是常有的事,不過認真開始要寫的話,大約是一天內會完成。

聽眾來信第二封,平時會聽自己的曲子嗎?會到卡拉OK唱自己的歌嗎?
riya是偶爾會聽,菊地創還蠻常聽,因為工作的關係。riya說「リフレクティア」現在每週都會聽喔。而卡拉OK,去的機會不多,不過有去的話,會唱自己的歌,然後菊地創突然蹦出一句「カラオケツーア」,如果有的話也很有趣吧。另外,會下載自己的歌來當作手機鈴聲,所以聽到自己的歌的機會其實還蠻多的。

cw曲「elekto」則是Esperanto(世界語),意思是「選択する;選ぶ」,不過字典查是名詞@@(elekto - Wiktionary)

最後廣告一下,專輯「metafysik」,菊地創最喜歡的是「遠い夏空」這首,riya則是「wish」。然後當然就是單曲「リフレクティア」,請大家記得收看true tears,沒辦法收看的,記得買DVD。而「true tears」的音樂也是菊地創負責的,原聲帶將於2月27日發售(LACA-5752)。

Official Site「frequency => e」:http://www.eufonius.net/

Improving BitTorrent: A Simple Approach::IPTPS 2008

DISCLAIMER: This review is written by a non-native speaker of English. There might be mistakes, misunderstandings, and errors.

這篇是改變seeding behavior,對付不上傳的使用者。

先前的研究指出,free-riders大多是從seed下載,此篇作者藉由讓seed減少傳給free-riders,相對地會提供一般使用者較多資料,進而達到增進整體效能。

方法是,讓seed優先傳給在下載階段位於開始與最後的peer。一開始下載會因為沒有piece可以作為籌碼,所以讓seed優先提供,下載最後階段則是缺乏的piece可能持有者較少,向seed要的話保證有。

對free-riders而言,當進入下載的中間階段,因為無法從seed拿到東西,只能與一般peer溝通,在不上傳的情況下,只能以較低速度下載,甚至是無法獲得資料。

實驗是用INFOCOM 2006那篇的simulator,實作方法有sort-based和threshold-based。sort-based是由誰最接近兩端來排序,做為seed提供上傳的優先順序;threshold-based則是落在事先決定好的兩端區塊內才會提供上傳。

simulation結果,sort-based能使free-riders完成下載所需時間增加,一般使用者稍微減少;threshold-based比sort-based更能讓ree-riders增加下載時間,但是一般使用者所需時間要增加。

結論,很簡單的概念,讓seed減少為free-riders服務的機會,方法則是盡量服務位於下載階段兩端的使用者,直接採用的話,的確是有抵制free-riders的作用,但僅只於限速不上傳的使用者,如果是經過修改的BitTorrent client,要反制這個方法非常容易。作者在Discussion裡也有提到,但只說要修改source code比較困難,一般使用者無法做到。

2008年2月8日 星期五

NBA 2008 All-Star

[Rookie Challenge]
Rookie
Mike Conley (Memphis)
Kevin Durant (Seattle)
Al Horford (Atlanta)
Jamario Moon (Toronto)
Juan Carlos Navarro (Memphis)
Luis Scola (Houston)
Sean Williams (New Jersey)
易建聯 Yi Jianlian (Milwaukee)
Jeff Green (Seattle)
Sophomore
LaMarcus Aldridge (Portland)
Andrea Bargnani (Toronto)
Ronnie Brewer (Utah)
Jordan Farmar (Lakers)
Daniel Gibson (Cleveland)
Rudy Gay (Memphis)
Paul Millsap (Utah)
Rajon Rondo (Boston)
Brandon Roy (Portland)

[Skills Challenge]
Jason Kidd
Chris Paul
Deron Williams
Dwyane Wade (2007 Champ)

[Three-Point Shootout]
Kobe Bryant
Daniel Gibson
Richard Hamilton
Jason Kapono (2007 Champ)
Steve Nash
Peja Stojakovic

[Slam Dunk]
Gerald Green (2007 Champ, Minnesota)
Rudy Gay
Dwight Howard
Jamario Moon (Rookie from Toronto)

今年三分球還蠻有趣的,有Kobe和Peja耶

2008年2月7日 星期四

スパロボOGラジオ うますぎWAVE 第57回 ゲスト:松本梨香

今回のゲストさんは松本梨香です。

松本和遠藤兩個人鬧得很高興,連杉田都插不太上話@@。

松本:「ゲットだぜ」
遠藤:「わ、似てる」
松本:「よく似てるって言われるよ」
上面這個neta玩了兩次…

一開始問了松本對於JAM Project的感想,相當感性的發言。

然後是問「哪個傢伙絕對不能原諒」,答案果然是影山,不過原因是,說早安打招呼,結果是飛踢回應,不然就是來個金臂勾
松本:「好歹我也是女生」
遠藤:「耶,是這樣嗎」
究竟平時JAM玩到什麼程度啊…

遠藤:「關於錄音時的狀態,有什麼感想嗎」
松本:「不想說耶」
遠藤說JAM錄音的時候,誰唱哪一句一開始是沒有決定好的,邊唱邊決定,常常錄音時間弄很久,到深夜一兩點是有過的。

大家都知道,松本梨香也有擔任聲優的工作,杉田說曾經在ドラゴンドライブ的現場有見過(是的,就是mikuni擔任主題曲,不太紅的那部作品Dragon Drive),不過松本完全沒有印象@@。

之後是No Border相關的感想。

うただま單元是由松本梨香唱遊戲「サンライズ英雄譚2」Ending Theme「運命の糸」。

這集杉田不太能插上話啊,當然相沢舞就更不用提啦,不過光是遠藤和松本兩個人的對話就歡樂到不行了。

Vim for Windows x64

http://georgevreilly.com/vim/

下載Win64 binaries的壓縮檔(目前是vim71-002-x64.zip),解開來之後執行install.exe,會有一些選項,選擇完之後,輸入d (do it)。

x64版最主要的部分是在於按右鍵會出現的Edit with Vim,如果用win32版的話,右鍵選單是加不進去的。

結城アイラ一体何者?

no official site
no photo available

even in Lantis artist list, Aira Yuuki does not own a link!

but there are already three singles and some songs in VA album.

who is Aira Yuuki???

如同謎一般的結城アイラ

沒有官網、沒有照片,甚至在Lantis網站的藝人列表裡面也沒有。

然而目前為止已發售3張單曲、部分歌曲收錄於VA專輯中。

究竟結城アイラ是何許人也。

1. Lantis的秘密武器,要到適當時機才會公開。
2. Virtual Singer
3. 再想一個吧

然後一和二不衝突是怎樣…

あるフォックス

以前有考慮過,但是一直沒有做的事情………不過做這個也是要有目標啊,單純只是blocking的話,根本不需要深入分析,要弄到什麼程度呢?

enough to fork a cross-platform project?

好像沒什麼意義就是了,可以做個unicode support patch這樣嗎

2008年2月6日 星期三

繼續碎碎唸

先前文章:碎碎唸

其實我覺得自己有點神經質了,對這方面而言。網路上流傳歌詞之觀察裡也講過了,完全正確的歌詞真的存在嗎?不過今天對三首,三首都有錯,然後歌詞タイム也給我錯是怎樣,兩邊錯一樣的話就抓不出來了(汗)。

結論,先推結城アイラ這張「セカイノナミダ」XD。

檜山修之のあにめじ湯 第44回 ゲスト:中村悠一

這集來賓是中村悠一!

不過…怎麼這麼正經,這和我認識的ゆうきゃん不一樣啊。

這集ゆうきゃん的身份是以しゅごキャラ!的月詠幾斗,這是一部人物看起來很可愛,但是以戰鬥為主線的故事!好啦,其實就是傳統兒童向的好人打壞人,主角是小學五年級,而ゆうきゃん的角色則是高中生,所謂的イケ面キャラ,但是也如同許多作品的イケ面角色常有的問題,雖然很帥………可是台詞不多XDD

「出番が欲しい!」

しゅごキャラ!的收錄現場非常年輕,許多人甚至是第一次接声優的工作,現場年齡最大的或許是高木礼子小姐,查了一下,也才34歲啊。

然後提到ゆうきゃん其他的工作,接了Gundam也接了Macross,檜山覺得很厲害,ゆうきゃん就補充說,神谷浩史也是這兩部都接了。

這麼說來神谷也算是2007大爆發,之前是也有一些主役,不過知名度沒有特別炒起來,大爆發的開端算是絶望先生吧。

後面有問答,ゆうきゃん是幾乎不喝酒的,吃飯的時候可以看到一口可樂、一口沾著わさび醬酒的生魚片的景象,頭一次看到的人都會很吃驚@@。烏龍茶對喉嚨不好,唱歌的時候喝反而會容易渴(?)。

猫派!(でも飼ってない)
好きな食べ物:肉
休みの時間は何をしてます:大抵寝る
好きな異性のタイプ:色白(なんか変だな)
檜山に初めて見た第一印象:ごめんなさい(XDDDD,因為安元洋貴和檜山說最近有個叫中村的很囂張,所以第一次見到檜山的時候,檜山:「這傢伙就是之前聽說很囂張的那個啊」,中村:「ごめんなさい」)
尊敬する人物:磯部勉(大好きで業界を目指す)

「一緒に家の中でひっこもって」XDDDDDD

ゆうきゃん這樣不行啊,要成為敏捷的胖子也不能一直待在家裡。

Small Is Not Always Beautiful::IPTPS 2008

DISCLAIMER: This review is written by a non-native speaker of English. There might be mistakes, misunderstandings, and errors.

可看點在section 4 Discussion,其他都算common sense吧。

這篇在討論BitTorrent的piece size對performance的影響,基本上是設越小越有利,理由是BitTorrent必須完整下載一個piece後才能對其他人宣佈擁有這個piece,所以piece切越小,可分享的piece數當然比較多,整體的diversity會比較大。然而,piece size越小,代表torrent檔內的hash值也越多,使得torrent檔的大小增加,而且peer之間在溝通時,其bitfield message也要比較大,HAVE message傳送的次數也要比較多,簡言之就是communication overhead增加。

在這裡先講一下作者的實驗方法,用Mainline BitTorrent 4.0.2,設定值都照預設,upload slot是四個,1個seed與40個leecher,leecher同時進場,一完成就閃,在PlanetLab上面跑,下載不限速,上傳seed是200kB/s,leecher是20~200kB/s做uniform distribution。實驗的torrent大小從1MB到100MB,piece size從16kB到2048kB,block size (subpiece size)固定為16kB。

在檔案大小只有5MB的時候,把piece size設為16kB可以得到最好的效果(越小越好),而100MB時,則是256kB最佳(所耗時間呈V字型,即太大太小都不好)。

而作者在Discussion提出一個論點,當檔案大小較大時,piece size越小越好不成立的主因,不是因為communication overhead,實際跑的結果,overhead從1%變成9%,作者認為這不是最主要的原因。在Discussion提出兩個可能性,一個是piece size太小時,block(subpiece)數量少,則原本BitTorrent提出subpiece概念之「減低request delay」功能大幅下滑;另一個則是TCP effect,當檔案大小較大,固定對同一peer下載的話,TCP window可以穩定向上增加,如果piece size小,可能導致常常換peer下載,TCP windows沒辦法有效上升,進而影響效能。

至於subpiece is unnecessary when content size is small這點就很爛,本來BitTorrent設計就不是為小檔(文中以5MB為例)。此論點就實用性而言是零,學術上的話,可以當作是為求完整性的論點。

Python: Set socket timeout

import socket

timeout = 0.5

socket.setdefaulttimeout(timeout)

default value of timeout is None

2008年2月3日 星期日

鋼彈圈圈第17話

三小強都一定要搞成惹人厭嗎…

ユニオン這邊已經受到嚴重打擊,可是教授都掛掉了,グラハム有辦法拿到新機體嗎?有種之後會壞掉路線的感覺。

然後入野小朋友這邊的線還是看不懂以後要怎麼演,應該不會只是個平民觀點吧。

web喫茶よずりの 第207回

web喫茶よずりの

此回的來賓是marble,和上次一樣テンション低い,不過這就是marble的特色吧XD。

這次來宣傳在2008年2月6日發行的第一張專輯「虹色ハミング」。

聽marble兩人講話真的是很~~有趣,節目裡也說,live活動時的MC究竟是什麼情況,還真想聽看看。

虹色ハミング(Lantis)

話說ゆうまお第二張專輯「someday」要在2月14日發售了。Lantis網頁上把"蒼空にくちづけたら"標上新曲,不過這首在sola Image Album已經出來過啦。

Download CooRie PV from special site

如何下載CooRie特設網站上的「君DK」PV

CooRie new album「旋律のフレア」特設サイト

該網站上有放「君DK」90秒PV,但是要下載還費了一番功夫

請下載Orbit Downloader,開啟Grab++,然後重新整理「旋律のフレア」特設網站。

Orbit Downloader 2.6.1測試結果會有三個連結出現,請選擇下載071222_coorie_90s.flv即可。

附註:
如果直接餵網址rtmp://fms-01.jflat.jp/01a44/071222_coorie_90s.flv給Orbit Downloader的話,無法成功下載。如果要直接餵網址的話,必須將副檔名.flv拿掉,也就是餵rtmp://fms-01.jflat.jp/01a44/071222_coorie_90s才能下載成功。

2008 NBA All Star Game Roster

Eastern Conference:
Dwight Howard
Kevin Garnett
LeBron James
Dwyane Wade
Jason Kidd

Chris Bosh
Antawn Jamison
Caro Butler
Paul Pierce
Joe Johnson
Richard Hamilton
Chauncey Billups

Western Conference:
姚明(Yao Ming)
Tim Duncan
Carmelo Anthony
Kobe Bryant
Allen Iverson

Amare Stoudemire
Dirk Nowitzki
Carlos Boozer
David West
Brandon Roy
Steve Nash
Chris Paul

Head Coach:
Eastern: Doc Rivers
Western: Byron Scott

評:
沒有雷阿倫啊…,不過要換的話不知道要換誰,很久沒仔細看stat。東區方面有三個明星賽新生,Chris Paul是沒話說,在Rookie year就完全展現與其他同梯球員是不同程度。David West與Brandon Roy是另兩位新生。Jason Kidd重返明星賽先發,可喜可賀,有Kidd的明星賽才好看,傳球大家都不錯,不過等級上還是有差。

其他惡補一下資料再來談好了。

2008年2月2日 星期六

stripslashes() for Python

In PHP, we have stripslashes() and addslashes(). In Python, addslashes() is similar to re.escape(). The difference is re.escape() would return string with all non-alphanumerics backslashed when addslashes() only adds backslashes before single quote('), double quote("), backslash(\) and NUL (the NULL byte).

The following code can perform the same effect of stripslashes()re.sub(r'\\(.)', r'\1', string)

2008年2月1日 星期五

A Measurement Study of ATtacks on BitTorrent Leechers::IPTPS 2008

DISCLAIMER: This review is written by a non-native speaker of English. There might be mistakes, misunderstandings, and errors.

The authors describe two BitTorrent attacks, and perform passive and active measurements to evaluate the effectiveness of these attacks.

o Fake-Block Attack
o Uncooperative-Peer Attack

Fake-Block Attack:
The attacker sends fake block to victim. This results hash failure, then the victim has to re-download all blocks of that piece.
Question: BitTorrent client sends request of one piece to different peers? Or one piece only download from the same peer except in end game mode?

Uncooperative-Peer Attack:
The attacker only sends handshake or bitmap message, no block transfer (either true or fake block).

Passive Measurement:
Download a torrent for album titled ``Echoes, Silence, Patience & Grace'' from ``Foo Fighters''. Using Azureus and uTorrent. Results include delay ratio, peer distribution. Peer distribution is obtained from parsing packet trace (self-made parser). Over half are no-TCP-connection peers (peer leave the network, or behind firewall or NAT). Azureus client have chatty peers, i.e. one type of uncooperative-peer, no fake-block peers. uTorrent in contrast, only has fake-block peers, no chatty peers.
The authors also perform the measurement with or without IP filter (PeerGuardian). When IP filter is active, Azureus client can finish the torrent in a shorter time both in Ethernet and DSL environment. With IP filter, uTorrent can obtain little gain in Ethernet environment, but huge effect in DSL environment. Because fake-block peers result re-downloading. Ethernet users can download from others quickly, but DSL users cannot.

Active Measurement:
Self-made crawler gathers peer list from tracker and gossip message (Peer Exchange), no DHT source. Then test these peers to detect chatty peers, fake-block peers. Torrent type is top box office movie.

Conclusion:
作者的結論是,雖然觀察到對BitTorrent的攻擊,但是對使用者的影響沒有非常大(delay ratio at most 50%),因為BitTorrent下載時,通常都是丟著讓它跑,作者認為除非能使下載時間延長至三倍(最少兩倍),才算是對使用者有影響。
又,IP filter並不能完全擋掉所有壞人,設計一個聰明的線上演算法來抓壞人是需要的。


又是一篇傳統的Keith Ross類型,passive and active measurement。

按照paper的說法,Azureus client沒有觀察到fake-block peers(作者沒有說Azureus不會受到這樣的攻擊),究竟對同一個piece,client會送request給不同peer還是對同一個peer呢?嗯…開uTorrent起來看的感覺,應該是會送給不同peer,數個peer的reqs欄位寫著2 | 0,但是Pieces的部分只有兩個piece在等。所以還是看implementation?作者在paper中沒有提到測試所使用的Azureus和uTorrent的版本。

再來是找碴時間,在第4頁有一段``The fake-block attack is different from chatty-peer attack in that it doesn't require many IP addresses to launch the attack.'',是那個誰「require many IP addresses」,為什麼?
(謎:paper是你讀的,你不知道誰知道啊。)

還是第4頁,``An interesting feature of Azureus is that Azureus clients have the feature of exchanging gossip messages with each other for exchanging peer lists.'',這不就是所謂的PEX嗎?根據TheoryOrg所記載,PEX有Azureus派和uTorrent派(這不就和DHT一樣了嘛…),所以這篇的作者有實作Azureus派,而沒有uTorrent派。


結論,這篇提到的兩種BitTorrent attacks所帶來的影響,不如以往pollution或poison來得大,事實上目前對BitTorrent影響較大的還是各ISP端下手的traffic shaping (even blocking),目前學網要開Protocol Encryption才能跑,種花電信則是較放任的態度,只有對台灣、大陸方面進行流量管制,其實學網會擋的主要原因也是RIAA、MPAA的信收太多了,不然才懶得買機器來擋。

話說現在還是不知道為什麼學網跑UT就龜到不行,BC和AZ也頂多過百,libtorrent系的就可以衝數M…

鋼彈圈圈第16話

後半段是總集篇(汗)

這集新登場三人的声優分別是:
小西克幸
浪川大輔
釘宮理恵

啊…ゆうきゃん沒什麼台詞,就沒什麼心得XD

pyLyricRetriever: thread, ajax loading gif

on svn

把簡單的thread功能加進去了,這樣就不會整個window卡死,不過跑很久的事實並沒有改變(是種花電信的問題嗎?),所以把Ajax loading gif加進去(icon credit for Ajax loading gif generator),看到一個圖示轉啊轉,似乎對user experience有比較好,雖然等的時間一樣久,但是有個東西在轉就比較等得下去(?)。

是該來轉換路線到pyComicDownloader了?
#!/usr/bin/python
# coding: utf-8
import os
import wx
import wx.animate
import threading
from PythonCard import model, dialog, log
import lyric_engine

class UrlThread(threading.Thread):
def __init__(self, url, window):
threading.Thread.__init__(self)
self.window = window
self.url = url

def run(self):
engine = lyric_engine.Lyric(self.url)

try:
log.debug('in UrlThread')
lyric = engine.get_lyric()
self.window.thread_finished(lyric)
except IOError:
self.window.error_io_erorr()
except TypeError:
self.window.error_type_error()

class Main(model.Background):
def on_initialize(self, event):
self.components.urlTextField.setFocus()
self.lyric = ''

ag_fname = 'waiting.gif'
ag = wx.animate.Animation(ag_fname)
self.ag_ctrl = wx.animate.AnimationCtrl(self, -1, ag)
self.ag_ctrl.SetPosition((289, 100))
self.ag_ctrl.Hide()

def on_menuFileSave_select(self, event):
"""Save content in urlTextField using UTF-8 encoding"""
# default save directory in home dir
save_dir = os.path.expanduser('~')
if os.name == 'nt':
# windows default in Desktop
save_dir = os.path.join(save_dir, u'Desktop')

result = dialog.fileDialog(self,
'Save',
save_dir,
'lyric.txt',
'Text Files (*.txt)|*.txt|All Files (*.*)|*.*',
wx.SAVE | wx.OVERWRITE_PROMPT,
)

if result.accepted:
f = open(result.paths[0], 'wb')
string = self.components.lyricTextArea.text
f.write(string.encode('utf8'))
f.close()

def on_activate(self, event):
self.components.urlTextField.setFocus()

def on_queryButton_mouseClick(self, event):
# get lyric page url
url = self.components.urlTextField.text

# processing
self.process_url(url)

def on_testUrl_command(self, event):
"""based on the name of menu item, do lyric site test"""
raw_name = event.target.name
site_name = raw_name[raw_name.find('_') + 1:]
self.components.urlTextField.text = lyric_engine.get_test_url(site_name)

# do query
self.on_queryButton_mouseClick(event)

def on_launchBrowser_command(self, event):
""" based on the name of menu item, launch browser to the site"""
raw_name = event.target.name
site_name = raw_name[raw_name.find('_') + 1:]
self.open_web_link(lyric_engine.get_site_url(site_name))

def open_web_link(self, url):
import webbrowser
webbrowser.open_new(url)

def process_url(self, url):
# verify url, if invalid, popu a warning dialog
url = self.verify_url(url)
if url == False:
self.show_invalid()
return False

#
self.lock_input()

# call lyric engine to get lyric
self.url = url
thread = UrlThread(url, self)
thread.start()

def thread_finished(self, lyric):
# show lyric
self.show_lyric(self.url, lyric)

self.statusBar.text = 'lyric retrieved!'

self.unlock_input()

def show_lyric(self, url, lyric):
# set the first line as the url of lyric
# then the following is the lyric
self.statusBar.text = 'showing lyric'
# string = unicode('lyric from '+url) + u'\n\n' + lyric
string = lyric
self.components.lyricTextArea.text = string

def get_lyric(self, url):
""" choose different processing function to handle """
self.statusBar.text = 'processing url...'
engine = lyric_engine.Lyric(url)

try:
lyric = engine.get_lyric()
except IOError:
raise

return lyric

def verify_url(self, url):
""" check if 'http://' is in the input string """
if url.find('http://') == -1:
return False
else:
return url

def show_invalid(self):
self.statusBar.text = 'invalid url'
result = dialog.alertDialog(self, 'Invalid URL', 'Error')

def error_type_error(self):
log.debug('TypeError')
self.unlock_input()
result = dialog.alertDialog(self, 'this URL is not supported', 'Error')

def error_io_erorr(self):
log.debug('IOError')
self.unlock_input()
result = dialog.alertDialog(self, 'IOError', 'Error')

def lock_input(self):
# disable query button (avoid multiple queries) and url text field
self.components.queryButton.enabled = False
self.components.urlTextField.enabled = False

# show loading icon
self.components.lyricTextArea.visible = False
self.ag_ctrl.SetBackgroundColour(wx.Colour('PINK1'))
self.ag_ctrl.Play()
self.ag_ctrl.Show()

def unlock_input(self):
# enable query button and url text field
self.components.queryButton.enabled = True
self.components.urlTextField.enabled = True

# hide loading icon
self.ag_ctrl.Stop()
self.ag_ctrl.Hide()
self.components.lyricTextArea.visible = True

if __name__ == '__main__':
try:
import psyco
psyco.full()
except ImportError:
pass
app = model.Application(Main)
app.MainLoop()