2009年8月27日 星期四

web策略类游戏开发(四)一个可以承载万人在线的架构



 Webgame现在已经开始需要进入大统一服务器时代,每个游戏区域容纳的玩家数量将从现在的几万人 发展到几十万人,因此在新的背景下,webgame如何处理大量用户的请求将成为问题。目前一台asp.net做的weggame服务器每秒能处理 500~1000个页面请求,按照每个玩家每隔3~5秒做一次页面操作(页面请求),一台服务器能承受2k~4k的玩家在线,对于一个只有几万人的策略游 戏来说,已经是足够了。但对于一个未来将承载几十万人的游戏来说远远不够。

 通过分析,玩家在游戏过程中,有80%以上的访问仅仅只是查看玩家在游戏里的状态,实际上真正会对游戏运行状态及数据修改的的页面请求不足20%。因 此,我们可以将呈现页面和处理游戏逻辑的功能拆分为2组服务器:页面服务器和逻辑服务器。两者之间可以通过remoting的方式进行数据通讯。将服务器 分离后,随着页面服务器的增加,页面访问能力能应该能提升4~6倍。在往上逻辑服务器就会出现访问瓶颈。解决方法可以让页面服务器在读取玩家数据时直接访 问数据库或者增加一个对象缓存服务器。页面服务器只有在必要的时候(需要进行逻辑运算时)才访问逻辑服务器,而逻辑服务器在玩家数据发生改变后更新对象缓 存服务器和数据库。这样就可以大大降低逻辑服务器的访问次数,使页面访问能力进一步提升,轻松突破万人在线。如果访问量还需要继续扩大,可以用httpd 做前台负责相应图片以及css等静态文件。


作者:Yahle
曾用网名:Dogvane
原载:http://www.cnblogs.com/yahle
版权所有。转载时必须以链接形式注明作者和原始出处。
Tag标签: WebGame

2009年8月26日 星期三

优化MySQL插入数据

表结构:6个字段,2个数值型,4个字符串型,字符型字段长度3~20个字符
数据量:1000
MySQL版本:4.1
测试程序与MySQL服务器在同一台机器,单线程插入处理。

优化方法1
修改表的类型
       MySQL数据库表有两种类型,一种是支持事务处理,一种是不支持事务处理。MySQL在处理这两种表时,分别使用了不同类型的数据库引擎,因此数据库引擎在插入时效率不同,理论上说启用了事务功能后会比较慢。
修改方法:在创建表时,指定表类型
Create Table(
….. /*字段说明*/
) ENGINE=InnoDB
红色部分为表类型,InnoDB表示带事务,MyISAM表示不带事务功能


优化方法2
一次插入多条数据
       MySQL通过一次执行插入多条数据,可以减少插入时间,提高效率,不过一次插入多条记录的SQL语法有点特别,貌似MS SQL Server不支持这样的语法:
Insert into `table` values(data1),(data2),(data3)
       虽然可以将多次插入的数据一次插入,但是一次插入的量还是有限制的:拼接出的SQL语句字符串长度不能超过1M,记录数不限。不太清楚是MySQL限制还是MySQL.Data数据库访问组件的限制造成的。

测试结果:

 
带事务
不带事务
执行1000次一次插1条记录
18s
430ms
执行1次一次插1000条记录
100ms
60ms
  
作者:Yahle
曾用网名:Dogvane
原载:http://www.cnblogs.com/yahle
版权所有。转载时必须以链接形式注明作者和原始出处。

2009年8月21日 星期五

迷幻藥的新生

LSD 曾經是、直到現在也仍然是法定管制迷幻藥。但它對精神意識狀態的影響,逐漸受到醫界的重視。

瑞士精神科醫師如今開始對重症病患試用 LSD,希望能減輕患者對痛苦和死亡的恐懼,而在美國、英國和以色列等地,也開始在病患身上試用能改變意識狀態的藥物。精神藥物是否又重回醫學治療的方法之一呢?

(根本沒有什麼事發生嘛。)

Udo Schulz 靜靜地想著,很失望。他躺在一個明亮房間的床鋪上,等待人生中第一場精神藥物體驗。

Udo Schulz 是位 44 歲的德國人,深受癌症痛苦折磨,他同時也是逾 30 年以來第一位合法使用 LSD(迷幻藥;Lysergic acid diethylamide)接受科學研究的病患。而這項科學研究,目的在判斷以往惡名昭彰的迷幻藥物能否有效治療情緒障礙疾病。

LSD 誕生於 1938 年,在 1960 年代曾席捲歐美,是嬉皮時代相當流行的藥物,使用 LSD可產生中樞神經興奮、產生錯覺和幻覺的效果,一度用在治療酒癮、精神耗弱、社會行為異常及絕症末期疼痛治療。

Udo Schulz 接受治療和科學研究的地方,位在瑞士阿爾卑斯山北麓的 Solothurn,是一個風景如畫、恬靜美麗的小鎮,附近有萊茵河支流悠然流過,步調比瑞士首都柏恩和緩許多。沒有比這個尋常小鎮更適合進行研究的地方 了,特別是對社會可能有爆炸性影響的研究。

治療室的牆上掛有一張紅色繡帷、一面鑼、一面鼓,以及一幅彌勒佛的畫像。Peter Gasser 是負責治療的精神科醫師,同事還有臨床醫學家 Barbara Speich,兩個人蹲在患者面前,耐心等待。

至少半個小時過去後,Udo Schulz 終於浮現幻覺,根據他事後追憶:「最後感覺到有東西在扭轉我的靈魂,噢,那實在太奇妙了!」

LSD 這種強力迷幻藥物首次出現,有賴一名瑞士化學家 Albert Hofmann。他於 1938 年 4 月 19 日在巴塞爾 Sandoz 實驗室進行麥角鹼類複合物研究時,無意間成功合成 LSD,而 5 年後他發現 LSD 的精神轉變效果,並拿自己做實驗。

LSD 藥性很強,1 公克就足以讓 2 萬人精神亢奮好幾個鐘頭,但年輕的 Albert Hofmann 當時並不知道自己這項驚人發現─結果史上第一次人體使用 LSD 的經驗,顯然就是徹底用藥過量,因為他自己吞了 0.25 毫克的 LSD。

Albert Hofmann 在稍後的紀錄裡形容他的體驗:「我全身被恐懼給淹沒,因為我覺得我要瘋掉了……」「我好像被送到另外一個世界、另外一個時間…」

經過好幾個小時,他終於逐漸冷靜下來:「現在我慢慢變得很享受,這不可思議的色彩和形狀魔術秀…」第二天,他說:「我又充分感受到健康和人生煥然一新的美好。」

Albert Hofmann 無法想像,LSD 急速成為群眾運動的觸媒轉化劑,因為許多藝術家如:Beatles、Doors、Pink Floyd、演員 Cary Grant 和作家 Aldous Huxley 的美化而提升知名度。其中 Beatles 乾脆就寫了「天上的露西戴著鑽石 (Lucy in The Sky with Diamonds)」這麼一首歌,巧妙地嵌入 LSD 三個字,並在歌詞裡描述了 LSD 的藥效。

他更沒有想到,LSD 竟成為美國中央情報局進行訊問的秘密工具,或成為百萬普通人的精神迷幻藥。LSD 創造許多人們意想不到的經驗,但也導致瘋狂和自殺。

但無論如何,Albert Hofmann 始終確信,LSD 相當適合提供「心理放鬆」,而許多精神病學家因此著手研究,LSD 對掩藏記憶或壓抑創傷的效果。到 1970 年,LSD 廣泛被用來治療憂鬱症、焦慮、成癮、罕見疾病、偏頭痛、關節炎、癱瘓和皮膚問題。

當時有上千份科學研究出版,然而,多數研究的可信度都有待商榷。其中最著名的研究莫過於德國奧斯威辛集中營的倖存者 Yehiel De-Nur,他在 1976 年 6個 LSD 的治療過程中,不斷重新體驗死亡集中營裡的經驗。他後來出版過一本詩集,書中敘述這段悲傷的經驗。

2008 年 4 月 29 日 LSD 之父 Albert Hofmann 過世了,享年 102 歲,兩周後,備受癌症痛苦煎熬的德國人 Udo Schulz 搭車前往瑞士,準備使用 LSD 並接受第一個研究。Udo Schulz 希望 LSD 能幫助他面對罹癌以來無法克服的恐懼。

Albert Hofmann 生前,始終沒辦法接受世人將他「麻煩的小孩」─LSD 冠以危險威脅的罪名,直到他死前仍堅信,這種藥物擁有療癒的功效。而現在,這項暫停長達 35 年的 LSD 醫療用途研究重啟,等於是滿足了 LSD 之父 Albert Hofmann 生前最大的願望。

這項研究的主事者 Peter Gasser 背負極為沉重的責任,問題不僅攸關 Albert Hofmann 留下來的遺存名聲。許多歐美的科學家經年來努力爭取繼續研究 LSD 及其他迷幻藥物,現在他們都將期待寄託在這位瑞士小城 Solothurn 的精神科醫師身上。

德國海德堡大學教學醫院的臨床心理學主管 Rolf Verres 表示,「如果能更容易取得這種精神作用性物質(psychoactive substances)用在治療 ,那我會很高興。在德國,這一塊十分不受尊重。」

而最近在美國、英國、以色列和瑞士,都有學者被批准研究快樂丸(Ecstasy)、 致幻魔菇(psilocybin)。研究的目標是判斷這些物質能否協助治療戰爭後心理受創傷的退伍士兵,或有焦慮症的患者。有些投身其中的研究者表示,目前看來初步結果相當樂觀。

但在 Peter Gasser 提出他的研究之前,沒有學者敢說要用 LSD,因為這種迷幻藥名聲狼藉、藥效強烈。他的研究結果,將是官方未來是否核准類似申請的關鍵。

年紀 49 歲的 Peter Gasser 長達一年半來婉謝全球媒體的邀請,以免搞砸了他具高度敏感的實驗。但近日他邀請德國媒體《明鏡周刊(spiegel.de)》造訪他的治療,而他開宗明義 就澄清:「我並非上帝所選中而有特殊權力的人,我的目的也不是要改變社會。」

他非常投入在自己的研究,但無意主動爭取 LSD 合法化,他希望的,是展示 LSD 在心理治療上可能扮演積極的角色。

Peter Gasser 擔任「瑞士精神疾病治療醫學會」(Swiss Medical Society for Psycholytic Therapy)的主席,他提倡將迷幻藥物加入治療工具。這個醫學會共有 50 名會員,其中有 1/3 的人來自德國。

由於 1990 年代曾接受過迷幻藥物治療的訓練,因此 Peter Gasser 過去也曾試用 LSD進行治療。他表示,施用這種藥物必須有許多準備工作,「我們要創造放鬆的氣氛,讓患者能保持清醒;在療程中有時會放音樂當背景。」他甚至偶爾會把牆 上的鼓拿來敲。

