Fold All / Expand All

2007年4月30日 星期一

The Ghost In The Browser: Analysis of Web-based Malware::HotBots 2007

DISCLAIMER: This review is written by a graduate student and he is not a native speaker of English. There might be mistakes, misunderstandings, and errors.

This paper provides a brief overview of the current state of malware on the web. The authors categorize four different ways to enable browser exploitation, and present examples found on the Internet. They also do measurement analysis from twelve months trace of Google's crawled web page repository. Web-based malware has different behavior from traditional botnets. Botnets has a bot master who would push out commands. In the other hand, web-based malware uses a pull based way to connect to a HTTP server, and get instructions and updated program. These malwares usually want to expose user's sensitive information such as banking and medical records. Detecting malicious web pages is not an easy job. Code obfuscation can effectively lead signature-based detection to failure, but reputable web-pages sometimes also obfuscate the JavaScript they serve. So obfuscation is not a good indicator of malicious web pages. For users, it is really hard to protect themselves from the danger of web-based malware.

==
嘖嘖嘖
看完這篇,真的覺得很恐怖
當然,這裡提到的web-based malware,有相當大的比例是在使用Internet Explorer的情況下才會中招。然而,對Windows使用者來說,不使用Internet Explorer其實是一件很困難的事。除了眾多IE only的網頁之外,許多Windows的軟體利用HTML來呈現時,都是呼叫IE來顯示。在paper中提到很多的例子都是利用ActiveX來達到執行惡意程式,但這不代表使用Firefox就沒有危險,由於可以從JavaScript來得知使用者安裝了哪些plugin,當使用者來到惡意網站時,可以視使用者現有的plugin中,找出有漏洞的版本,再給與對應的惡意程式來進行攻擊,可以說是防不勝防。

節錄paper中幾句話:
「Web is a rising source of large-scale malware infections and likely responsible for a significant fraction of the compromised hosts currently on the Internet.」
「An average user provides a richer environment for adversaries to mine, for example, it is more likely to find banking transactions and credit card numbers on a user's machine than on a compromised server.」

補充:
漏了paper中的一段,當電腦中的軟體本身沒有明顯的漏洞時,還可以利用social engineering來達成攻擊,而paper中舉的例子,傷當…感覺還蠻容易中的。
在網頁上顯示有影片可以看,而點下去之後,出現
Windows Media Player cannot play video file. Click here to download missing Video ActiveX Object.
你會不會點呢?

2007年4月27日 星期五

How to remove license restriction of wmv file

use FairUse4WM

This program will remove the license requirement of the wmv file. Then we can play the file using Media Player Classic or something else.

But you need to get the license of the wmv file first, then the program will help you remove the requirement of license.

I need to try this program because the wmv files of AniSama STATION is restricted by the license that the file cannot be played after few days. Kuribayashi Minami is so cute in the movies, and also those interesting speakings. How could I bear that I cannot see these movies any more.

Animelo Summer Live 2007 Generation-A

アニサマ2007 Generation-A 公式サイト

テーマ「Generation-A」
此次的主題「Generation-A」,代表著許多意思
是Anime的A,也是anison的A
同時也想將相對於J-POP,以anison歌手為中心的「A-POP」概念
藉由這次的盛會,傳播出去
(謎:奇怪的翻譯…)


2007/03/29
Animelo Summer Live2007 Generation-A 公式サイトオープン!
出演アーティスト
ALI PROJECT、奥井 雅美、栗林 みな実
JAM Project(影山ヒロノブ/松本梨香/遠藤正明/きただにひろし/奥井雅美/福山芳樹)
高橋 直純、水樹 奈々、桃井 はるこ

2007/04/21
第二弾アーティスト発表
樹海、m.o.v.e

2007/04/26
第三弾アーティスト発表
近江 知永、サイキックラバー、Suara


テーマソングタイトルが「Generation-A」に決定!
作詞・作曲は奥井雅美!

タイトル Generation-A
作詞 奥井雅美
作曲 奥井雅美
編曲 MACARONI☆、Monta
発売日 2007年6月20日(水)
仕様 12cmマキシシングルCD+DVD
(Music Video+レコーディング風景のオフショット)(予定)
価格 1,890円(税込)
予約特典 アニサマ2007オフシャルバンダナ特別仕様(非売品)
※予約先着特典のため数に限りがございます。
発売 ドワンゴ・エージー・エンタテインメント
販売 ジェネオン エンタテインメント
表記 (C)Animelo Summer Live 2007/DWANGO
品番 EVCS-1002


アニサマSTATION
第01回 GUEST:影山ヒロノブ
第02回 (OA. 4/26) GUEST:宝野アリカ(ALI PROJECT)

2007年4月26日 星期四

FTP更新log產生器(附加m3u8產生功能)

嗯 暨自動寫入更新log後,把自動產生m3u8功能加進去了。這樣一來不用手動一個個目錄拖到foobar了@@

注意:使用前,必須在FTP資料夾裡擺放一個空檔案,做為上一次更新的基準,檔名為「update_2007-0426_1931.txt」,2007到1931的部分試情況做修改。

# -*- coding: utf-8 -*-
import re, os, sys, codecs, time

class Model:
def __init__(self):
self.timeFormat = '%Y-%m%d_%H%M' # e.g. 2007-0426_1931
self.floatTime = self.getFloatTime()
nowStringTime = self.getNowStringTime()

output = 'update_%s.txt' % (nowStringTime)