至今,沒有一次用藥者的 LSD藥物體驗結果不佳,始終不離手的鎮靜劑─為免緊急狀況─也一次都沒派上用場。他聲稱:「如果能謹慎掌握 LSD,這種療法並沒有比其他方式危險。」

LSD 的化學成分接近血液中的復合胺,這種神經傳遞介質能由人體自己產生,兩者都對腦部同樣的區域、部分邊緣系統(過濾、處理並評估感覺)進行作用。其實 LSD 的作用就是去除身體對感覺的過濾機制,因此大腦才會被大量訊息給淹沒。

因此,這種藥物深深影響人類的感覺認知、思考以及情緒,時間和空間的感受力被扭曲,自我和環境的邊界模糊,這有可能創造出非常美好的體驗,但人也有可能因失去身體和思考的控制力,而感到非常恐懼。不過,專家一致同意,LSD 並不會造成生理或情緒的成癮現象。

但是,使用 LSD 帶來的情緒亢奮真的可以協助人類克服恐懼嗎?德國專攻焦慮症的權威、哥丁根大學精神病學教授 Borwin Bandelow 持懷疑態度。他說:「全世界各種療法都會如此聲稱。」不過,他也希望透過嚴密控制的學術研究,檢證精神作用性物質治療焦慮症的效果。

Borwin Bandelow 表示:「這真是個非常有趣的主題。」

LSD 會改變人的感官知覺,外界的各種物體霎時看似有生命、人也感覺自己好像漂浮在半空中,不過這其實只是 LSD 其次的效果。Peter Gasser 指出,更重要的是,在 LSD 療法中病患可快速建立深度自我覺知以及信任關係。他認為,唯有用 LSD,才能達到這樣高的強度。

在他的研究框架中,Peter Gasser 被許可在 12 名有焦慮症狀的病患身上進行測試,這些患者因嚴重生理疾病而出現焦慮。Peter Gasser 對當中的 8 位施以 200 毫克的 LSD 膠囊,兩個整天的療程間隔數周;剩下 4 位對照組,則接受 20 毫克幾乎不起作用的輕微劑量。

他承認,病患很快就發現自己吞下去的是什麼東西,不過這都是為了醫學研究。

到目前為止,共有 3 名患者在接受有效劑量後因療程而受益;但研究還在進行中,而且 Peter Gasser 表示 12 個病患實在太少,很難在統計上證明療程有效。「研究結束時,我們希望能展現的是『沒有意外發生』,而且結果顯示 LSD 是種有效的治療方法。」

罹癌的 Udo Schulz 發現,自己很難明白詳述自己的迷幻藥體驗,「盆栽啦、繡帷啦、整個房間突然都變得有生命一樣。」他手指交叉、靜靜凝視著窗外,頓了一下,「那是種神秘的共有一體的感覺…」

Udo Schulz 的病痛從 2006 年春天開始浮現,當時他正開始一項新工作─穩定的看護,起初食慾不振,他以為是工作壓力太大,接著他發現飯後都會胃痛,接著食量變小、體重減輕,最後終於被送進醫院。

經過幾天住院檢查,「我讀自己的病歷,發現診斷結果就是我得了胃癌…」

知道這樣的事情後他是什麼反應呢?「噢,首先我在想:這不是我的病歷,根本不可能。我身體一直很健康。」 Udo Schulz 說著,嘴角牽出一抹淡淡的微笑。

但他發現他必須接受治療,1/3 的食道和大部分的胃都被切掉了。不過醫生沒發現癌細胞轉移的跡象,所以他也不需要進行化療。

然而,在此之後恐懼霸佔了他的生命。他被自己「永遠無法再健康強壯、有力量」的想法折磨著,他覺得自己會失去工作,會必須放棄。他因為重新努力工作而感到筋疲力竭,他因失眠而苦。心理醫師的晤談治療也起不了什麼作用。

但有天他在網路上讀到瑞士的 LSD 研究,即刻深受吸引,「經過預備測試,我似乎就是焦慮症狀的病人。」

從開始接受 LSD 療法到現在,已經有一年了,他現在也再度全職工作,幾個月前他開始在銀髮照護的門診工作,因為這樣他可以彈性排班、適當休息。他希望這樣的改變可以有助於應付全職工作。他一直騎腳踏車,每周打幾次桌球來健身。

Udo Schulz 相信 LSD 真的對自己有助益,每當他感到不幸或低落時,LSD 會適當支持他、給他精神刺激。藥效發作時,他第一次完整感受自己對癌症的悲傷和憤怒,「突然,我就像小嬰兒一樣大哭起來…」

但唯一讓他遺憾的,就是兩天療程實在太短,「我很想繼續 LSD 療程。但如果是非法的,就不能繼續了…」他靜靜望著窗外。

2009年8月13日 星期四

魔獸爭霸III密技

 在遊戲中按下 Enter 鍵後輸入密技~
 輸入正確會出現---密技啟動---字樣!
ihavethepower =英雄昇十級(限寒冰霸權)

whosyourdaddy = 無敵且擁有一擊必殺

  thereisnospoon = 法力無限
  iseedeadpeople = 顯示全部地圖
greedisgood

  WhoIsJohnGalt = 研發加速
  WarpTen = 快速建築
  SharpAndShiny = 建築物昇級
  Synergy = 科技全開
  KeyserSoze = 加黃金
  LeafItToMe = 加木材
  PointBreak = 加人口上限
  allyourbasearebelongtous = 立即獲勝
  somebodysetupusthebomb = 立即戰敗
  ItVexesMe = 不會被判定獲勝
  StrengthAndHonor = 不會被判定戰敗
  RiseAndShine = 黎明
  LightsOut = 黃昏
  DaylightSavings = 調整時間
  Motherland = 跳關 (如 human 04)
  IocainePowder = fastdeath 

寶石TD V2.2繁中 - 魔獸Ⅲ其他地圖版 - 魔獸爭霸Ⅲ版 - 鐵之狂傲遊戲網

紅(紅寶石):擴散攻擊
綠(翡翠  ):毒緩
黃(黃玉  ):多重攻擊
藍(藍寶石):冰緩
紫(紫晶  ):對空攻擊
青(青綠石):快速攻擊
白(鑽石  ):對地攻擊, 爆擊
米(蛋白石):攻速加成靈氣

隨機的塔(寶石)的品質有五種:

1.碎裂的、2.瑕疵的、3.普通的、4.無瑕的、5.完美的

PS1.品質越高其攻擊力及攻擊範圍皆有增強
PS2.在礦坑(主堡)可以升級高品質寶石的出現機率


特殊塔合成表

名             稱                   白       說                                明

銀                            1    1                1          冰冷濺射150點
孔雀石                 1                     1          1     同時攻擊範圍850內所有目標45點
星彩紅寶石        12                  1                      擊範圍650內所有目標65點
玉                       3          2                     3    速50%, 毒傷10點持續3秒
                                                                 1%暈2秒, 1%搶錢, 5%4倍傷害
紅水晶              3  4               2                      只能對空, 扣防6點,攻擊範圍1500
粉紅鑽石                      3                   35         能對地, 10%機率造成8倍傷害
黑暗翡翠               5     2    4                          10%暈1.5秒, 15%4倍傷害
雞血石              5                   3      4              範圍500內焚身100點傷害, 濺射攻擊
黃色藍寶石         4         4    5                          範圍400濺射並緩速
鈾                              5    3                     2   範圍900內每秒70點傷害
                                                                  範圍500內緩速50%
                                                                  範圍700內所有敵人, 每秒焚身190點
金                                        45          2        30%2倍傷害, 扣防8點
黑色貓眼石                                      3   4    5   範圍1200內所有塔傷害提高40%
帕拉依巴碧璽           2                     25         4   範圍650扣防6點光環, 20%施展
                                                                  霜氣新星250點傷害, 消耗mp5點,

2009年8月3日 星期一

儘早發表, 經常發表新版本 (Release Early, Release Often)

儘早, 經常發表新版本是 Linux 發展模式中非常重要的一環. 過去, 大部份的 程式發展者 (包括我) 認為這個策略對較大型的專案是不好的, 因為早期的版本 幾乎可以定義為多錯的版本, 我們並不想把使用者的耐心消磨殆盡.
這個過去的信念加強了軟體的發展要用建造教堂的方式的想法. 假如我們極欲 強調的目標是讓使用者在軟體中發現最少的錯誤, 那你何不每半年 (或更長) 才 發表一個新版本, 並且在發展新版本的期間, 賣力地除錯而累得像條狗似的. Emacs 的核心部分 (用 C 語言寫的) 就是用這種方式發展的, 但它的 Lisp 程式 庫就不是. 因為 Emacs 的 Lisp 資源庫不在自由軟體基金會的管轄內, 你可以在 其中找到新發展的 Lisp 程式使用, 而不受限於 Emacs 的發表週期.
在 Emacs 的 Lisp 程式庫中, 最重要的一個來源是俄亥俄州的 elisp 資源庫, 它先前的精神就已經具有今日大規模 Linux 資源庫的特色, 但當時我們之中卻 很少有人思考過我們到底做了什麼, 甚至想過我們已對自由軟體基金會的 ``建造 教堂'' 的發展模式提出質疑. 1992 年左右, 我很認真地要把俄亥俄州 elisp 資源庫中許多程式加入 Emacs 正式的 Lisp 程式庫中, 但卻遭遇到官方的阻礙 而失敗了.
但一年之後, Linux 已受到四方的矚目, 也帶來不同而且更健康的觀點, Linus 的開放性發展策略和 ``建造教堂'' 非常不同. 當時 Linux 的兩大資源庫 sunsite 和 tsx-11 正在萌芽, 有許多版本在交流著, Linux 核心系統發表新版本 的頻繁程度前所未有.
Linus 以最有效的方法, 視使用者為協同發展者:
[格言 7] 儘早, 經常發表新版本, 並且傾聽使用者的意見.
Release early. Release often. And listen to your customers.
Linus 的創新並不完全在此 (這在 UNIX 世界是行之有年的傳統了), 而在於提高 這個做法效力的層次, 使其能匹配他在發展的系統的複雜度. 早期在 1991 年左右 , 許多人都知道他一天內發表一次以上 Linux 核心程式旳新版本. 因為他善用網 際網路和協同發展者們合作更勝於其他人.
他能我也能嗎? 還是只有像他這樣的天才才辦得到?
我並不認為如此, 雖然 Linus 是一位很厲害的高手 (在我們之間, 有多少人能夠 完整地寫出一個具有商品品質的作業系統核心呢? ), 但 Linux 並不是一個空前 耀進的觀念, Linus 也並非 (或者說至少目前還不是) 如 Richard Stallman 或 James Cosling (NeWS 和 java 的創始者) 這樣的天才創新者, 而我個人認為他 是一位天才工程師, 他有避免程式錯誤及避免程式發展掉入死胡同的第六感, 和 找到兩點間最省力路徑的技巧. 事實上, 整個 Linux 的設計中, 我們可以看到 Linus 表現出的品質和他保守而簡單的設計取向.
承上所說, 如果快速地發表新版本和徹底地善用網際網路媒介不是突然冒出, 而是 以 Linus 天才工程師洞見所得的最省力路徑, 那麼他把網際網路的什麼功用發揮 到最大?
其實問題的本身已反應出答案, Linus 讓 Linux 的高手和使用者們經常感覺刺激 和有收穫 -- 感覺刺激是因協助發展 Linux 得到自我滿足, 感覺有收獲是因經常 (甚至每天) 進步的 Linux 幫助他們把工作做得更好.
Linus 想直接將投入除錯和發展的 ``人-時'' (person-hours) 數加到最大, 即使要付出的代價是程式碼的不穩定, 或是因一些程式錯誤被證實無法追蹤而 嚇走原有的使用者. Linus 會如此做是因為他相信:
[格言 8] 以足夠多的 ``beta 版'' 測試者和協同發展者做基礎, 幾乎程式 中的每一個問題都可以很快地找出來, 並且對某些人而言, 針對發現的問題的解決方法是顯而易見的.
8. Given a large enough beta-tester and co-developer base, almost every problem will be characterized quickly and the fix obvious to someone.
或者用比較不那麼正式的說法: ``足夠多的人來看程式, 所有的錯誤都變得淺顯'', 我將此命名為 ``Linus 定律''.
我原本先前的論述是: ``某些問題對某些人而言是容易解決的'', 但 Linus 有不同的意見: ``瞭解並解決問題的人不一定是第一個發現問題的人'', 他說: ``有些人發現問題, 有些人解決問題, 我願正式強調 -- 發現問題是 較大的挑戰. '' 而在 Linux 的世界, 發現問題和解決問題的速度都很快.
我想這就是教堂模式和市集模式最主要的不同, 以教堂建造者的觀點來看程式 發展, 程式錯誤和相關問題難以處理, 並隱伏在深處, 需要數個月的工夫仔細察看 來找到它們, 而這對程式發展者的自信少有加許. 發展的期間越長, 一旦經冗長等 待的新版本發表後不如預期完美, 使用者的失望也越大.
另一方面就市集發展模式的觀點來看, 它假設程式錯誤都是顯而易見的, 或者說 至少在上千位渴望新版的協同發展者面前, 程式錯誤很快地都變得淺顯, 因此經常 發表新版本是為了獲得更多的指正, 以及避免偶爾笨拙的修補.
以上已說明足夠 ``Linus 定律''. 如果 ``Linus 定律'' 是假的, 那麼任何像 Linux 核心程式這樣複雜的系統, 並且擁有像 Linux 核心程式這麼多的高手 在發展, 早就因溝通不良及未被發現的程式錯誤而崩塌. 反過來說如果 ``Linus 定律'' 是真的, 那正可解釋為什麼相對地 Linux 比較沒有程式錯誤.
也許 Linus 定律並不是一個驚奇, 社會學家多年前發現到在一群素質相同的觀察 家中, 他們共同做出的預測要比其中任一位單獨所做的要來得可信. 這被稱為 ``Delphi 效應''. 可見 Linus 只是把 ``Delphi 效應'' 用在發展作業系統時 對程式的除錯上, 所以 ``Delphi 效應'' 能夠克服發展系統的複雜度, 即使複雜如作業系統核心.
[譯注] Delphi 是希臘古都, 以善作預言的 Apollo 神殿而聞名.
我在此要感謝 Jeff Dutky dutky@wam.umd.edu, 他指出 ``Linus 定律'' 亦可稱 之為 ``程式除錯可併行處理''. Jeff 觀察到多位程式除錯者在工作時需要和一些 程式發展者溝通協調, 但是程式除錯者彼此間卻不需如此. 所以增加程式除錯者 並不會像增加程式發展者那樣, 多出平方倍的複雜度和管理成本.
理論上造成程式除錯效率減低的原因是多位除錯者重複同一件工作, 就實際的情形 而言, 在 Linux 的世界中幾乎不會發生這樣的狀況. ``儘早, 經常發表新版本'' 這個策略使得程式錯誤的修補回饋得很快, 藉此將除錯者重複同一件工作 的機會減至最低.
Brooks 曾發表過一個即席的看法, 和 Jeff 的看法相關: ``維護一個廣為人用 的程式的總成本通常是發展這個程式成本的百分之四十或更多, 令人訝異的是 這維護成本深受使用者人數的影響, 越多的使用者發現越多的程式錯誤.'' (這正是我所要強調的)
因為增加越多的使用者, 就會增加考驗程式的方法, 所以使用者越多, 發現的程式 錯誤也越多, 當使用者也是協同發展者時這種效應會再被放大, 每一位使用者以不 同的直覺 , 不同的分析工具, 和不同的角度來標明程式錯誤, 因為這些不同, ``Delphi 效應''似乎真的有作用了, 在個別情況下的除錯工作, 也因這些不同而 減少重複出力的可能.
所以, 以程式發展者的眼光看來, 增加更多的 beta 版測試者也許不會減少目前藏 在深處的程式錯誤的複雜度, 但可以增加某位除錯者以他的工具程式找到這個程式 錯誤的機會, 而這個程式錯誤對這位除錯者來說是淺顯的.
Linus 也在這種方式上下了賭注. 因為程式都會有錯誤, Linux 核心程式 以一種特別的方式來定出版本號碼, 讓使用者可以選擇要用上一個比較穩定的版本 , 還是選擇錯誤風險比較高的新版來使用新功能. 這個策略尚未正式為大部分的 Linux 高手所採行, 但是它也顯示出一個事實, 就是使用者可做選擇使得這兩種版 本都更有吸引力.

2009年8月2日 星期日

php下的MVC [Zend Framework] 教學

http://phorum.study-area.org/index.php/topic,50393.0/wap2.html

uberr:
Zend Framework是php裡頭其中一種Framework.在台灣跟香港都比較難找到關於Zend Framework的文章.反而CakePHP的文章就很多.所以今天我想分享一下我的心得.我現在的Project都是用Zend Framework來完成.Zend Framework提供大量的module給你使用.它還提供連接Google,Yahoo,Flickr,Amazon..etc Web Services的module.

Zend_Auth // login module
Zend_Db // database module
Zend_Gdata // Google Application module

如果想要了解多些關於MVC,自己到google找吧.

M = Model // 設定連接資料庫的資料[當使用Zend_Db_Table才會用上]
V = View // 顯示的頁面
C = Controller // 控制器,就是你的php程式碼

運作過程:
鍵入網址->Controller->執行Action->回傳給View(顯示頁面)

運作原理:
example: http://www.example.com/auth/login
http://www.example.com // 網址
auth // Controller [控制器]
login // Controller裡面的Action [動作]

程式碼:

class AuthController extends Zend_Controller_Action
{
public function loginAction()
{
// check username and password
}
}

如果你沒有加入任何param係網址裡頭,預設是使用IndexController和Index Action

Zend Framework架構:
application/
controllers/
IndexController.php // 所有Controller一定要大寫開頭
models/
views/
scripts/
index/
index.phtml // 記得是phtml,不是html
htdocs/
scripts/
images/
styles/
library/
.htaccess
index.php

安裝Zend Framework:
1.下載 Zend Framework,PHP5,MYSQL
http://framework.zend.com/releases/ZendFramework-1.0.3/ZendFramework-1.0.3.tar.gz
2.建立Zend Framework架構
3.解壓到Zend架構下的library目錄下,tar -zxf ZendFramework-1.0.3.tar.gz -C /var/www/html/[Zend 目錄]/library/
4.create .htaccess,寫入到 .htaccess
RewriteEngine on
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
5.修改httpd.conf,把AllowOverride改成All

現在我們要建立index.php,IndexController.php,index.phtml.index.php 它是用來設定要重導(Route)去邊一個Controller,include module.是一個很重要的file.

廢話少說,來點實作吧~!

index.php
程式碼:

setControllerDirectory('./application/controllers'); // 設定Controller目錄的路徑
$frontController->dispatch();


IndexController.php
程式碼:

view->message = "Zend Framework tutorial"; // 回傳 message
}

public function helloAction()
{
$this->view->message = "Hello World"; // 回傳 message
}
}


index.phtml
程式碼:

message;
?>


http://localhost/index/index
Display Result="Zend Framework tutorial"

hello.phtml
程式碼:

message;
?>


http://localhost/index/hello
Display Result="Hello World"

Demo:
http://wingning.no-ip.org/studyarea/helloworld/
http://wingning.no-ip.org/studyarea/helloworld/index/hello

下載:http://wingning.no-ip.org/studyarea/download/helloworld.tar.gz

這個二個Application是我使用Zend Framework+Dojo開發的.如果大家對Zend Framework和Dojo有興趣,我可以把我其它的心得分享出來.

http://wingning.no-ip.org/lab/invoice
username: admin
password: 123456

http://wingning.no-ip.org/lab/competition

網 路 安 全 與 匿 名 信

文 思



--------------------------------------------------------------------------------

網 路 安 全 嗎

  由 於 全 球 資 訊 網 ( World Wide Wed) 的 盛 行 , 使 得 原 本 只 在 校 園 中 應 用 的 INTENET, 很 快 速 的 得 到 全 球 電 腦 使 用 者 與 各 企 業 的 青 睞 , 而 成 為 一 種 潮 流 。 許 多 企 業 早 已 架 設 自 己 的 網 址 ( Web Site) , 對 外 是 宣 傳 與 服 務 的 窗 口 , 對 內 則 是 各 單 位 傳 遞 資 訊 的 管 道 。 現 在 你 與 其 他 公 司 聯 絡 , 只 有 電 話 與 地 址 是 派 不 上 大 用 途 的 , 如 果 能 有 對 方 的 站 址 Web address與 email address才 方 便 。 目 前 已 經 越 來 越 多 人 擁 有 自 己 的 電 子 信 箱 ( EMAIL BOX) , 同 時 也 經 常 透 過 WWW查 詢 瀏 覽 各 式 站 址 , 或 者 加 入 網 路 論 壇 ( NETNEWS) 大 放 厥 詞 一 番 。 在 這 些 活 動 的 過 程 你 是 否 會 注 意 到 本 身 隱 私 保 密 的 問 題 呢 ?

  當 一 個 站 在 INTERNET上 開 張 時 , 實 際 上 是 承 受 許 多 風 險 。 不 但 要 對 重 要 的 資 料 設 定 存 取 權 限 , 而 且 對 於 全 球 的 HACKER也 要 注 意 隨 時 會 遭 到 入 侵 破 壞 。

  國 內 Epson就 發 生 公 司 網 路 遭 受 入 侵 發 生 嚴 重 損 失 , 國 民 黨 的 Web國 父 肖 像 被 人 以 美 女 圖 取 代 , 網 路 論 壇 上 不 時 有 人 求 援 因 為 他 的 信 箱 被 灌 爆 了 , 每 天 早 上 一 打 開 Email信 箱 又 看 到 一 堆 垃 圾 信 ( Junk mails) 。 當 這 類 事 情 持 續 不 斷 的 發 生 時 , 我 想 應 該 是 每 個 人 提 高 對 網 路 安 全 注 意 的 時 候 了 。

  由 於 網 路 上 的 安 全 問 題 相 當 複 雜 , 所 以 這 篇 文 章 主 要 是 集 中 討 論 個 人 在 上 網 的 過 程 , 可 能 會 遭 遇 到 的 問 題 以 及 如 何 避 免 。 同 時 也 提 到 了 匿 名 信 件 的 使 用 以 保 護 自 己 的 隱 私 。