self.out = codecs.open(output, 'wb', 'utf-8')
self.m3u = codecs.open(output+'.m3u8', 'wb', 'utf_8_sig')
self.out.write('%s\n' % (nowStringTime))
self.out.write('This file is generated using Python code\n\n')
print 'log file is %s' % (output)

def go(self, roots):
for root in roots:
print 'walk in %s' % (root)
self.walk(root)

def walk(self, root):
for path, subdirs, files in os.walk(root):
files.sort()

pathStat = os.stat(path)
pathMtime = pathStat[8]
pathCtime = pathStat[9]

# if path is new created,
# write to log, and try next directory (do no log each file)
if pathCtime > self.floatTime:
string = '[ dir] %s\n' % (self.pathReaplce(path))
self.out.write(string)
print '[ dir]'

for name in files:
# print to m3u8 file
(ttt, ext) = os.path.splitext(name)

if ext == u'.mp3':
string = '%s\n' % (os.path.join(path, name))
self.m3u.write(string)

continue

# if this directory is not new created
# check each file in this directory
for name in files:
relativePath = os.path.join(path, name)
obj = os.stat(relativePath)

# st_mode, st_ino, st_dev, st_nlink, st_uid
# st_gid, st_size, st_atime, st_mtime, st_ctime
#
# what we need is mtime (recent modification)
# and ctime (time of creation on Windows)
mtime = obj[8]
ctime = obj[9]

if ctime > self.floatTime:
string = '[file] %s\n' % (self.pathReaplce(relativePath))
self.out.write(string)
print '[file]'

# print to m3u8 file
(ttt, ext) = os.path.splitext(name)

if ext == u'.mp3':
string = '%s\n' % (os.path.join(path, name))
self.m3u.write(string)

def pathReaplce(self, path):
return path.replace('\\', '/')

def parseTime(self, startTime):
# e.g. 2007-0426_1931
return time.mktime(time.strptime(startTime, self.timeFormat))

def getNowStringTime(self):
return time.strftime(self.timeFormat, time.localtime())

def getFloatTime(self):
# what we need to do is find the lastest log file
# and parse its time
items = os.listdir(u'.')

array = []

for item in items:
base, ext = os.path.splitext(item)

if ext == '.txt':
# do parsing
format = 'update_%s.txt' % (self.timeFormat)
tupleTime = time.strptime(item, format)
array.append(tupleTime)

array.sort(reverse=True)
return time.mktime(array[0])

if __name__ == '__main__':
roots = [
u'anime'
, u'clip'
, u'comic'
, u'course'
, u'ebook'
, u'music'
, u'novel'
, u'paper'
, u'pic_wallpaper'
, u'software'
, u'upload'
]

os.chdir(u'o:\\FTP')

model = Model()
model.go(roots)

anison單曲發行情報 (5/9)

http://www.animate-shop.jp/audio.shtm
http://www.neowing.co.jp/newrelease/anime_cd/
http://www.ginsei.jp/ANIME/anime_CD.html
http://www.oricon.co.jp/music/release/S/0/ma/
http://www.tsundere.com/music/

TVアニメ「魔法少女リリカルなのは StrikerS」EDテーマ
田村ゆかり
2007/05/09
single「星空のSpica
KICM-1210, 1200円(税込)

1. 星空のSpica
2. Sensitive Venus  
3. Melody

劇場版「灼眼のシャナ」挿入歌
川田まみ
2007/05/09
single「赤い涙
[DVD付初回限定盤] GNCA-53, 1890円(税込)
[通常盤] GNCA-54, 1260円(税込)

1. 赤い涙
2. Beehive
3. 赤い涙<instrumental>
4. Beehive<instrumental>

TVアニメ「怪物王女」OP主題歌
美郷あき
2007/05/09
single「Blood Queen
LACM-4366, 1200円(税込)

1. BLOOD QUEEN
2. 忘却バタフライ
3. BLOOD QUEEN(off vocal)
4. 忘却バタフライ(off vocal)

Win専用ゲーム「D.C.II~ダ・カーポII~」ファンディスク グランドオープニングテーマ
yozuca*
2007/05/09
single「Happy my life ~Thank you for everything!! ~
LACM-4365, 1200円(税込)

1. Happy my life ~Thank you for everything!! ~
2. believe yourself
3. Happy my life ~Thank you for everything!! ~ (off vocal)
4. believe yourself (off vocal)

TX系アニメ「ヒロイック・エイジ」OPテーマ
angela
2007/05/09
single「gravitation
KICM-1202, 1200円(税込)

1. gravitation
2. 虚無の嵐
3. Your breath
4. gravitation off vocal version
5. 虚無の嵐 off vocal version
6. Your breath off vocal version

テレビ東京系アニメ「BLEACH」エンディングテーマ (ED 11)
オレスカバンド
2007/05/09
single「爪先
AICL-1888, 1020円(税込)

1. 爪先
2. ピノキオ(Live@堺市民会館)

アニメ「D.Gray-man」EDテーマ
surface
2007/05/09
single「夢の続きへ
SRCL-6541, 1223円(税込)

1. 夢の続きへ
2. ワクチン
3. Trigger Finger
4. 夢の続きへ -TV Edit-

アニメ「ミュータントタートルズ」エンディングテーマ
鴨川
2007/05/09
single「サマーファイター
CRCP-10171, 1000円(税込)

1. サマーファイター
2. 春、サクラ
3. サマーファイター(インストルメンタル)

アニメ「ミュータントタートルズ」オープニングテーマ
THEイナズマ戦隊
2007/05/09
single「情熱の風
CRCP-10170, 1000円(税込)