電 子 郵 件 與 瀏 覽 器

  每 天 一 打 開 Email信 箱 , 看 到 滿 滿 的 廣 告 信 , 摻 雜 著 重 要 的 信 件 , 這 大 概 是 一 般 使 用 者 最 常 遇 到 的 事 情 。 如 何 避 免 不 相 干 的 人 拿 你 的 Email Address濫 發 信 , 那 你 就 必 須 知 道 平 時 在 網 路 上 漫 遊 時 , 得 不 讓 自 己 的 資 料 曝 光 。 在 甚 麼 情 況 下 你 的 Email Address會 被 其 他 有 心 人 擷 取 而 自 己 卻 不 注 意 呢 ?

在 Netnews上 發 表 文 章

  一 般 而 言 在 Netnews上 討 論 時 , 並 不 會 刻 意 隱 瞞 自 己 身 分 , 除 非 是 漫 罵 。 但 是 對 於 一 些 特 殊 的 主 題 就 不 是 如 此 , 像 是 在 性 的 討 論 區 中 用 自 己 真 名 , 發 表 對 同 性 戀 的 經 驗 或 看 法 , 恐 怕 就 沒 有 多 少 人 能 接 受 。 同 時 在 政 治 版 上 , 對 於 執 政 當 局 有 嚴 厲 的 批 判 也 怕 會 遭 受 調 查 監 視 。 對 於 此 類 的 情 況 , 在 TANet BBS常 是 利 用 公 共 帳 號 , 方 便 大 家 暢 所 欲 言 , 而 想 在 Netnews上 發 表 意 見 , 又 不 想 身 分 曝 光 時 , 匿 名 轉 信 大 概 是 不 錯 的 選 擇 。