1. 情熱の風
2. んなもんさ!!

アニメ「銀魂」オープニングテーマ
redballoon
2007/05/09
single「銀色の空
SECL-497, 1223円(税込)

1. 銀色の空
2. ペルソナ
3. VISION
4. 波音

TVアニメ「ゲゲゲの鬼太郎 5シーズン」OPテーマ
泉谷しげる
2007/05/09
single「ゲゲゲの鬼太郎
NECM-10064, 1000円(税込)

1. ゲゲゲの鬼太郎
2. ゲゲゲの鬼太郎 其之二
3. ゲゲゲの鬼太郎 其之二 インスト
4. ゲゲゲの鬼太郎(オリジナル・カラオケ)

劇場版 北斗の拳 ラオウ伝 激闘の章 主題歌
B'z
2007/05/09
single「永遠の翼
BMCV-5015, 1050円(税込)

1. 永遠の翼
2. ロンリースターズ

2007年4月25日 星期三

How to change hot key of previous/next tab in Firefox

備份一下
  1. 安裝 keyconfig 這個extension
  2. 進入設定,由上方功能表的"工具"->"Keyconfig"->"新增快速鍵"
  3. id是任意啦,可以打「previous tab (left)」,然後code那裡填「 gBrowser.mTabContainer.advanceSelectedTab(-1);」
  4. 同理,另一個「next tab (right)」;「 gBrowser.mTabContainer.advanceSelectedTab(1);」

anison單曲發行情報 (5/2)

抄襲一下格式XD
標題的(5/2)代表的是當週,發行日不一定就是在5月2日

http://www.animate-shop.jp/audio.shtm
http://www.neowing.co.jp/newrelease/anime_cd/

テレビ東京アニメ「BLUE DRAGONブルードラゴン」オープニング曲
橘慶太
2007/05/02
Single「FRIEND
[CD+DVD] PCCA-2435, 1575円(税込)

1. FRIEND
2. 桜想ふ
3. 少年
4. FRIEND-Instrumental-

テレビ東京系アニメ「きらりん☆レボリューション」新オープニング&エンディングテーマ
月島きらり starring 久住小春(モーニング娘。)
2007/05/02
Single「ハッピー☆彡
[完全限定生産] EPCE-5469, 1260円(税込)
[通常盤] EPCE-5470, 1050円(税込)

1. ハッピー☆彡
2. 恋の魔法はハビビのビ!
3. ハッピー☆彡(Instrumental)

アニメ『天元突破 グレンラガン」エンディングテーマ
HIGH VOLTAGE
2007/05/02
Single「UNDERGROUND
AICL-1819, 1223円(税込)

1. UNDERGROUND
2. RUNNER
3. Non-Verbal-Communication(Remaster)

テレビ東京系アニメ「瀬戸の花嫁」エンディングテーマ
樋井明日香
2007/05/02
Single「明日への光
[CD] AVCD-16127, 1050円(税込)
[CD+DVD] AVCD-16126, 1800円(税込)

1. 明日への光
2. VOICES
3. 君がいた場所
4. 明日への光(Instrumental)
5. VOICES(Instrumental)
6. 君がいた場所(Instrumental)

TX系アニメ「ながされて藍蘭島」のOP&EDテーマ
堀江由衣
2007/05/02
Single「Days
[DVD付限定盤] KICM-91200, 1890円(税込)
[通常盤] KICM-1200, 1050円(税込)

1. Days
2. Say cheese!
3. Days(カラオケ)
4. Say cheese!(カラオケ)

2007年4月24日 星期二

啦啦 Exploiting Similarity for Multi-Source Downloads Using File Handprints

Exploiting Similarity for Multi-Source Downloads Using File Handprints
NSDI '07
Himabindu Pucha, David G. Andersen, Michael Kaminsky
Purdue University, Carnegie Mellon University, Intel Research Pittsburgh

打著比BitTorrent還要快的名號,但是本屆Best Student Paper卻是樓上的比特暴君。
(謎:什麼跟什麼)

The authors propose SET (Similarity-Enhanced Transfer).

用不到三個小時,頭昏昏地看,瀏覽完後是一堆問號。
列幾個問題,有些paper裡應該有寫,只是沒看清楚或是看不懂。
  • Similarity. I only remember they collected lots of files and put some math and say ``hey, these files have great similarity.'' How to calculate the value of similarity in a reality world. There should be description about this part, just I don't remember.
  • Locating sources. They say that use DHT as global lookup table. But in the experiment, they use a cDHT (c means centralized). Could this be a issue about the speed. You know they claim SET without similarity is equal or faster than BitTorrent.
  • Why those files have high similarity. I have no idea now.
  • They claim constant lookups. The overhead is low. That's because they set a parameter to constant, therefore the lookups will not increase when there are more similar files. Is this reasonable?
  • The evaluation part. Emulab and PlanetLab are not enough. But I think the idea is more important right now. Can this ``SET'' really be integrated into real applcations?
喔…改天頭腦比較清醒時,再重看一次paper,釐清上面這些問題吧

2007年4月23日 星期一

跳躍吧! 時空少女 動畫電影原聲帶

劇場用アニメーション「時をかける少女」オリジナル・サウンドトラック
商品番号: PCCR-434
発売日: 2006/07/12
  1. 夏空~オープニングテーマ~
  2. スケッチ
  3. アリア(ゴールドベルグ変奏曲より)
  4. からくり時計~タイムリープ
  5. 少女の不安
  6. スケッチ(ロング・バージョン)
  7. Daylife
  8. 第一変奏曲(ゴールドベルグ変奏曲より)
  9. 未来の記憶
  10. 静寂
  11. 変わらないもの(ストリングス・バージョン)
  12. 夏空~エンディング・テーマ~
  13. タイムリープ(ロング・バーション)
  14. 夏空(ロング・バージョン)
  15. ガーネット(予告編ショート・バージョン)
原本以為除了郭德堡變奏曲被我猜到要拿第一變奏來當劇情轉折,這部片的音樂不會對我有太大的影響。可是前幾天重看一次(DVD rip)後,找了一下OST來聽才發現,其實當初在電影院看的時候,已經默默地受到音樂的影響。

奥華子的插入曲和片尾曲,在離開電影院之後那幾天,腦袋中不停浮現。不過在loop太多次之後,這回看的時候,該橋段就沒有感覺那麼狗血了。

OST中收錄的郭德堡變奏曲,當然,要拿來和顧爾德的版本相較,是太過份了一點。不過就電影裡的運用來說,由aria轉變到第一變奏這個點還是很好用。

「夏空~オープニングテーマ~」
同樣的旋律,鋼琴先重複兩次,第三次開始加入其他樂器。
第12軌「夏空~エンディング・テーマ~」和第1軌大致相同,差異在於中段在背景加入了人聲。開頭與結尾使用相同的曲調,象徵結尾又回到了和原來相同的日常生活。

「スケッチ」
很容易被遺忘的曲目(?),輕鬆的日常生活,相當悠閒的感覺。但其實這為之後的曲目帶來反差。

「からくり時計~タイムリープ」
前段為商店街定時音樂,後半開始給人緊張的感覺

「少女の不安」
其實這首前兩分鐘要聽完,對我來說很累,雖然曲調偏慢,但是會有給人神經緊繃的感覺,非常沉重。最後以快速的絃樂做為故事的轉折。

「Daylife」
名為Daylife,實際上卻是相當沉重的感覺。明明是C大調,為什麼會這樣呢

「未来の記憶」
總算稍微把沉重的擔子拿掉了(?),但是伴奏還是偶爾加上一些壓力,這部片有這麼沉重嗎

「静寂」
非常沉重…,因為是用在那段劇情嘛。單純一部鋼琴的聲音,簡單的旋律和合絃,表達出無可奈何。這首長達6分45秒,通常聽到一半就不行了。

「変わらないもの(ストリングス・バージョン)」
插入曲「変わらないもの」在最後一次time leap時出現,畫面來個過往點點滴滴回憶。而這首絃音版本則出現在最後兩人在河邊的場景。話說漸弱後突強那邊,在電腦看還有OST裡面的效果都沒有電影院那時強烈,是單純電影院比較大聲,還是有針對各部做加強的果然有差呢

是的,以上就是出現在劇中的曲目。
怎麼看起來好像這是部很沉重的片子啊XD
事實上劇中有很多時候是沒有背景音樂的,由搞笑的對話和誇張演出的女主角不停帶給大家歡笑,話說當時在電影院裡很多橋段都是狂笑,反正全場只有五個人,後面笑的更大聲@@

結論,這張OST如果放著仔細聽的話,可能會沒辦法聽很久,因為有幾首的感覺真是太沉重了,不過用來當背景音樂的話,也就是心思是放在做別的事,還算蠻平穩的一張。

再來是等秒速5センチメートル啦

2007年4月21日 星期六

No module named whrandom

WebDebug is a Python-based proxy server. Currently I am using a modified version to achieve BitTorrent tracker connection.

Before yesterday, the Python version of my work place is 2.4. Yesterday I reinstalled the whole system and replaced the Python to version 2.5. And today when I want to start this program, it shows the error message ``ImportError: No module named whrandom''. But it works when I use Python 2.4.

After googling, the answer is whrandom is a deprecated module since Python 2.1. But for compatibility, you can still use it in Python 2.4. In Python 2.5, it has been removed.

So what should we do?

The suggested module to replace is random. We can replace all the ``whrandom'' string to ``random''. Or use a way like thisimport random as whrandomThen we only need to modify one line in each file which imports this module.

2007年4月18日 星期三

TCP NAT Traversal related, part 2

It seems better now...at least we have restricted cone and delta-1, both can be predicted.

The first one is the ShareTech FW-3810A. It is a NAT/Firewall hardware solution, though not for sale now. Addresses and port dependent on destination, port mapping type?

The second one is the Windows XP SP2 Internet Connection Sharing. It's really easy to setup if you have two physical NIC. Just check the ``Allow other network users to connect through this computer's Internet connection'', then it will set the other NIC to behave as a NAT and DHCP. Windows ICS has independent on UDP outbound and UDP filtering. In TCP, it is address and port dependent with delta 1.

Actually I have not yet tested the above two NATs completely. The next step will be write the Python script more structural and complete. When the machine comes, we can try other software based NAT such as iptables in Linux and NAT in FreeBSD.

2007年4月16日 星期一

2007年4月新番.その一

雖然和以往相較,這期動畫不算追很兇,不過比起上一季只有兩部的狀況,這季還算看不少耶。

ハヤテのごとく!
http://hayatenogotoku.com/
宣布要動畫化後就一直有不少人期待。
漫畫完全沒看過,衝著理恵ⅹ理恵和OP、ED由I've一手包辦來看,結果還蠻有趣的。理恵ⅹ理恵當然沒話說,白石涼子配的ハヤテ也感覺不錯,若本的天音也是傷當機,話說田中理恵這次還蠻有井上的感覺。