瀏 覽 別 人 的 homepage

  你 知 道 在 瀏 覽 首 頁 時 Download資 料 很 可 能 會 把 病 毒 抓 回 家 , 可 是 你 可 能 沒 注 意 到 , 別 的 站 台 隨 時 會 監 看 登 入 的 用 戶 , 看 他 是 來 自 何 方 , 使 用 什 麼 電 腦 , 用 哪 牌 子 的 Browser, 這 些 原 本 是 個 人 的 資 料 卻 被 Browser送 到 伺 服 器 端 。 這 些 資 料 原 本 是 提 供 給 WebMaster分 析 參 觀 自 己 各 頁 受 歡 迎 的 程 度 , 但 是 如 果 Web Server與 Browser都 是 同 一 家 公 司 寫 的 , 除 非 你 監 控 封 包 的 資 料 , 不 然 難 保 Browser洩 露 你 電 腦 中 的 資 料 。

  在 於 瀏 覽 器 會 把 User設 定 傳 給 Web Server, 這 有 時 候 會 造 成 一 些 困 擾 , 在 Internet上 有 一 個 站 台 專 門 是 幫 你 做 匿 名 瀏 覽 的 工 作 。 當 你 想 看 http://www.yahoo.com/時 , 只 要 鍵 入 http://www.anonymizer.com:8080/http://www.yahoo.com/, Anonymizer站 台 就 代 替 你 到 Yahoo抓 取 資 料 , 轉 傳 給 你 。 因 為 沒 有 直 接 接 觸 其 他 站 , 所 以 你 的 資 料 也 不 會 洩 露 。 其 實 這 種 方 式 很 像 proxy server, 但 是 Anonymizer宣 稱 他 們 不 會 Log你 的 資 料 , 而 且 對 於 你 透 過 hyper-text的 鍵 結 , 以 及 其 他 ftp, gopher, news等 服 務 都 具 有 相 同 匿 名 效 果 。

  至 於 網 路 論 壇 的 管 理 , 實 際 上 已 經 日 趨 嚴 格 。 許 多 Netnews Server, 為 避 免 用 戶 過 多 , 已 經 不 提 供 給 非 自 己 用 戶 使 用 , 像 是 Hinet:netnews。 hinet。 net, 如 果 你 不 是 透 過 Hinet的 撥 接 , 或 Hinet主 機 , 你 是 無 法 使 用 的 。 其 他 許 多 News Server也 會 限 制 非 自 己 用 戶 只 能 讀 文 章 , 不 能 發 佈 文 章 。 更 由 於 透 過 email來 發 佈 文 章 被 濫 用 , 以 致 於 已 經 很 少 主 機 願 意 提 供 這 種 服 務 。 這 對 於 我 們 想 用 匿 名 轉 信 來 發 佈 文 章 的 確 也 造 成 阻 礙 。 ( 有 關 Netnews可 參 考 陳 泰 維 先 生 http://www.isl.net.tw/~terry/usenet/faq.htm)

匿 名 信 的 使 用

匿 名 信 工 作 的 原 理 :

  假 使 使 用 者 想 發 一 封 信 給 abc@xyz.com, 可 是 又 不 想 讓 對 方 知 道 這 封 信 是 誰 發 出 來 的 , 那 麼 他 可 以 利 用 匿 名 轉 信 站 , 先 把 信 件 按 照 轉 信 站 的 格 式 準 備 好 , 填 好 收 信 人 位 址 , 同 時 用 加 密 程 式 把 信 件 內 容 處 理 過 , 避 免 信 件 在 送 到 轉 信 站 前 被 攔 截 到 。 轉 信 站 收 到 這 封 信 後 , 會 把 發 信 人 姓 名 地 址 從 信 中 移 除 , 同 時 將 信 件 解 密 , 送 到 收 信 人 手 中 。 收 信 人 收 到 信 時 , 只 知 道 這 是 轉 信 站 來 的 信 , 而 不 知 道 原 始 發 信 人 是 誰 。

  實 際 上 有 的 轉 信 站 不 只 是 轉 信 而 已 , 他 提 供 使 用 者 在 站 上 註 冊 自 己 想 使 用 的 名 字 與 密 碼 , 當 使 用 者 透 過 轉 信 站 與 發 信 時 , 收 信 人 只 能 看 到 一 個 “ 假 ” 的 名 字 , 如 果 收 信 人 回 信 到 這 個 “ 假 ” 名 字 時 , 轉 信 站 會 把 這 封 回 信 再 轉 給 原 發 信 人 。 於 是 你 的 真 名 地 址 都 不 會 洩 露 , 對 於 線 上 世 界 , 你 只 是 一 個 ID。 這 種 轉 信 站 又 叫 做 準 匿 名 轉 信 站 ( pseudo-anonymous remailer) 。

為 何 使 用 匿 名 信 :

  轉 信 站 會 存 在 的 原 因 相 當 多 , 主 要 的 用 途 不 外 是 保 護 使 用 者 的 隱 私 權 。 當 然 也 有 許 多 人 誤 用 它 做 一 些 非 法 的 勾 當 , 如 郵 寄 匿 名 信 件 炸 彈 把 別 人 信 箱 灌 爆 , 用 來 交 易 毒 品 色 情 資 訊 , 這 些 有 害 的 行 為 當 然 是 不 被 允 許 的 , 每 個 轉 信 站 都 會 告 訴 使 用 者 在 使 用 他 們 的 服 務 時 , 所 要 注 意 的 事 項 。 一 旦 你 的 行 為 危 及 到 他 們 , 也 許 就 停 止 你 的 使 用 權 或 者 請 警 察 來 處 理 。 如 果 收 到 匿 名 信 得 人 覺 得 這 封 信 完 全 是 垃 圾 ( Junks) 或 對 你 造 成 很 大 得 困 擾 , 你 也 可 以 在 信 上 找 到 一 個 “ 誤 用 ” ( abuse) 的 回 覆 地 址 。 只 要 回 信 給 他 們 , 他 們 也 會 停 止 轉 信 到 你 的 信 箱 , 同 時 也 會 追 蹤 原 發 信 人 。

  大 部 分 的 轉 信 站 都 是 免 費 提 供 這 種 服 務 的 , 為 何 他 們 要 提 供 這 種 服 務 呢 ? 我 想 大 概 只 能 說 為 了 維 護 言 論 自 由 與 個 人 隱 私 權 。 在 我 們 的 現 實 社 會 上 也 有 些 這 種 例 子 , 如 祕 密 證 人 , 當 暴 露 身 分 時 會 對 自 己 安 全 造 成 威 脅 就 需 要 匿 名 。 尤 其 在 越 威 權 的 國 家 就 越 需 要 這 種 功 能 。 對 於 個 人 而 言 保 護 隱 私 當 然 是 最 重 要 的 , 像 是 我 個 人 申 請 HiNet時 , 曾 要 求 自 己 的 email address不 要 出 現 在 廣 告 名 單 上 , 結 果 現 在 還 是 難 逃 被 廣 告 信 轟 炸 的 下 場 , 每 天 看 到 私 人 信 件 和 廣 告 信 夾 雜 在 一 起 實 在 很 難 處 理 。 而 且 徵 信 社 效 率 那 麼 好 , 你 拿 車 牌 號 碼 給 他 , 他 就 把 車 主 資 料 給 你 , 難 保 以 後 不 會 有 由 email查 真 實 姓 名 資 料 的 服 務 出 現 。 有 時 候 在 網 路 上 談 到 一 些 敏 感 的 話 題 , 如 種 族 歧 視 , 政 治 或 者 是 性 別 的 問 題 , 很 容 易 引 起 混 戰 。 通 常 只 有 在 匿 名 的 狀 況 下 你 才 會 暢 所 欲 言 , 但 是 討 論 越 是 不 必 負 責 , 就 可 能 用 流 於 偏 激 。

如 何 使 用 匿 名 信

Ex-1: 用 WWW發 匿 名 信

  首 先 請 連 上 http://www.replay.com/remailer/anon.html, 這 一 頁 有 一 個 Link“ Remailer Rules and Regulations” , 提 到 有 關 於 使 用 的 規 則 希 望 你 能 先 看 一 下 , 不 要 惡 意 的 利 用 這 種 服 務 。 接 著 有 兩 個 轉 信 站 可 供 選 擇 , 你 只 要 把 收 信 人 地 址 填 入 “ To: abc@xyz.com” 這 一 欄 , 接 著 把 主 題 與 內 文 寫 好 後 , 按 下 Send Mail的 按 鈕 即 可 。

圖 一 連上WWW發匿名信

  replay轉 信 站 會 回 一 個 訊 息 說 : 如 果 一 切 無 誤 那 麼 abs@xyz.com會 收 到 這 封 信 。

圖 二 轉信站回信的說明訊息

  收 信 人 會 看 到 像 Fig.3的 一 封 信 , 來 自 nobody@flame.alias.net( Anonymous) 。 主 題 與 內 文 是 你 填 入 的 內 容 , 同 時 多 了 一 項 說 明 Comments: Please report misuse of this service to remailer-admin@flame.alias.net, 幾 乎 所 有 的 轉 信 站 都 會 加 上 這 一 項 欄 位 , 保 護 轉 信 站 與 收 信 人 雙 方 , 畢 竟 收 信 人 也 有 權 力 拒 收 匿 名 信 。

圖 三 收人收到這封信囉!

  用 這 種 方 式 是 最 簡 單 的 , 但 是 由 於 傳 輸 時 沒 有 將 內 文 加 密 ( Encrypted) 處 理 , 所 以 很 容 易 被 InterNet上 的 其 他 主 機 “ 竊 聽 ” , 像 是 你 自 己 的 ISP, 就 有 能 力 檢 查 信 件 內 容 。

Ex-2: 用 一 般 Mail Client

  使 用 像 是 Eudora, Pegasus這 類 的 Mail Client也 相 當 方 便 的 。 以 Eudora為 例 : 在 收 信 人 一 欄 填 入 轉 信 站 址 , To: remailer@replay.com或 remailer@shinobi.alias.net Subject欄 中 填 入 你 希 望 收 信 人 收 到 的 主 題 , 內 文 則 以 兩 個 ::起 頭 以 Anon-To:來 註 明 收 信 人 地 址 接 下 來 加 上 信 件 內 文 即 可 注 意 簽 名 檔 一 定 要 拿 掉 不 然 就 喪 失 了 匿 名 的 效 果 :




> From: myself@Hinet.Net

> To: remailer@replay.com

> Subject: 這 是 一 封 匿 名 信

( 以 下 為 內 文 )

> ::

> Anon-To: abc@xyz.com

>

> 由 這 一 行 開 始 填 入 匿 名 信 的 內 容

> 注 意 把 簽 名 檔 匯 入 的 功 能 拿 掉


  單 純 發 一 封 這 樣 的 信 也 還 不 算 是 相 當 安 全 , 因 為 轉 信 需 要 時 間 , 如 果 收 信 人 收 到 許 多 封 匿 名 信 , 便 可 以 根 據 這 轉 信 的 時 間 差 來 追 蹤 發 信 人 。 所 以 你 可 以 加 入 一 行 指 令 Latent-Time: +1:00r, 表 示 轉 信 站 收 到 信 後 , 在 一 個 小 時 內 隨 機 挑 一 個 時 間 發 信 ( 不 加 r在 時 間 後 則 延 遲 整 1小 時 ) 這 樣 就 更 難 追 蹤 了 。

  有 些 發 信 程 式 會 自 動 在 信 件 後 加 入 主 機 或 使 用 者 資 料 , 你 也 不 想 送 出 這 些 東 西 , 那 麼 可 以 用 Cutmarks: --, 告 訴 轉 信 站 凡 是 出 現 在 --之 後 的 文 字 一 律 去 除 。 同 時 如 果 你 有 其 他 的 表 頭 ( Header) 要 加 , 可 以 用 ##新 起 一 行 。

  運 用 Cutmarks與 ##的 組 合 , 我 們 可 以 讓 轉 信 站 在 信 件 轉 發 時 , 順 便 也 發 信 通 知 自 己 。 下 面 的 例 子 是 由 myslef@hinet.net寄 一 封 匿 名 信 到 abc@xyz.com, 轉 信 站 收 到 後 會 等 一 段 時 間 ( 一 個 小 時 內 ) 把 第 9-10行 的 內 容 送 到 abc@ xyz.com。 因 為 第 11行 是 Cutmarks, 所 以 當 第 二 段 文 字 處 理 , 第 二 段 也 是 匿 名 信 格 式 所 以 轉 信 站 又 以 同 樣 方 式 處 理 一 遍 , 送 一 封 信 通 知 自 己 。

  如 果 你 把 格 式 排 好 , 也 可 以 一 次 發 多 封 信 給 許 多 人 , 但 是 要 注 意 這 些 匿 名 轉 信 站 因 為 安 全 關 係 , 都 會 限 制 信 件 大 小 。






1 > From: myself@Hinet.net

2 > To: remailer@replay.com

3 > Subject: 匿 名 信

4 >

5 > ::

6 > Anon-To: abc@xyz.com

7 > Latent-Time: +1:00r

8 > Cutmarks: *

9 > 把 要 轉 給 abc@xyz.com 的 資 料 填

在 這 一 段

10 > 記 得 凡 是 在 Cutmarks 之 後 的 都 不

會 送 出

11 > *

12 > ::

13 > Anon-To: myself@hinet.net

14 > Cutmarks: --

15 >

16 > ##

17 > Subject: 通 知 信 主 題

18 >

19 > 寄 一 封 信 通 知 自 己

20 > 匿 名 信 以 送 出

21 > --

22 > 這 一 行 在 Cutmarks 之 後 不 會 送 出


Ex-3: 加 密 保 護 你 的 信 件

  因 為 TCP/IP的 封 包 在 網 路 上 傳 送 很 容 易 被 攔 截 或 造 假 , 如 果 所 有 資 料 原 封 不 動 地 由 電 腦 直 接 送 出 那 就 太 危 險 了 , 於 是 一 些 重 要 的 資 料 都 要 加 密 處 理 。 目 前 網 路 上 以 PGP( Pretty Good Privacy encryption) 最 為 普 遍 。

  要 把 文 件 利 用 PGP加 密 , 你 需 要 有 該 站 的 public key, 譬 如 replay站 , 你 可 以 發 封 信 到 remailer@replay.com, Subject欄 填 入 :remailer-help, 這 樣 該 站 就 會 把 使 用 方 式 與 PGP Public Key告 訴 你 。

用 PGP, 把 下 列 資 料 編 碼 過 :




Line 1> ::

Line 2> Anon-To: abc@xyz。 com

Line 3>

Line 4> 要 送 出 的 資 料

Line 5> ...


  加 密 過 的 文 字 才 是 要 寄 給 轉 信 站 ( 使 用 PGP 請 注 意 如 果 在 非 Unix環 境 下 要 加 -t option, 詳 細 的 PGP中 文 FAQ可 參 考 http://www.isl.net.tw/~terry/, 是 很 好 的 PGP參 考 資 料 ) 格 式 如 下 :




>From: myself@hinet.net

>To: remailer@replay.com

>

>::

>Encrypted: PGP

>

>-----BEGIN PGP MESSAGE-----

>Version: 2.6.3i

>

>hIkDPRWysueuweUBA+jCk6zUyH67w

hv/jhNX7FnfoEntwazGuzLBhK4qeJNtd

mKY

>jdkJlSTDNw3nLtMbqpI5ZYOrHIHmlP

J7exSE4qRmT1wuUZoPG2RNxk6U65Ia

fDEF

>7HBkTqjUG2fLT0ITK3sys+nL4WJ5q3+

QI0bzkHborInL3GlIN9/nnfiS4qYAAAB/

>zK1cv3hrvtafbpL8brbttQqWVPXO43cg

feINrnPPO+K5yQFaW8GIP/t/NQWCJcF7

>484DX9fZij3ZSK34ayzf8MDTGKy0aim

R58RqylfXJl1q7AQJUV2p6q4aR5aXy

b9C

>LVSg/WVAW98EkDufmLp8Rjn+iiQpO8

K5T8bbjjQTcw==

>=Xumr

>-----END PGP MESSAGE-----

>

>跟 在 PGP MESSAGE 之 後 的 文 字 也 會 原

封 不 動 地 送 出

>所 以 簽 名 檔 要 注 意


  芬 蘭 一 個 相 當 有 名 的 轉 信 站 anon.penet.fi已 經 停 止 他 的 部 份 服 務 , 也 就 是 匿 名 的 ID轉 信 的 服 務 , 當 初 提 供 使 用 者 在 他 站 上 註 冊 一 個 ‘ 假 ’ ID, 使 用 者 透 過 這 個 ID和 外 界 通 訊 聯 絡 , 完 全 不 會 暴 露 自 己 的 身 分 。 但 受 到 一 般 使 用 者 濫 用 , 大 部 分 的 匿 名 轉 信 站 已 經 暫 停 這 種 功 能 , 只 是 單 純 的 轉 信 而 已 。 那 麼 收 到 匿 名 信 的 人 如 何 回 覆 這 封 不 知 名 的 信 呢 ? 利 用 PGP 編 碼 加 密 其 實 就 可 以 達 到 這 個 目 的 。 首 先 , 將 你 自 己 的 Email Address放 在 Anon-to這 個 標 題 後 , 再 利 用 PGP加 密 , 以 後 凡 是 你 想 跟 別 人 利 用 匿 名 方 式 來 互 通 Email, 你 就 可 以 把 這 段 含 有 Email Address加 密 的 文 字 送 給 對 方 , 同 時 告 訴 他 把 要 回 覆 給 你 的 信 附 加 在 後 然 後 利 用 匿 名 轉 信 站




> ::

> Anon-To: myself@hinet.net

>

>


  將 這 四 行 用 PGP加 密 , 附 在 匿 名 信 中 告 訴 收 信 人 以 下 列 格 式 回 信 到 remailer@replay.com remailer就 會 自 動 將 信 件 轉 到 你 手 中 了




> From: abc@xyz.com

> To: remailer@replay.com

>

> ::

> Encrypted: PGP

>

> -----BEGIN PGP MESSAGE-----

> Version: 2.6.3i

>

> 7HBkTqjUG2fLT0ITK3sys+nL4WJ5q3

+QI0bzkHborInL3GlIN9/nnfiS4qYAAAB/

> ( ..以 PGP 加 密 , 含 Anon-To: myslef

@hinet.net 的 資 料 )

> =Xumr

> -----END PGP MESSAGE-----

>

> User abc@xyz.com 要 回 信 的 內 容 加 在 這

之 後

> ...


  如 果 你 想 匿 名 發 佈 文 章 時 , 只 要 把 匿 名 收 信 人 由 Anon-To: xxx改 成 Anon-Post-To: alt.test, 該 封 匿 名 信 便 會 發 佈 到 alt.test討 論 區 中 。 但 是 否 由 於 前 面 提 到 的 email發 佈 文 章 的 限 制 , 筆 者 始 終 無 法 成 功 發 佈 文 章 到 newsgroup中 , 這 一 點 將 再 為 讀 者 更 新 。

結 論

  網 路 上 有 許 多 匿 名 轉 信 站 , 但 是 安 全 性 有 高 有 低 , 使 用 上 要 特 別 注 意 。 尤 其 是 轉 信 站 可 以 處 理 信 件 原 始 內 容 , 所 以 你 要 提 防 該 站 是 否 是 政 府 , 犯 罪 集 團 , 或 是 有 心 人 士 的 陷 阱 。 隨 時 注 意 網 路 上 對 這 些 站 的 討 論 , 同 時 串 連 許 多 個 匿 名 轉 信 站 來 避 免 追 蹤 , 常 用 的 站 址 請 參 考 表 列 一 。

  http://www.cs.berkeley.edu/~raph/remailer-list.html這 個 站 址 收 集 有 許 多 轉 信 站 址 , 同 時 也 提 到 了 這 些 站 的 可 靠 程 度 。 轉 信 速 度 有 時 快 有 時 慢 , 主 要 是 受 到 轉 信 的 人 數 的 影 響 , 通 常 會 比 直 接 發 的 email略 慢 , 若 是 用 PGP加 密 過 的 信 可 能 又 會 慢 上 一 大 截 。 表 列 二 是 節 錄 自 www.cs.berkeley.edu的 資 料 , 有 一 些 站 台 的 轉 信 速 度 供 參 考 , 筆 者 撰 稿 時 都 是 以 replay與 shinobi轉 信 站 來 測 試 。 感 覺 上 shinobi比 一 般 email慢 不 了 多 少 , 但 是 replay都 延 遲 約 五 分 鐘 。

  同 時 某 些 匿 名 轉 信 站 也 有 pseudonym提 供 使 用 者 使 用 別 名 , 可 以 讓 其 他 人 回 信 。 同 時 也 有 mixmaster新 一 代 的 轉 信 程 式 , 利 用 許 多 轉 信 站 來 提 高 安 全 性 , 將 來 有 機 會 再 介 紹 。

表 列 一 常 用 的 Remailer:




replay remailer@replay.com

shinobi remailer@shinobi.alias.net

flame remailer@flame.alias.net

extropia remail@miron.vip.best.com

mix mixmaster@remail.obscura.com

ecafe cpunk@remail.ecafe.org

amnesia amnesia@chardos.connix.com

alpha alias@alpha.c2.org

nymrod nymrod@nym.jpunix.com

lead mix@zifi.genetics.utah.edu

nemesis remailer@meaning.com

exon remailer@remailer.nl.com


表 列 二 更 新 日 期 : Mon 14 Oct 96


轉 信 站 email address 最 近 狀 況 延 遲 時 間
-------------------------------------------------------------------------------------------------
jam remailer@cypherpunks.ca --**+**-*** 32:21
cyber alias@alias.cyberpass.net -*-++++-*++ 54:45
dustbin dustman@athensnet.com +--+++--+++ 1:41:31
amnesia amnesia@chardos.connix.com ---------- 4:13:13
haystack haystack@holy.cow.net * ###-+-*#+ 21:46
exon remailer@remailer.nl.com ###**# -##+ 19:17
mix mixmaster@remail.obscura.com +++++---+++ 3:14:25
lead mix@zifi.genetics.utah.edu ---++++-+++* 1:03:35
squirrel mix@squirrel.owl.de --------++ 2:38:37
extropia remail@miron.vip.best.com --_. ------ 9:54:57
balls remailer@huge.cajones.com -****** *** 20:21
middle middleman@jpunix.com ---- . - 4:30:51
replay remailer@replay.com ****++- * 24:44
winsock winsock@c2.org +++------ 3:00:33




最 近 狀 況 符 號 說 明

# 五 分 鐘 內 回 應

* 一 小 時 內

+ 四 小 時 內

- 二 十 四 小 時 內

. 兩 天 內

_ 兩 天 以 上

干 擾 性 攻 擊 行 為 與 入 侵 來 源 追 蹤

收 到 廣 告 信 是 很 多 使 用 電 子 郵 件 者 的 共 同 經 驗 , 這 也 算 是 電 子 郵 件 干 擾 的 一 種 , 利 用 DNS正 查 、 反 查 , 來 減 少 主 機 受 到 傷 害 。

黃 力 堯
 
本 期 專 欄 將 講 解 入 侵 者 針 對 網 路 上 其 他 主 機 以 及 其 上 的 使 用 者 、 系 統 管 理 員 所 可 能 使 用 的 干 擾 性 行 為 , 以 及 如 果 發 現 自 己 的 主 機 有 遭 到 入 侵 的 可 能 時 , 要 如 何 的 找 出 入 侵 者 。

干 擾 性 攻 擊 行 為
干 擾 性 攻 擊 行 為 ( Confusing Attack) 指 的 是 入 侵 者 並 不 實 行 立 即 性 的 攻 擊 , 而 僅 僅 是 利 用 特 定 手 段 , 讓 欲 攻 擊 的 對 象 在 使 用 電 腦 上 受 到 干 擾 , 降 低 生 產 力 或 是 受 到 困 擾 。 一 般 來 說 , 此 種 攻 擊 方 式 多 透 過 下 列 數 種 管 道 來 進 行 , 將 分 數 期 講 解 。

電 子 郵 件 干 擾 與 干 擾 源 追 蹤
各 位 讀 者 可 曾 收 到 廣 告 信 ? 相 信 這 是 很 多 使 用 電 子 郵 件 者 的 共 同 經 驗 , 利 用 此 種 電 子 行 銷 手 法 早 已 經 不 是 新 聞 , 很 多 人 任 職 公 司 的 傳 真 機 也 是 一 天 到 晚 收 到 廣 告 傳 真 。 不 管 是 傳 真 或 是 電 子 郵 件 也 好 , 發 送 這 些 電 子 廣 告 信 的 人 以 及 其 所 發 送 的 信 件 , 幾 乎 都 有 下 列 共 通 特 點 :
1.不 讓 你 知 道 發 信 人 是 誰 ( 當 然 廣 告 內 容 除 外 , 上 面 一 定 會 有 廣 告 主 的 聯 絡 方 式 ) 。
2.發 信 人 自 己 也 知 道 廣 告 信 是 不 受 歡 迎 的 , 因 此 還 會 附 上 「 請 體 諒 業 務 辛 勞 ⋯ ⋯ 」 , 或 是 「 對 於 本 封 信 件 對 您 造 成 的 困 擾 我 們 深 感 抱 歉 ⋯ ⋯ 」 諸 如 此 類 道 歉 的 話 , 近 期 更 有 所 謂 「 為 響 應 環 保 , 愛 護 樹 木 , 我 們 不 用 紙 張 作 廣 告 ⋯ ⋯ 」 等 等 。
3.就 算 有 不 小 心 寫 出 自 己 的 電 話 或 電 子 郵 件 地 址 , 而 被 您 傳 真 或 寫 信 去 抗 議 的 , 他 也 不 會 理 你 , 下 次 該 收 到 的 廣 告 信 還 是 照 收 , 他 也 是 照 常 道 歉 。
很 多 人 對 於 廣 告 信 件 也 是 和 筆 者 一 樣 痛 恨 不 已 , 有 人 也 想 到 要 用 例 如 IE 4.0內 附 電 子 郵 件 軟 體 的 「 收 件 匣 助 理 員 」 ( 就 是 郵 件 過 濾 器 ) , 來 刷 掉 這 些 廣 告 信 件 , 但 是 很 遺 憾 地 , 這 些 過 濾 器 多 半 只 能 針 對 郵 件 的 標 題 , 發 信 人 來 作 過 濾 的 動 作 , 而 無 法 針 對 郵 件 的 內 文 來 作 過 濾 , 假 設 有 哪 套 郵 件 軟 體 是 可 以 這 樣 子 的 , 筆 者 一 定 會 設 定 成 只 要 郵 件 的 內 文 有 「 如 果 這 封 郵 件 造 成 您 的 不 便 , 我 們 深 感 歉 意 ! 」 諸 如 此 類 的 話 , 就 自 動 將 信 丟 掉 。 ( 如 果 各 位 讀 者 知 道 哪 套 郵 件 軟 體 可 以 這 樣 作 , 請 來 信 告 訴 筆 者 )
電 子 郵 件 干 擾 也 是 入 侵 的 一 種
而 為 什 麼 會 將 電 子 郵 件 干 擾 也 視 為 入 侵 的 一 種 ? 因 為 其 實 入 侵 的 定 義 在 於 「 他 人 擅 自 使 用 非 經 系 統 合 法 使 用 者 所 許 可 之 方 式 , 使 用 合 法 使 用 者 之 運 算 資 源 」 。
請 各 位 讀 者 注 意 : 廣 告 信 件 所 佔 用 的 是 你 花 錢 向 ISP租 來 的 磁 碟 空 間 , 下 載 廣 告 信 件 時 所 浪 費 的 是 你 向 中 華 電 信 租 用 電 話 線 路 所 需 的 電 話 費 , 過 濾 掉 廣 告 信 件 時 所 消 耗 的 是 你 可 以 拿 來 作 更 多 其 他 事 的 寶 貴 時 間 。
無 論 廣 告 信 件 業 者 再 怎 麼 向 你 道 歉 , 再 用 如 何 冠 冕 堂 皇 的 理 由 或 是 拿 環 保 的 大 帽 子 扣 你 , 你 都 不 應 該 原 諒 這 些 廣 告 業 者 , 或 對 他 們 採 取 姑 息 的 態 度 。 ( 註 一 )
而 且 當 廣 告 信 件 數 量 一 多 的 時 候 , 會 對 業 務 造 成 一 種 干 擾 , 試 想 每 天 上 班 時 候 都 要 看 一 大 堆 無 關 痛 癢 , 卻 又 天 天 寄 過 來 的 廣 告 信 有 誰 受 得 了 ? 更 不 用 說 某 種 可 以 不 斷 重 複 寄 信 , 轟 炸 你 的 信 箱 的 「 郵 件 炸 彈 」 軟 體 了 。

廣 告 信 件 是 否 合 法 ?
至 於 廣 告 信 件 是 否 合 法 呢 ? 目 前 國 內 的 法 律 上 , 沒 有 任 何 規 範 禁 止 寄 送 廣 告 信 件 ( 其 實 不 要 說 是 廣 告 信 了 , 網 路 上 的 其 他 行 為 一 樣 是 無 法 可 據 ) , 但 是 絕 大 多 數 的 ISP都 是 禁 止 這 項 行 為 的 。 如 果 你 曾 經 上 過 www.hinet.net, 就 會 看 到 裡 面 有 一 項 , 就 是 專 門 公 布 那 些 亂 寄 廣 告 信 , 而 被 停 止 使 用 權 的 用 戶 ( 如 圖 一 ) 。 不 過 , 對 於 發 送 廣 告 信 件 的 處 罰 , 也 就 僅 只 於 此 , 並 起 不 了 什 麼 警 告 作 用 。
很 多 人 雖 然 痛 恨 廣 告 信 件 , 但 是 拿 他 們 又 沒 有 辦 法 , 因 為 這 些 發 送 廣 告 信 的 人 , 都 不 會 寫 出 自 己 的 電 子 郵 件 信 箱 ( 因 為 他 們 也 怕 遭 到 言 論 或 是 郵 件 炸 彈 攻 擊 ) , 筆 者 看 過 一 封 最 囂 張 的 廣 告 信 件 ( 內 容 為 推 銷 電 子 郵 件 名 單 ) , 居 然 還 寫 著 : 「 你 絕 對 查 不 出 這 封 信 是 誰 發 的 , 這 封 信 就 是 證 據 」 , 而 事 實 果 真 如 此 嗎 ?

SMTP寄 送 郵 件 測 試
SMTP( Simple Mail Transfer Protocol) 協 定 是 目 前 在 Internet TCP/IP網 路 環 境 上 , 使 用 的 最 廣 泛 的 郵 件 傳 送 協 定 , 後 期 更 發 展 出 ESMTP( E為 Enhanced) 協 定 , 基 本 架 構 相 同 而 增 加 了 更 多 的 功 能 。 在 UNIX主 機 上 所 使 用 的 SMTP程 式 多 為 sendmail, 埠 號 統 一 為 25。 但 是 SMTP協 定 本 身 並 不 會 將 原 發 信 人 的 資 料 記 載 在 信 件 中 , 也 因 此 造 成 了 很 多 人 利 用 這 一 點 來 寄 送 「 無 法 查 出 是 誰 發 的 」 之 信 件 。
筆 者 現 在 將 實 際 寄 送 幾 封 實 驗 性 的 信 件 , 看 看 是 否 真 的 能 將 寄 件 人 的 來 源 給 隱 藏 起 來 。 實 驗 環 境 為 HiNet的 ms1.hinet.net主 機 ( SunOS 5.1 on SPARC) 與 臨 時 架 起 來 的 BBS站 ( Linux 2.0.30 on IBM-PC) , 均 為 UNIX主 機 。 而 其 中 BBS站 經 過 部 份 修 改 , 可 實 行 DNS正 查 / 反 查 與 ident識 別 ( 後 面 詳 述 ) 。
SMTP協 定 寄 送 一 封 信 件 , 至 少 需 要 有 下 列 幾 個 步 驟 ( 順 序 不 可 調 換 ) :
1.使 用 helo或 ehlo指 令 識 別 自 己 身 分
2.使 用 mail from: 指 令 標 示 發 信 人
3.使 用 rcpt to: 指 令 來 標 示 收 件 人 ( 可 以 不 只 一 個 )
4.使 用 data指 令 開 始 寫 入 信 件 內 容 , 寫 畢 後 信 件 始 放 入 佇 列 ( Queue) 中 準 備 寄 送
5.使 用 quit指 令 結 束 連 線

下 面 的 信 件 寄 送 將 使 用 telnet來 作 ( 如 A) , 而 不 用 一 般 的 電 子 郵 件 軟 體 , 讓 各 位 讀 者 可 以 清 楚 的 看 到 SMTP協 定 的 寄 信 過 程 ( 中 文 部 份 為 筆 者 加 上 的 注 釋 ) 。 在 這 裡 我 們 偽 稱 自 己 的 主 機 為 「 貓 狗 公 司 cat.dog.com」 ( 當 然 實 際 上 不 會 有 這 個 主 機 名 稱 ) , 而 發 信 人 為 「 貓 妹 妹 catlady」 。 分 別 寄 給 variox01@ms1 .hinet.net與 xxx.bbs@bbs.xxx.xxx.com.tw( bbs.xxx.xxx.com.tw即 為 筆 者 所 架 起 來 的 BBS站 , 主 機 名 稱 為 虛 構 ) 。
在 此 特 別 說 明 , 上 面 的 範 例 是 恰 好 發 信 人 與 SMTP主 機 同 一 台 , 讀 者 切 勿 以 為 只 有 在 同 一 台 主 機 上 , 才 能 抓 得 到 主 機 名 稱 以 及 使 用 者 名 稱 , 就 算 是 不 同 的 主 機 也 可 以 , 請 讀 者 自 行 選 用 一 台 UNIX主 機 來 作 測 試 。
以 上 的 兩 封 實 驗 信 件 已 經 寄 送 出 去 了 , 現 在 分 別 來 看 看 variox01@ms1與 xxx.bbs@bbs收 到 的 信 件 內 容 為 何 。
variox01所 收 到 的 信 件 如 B。
variox01收 到 的 信 件 中 , 發 信 人 為 我 們 剛 剛 所 宣 稱 的 catlady@cat.dog.com, 由 此 , 收 信 人 根 本 無 法 得 知 原 始 發 信 人 是 誰 。
雖 然 我 們 可 以 從 剛 剛 的 SMTP信 件 寄 送 過 程 中 證 實 HiNet的 ms1.hinet.net主 機 有 能 力 辨 別 發 信 人 實 際 來 自 何 處 , 但 是 信 件 中 並 不 會 寫 出 來 , 發 信 人 宣 稱 自 己 的 主 機 在 那 裡 , 信 裡 面 就 是 寫 哪 裡 。
下 面 來 看 看 xxx.bbs收 到 什 麼 樣 的 信 件 : ( 如 C)
左 邊 「 信 件 作 者 」 一 欄 中 還 是 一 樣 , 寫 著 catlady@cat .dog.com但 是 在 「 信 件 來 源 」 一 欄 中 , 就 辨 識 出 了 真 實 的 發 信 人 , 以 及 發 信 主 機 ( IP Address/主 機 名 稱 ) 。
為 何 在 這 邊 xxx.bbs就 可 以 識 別 出 是 哪 個 人 發 的 信 呢 ?

DNS正 查 、 反 查
這 是 前 幾 個 月 很 流 行 的 一 個 「 術 語 」 。 如 果 各 位 是 HiNet、 SEEDNet用 戶 , 並 且 有 注 意 到 的 話 , 原 本 撥 接 連 線 用 戶 只 有 IP Address是 沒 有 Domain Name的 , 但 是 現 在 全 部 都 有 Domain Name了 ( 真 的 可 以 用 nslookup等 工 具 查 得 到 ) 這 是 為 什 麼 呢 ? 可 能 有 人 就 要 問 了 , 具 有 DNS Entry又 不 是 TCP/IP網 路 上 連 線 的 充 要 條 件 , 何 必 多 此 一 舉 ?
因 為 現 在 台 灣 的 網 路 太 亂 了 , 新 聞 討 論 區 與 tw.bbs連 線 討 論 區 , 沒 事 就 有 人 亂 發 信 件 , 發 黑 函 攻 擊 他 人 , 或 是 亂 作 一 些 不 負 責 任 的 批 評 。 有 人 似 乎 天 生 就 是 喜 歡 看 熱 鬧 , 喜 歡 看 別 人 忙 得 團 團 轉 ( 為 何 各 電 視 台 前 陣 子 不 眠 不 休 的 轉 播 白 案 新 聞 ? 因 為 大 家 愛 看 嘛 ) , 於 是 這 種 人 就 會 沒 事 去 新 聞 討 論 區 丟 下 一 顆 炸 彈 , 然 後 躲 在 自 己 家 中 , 透 過 電 腦 看 著 大 家 因 為 他 所 寫 的 信 而 不 斷 回 應 , 越 搞 越 大 , 別 人 忙 成 一 團 他 卻 看 得 不 亦 樂 乎 , 很 多 電 腦 高 手 或 是 一 些 元 老 級 的 電 腦 玩 家 其 實 早 已 不 玩 news了 , 因 為 實 在 是 亂 得 可 怕 。

先 禁 止 不 如 後 預 防
而 想 要 禁 止 有 人 亂 寫 信 是 不 太 可 能 的 , 因 為 這 種 禁 令 根 本 不 會 有 人 真 的 遵 守 。 台 灣 學 術 網 路 規 範 有 一 條 是 「 禁 止 利 用 本 網 路 從 事 具 有 威 脅 性 、 猥 褻 性 或 商 業 性 的 資 料 傳 送 」 , 實 際 情 況 又 如 何 呢 ? 相 信 各 位 讀 者 應 該 都 很 清 楚 。 那 麼 既 然 先 前 的 禁 止 不 能 , 那 就 事 後 預 防 吧 ! 因 此 , 現 在 某 些 BBS站 或 伺 服 器 , 規 定 連 線 客 戶 端 必 須 具 備 DNS Entry才 可 以 連 線 。 而 各 大 ISP為 了 讓 自 己 的 用 戶 , 都 能 順 利 連 上 這 些 站 台 , 也 把 自 己 所 能 夠 handle的 IP address全 都 加 上 了 DNS Entry。
DNS Entry表 示 一 種 信 任 關 係 , 因 為 對 於 一 台 DNS伺 服 機 來 說 , 其 中 的 DNS資 料 項 是 該 網 路 的 系 統 管 理 員 所 加 上 的 。 而 由 此 可 以 推 論 如 果 一 台 主 機 擁 有 DNS Entry, 則 該 網 路 的 系 統 管 理 員 , 必 定 承 認 該 主 機 是 該 網 路 的 一 份 子 。 如 果 這 台 主 機 在 網 路 上 出 了 什 麼 問 題 , 別 人 就 可 以 找 該 網 路 的 系 統 管 理 員 負 責 。 反 之 , 一 台 沒 有 DNS Entry的 主 機 就 像 沒 有 人 承 認 的 私 生 子 , 所 屬 網 路 的 系 統 管 理 員 可 以 不 對 其 負 責 , 自 然 別 人 也 不 願 意 承 認 這 種 主 機 。
所 謂 的 DNS正 查 、 DNS反 查 , 就 是 一 台 主 機 可 由 IP Address查 Domain Name, 也 可 以 由 Domain Name查 出 IP Address, 並 藉 以 確 定 該 主 機 是 否 被 承 認 。
 
Ident查 詢
所 謂 的 Ident查 詢 是 在 UNIX主 機 上 , 所 執 行 的 一 個 背 景 程 式 Identd( D為 Daemon) , 該 背 景 程 式 提 供 其 他 主 機 查 詢 目 前 系 統 中 的 使 用 者 。 例 如 , 某 一 使 用 者 variox01於 ms1.hinet .net連 線 到 somewhere.com主 機 , 而 somewhere.com主 機 可 藉 由 連 線 來 , 得 知 目 前 從 ms1.hinet.net有 一 個 連 線 , 但 somewhere.com要 如 何 得 知 是 誰 在 ms1.hinet.net上 連 過 來 的 ? 這 就 要 透 過 ident程 式 向 ms1.hinet.net上 詢 問 。 ms1.hinet.net上 必 須 執 行 - identd背 景 程 式 , 該 identd會 將 目 前 連 線 到 somewhere.com的 使 用 者 名 稱 , 提 供 給 somewhere.com主 機 。

Ident也 是 一 種 類 似 DNS正 查 、 DNS反 查 的 認 證 工 具 , 如 果 一 台 主 機 沒 有 identd, 則 對 方 主 機 可 以 拒 絕 其 上 的 使 用 者 連 線 , 因 對 方 主 機 的 系 統 管 理 員 可 能 會 認 為 「 既 然 你 拒 絕 告 訴 我 是 誰 連 過 來 的 , 那 我 也 不 讓 你 連 線 」 , 當 然 也 有 經 過 修 改 的 identd會 謊 報 上 線 使 用 者 , 甚 至 去 干 擾 對 方 ident程 式 的 執 行 。
各 位 讀 者 可 以 在 一 台 UNIX主 機 上 使 用 “ ps -x” 指 令 來 看 看 是 否 確 實 有 identd程 式 在 執 行 。 ( ps程 式 之 用 法 可 能 因 主 機 略 有 不 同 , 請 先 以 man查 閱 )
而 各 位 讀 者 現 在 便 可 以 知 道 , 由 DNS加 上 ident程 式 便 可 組 合 出 目 前 連 線 者 所 在 主 機 以 及 名 稱 。 如 果 發 現 某 人 入 侵 你 的 主 機 或 是 干 擾 你 , 可 以 將 紀 錄 檔 送 給 對 方 網 路 的 系 統 管 理 員 請 其 裁 處 該 名 使 用 者 ( 當 然 對 方 不 一 定 接 受 ) 。
前 面 我 們 所 作 示 範 xxx.bbs用 戶 為 何 收 到 的 信 件 中 可 以 明 白 標 示 出 發 信 人 為 variox01@ms1, 就 是 採 用 了 DNS+Ident來 查 出 真 實 發 信 人 是 誰 。
由 上 面 的 說 明 讀 者 應 可 了 解 , bbs.xxx.xxx.com.tw此 一 站 台 就 是 藉 由 此 兩 種 管 道 組 合 得 知 對 方 使 用 者 名 稱 以 及 所 在 主 機 。
偵 測 發 信 人 失 敗 的 例 子
以 上 的 方 法 要 抓 得 到 對 方 主 機 上 是 哪 個 使 用 者 做 這 件 事 的 , 先 決 條 件 是 對 方 必 須 是 一 台 標 準 的 UNIX或 其 他 有 執 行 Identd相 容 系 統 的 主 機 , 才 能 抓 得 到 使 用 者 名 稱 。 假 若 我 們 只 是 一 個 撥 接 的 Client端 ( 例 如 使 用 Windows 95上 線 ) 那 又 是 什 麼 情 形 呢 ? 請 看 如 D的 例 子 :
剛 剛 的 收 信 範 例 就 無 法 得 知 發 信 人 是 誰 了 , 僅 僅 能 夠 得 知 發 信 站 的 主 機 名 稱 以 及 IP位 址 。 因 為 寄 送 這 封 信 的 時 候 是 使 用 Win95+ Eudora來 寄 信 , 信 件 實 際 上 是 由 ms1.hinet.net來 發 送 。 Win95+Eudora的 組 合 並 不 直 接 和 bbs.xxx.xxx.com.tw主 機 通 信 , 而 是 先 透 過 ms1.hinet.net的 轉 送 , 信 才 會 真 的 送 到 bbs .xxx.xxx.com.tw而 bbs.xxx.xxx.com.tw所 顯 示 的 h222.s109.ts.hinet.net [168.95.109.222] -> root@ms1.hinet.net [168.95.4.10]此 一 資 訊 後 面 的 root@ms1.hinet.net是 因 為 ms1.hinet.net上 面 的 SMTP程 式 是 由 root所 啟 動 , 因 此 bbs.xxx.xxx.com.tw向 ms1 .hinet.net的 identd詢 問 時 , 結 果 會 是 root。 此 時 , 因 為 variox01使 用 者 實 際 上 當 時 並 沒 有 真 的 login到 ms1.hinet.net主 機 上 面 , 自 然 bbs.xxx.xxx.com.tw就 查 不 到 到 底 是 ms1的 哪 個 user發 的 信 了 。
不 過 , 某 台 電 腦 透 過 其 他 電 腦 發 信 ( 例 如 Win95+Eudora透 過 ms1.hinet.net發 信 ) 時 會 記 載 下 信 件 遞 送 順 序 。 此 時 ms1.hinet.net是 一 台 Mail Relay Station( 信 件 轉 發 站 ) , 因 此 會 記 載 下 本 信 原 來 是 從 哪 邊 來 的 。 Internet上 使 用 Relay信 息 傳 送 的 例 子 很 多 , 如 News彼 此 互 相 交 換 信 件 也 是 一 個 例 子 。 當 您 在 news上 看 一 封 信 的 時 候 , 常 常 會 看 到 像 如 E的 例 子 。
上 面 例 子 中 一 大 串 netnews.csie.nctu! aidebbs!⋯ ⋯ 的 字 樣 就 是 這 封 信 所 傳 送 的 路 徑 , 以 及 經 過 哪 些 News Server的 轉 送 。 像 News這 種 會 不 斷 轉 送 的 信 息 傳 遞 方 式 , 資 料 路 徑 的 記 載 就 顯 得 特 別 的 重 要 。 因 為 News Server彼 此 之 間 也 是 互 相 連 通 的 , 透 過 Relay站 的 紀 錄 , 各 個 News Server可 以 檢 查 這 封 信 究 竟 自 己 是 否 已 經 轉 送 過 了 , 而 避 免 重 複 的 轉 送 信 件 , 造 成 信 件 的 無 窮 迴 圈 ( Endless Loop, 指 信 件 不 斷 的 反 覆 傳 送 ) 。
另 由 於 大 部 份 的 SMTP Server均 不 實 施 發 信 人 身 分 稽 核 的 工 作 , 也 就 是 說 不 管 你 是 不 是 該 SMTP主 機 上 的 用 戶 , 只 要 你 給 該 主 機 發 信 請 求 , 原 則 上 該 主 機 都 會 同 意 。 這 也 使 得 真 實 發 信 人 的 身 分 更 難 以 被 追 蹤 。
如 果 你 還 是 擔 心 因 為 記 載 下 了 Mail Relay的 順 序 而 被 別 人 查 出 原 發 信 站 , 進 而 抓 到 你 的 時 候 , 其 實 大 可 不 必 擔 心 , 確 實 有 不 被 抓 到 的 方 法 ( 以 目 前 的 電 信 稽 核 程 序 來 說 , 根 本 就 幾 乎 不 可 能 被 抓 到 ) , 但 因 為 某 些 考 量 筆 者 不 方 便 在 此 公 開 , 聰 明 的 讀 者 應 可 由 上 面 的 範 例 中 自 行 推 敲 出 方 法 , 筆 者 在 此 不 多 言 。
受 限 於 篇 幅 , 下 期 筆 者 將 講 解 如 何 查 出 入 侵 者 之 IP位 址 以 及 查 出 入 侵 者 所 在 地 理 位 置 的 方 式 。

註 一 :
請 不 要 做 個 無 聲 的 收 信 人 , 姑 息 的 態 度 只 會 讓 廣 告 信 件 更 猖 獗 。 如 果 你 是 HiNet用 戶 , 請 將 廣 告 信 轉 送 給 info@ms1.hinet.net。 如 果 你 是 其 他 網 路 的 用 戶 , 請 與 你 的 ISP服 務 部 門 聯 絡 。 同 時 也 請 您 不 要 購 買 廣 告 信 件 所 介 紹 的 任 何 商 品 或 服 務 。

PHP製作中文全文搜尋不求人。

PHP製作中文全文搜尋不求人。

PHP 中文全文搜尋 FullText Search 連中文分詞 (只需PHP就能使用Lucene)

前兩日發表過一份關於 ZEND FRAMEWORK 既SEARCH ENGINE 既文章
E篇係加強版.
這一次最大的分别是支援了中文分詞。上一個版本只支援英文。而這個版本支援了中文全文搜尋及中文分詞功能已把PROGRAM 簡化 改得容易明白。

按此下載原始檔 (SOURCE CODE)
先說明資料夾內容
│ config.php 資料庫連接設定
│ index_file.php 製作索引的檔案
│ search.php 主程式,搜尋程式。
└─Zend <–主頁的CLASS LIBRARY
Config.php
mysql_select_db(DB_NAME);

//DB_HOSTNAME : 資料庫位置E.G localhost

// DB_USERNAME : 資料庫用戶名稱

// DB_PASSWORD : 資料庫用戶密碼

// DB_NAME : 使用的資料庫名稱

?>
index_file.php
error_reporting(E_ALL|E_STRICT);set_include_path('.' . PATH_SEPARATOR . './Zend/');

include "Zend/Loader.php";

Zend_Loader::loadClass('Zend_Search_Lucene');

Zend_Loader::loadClass('Zend_Search_Lucene_Document');

Zend_Loader::loadClass('Zend_Search_Lucene_Analysis_Analyzer_Common_Phpbean');

Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_Phpbean());

if (function_exists("set_time_limit") && ! get_cfg_var('safe_mode')) {

set_time_limit(0);

}

$index = new Zend_Search_Lucene('index', true);

$sql = "

SELECT `id` , `title` , `description`

FROM `data_table` "; //拿取需要索引的資料

mysql_query("set names 'utf8'");

$result = mysql_query($sql);

while($row = mysql_fetch_assoc($result)) {

$url = 'http://www.vincent.idv.hk/' . $row['d']; //網頁位置

$title = $row['title'];//主題

$description = $row["description"]; //描述

//儲存網頁的位置以在搜尋結果中連結.

$doc = new Zend_Search_Lucene_Document();//建立新的索引文件

$doc->addField(Zend_Search_Lucene_Field::UnIndexed('url', $url));

$doc->addField(Zend_Search_Lucene_Field::Text('title', $title,'utf-8'));

$doc->addField(Zend_Search_Lucene_Field::Text('contents', $description,

'utf-8'));

$index->addDocument($doc); //把索引文件加到索引中

}

$index->commit();//提交,及保存索引
search.php


include_once("config.php");

error_reporting(E_ALL|E_STRICT);

set_include_path('.' . PATH_SEPARATOR . './Zend/');

include "Zend/Loader.php";

Zend_Loader::loadClass('Zend_Search_Lucene');

Zend_Loader::loadClass('Zend_Search_Lucene_Exception');

Zend_Loader::loadClass('Zend_Search_Lucene_Document');

Zend_Loader::loadClass('Zend_Search_Lucene_Analysis_Analyzer_Common_Phpbean');

Zend_Loader::loadClass('Zend_Search_Lucene_Search_QueryParser');

Zend_Search_Lucene_Analysis_Analyzer::setDefault(

new Zend_Search_Lucene_Analysis_Analyzer_Common_Phpbean());$index = new Zend_Search_Lucene('index');

$query = isset($_GET['query']) ? $_GET['query'] : '';

$query = trim($query);

if(strlen($query)>0){

try {

$query2 = Zend_Search_Lucene_Search_QueryParser::parse($query, "utf-8");

$hits = $index->find($query2);

}

catch (Zend_Search_Lucene_Exception $ex) {

$hits = array();

}

$numHits = count($hits);

}

?>








0) { ?>



Found result(s) for query .





title ?> score ?>

contents ?>


Read more...
推到 Twitter!
推到 Plurk!
推到 Facebook!