らき☆すた
http://lucky-ch.com/
京アニ出品,再加上獨特的宅屬性女主角,當然是未演先轟動。
這次,京アニ和畑亜貴再度造成網路熱潮,OP曲『もってけ!セーラーふく』在Youtube上的點閱數已經超過30萬了!
不過,說實話,らき☆すた的類型,其實不屬於一般推廣向(!?)。因為是四格漫畫改過來的,沒有一個主線的劇情來進展,笑點也不一定大家都能接受。
聲優部分的表現,個人對かがみ(加藤英美里)比較有印象,平野綾的こなた算普通吧。不過こなた某些發言,還真是尖銳XD
「近期的青少年閱讀的調查,要普通的書才算,漫畫不算」「那ラノベ算嗎?絵本呢?」
「動畫化的作品,聲優和CDドラマ不一樣,這麼一來習慣CDドラマ的人要適應TVA版本要過很久」「但是也有好處,可以同時享受兩個世界」

話說講了一堆聲優,斎賀さん的作品都還沒看…,看名字和標題實在是提不起什麼興趣。

下次換來講嚴肅向的DARKER THAN BLACK和精霊の守り人。嗯…那學術研究向文章呢…

真是神奇…

話說,近期大家應該都可以看到不少人的email address會刻意把@替換掉,改成at或之類的。比較極端的像是php documentation的user contributed notes,不只把@換成at,把.也換成dot,通常第一次看到的人還不知道那是什麼東西,其實是email address。

但是…最近卻看到一些很…神奇?不知道要怎麼形容。在網頁上的顯示是把@換成at,但是仍然加上a href="mailto:,原來把@換成at是為了避免被spider、robot爬到,會有一堆垃圾信,然而只把顯示的地方換掉,mailto還是留著,根本就沒有意義,對spider而言仍然可以抓到email address。

還是現在把@換成at其實是一種流行,而不是防spider?

霞桜

『霞桜』

歌手:RYTHEM
作詞:RYTHEM
作曲:RYTHEM
編曲:武部聡志


もう会えないのかな? おぼつかない指で想いを馳せては
どうしようもないくらい泣いてた 何もかも愛しくて

電車のフレームに並ぶ景色は 優しいまま何も変わらない
変われないのは私だけ

桜色の影 あなたの面影 誰かの背中に重ねてしまうよ
桜舞い散っても いないと知っても 私の目の前で今も笑ってる

何を間違ったのかな? 計り知れない愛で包んでいたのに
きっとそれが駄目だったの 気付いてももう遅い

改札を出ていつものあの場所にむかう 何も変わらない
今のあなたは誰と笑うの?

桜の花びら欲しいと言ったら 少し高いところでつかまえてくれた
熱くなった胸が震える体が あなたを知ってる 今も覚えてる

あなたの癖も仕草も いつか忘れるの
今の私のままじゃいられなくなるの
桜よ桜よ あの日と同じに そんなに綺麗に咲かないで

桜色の影 あなたの面影 誰かの背中に重ねてしまうよ
桜舞い散っても いないと知っても 私の目の前で今も笑ってる

好き 好き 好き・・

僕たちが恋をする理由

『僕たちが恋をする理由』

歌手:坂本真綾
作詞:坂本真綾
作曲:高田みち子
編曲:森俊之


オリオン星(ぼし)をみつけたら 胸が優しくなるわけは
どこかの街で見上げてる きみの背中が浮かぶから

通りすがりの音楽に 風が冷たくなるわけは
私の中の特別な気持ち きみは知らないでいるから

言いかけてやめたことば
大切についた小さなうそ
おとなになっても難しいことは
思ってたよりたくさんある

どこまでも どこまでも
近づけば遠くなるきみに
恋をした それだけで
そらは広く深くなっていく

並んで歩いた帰り道 とりとめもなく続く雪
きみの哲学に触れるとき いちばん好きな自分になる

春夏秋冬を繰り返し いつの間にかひとまわり
めぐりめぐって訪れた 私のオリオン

手に入れるものじゃなくて
約束交わすことじゃなくて
それぞれに向かう場所が
似ていたらいいと思う

どこまでも どこまでも
きみがきみでいる気高さが
嬉しくて 切なくて
もっとずっとそばにいたくて
恋をした それだけで
そらは広く深くなっていく

2007年4月15日 星期日

TCP NAT Traversal related

Unfortunately unfortunate, miserably miserable.

I don't have a full cone NAT to test.

OK. Let's take a look what's the problem here.
First, when I create a TCP socket with SO_REUSEADDR, I can bind the same ip and port of local machine, then connect to different addresses. Yes, different addresses. When I tried to connect a server with the same local address and the same remote address, there comes a serious problem called ``TIME_WAIT'' state. In TCP state machine, when one end host (A) wants to close this connection, it sends a FIN packet, then the other side (B) receives this FIN and sends a FIN/ACK back. Then A sends ACK, the process should finish... but actually, B will close the socket after sending FIN/ACK, and A will enter TIME_WAIT state after sending ACK. What is the purpose of this TIME_WAIT? You can type ``Address already in use'' and ``TIME_WAIT'' in Google, then you will know the answer. The most unacceptable part is the duration of TIME_WAIT state. It takes 240 seconds as default value. Although different OS has different implementation, and there are ways to adjust this value. In a general case, at least you have to wait for 30 seconds then this socket will close, then you can build a connection with the same local address and remote address in TCP.

Well... there is an INFOCOM paper discussing about this issue, ``The TIME-WAIT state in TCP and its effect on busy servers'', INFOCOM '99. I have not read it yet. Hope there will be some solutions for our work.

Then the second problem, currently the NATs we can test all have the behavior of random port. That means when you use the same local ip and local port, the port NAT uses is not the same and has no rule to follow. In some sense, that means it's impossible to do TCP NAT traversal, since you don't know which port you should tell the other side to connect.

NATs we can test have random port behavior too in UDP scenario. For the same 4-tuple (local_ip, local_port, remote_ip, remote_port), the NAT will send UDP packet through the same port. But when the remote IP is different, the NAT also changes the port it uses. And it has no rule to follow, either.

I start to worry about the term project...
Can somebody send me a full cone NAT for experiment?

Oh, by the way. The NATs do not drop packet when the mapping is not existed. They send TCP RST back...
==
精彩刺激,絕無冷場。
雖然proposal被接受了,卻發現實際運作起來的難度之高,可能會翻…
連用UDP輔助都有問題了。

TCP NAT Traversal尚未被廣泛運用果然是有其原因所在,今天測試了兩台(?)NAT的結果是:沒救。
首先,還沒碰到NAT之前,TIME_WAIT這個問題就出現了。先要求關閉socket的那一方,在FIN/ACK都送完之後,會進入TIME_WAIT這個狀態,這一等就是240秒,開什麼玩笑啊,哪來那個時間跟你耗。雖然有修改設定值的方法,但是目前看到的文章都不建議,會導致其他的問題,有種直接把它reset掉更快的感覺…。或許花時間來看一下INFOCOM '99那篇,有沒有可以拿來用的解法。

然後就是NAT種類,這兩台…都是random port behavior,基本上沒救吧,目前看到的paper都是往independent的去解,不然就加點port prediction。啊現在就random了,也沒什麼好predict的。

唉…去拉一台full cone NAT可能會比較穩吧。

還有,STUNT的東西還是看一下吧,人家做那麼久,應該有列出已知問題和可能的解法。

2007年4月8日 星期日

Anison Generation未來方針

「現状での今後の対応予定」
↑拿這個討論串來講
  1. 節目名稱分類功能。例如說分類成超級戰隊系列、名作系列,點進去就可以看到這些系列的清單
  2. 權限分級功能。訪客可以新增內容、刪除自己新增的內容;Super user則是新增、修改、刪除都可以。使用者帳號採發行制,應該可以控制品質。
  3. 播放中節目表,顯示播放時間和星期幾。
先就最簡單的3來講,理論上來說,播放時間其實是蠻麻煩的,因為各地電視台的播放時間是不同的,也就是說欄位是不定長度。不過在Anison Generation的資料庫,只有選擇一個電視台及其播放時間做為資料,所以瞬間就簡單很多。剩下的小問題,大概是有換過時段的節目,顯示當然是目前的這沒有問題,是看資料庫裡是怎麼建的,select出來要想一下就是了。

第1個,就是加個group欄位,然後開始工人上tag吧。苦工不談的話,就是分類老問題,要幾個bucket和怎麼把東西丟進去。分bucket應該不用考慮,因為不是每個作品都需要有分類,問題在一個作品可以有幾種分類,如果是多種的話,就要用tag方式,而不是傳統的category方式。

第2個,雖說是發行制,後面的回覆看起來又像是sign up後就可以有新增權限,所以應該是說sign up後就是"訪客"權限的帳號。管理員認為輸入資料其實還蠻耗工的,那麼閒的人應該不多吧(也就是對於spam比較樂觀?),之後就有人回應了,用Perl(パール)寫個程式跑一下就好了,要來亂的話,不需要真的人工在那裡填。總之,管理員目前是放出一個測試用,可以任意修改的資料庫,和正式的資料庫是分開的,所以可以惡搞。

然後就開始跳到放歌詞的問題上了。一開始提出來的是歌詞複製的問題(コピペ),反正就是那堆DRM的問題。管理員認為歌詞是很容易被亂的地方,在考慮讓使用者新增的話,進入資料庫後就設成唯讀,不能修改。而DRM的問題,管理員有點小開玩笑地說JASRA雖然很嚴格,但是有辦法可以避開,所以原本的打算是不做任何DRM,讓大家隨意擷取。然後就被罵了XD,說身為管理階層,發言應該要更謹慎一點。話說如果這個站出事的話,還蠻麻煩的,資料就不知道要去哪裡查了~。

然後開始變成認真的技術面發言XD,第一個念頭是用Flash(フラッシュ),那不就和utamap和歌詞navi 一樣?但是一考慮到伺服器負擔,目前主機商那邊雖然還沒有出現超過流量而無法顯示頁面的問題,但現況是在邊緣而已。如果採用文字顯示,其實沒有什麼有效的防複製方法,某站用的防複製方法,其實大家還是複製地很高興。如果採用圖片顯示的話,也有OCR這一手,話說當歌詞公開出來時,要防止被任意轉貼就是很困難的事,在能做到的範圍盡力就好(←同意,因為防得了君子,防不了小人。)。最後冒出一個加密pdf的念頭…這…也是有軟體可以破滴。

結論是,考慮到放歌詞還太早了,先把資料新增功能開放給大眾才是當務之急。


某個討論,有人希望類別可以像以前一樣用縮寫,也就是ゲーム寫GA、劇場用アニメーション寫MV。管理員的回覆是,這麼一說才發現和以前不太一樣,但是為了讓第一次來的人也能看懂,會維持現在用全名的方式,還有電視台的名稱也因為相同的原因,在做修改中。
電視台的是「テレビ東京」以前寫TX,「フジテレビ」是CX。這個還沒改完,在「放映中」的頁面是寫テレビ東京,但是點進去該節目內頁目前還是寫TX。不過這個有時候還是要會看,某些地方就不會這麼親民了@@

2007年4月7日 星期六

Regular Expression negative match

OK, 用Perl的可能在想「=~」這個東西,但是我不會用Perl,所以這不是今天要講的東西。

如果你在想的是[^(regex)],那也不對,因為[^]是裡面的拆成一個個character去看,也就是說[^(abc)]的意思是除了「(」「a」「b」「c」「)」這個五個以外的字元,而不是不符合abc的字串。

先來個例子,如果今天要match所有不是「asdf」的字串,那regex應該是:^(?!^asdf$).+$
好樣地,這啥玩意。
話說其實這也是今天才剛學到的,更詳細的東西可以搜尋「Regular Expression Lookahead」

先來解釋lookahead,也就是(?!)這東西。
基本上有四個(排版可能會怪怪的,只是列一下,詳情請另外google)
(?=...) Positive lookahead.
(?!...) Negative lookahead.
(?<=...) Positive lookbehind. (?
嗯…好像先用positive會比較好講,先來個positive lookahead的例子。
(?=asdf)
先提一下,lookahead和^一樣,是代表一個位置,本身並不會吃掉任何字串,這在做replace的時候會有差。所以(?=asdf)代表的是在asdf字串的a之前這個位置。
嗯…位置的感覺很微妙,還是偷一下Mastering Regular Expression的例子。

要將「Jeffs」取代成為「Jeff's」,有什麼做法呢?
「s/Jeffs/Jeff's/g」,斜線和頭尾的s, g可以不用看,其實就是很簡單的找到Jeffs,然後取代成Jeff's。

那如果用lookahead呢?
「s/Jeff(?=s)/Jeff'/g」,為了簡化,我把書中的word boundry,也就是\b拿掉,基本上不會影響。
來看這個神奇的東西,尋找「Jeff(?=s)」,然後取代成「Jeff'」,這結果和上面會是一樣的,因為「Jeff(?=s)」這東西會找Jeffs這個字,但是selection部分只有反白部分:Jeffs,所以取代值只需要填Jeff'。

好,那回到我們最開始的例子「(?!asdf)」
這會match到一個位置,後面不是接著asdf,也就是說假設字串「123asdf456」,那唯一不會match到的位置就是3和a中間,用JavaScript的定位來說,就是3(這樣有人看得懂嗎,就是"123asdf456".substr(0, 3) == "123",呃…這樣還是沒人看懂吧)

一步步來,「(?!^asdf$)」,先講^和$,^代表的是行首,$代表是行尾。
舉例來說,假設文件中有三行如下:
abc
abcabc
cabca
當我想要match以abc開頭的字串(也就是第一行和第二行的字串),用「abc」的話,第二行會match兩次、第三行也會match到。這時候可以用「^abc」,就只會match第一行和很二行以abc開頭的部分。同理$就是最後。
「(?!^asdf$)」就不會match到只有asdf的那一行的行首。

有趣的地方在於,用lookahead只會match到位置,沒有match到任何字,可是我們的目的是要傳回字串,所以在後面加上.+變成「(?!^asdf$).+」。
「.」是代表任意字元除了換行符號(newline),如果要.也能match newline的話,要加一些參數,看使用Regex的環境而有所不同;「+」則是修飾前面的字元,一個至多個。「.+」就是一個長度最短為1、最多可以很多的字串。

看起來好像OK啦,那為什麼最上面那個還有在前後加上^和$呢?
嗯…剛才測一下,$是可以不用的,不過^是必須的,為什麼呢?
可以實測一下,在只有「asdf」一行,用「(?!^asdf$).+」去跑,會發現sdf, df, f都會match到!
因為「(?!^asdf$)」代表的是行首的位置不會被match到,其他位置會。
但這不是我們想要的,所以「^(?!^asdf$).+」,因為一開始被定在行首,然後接著一個開頭不可以是asdf的東西,這行能夠被match的可能性就是一開始不是asdf開頭,也就是我們想要的東西。

又想一想,最後的「$」會不需要是建構在.+是longest match,也就是1asdf12,而不會有1asdf12的情形。如果.+不是longest match(基本上都是greedy吃到最多,lazy要另外設,這個網路上也都找得到。)

所以舉一反三,下面這個的效果也是一樣^.+(?<!^asdf$)$

2007年4月5日 星期四

眞魔国放送協会(SHK)第12回

櫻井くんの「一分間自己アピール」
何でペガサスの話に流させた

そして、入学式の話。

「友達百人できるかな」
携帯電話、頭文字。
人物以外の番号はダメ。

コ:小池さん
ケ:賢プロダクション;芸能人保険事務所;(←全員ダメ)
ネ:根谷美智子
シ:篠原恵美;清水愛
ロ:ろみね(朴路美)
ウ:植田佳奈;植木さん;
ス:杉田智和;菅原;
チ:千波さん;
ク:クゲ(公家)さんXD
サ:斎賀みつき;斎藤千和
メ:

Music Release List, 2007 Mar

2007/03/07:
KOTOKO - きれいな旋律 [GNCA-37;GNCA-38]

2007/03/14:
下川みくに - Bird [PCCA-2415;PCCA-2416]

2007/03/21:
坂本真綾 - 30minutes night flight [VIZL-222;VICL-62300]
茶太@下村陽子 - murmur(マーマー) [KDSD-130]

2007/03/24:
コードギアス 反逆のルルーシュO.S.T. 2 [VICL-62308]

2007年4月4日 星期三

Do incentives build robustness in BitTorrent?::NDSI 2007

DISCLAIMER: This review is written by a graduate student and he is not a native speaker of English. There might be mistakes, misunderstandings, and errors.

http://bittyrant.cs.washington.edu/
BitTyrant

This is the paper of BitTyrant. The one people called ``selfish'' client.

The paper title comes from adding a question mark to the P2PECON 2003 paper of Bram Cohen, the author of BitTorrent protocol. In the introduction, the authors challenges the TFT mechanism which is the approach to discourage ``free rider'' in BitTorrent protocol. The authors use a client to gather measurement data and deploy bandwidth estimation tool at the same time. Then they use this trace to model some characteristics in BitTorrent network. They claim the BitTorrent protocol is unfair to users with higher bandwidth. TFT is useless.

Then here comes the client, BitTyrant. They call it a strategic client. In the paper, it claims that BitTyrnat will dynamically adjust its active set size (number of upload slots per torrent) and deploy a new unchoke algorithm. It is a better idea to adjust the active set size than set it to a fixed number. Current BitTorrent clients do not deploy this method because to choose the magic number we need to know the bandwidth of the user. And that is the most difficult part. Bandwidth estimation is still a open problem in research area. Most clients do this way, in the first time when user start the program, there is a dialog asking user what is your network connection. Then the client will assign suggested value to these parameters. According to the paper, BitTyrant will increase the active set size until the performance cannot be benefited.
The second one, instead of rate-based TFT, BitTyrant would rank peers by download ratio and upload ratio. The peer that BitTyrant take more and give less will get a higher rank. And BitTyrant will try to reduce its upload rate to a peer if this action will not affect the download rate from that peer. The authors claim that the bandwidth allocation taken from that peer can be used to contribute to other peers in order to get higher download rate, or just build another new connection to take chance to get more download rate. Obviously, this is the reason why people do not like this client, and some trackers even want to ban it. In this paper, there are also other cheating tricks being discussed. But the authors think these approaches can be easily defended, so they did not implement them in BitTyrant.

In the evaluation part, the authors deploy BitTyrant in real network and compare to original Azureus. And all BitTyrant deployment in PlanetLab. Their conclusion is TFT has do little to BitTorrent's performance. The reason why BitTorrent works well is altruism and most people do not cheat the system.

OK. The conclusion is ``ban it''. No Doubt.

My conclusion has two parts, the bad one and good one.
The bad one, since the world is not fair, the network connection also is not fair. So you cannot just wish every peer can have the same amount of data in both download and upload. They told you ``With great power comes great responsibility.'' When all the peers have the same bandwidth, then you can talk about total fairness. Otherwise, in the INFOCOM 2006 paper they told you, you can achieve total fairness, but the performance of the whole system will be low. Yes, the authors of BitTyrant also recognize if all BitTorrent clients are BitTyrant, the whole system performance will degrade.
The good part, they are the first BitTorrent research work that has real implementation, not just simplified modeling or controlled simulation. They also provide directions for BitTorrent implementation, though I don't think their approach are completely correct.

Finally, I have to praise their courage, to release this client. Look those articles talking about BitTyrant. Hardly you can find one that promotes the usage of this client.

The very last word: Ban It. Since the paper is already accepted.
==
關鍵字:比特暴君, BT暴君, 毒蛙, BitTyrant, BitTorrent, Azureus, Tit-for-Tat

2007年4月3日 星期二

Characterization and Measurement of TCP Traversal through NATs and Firewalls::IMC 2005

DISCLAIMER: This review is written by a graduate student and he is not a native speaker of English. There might be mistakes, misunderstandings, and errors.

http://nutss.gforge.cis.cornell.edu/stunt.php
STUNT: TCP NAT Traversal

This paper provides a comprehensive discussion about the problems TCP NAT traversal will encounter. Such as port mapping, NAT response to SYN and ICMP. The authors compare four TCP NAT traversal approaches: STUNT#1, STUNT#2, NATBlaster, Peer-to-Peer NAT. After some experiments, the authors propose modifications to these approaches.

The authors implement a NAT testing software, and collect behaviors of NAT outside laboratory using this software. Description of NAT characteristics is detailed. Real implementation is born in mind. Assumption are also pointed out. The only thing does not convince me is the last lab experiment comparison between STUNT#2 and P2PNAT.

In general, this is a good paper. It provides more information of TCP NAT traversal. Although there are already UDP ways to solve NAT problems. I agrees with the authors that TCP NAT traversal is important. We cannot just replace every protocol by handcraft UDP.

2007年4月2日 星期一

はれちゃった歌種日和 第8回

今回のゲストは癒月さんです。

「質問ぶつけ放題」
名前の由来:オンラインゲーム
一番最初に買ったCD:ZARD
行ってみたい海外:アメリカ
歌詞から?メロディーから?:メロディー

みんな一番最初に買ったCDは
癒月:ZARD「もう少しあと少し」
シモツキン:CHAGE & ASKA
れっかたん:アニメの主題歌
茶太りん:ドラマCD