| แฟ้มประวัติB 之本草綱目บล็อกรายการ | วิธีใช้ |
|
|
18 พฤษภาคม the freezer tricki've never even heard of that!!!!!...but i'll keep this in mind if it ever does happen to me. disclaimer : i've never done this but heard it works... 1. you need to NOT boot this drive. this means that you need another computer in which you can put this drive as a secondary/slave drive or make it an external drive via a case. 2. put HD in airtight ziploc baggy 3. place in freezer for an hour or so, just enough to get it really cold, but you don't want super freezing 4. immediately plug into the machine (again, as a SECONDARY or EXTERNAL drive, NOT the boot drive) 5. power up and grab your data as fast as you can (copy it over the primary drive or something). this is a limited time offer so just grab what is necessary, i wouldn't waste time trying to mirror the drive. 6. repeat if necessary NOTE that you can try to just make it an external drive w/out the freezer trick to see if it works, but don't spend a lot of time messing with it. at this point, the life on the HD is very limited... do everything quick and dirty, don't waste time grabbing uneccesary data. good luck 03 เมษายน AMD64 生存感想追新。就有如 M$ 迷追 Vista,AMD64 迷追 Ubuntu amd64 …… 其实也没什么,比方 mplayer 照样能用,完美支持。 比方常用软件,都有。只要是 OSS 的…… 不过如果真的不行,还可以模拟32位,比方: apt-get install ia32-libs ia32-libs-gtk linux32 lib32asound2,然后用 linux32 模拟某个程序,比方 SkyPE ,虽然这样模拟的话,在里面呼不出输入法。 还有 Flash,则可以用 nspluginwrapper (需上述的 packages)来包装一下,这样不仅 Firefox 可以用,其他地方也可以看得了 flv 文件。 不过确实很罗嗦。 19 มีนาคม 试了 Ubuntu汗,身边的人几乎都试过 Ubuntu 了,我居然还没有。于是试着塞进去我的笔记本上。 ps:这个读起来很像“不帮托”(粤语),哈哈。 我选的是 Ubuntu 6.10 desktop amd64 版,安装过程简单,就是有个 bug:如果本身就已经有提前设定 / 的话,就完蛋了。绕过去的简单方法就是让系统稍微变化一下,比方删除一个分区然后再添加一模一样的分区。 利用 livecd 重启需要等5分钟才能重启,又是一个 bug。 安装好后,amd64 版的 upsplash 是黑白的,又是一个 bug。 作为“大便”(狂笑)的衍生版本,之后的最重要的一步就是赶快把 /etc/apt/sources.list 狂修改一番,然后 apt-get update ,apt-get dist-upgrade 进行系统更新。amd64 的源都没有 i386 的快,所以可以说奇慢。 之后,安装很炫的 Beryl:需要安装 nVidia 提供的驱动,然后添加 Beryl-project 的源,然后修改一下 xorg.conf ,总算科幻 3D 桌面出现了。 然后为自己的无线网卡 Broadcom 4310 下载 microcode firmware,这样内核就不会老是提示七七八八的警告了。 之后利用文泉驿字体来显示中文,这样 firefox 就基本正常了,就是中文加黑还是很淡。此外免不了把输入法 scim 注册为默认的 InputMethod……当然最重要就是去论坛找找现成的 fonts.conf 来使用。懒得再认真配了。 如此就是一个 English locale 的不错的环境了。 修改一些我喜欢的小地方: 比方用 sudo passwd root 修改一下 root 密码。因为我喜欢在 root 下干一大堆事情。Ubuntu 默认好像是不存在 root 密码但是又不是空密码。 比方要下载 vim-full,emacs。 比方要把 tty6 废掉,做成一个即时显示系统日志的地方。 当然还要把 grub 默认启动项换成 Windows。哈哈。 感觉是这样: 现在 Linux 硬件认得也多了,中文支持也好了,默认配置也可以了,入门门槛低了。不过很遗憾办公、娱乐等方面应用软件还是没有 Windows 多。Gaim 可以 gtalk,可是没有语音;OO.O 我用不习惯;firefox 倒是最顺手的了。 此外 Ubuntu sources 里面似乎维护人员比较懒(少?),总之很多软件不是最新的,这点就比较郁闷了。不过作为一个受初学者欢迎的系统,还是很有优势的。 至于没事玩 Linux 干啥……只好套用 Linus 的话说是 just for fun 了。 至少关机很快,不到4秒钟!哈哈。 参考网址: 中文 Ubuntu 论坛:http://www.ubuntu.org.cn/ 很全的文档:https://help.ubuntu.com/ 此外可以读读 Ubuntu Hacks 这本书,很多技巧值得学习。 09 มีนาคม 有人这样学习┅有人这样学习┅ 侯捷 2000.09.08 自从开放《深入浅出 MFC》2/e 电子档之後,我收到很多相应来函。由於工作忙碌,鲜少针对个人回信,顶多是收集同类型的询问在侯捷网站上做总体回应。但是这封信我一定要回,仔细地回,特加鼓励地回。 > -----原始邮件----- > 寄件者: bluefive <bluefive@tm.net.my> > 日期: 2000年8月26日 PM 01:12 > > 候老师您好! > > 姓名: bluefive > 现职: 家具雕刻 > 毕业学校科系: 没有 > 年龄: 26 > 性别: 男 > 居住省份: 马来西亚 > 对侯捷的建议:希望您选择的出版商是我这里的书店有代理的^_^ > > 在您的 站下载了您的大作(深入浅出MFC第二版),真是令我太感动了! > 我不是一个身在资讯界的人,本身的职业也与电脑没有接 ,可是我对程 > 式设计却很喜爱!当我第一次接触电脑时,看见那些美丽的视窗画面,心里 > 就想非常非常的好奇,这些是如何产生的?在听说这些是用(写的)!我好奇 > 心就更大了,也从此就与电脑难解难分. > > 可是在学习的过程中,却面对一大堆的难题!第一个难题就是我不懂英文! > 在我学程式设计之前,我连 where, do, be, the 这些字也不会!可是我知道 > 学程式设计一定要懂英文! 所以自从我学习程式设计一年半以来,我就 > 一直很努力的自学英文,现在以能看懂 MSDN 的 Windows API 说明文件的其中 > 40到50%,希望有一天我能完全看懂.我的学历也非常低,我只读到小学而已! > 想想在学习程式设计之前,连什 是整数,坐标也不懂!真后悔没有好好读书! > 可是学一 语文不是一两年就能完全掌握的!因此在这段期间,只能向中文书 > 籍求救!这也汇生出第二个难题?就是缺乏中文书籍! > > 我是一个孤独的程式设计自学者,没有朋友可以请教,没有老师可以解答 > ,没有任何人可以帮我,唯一的老师就是书籍与 络上一些热心的 友.前者 > 对我有95%的帮助,后者有5%帮助.在我住在地方,很幸运的有一间书店有代理 > 台湾书,要买到台湾书只有那间书店而已.可是它所代理的台湾出版社也只有四 > 五家而已,程式设计的书籍也不多,C++的书籍更是难找!我真得很 慕台湾人, > 可以有很多选择!又其当上 看见松岗,Gotop,旗标,傅硕书籍目录时,只能流口 > 水,却不能马上买到!像我这 就如您所说的,把买书排在第一位,把买衣服与及 > 其它等等的排在后面的人来说,真是太痛苦了!所以要买的话,也只有先向那间 > 书店订货,然后痴痴等!因为那间书店一年只进两次货,每次相隔大约半年以上! > 在这半年我就只能痴痴的等!因此您的广阔心胸,开放下载《深入浅出MFC第二 > 版》,对我来说更是深具义意!不知要如何感谢您! > > 虽然我还没有看完,但!我觉得单是第一和第二章就已经物超所值了!把那最 > 重要的基础说清楚,又其看到那篇「一个具体而微的Win32 程式」,使我大约知道 > 一个window是如果产生的,还有那篇「虚拟函式与多型 (Polymorphism)」更是 > 把我压在一年多来的许多大问号给完全粉碎!真是太妙了!!!不像我买过的有关 > 物件导件的书籍,总是好像刻意要避开谈论,或是草草了事,有说就跟没说一样! > > 一图胜过千言万语!这也我非常佩服的!您的书总是会在我看到有些头晕的时 > 候─不说您的书写的让我看的头晕,而是一时间难以完全消化,就像一个饿了一 > 星期的人,一下子吃了一大堆美味的食物─这时来一张图画,这张图画就好像一片 > 消化丸一样,吃了之后就把之前的食物完全消化!真是太妙了!真是太感谢您了!!! > > 我现在有一个问题想请教您?我订购了以下三本书籍: > > C++ PRIMER 3RD EDITION 中文版 > WINDOWS 95 程式设计指南 > 多型与虚拟-物件导件的精髓 > > 这些书好像出版相当久了,不知还能买到吗?谢谢! * * * * * * * * * * * * * * * * * * * * * * 这封信是我前些日在上海授课期间唯一一次上网收到的 100 封信之一。 就在我走过上海十里洋场,走到腿累得快不行的那个星期假日,回到旅馆 後恰巧看了一部电视上转映的电影,描述苏俄侵略阿富汗。由於从中看起, 没注意片名。片中一位阿富汗人,因为不肯透露反抗军的消息(或是因为对 俄军的不礼貌),被残酷的侵略者下令绑置於坦克履带前方,辗过。 坦克驾驶兵饶有人性,但无法反抗坦克车长的命令。在一次停车休息时,他 和阿富汗籍的另一名坦克袍泽(在中国就是所谓的汉奸)有些精采的对话┅ 驾驶兵:为什麽那个人有那麽大的勇气,无视於生死? 阿富汗人 : 因为他有坚定的信仰。 驾驶兵:我羡慕他,但愿像他一样。 * * * * * * * * * * * * * * * * * * * * * * 也许我的譬喻不是很好,也许我的联想有点牵强,但是看了 bluefive 的信後, 我硬是联想到驾驶兵说的话:『我羡慕他,但愿像他一样。』 bluefive,你是幸运的,在生活中有坚定的信仰,坚定不移的兴趣。 不管这信仰是什麽,这兴趣是什麽,我相信在这普遍没有信仰、找不到兴趣 的时代里,有许多许多人会羡慕你。你的环境艰难,学习困顿,但我相信 许多月入新台币 100,000 以上,每年发几百万股票的人,快乐不如你。 对喜欢学习的人而言,学习的本身就是莫大的快乐。 你可能不曾想过要以 programming 做为你的职业,用它来养家活口。 在最单纯(纯粹因为兴趣)的动机下,你的学习有最快乐的过程。 如果你可以退掉你的订书单,请把它们都退了,给我你的地址, 我立刻寄赠以下书籍给你,应该够你快乐一整年: (1)《C++ PRIMER 3/e 中文版》 (2)《多型与虚拟-物件导件的精髓》 (3)《深入浅出 MFC 2/e》 (4)《Effective C++ 2/e 中文版》 (5)《More Effective C++ 中文版》 p.s.《WINDOWS 95 程式设计指南》已经绝版,我手上亦无馀书。 -- the end 候老师:真对不起!我的电话线四天前被老鼠咬断了,今天才修好!三天不能上 ,今天一上 就收到您的来信.才一看到标题上来信人的邮址,我的心脏兴奋的就快要跳出来了! 而当我看到那一句(如果你可以退掉你的订书单,请把它们都退了),我还错觉的以为:完了,这些书已经买不到了!可是当接着看到这句(给我你的地址,我立刻寄赠以下书籍给你,应该够你快乐一整年),我差一点从椅子上跌下来!真的吗?那我可要快乐上一辈子,而不只是一整年.因为美好的知识一进入脑袋里,一辈子都会受用不尽! 我想是不能退了!不过不要紧,不管我原本订的书有没有来(订了也不一定肯定会来),我都会买下!等到有一天,我要是遇见了有人跟我有一样的兴趣,我就把重复的那两本送给他.因为我家的地址可能寄到了,却会丢失!所以请先让我问一问我朋友的地址后,才寄给您!邮费让我来付,可不能在让您破费啊!不知是多少? 空运还是海运? 您说的那个电影的譬喻很好!我很开心,谢谢你这 看的起与鼓励我!我在您的 页上常看到您对台湾书籍出版的环境与面对的问题感到似乎有些灰心!所以我也想说个故事给您听听. 很久以前有一个很小的国家,有一个国王在统治她和这个国家的人民.这个小国的四周围绕着强大的敌人.而这个小国有一个特色,就是她只有一口井水,全国的人民与国王都要依赖这口井水才行,因为那是这个小国唯一的水源!有一天她的敌人偷偷的在这口井水里下了毒药.到了晚上,全国的人民都喝下了被下了毒药的井水!结果所有的人都发疯了,只有一个人没有发疯,那就是国王,因为他还没有喝被下了毒药的井水.而那些发了疯的人民,就说: 我们去把国王杀了,因为国王发疯了!国王听到了就很害怕,就在半夜里偷偷去喝被下了毒药的井水,结果国王也发疯了!到了早上,那些发了疯的人民就起来跳舞庆祝说:喔!国王没有发疯了,国王的病好了!国王跟我们一样了,没有发疯了. 这个故事我也是在电影里看到的.这世界周遭大部份的人,都难以抗拒群体的压力!明明一件事是对的,可是如果一百个人里面有99个说不对,他(她) 99.99%也会受不了群体的压力,跟着说不对!如果这个人没有接受另外99个人的想法,那他们就会非常忿怒!跟着就会强迫不愿接受他们想法的人跟他们一样.可老师您是一个了不 起的人!您不是这样的人,您有坚定的信念,崇高的原则与理想,并且以此为乐! 最后,在此要万分感谢您!谢谢您!!!也祝您生活愉快,身体安康. bluefive 27 กุมภาพันธ์ THE DAO OF PROGRAMMINGTHE DAO OF PROGRAMMING Geoffrey James 程式設計之道 冼鏡光 微電腦時代96,97 第一部 寂靜虛無篇 大師如是說:"學會從程式抓蟲子之後, 就可以畢業了 1.1 節 .寂靜虛無中有奧秘, 不動不靜, 乃程式之源, 吾無以名之, 故稱之為程式設計之道. .若道至大, 則作業系統至大; 若作業系統至大, 編譯程式亦然; 若編譯程式至大, 則應用程式亦復如是, 是故使用人大悅, 世有和諧存焉. 1.2 節 .程式設計之道無遠弗屆, 雖晨曦微風而返. .道生機器語言, 機器語言生組譯程式. .組譯程式生編譯程式, 於是萬餘語言存焉. .各語言有其目的, 均表達軟體之陰陽; 其在道中亦各得其所. .但若能避免, 就不要用COBOL 寫程式. 1.3 節 .太初有道, 道生時空, 故時空乃程式設計之陰陽. .程式員不悟道則時空永不敷使用, 悟道者恒有充份時空完成目標. 1.4 節 .上智程式員聞道而行之, 中智程式員聞道而求之, 下智程式員聞道而笑之. .若無笑聲則無道矣. .至高之聲難以聽聞. .前進就是後退之路; 大智總是晚成; 每一個完美的程式仍有BUG. .道在所有知識之外. 第二部 古之大師篇 大師如是說:"三日不寫程式則生命無趣. 2.1 節 .古程式員神秘而深奧, 無以度量其思維, 僅能描述其表象. .像狐狸涉水般地小心; 像戰場老兵般地警覺; 像未經琢磨的木頭般地璞拙; 像洞中深潭地不透明. .誰能指出他們心靈中的秘密? .答案全在道中. 2.2 節 .大師Turing曾經夢到他是一部電腦, 醒後道: . "不知是我Turing作夢變成機器, 還是一部機器作夢變成我我Turing." .一家大電腦公司的程式員參加軟體會議後, 向他的經理報告說:"你知道其他電腦 公司有什麼程式員嗎? 他們不修邊幅, 頭髮長而邋遢, 衣服既舊且皺, 他們破壞 了氣氛, 而且我簡報時老是製造噪音." .經理說:"我根本就不應該派你參加會議, 這些程式員超然物外, 他們把生命看成無稽, 意外的結合. 他們往來而無藩籬, 為他們的程式而活, 為什們他們一定要受社會積習 的約束? .他們生活在道中." 2.3 節 .生手問大師:"有一個程式員從不設計, 測試程式, 寫作文獻, 但了解他的人都認為 他是世間最好的程式員. 為什麼?" .大師曰:"這個程式員已充份悟道, 他超越了設計的需要; 系統垮了不會生氣, 而無條件接受這個世界. 他超越了文獻的需要, 他不再計較是否有人看他的程式. 他也超越了測試的需要, 他的每一個程式都圓滿無缺, 清澈, 優雅, 目的自明. .是的, 他已悟道, 登堂入室. 第三部 設計篇 大師說:"到測試程式時再回頭修改設計就太遲了." 3.1 節 .曾經有人在參觀電腦展每天進門時都向警衛說:"我是的妙賊, 偷東西的技巧已臻化境, 先告訴你, 我絕不會放過這次展覽." .這段話刺激到警衛, 因為展覽場有好幾百萬元價值的儀器, 所以老是盯這他, 不過卻只看到這個人一個攤位接著一個攤位看, 哼著小曲而已. .這個人出門的時侯, 警衛把他帶到一旁搜身, 但卻找不到什麼. .第二天這個人又來了, 而且教訓警衛說:"昨天我收獲不錯, 不過今天會更佳." 所以警衛就更加注意他了, 但是仍然沒有結果. .最後一天警衛終於忍不住好奇心, 問那個人:"賊大師, 我給您弄得寢食難安, 您是否以教我, 究竟偷了些什麼?" .這個人笑笑, 說:"我偷的是概念." 3.2 節 .從前有一位大師專寫沒有結構化的程式, 一個生手模仿他, 也開始寫沒有結構化的 程式. 當這位生手要求大師評量進展時, 大師卻批評他寫作沒有結構化的程式. .大師說:"對大師適用的不一定適合生手, 在能超越結構化之前, 必須先悟道." 3.3 節 .某長官問程式員:"設計會計系統與作業系統, 那一個比較簡單?" .程式員說:"作業系統." .長官發出不相信的驚呼:"很顯然的, 會計系統不如作業系統複雜",他說. ." 不!"程式員回答,"在設計會計系統時, 程式員是各種不同主意的人之間的橋樑, 這些主意不外乎: 系統要如何作業? 報表型式如何? 要如何迎合稅法?...等等. 反過來, 作業系統卻不受外界表象的限制; 在設計作業系統時, 程式員尋求人與機器 間最純的和諧, 這就是為什麼作業系統容易設計." .長官點頭微笑稱是:"但是那一個容易偵錯?" .程式員沒有回答. 3.4 節 .經理去見大師, 並且告訴他一套新應用程式文件的需求規格, 問道:"如果我給你五 個程式員, 要多久才能設計好這個系統?" .大師很快回答:"一年." ." 但是我們需要馬上用這個系統! 如果我給你十個程式員, 那要多久?"經理說. .大師皺眉說:"這要兩年." ." 如果我給你一百個程式員呢?" .大師聳聳肩:"這個系統根本作不出來了." 第四部 寫作篇 大師如是說:"寫作良好的程式本身自成天堂, 寫得差的程式本身就是地獄. 4.1 節 .程式要輕靈, 副程式像一串珍珠. 程式的精神與意圖應始終如一, 不多不少; 沒有多餘的迴圈, 也沒有額外的變數, 既不缺少結構, 也不過份笨重. .程式應該追隨" 最低驚訝定律",這是什麼? .簡單得很, 使用人對程式的反應是驚訝的機會要愈低愈好. .程式不管再複雜, 應該以一個整體來作用; 他應該用內部邏輯, 而不是外在的表 象來指導作業. .如果程式不滿足這些要求, 就會雜亂而易生混淆, 唯一的補救就是重新寫過. 4.2 節 .生手問大師:"我有一個程式, 有時侯作得很好, 有時侯卻不行; 我一直遵行程式設 計的規律, 但是卻把我弄得很困擾, 其理安在?" .大師答曰:"因為不悟道才會如此, 只有笨蛋才會期望他的同儕有合理的行為, 而你卻對人類生產的機器有所期望?!計算機只模擬了決定論, 只有道才十全十美. .程式設計的準則還是暫時性的, 只有道才會進入永恒. 所以, 你在開竅前要先思索道." ." 但我要如何才能知道已經開竅了呢?"生手問. .大師回答:"從此以後, 你的程式都能正確執行." 4.3 節 .大師對弟子說:"不論軟體之為大為小, 道在所有軟體中." ." 桌上型計算機有道嗎?"弟子問. ." 有!"大師答. ." 電動玩具程式中有道嗎?"弟子續問. ." 也有!"大師說. ." 那個人電腦的DOS 中有道嗎?" .大師咳一下, 輕輕挪動了位置,"下課",他說. 4.4 節 .皇太子的程式員正在寫作軟體, 指尖在鍵盤上飛舞, 程式順暢無誤的編譯完成, 執行起來像陣微風輕拂而完美的結束. ." 了不起!", 太子嘆曰:"你的技巧無懈可擊." ." 技巧?"程式員從終端機上轉過頭說,"我所信從的是道, 道超越任何技巧! 我開始學寫程式時, 在我眼前所見是混成一片的程式; 三年後, 不再見到這一大片 程式了 , 我學會使用副程式; 現在, 眼前一片空靈, 什麼都沒有了, 所有東西都進入無 型式的一片靜寂; 所有感覺都不必作用. .我的精神可以依直覺而不必依任何計劃行事, 換言之, 我的程式自己寫作自己. 當然, 有時會有困難的問題; 我看著他們到來, 我降低自已的速度, 靜靜的看, 改一列程式之後困難就會煙消雲散; 我再重新靜靜坐著欣賞工作的歡樂. 我閉上雙眼 一會兒, 然後關機." .皇太子說:"我的所有程式員都那麼聰明睿智嗎?" 第五部 維護篇 大師如是說:"雖然程式只有三列, 但總有一天需要維護." 5.1 節 .常用的門不必上油. .急流不會淤塞. .聲音與思想不能在真空中傳遞. .不用的軟體會生鏽. .這就是至大的奧秘. 5.2 節 .經理問程式員究竟要多久才能把手上的程式寫完."明天",程式員很快的回答. .經理說:"我想你不太踏實; 真的要多久?" .程式員想了一會兒:"我希望在程式中加上一些東西, 這至少要兩週."程式員終於說 ." 時間還是短了一些",經理堅持說:"如果你能簡單的告訴我什麼時後能寫完我才會滿意." .程式員同意這一點. .幾年後經理退休了, 在歡送餐會上發現那個程式員伏在終端機上睡著了, 因為他 寫程式寫了整夜. 5.3 節 .一個生手被分派去寫一個單純的財務軟體. .這個生手狂熱地工做了幾天, 但是當大師看他的成品時, 卻發現這個程式中包 含一個螢光幕編修程式, 一組一般性的繪圖程式, 一個人工智慧界面, 但卻沒有什麼 與財務方面有關. .大師就問他, 這個生手卻變得很激動:"不要那麼沒耐心,"他說,"我最終會把財務 部份加上去." 5.4 節 .好農夫會忽視他種的穀子嗎? .好老師會忽略他最差的學生嗎? .好父親會容許他的孩子挨餓嗎? .好程式員會拒絕維護自己的程式嗎? 第六部 管理篇 大師如是說:"程式員要多, 經理要少, 生產力就會增加." 6.1 節 .經理有開不完的會的話, 程式員就會寫電玩; 主計部門想到利潤, 發展經費 就會被刪減; 高級科學家談到藍藍青天, 那麼青天一定會有浮雲飛過. .當然, 這不是程式設計之道. .當經理許下承諾, 程式員就不理會電玩; 當主計部門有長程規劃, 就會回復 和諧與秩序; 當高級科學家處理手上的問題, 問題很快就會解決. .這才是程式設計之道. 6.2 節 .為什麼程式員沒有生產力? 因為他們的時間都花在開會上頭. .為什麼程式員難以駕御? 因為管理階層干預太多. .為什麼程式員一個接一個辭職? 因為他們精力耗光了. .在不良管理下工作, 程式員不會覺得他的工作有價值. 6.3 節 .某個經理快被炒魷魚了, 但是他底下的一個程式員寫了一個叫好又叫座的程式; 當然, 這位經理因而保住了飯碗. .經理打算給這位程式員一點獎勵, 但他拒絕接受, 並且說:"因為我覺得這是個有 趣的概念, 才會寫這個程式, 所以我不希望有獎勵." .經理聽了之後說:"這個程式員雖然職位不高, 但卻充份了解做為一個職員的責任, 讓我們把他升成崇高的管理顧問吧!" .在告訴程式員時, 他再度拒絕, 說:"我之存在是因為可以寫程式, 如果升了我, 那除了浪費每一個人的時間外而成不了事. 我可以走了嗎? 我還得寫程式." 6.4 節 .經理告訴程式員們說:"下面是你們的工作時間: 早上九點來上班, 下午五點鐘下班." 所有程式員都很生氣, 有幾個馬上辭職. .於是經理說:"好吧! 這樣好了, 只要能夠如期完工, 工作時間由你們自定."程式員現 在滿意了, 每天中午開始工作, 直到第二天早上. 第七部 公司智慧篇 大師如是說:"你可以對主管示範一個程式, 但無法讓他通曉電腦." 7.1 節 .生手問大師:"遙遠東方有一個叫" 公司總部" 的偉大樹狀結構, 上面滿滿地標上了 些副總裁, 會計長等的圖案. 它發出大量的備忘錄, 每張上面都寫了" 收文!" " 發文!"沒有人知道是什麼意義. 每年都會把新的名字加到新的分 枝上, 但似乎全 都徒勞無功. 為什麼這樣一個不自然的組織還能繼續存在?" .大師回答說:"你已經體認到這個龐大的結構, 而被它不合理的目的困擾. 不過你能不從它無休止的迴旋而得到樂趣嗎? 能夠不欣賞深藏在枝葉底端毫無困難 的程式設計嗎? 為什麼要被他的無用而困擾呢." 7.2 節 .東方海上有大魚曰鯤, 鯤能變成雙翼遮天的大鵬. 當大鵬飛越陸地時帶來一道公司 總部的訊息, 這道訊息正好掉在一群程式員中央, 然後大鵬折起雙翼乘風而歸. .生手程式員瞪眼望著大鵬, 因為他們不認得; 中智程式員憂大鵬的來臨, 因為他們 害怕它帶來的訊息; 只有大師才能繼續坐在終端機前工作, 因為他不知大鵬的來去 7.3 節 .象牙塔的魔術師帶著他的最新發明去見大師, 他推了一個大黑盒子走進大師的辦公室, 大師正在靜靜的等著. ." 這是一套整合性, 分散式, 一般用途的工作站",魔術師如是說,"還有一套專屬的 作業系統, 第六代語言, 多項最先進的使用人界面, 再加上人體工學的設計; 這花了我的助手們好幾百人年才造出來的, 不是很了不起嗎?" .大師抬了下眼珠子,"的確了不起."大師說. .魔術師繼續說:"公司總部已經下令每個人都要用這台工作站做發展新軟體的基石, 您同意嗎?" ." 當然."大師答道:"我馬上會把它放到資訊中心去."於是魔術師高高興興的回到 象牙塔去. .幾天後, 一個生手在大師的辦公室裡團團轉, 說:"我找不到新程式的報表, 您知道會在那兒嗎?" ." 當然",大師答道,"報表就堆在資訊中心裡頭的基石上!" 7.4 節 .大師可以毫無憂慮的從這個程式轉入另一個程式, 管理上的改變傷不到他; 縱使計劃中止了, 也不會被炒魷魚. 為什麼? 因為他充滿了道. 第八部 硬體與軟體篇 大師如是說:"沒有風, 草不會動, 沒有軟體, 硬體就是廢物." 8.1 節 .生手問大師:"我知道一家電腦公司比其他的大得多, 高高在上就像巨人之比侏儒; 它的任一部都可以單獨成為一個企業. 為什麼會這樣?" .大師回答:"你為什麼問這個笨問題? 這家公司就是因為它大才會這麼大. 如果它只 知道硬體, 沒有人會買它; 如果只生產軟體, 沒有人會用它; 如果只維護系統, 人家會把它看成修理員; 但是因為他把所有的合在一起, 人們就把它當神一樣看待了 . 它根本無需競爭, 因為贏來不費吹灰之力." 8.2 節 .大師有一天經過一個生手旁邊, 發現生手迷上一台手掌型的電玩,"對不起",大師說, "我可以看看它嗎?" .生手停下來, 並且把這台機器交給大師. 大師說:"我看到這台機器玩起來有三個層次: 初級, 中級, 高級; 不過這種機器通常都有另一個層次的說法, 使機器贏不了人類, 而人類也勝不了機器." ." 啊! 大師",生手說:"這個奇妙的開關在那裡?" .大師把機器摔到地上, 用腳把它踏爛. .突然地, 生手開竅了. 8.3 節 .從前有一位微電腦的程式員對一位來拜訪他的大型電腦程式員說:"你看, 在我這兒多好! 我有我自己的作業系統與案儲存設備, 我不必與任何人共用任 何電腦資源;軟體本身自給自足, 而且容易使用. 為什麼你不辭掉目前的工作 來加入我們?" .於是大型電腦的程式員就對他的朋友解釋:"大型電腦就像古之聖哲般的穩穩座落i 在資訊中心中央, 磁碟一個接一個蔚為奇觀, 軟體像鑽石般地有多種面目, 像 古森林般的濃密茂盛. 各個程式像一片急流般地湧入系統, 而這就是我在那兒工 作的樂趣 ." .聽了這段話之後, 微電腦程式員靜默無聲; 但是這兩個人卻結為好友, 至死不渝. 8.4 節 .Hardware與Software走在路上, Software說:"你是陰我是陽, 如果我們能一條心, 一定會成大名賺大錢."所以,他們就聯合在一起而想征服世界. .走了一段路之後, 碰到Firmware, 穿得破破爛爛, 拿著根柺杖, 並且對他們說: "道在陰陽之外, 寂靜不動如古井之不生波瀾; 道不求名, 故無人知曉其存在; 道不逐利, 因它圓滿無缺. 道超乎時空之外." .Hardware和Software聽了之後倍感慚愧而打道回家. 第九部 尾聲 大師如是說:"這是下課的時候了!" 16 ธันวาคม Windows Personal Firewall Analysis以前我以为自带那个就够用了,不过显然我的思想停留在只要能防范外来的攻击即可。但是最近一再的友人的 QQ 被盗报告让我觉得显然基于应用软件控制的访问也很重要。 凑巧在 Soliddot 上看到这则分析。其他不太重要,不过有意思的是 Leak test。显然这年头这个才是防范的趋势啊。 列个防范 Leak test 的结果如下: Comodo Personal Firewall 2.3.6.81 9350 Excellent Jetico Personal Firewall 2.0.0.16 beta 9125 Excellent ZoneAlarm PRO 6.5.737.000 8250 Very good Trend Micro PC-cillin Internet Security 2007 15.00.1329 7500 Very good Outpost Firewall PRO 4.0 (971.584.079) 6675 Good Lavasoft Personal Firewall 1.0.543.5722 (433) 6500 Good Kaspersky Internet Security 6.0.0.303 6350 Good BlackICE PC Protection 3.6.cpv 5750 Poor Sunbelt Kerio Personal Firewall 4.3.268 4825 Poor Look 'n' Stop 2.05p2 4675 Poor Norton Personal Firewall 2006 9.1.0.33 4600 Poor Safety.Net 3.61.0002 4000 Poor Sygate Personal Firewall 5.6.2808 2350 Very poor McAfee Internet Security Suite 2006 8.0 2325 Very poor CA Personal Firewall 2007 3.0.0.196 1000 None BitDefender Internet Security 10.108 750 None F-Secure Internet Security 2007 7.01.128 750 None Panda Antivirus + Firewall 2007 6.00.00 650 None AVG Anti-Virus plus Firewall 7.5.431 500 None Filseclab Personal Firewall 3.0.0.8686 500 None Windows Firewall XP SP2 0 None 根据我收到的意见,最好不要用 McAfee 的防火墙(当然更不能信赖 WinXP SP2 自带防火墙了),Look'n'Stop 还是不错的,可以考虑。其他有几款是商业软件。那么我推荐免费的 Kerio 或者是 Jetico 。 14 ธันวาคม 如何下载土豆网视频最烦这种自己没版权又不给人下载的网站了。Youtube 都四处有下载方法了,可是好像 tudou.com 还没有下载方法的?是藏私还是不屑上这种站点呢? 最后在一个论坛看见下载方法,写得不太对头,修正如下。 1. 查看源代码,定位到“<param name="flashvars" value="iid=1234567">”(视节目不同数值也不同)这一行。 2. 于是得到了 iid (该变量名字可能有变化,网上提供的变量名是 item_id,似乎不对)的数值,然后视频下载地址为: http://player.tudou.com/flv/001/234/567/1234567.flv 看明白了吧?都是一个模式的:http://player.tudou.com/flv/00X/XXX/XXX/XXXXXXX.flv。(据说还有 http://player2.tudou.com/flv/00X/XXX/XXX/XXXXXXX.flv 或者 http://player0002.tudou.com/flv/00X/XXX/XXX/XXXXXXX.flv 或者 /000/0xx/xxx/xxxxx.flv) 如果能写个 Greasemoney Script 就最好啦,不过我从来不喜欢看视频,供有兴趣的人做课外作业吧(笑)。 看不明白? 访问 http://www.quchao.com/video/ 也可以。 或者google “下载 土豆网”。 再增补:下载专用分析软件: UUme FLV Spy (http://desktop.uume.com/) 似乎这个最方便了。 30 พฤศจิกายน 从数理逻辑看 The Matrix来自 CCTV-10,发觉这是最完美的解释了,其实2、3还是讲计算机的事情,只不过涉及的是研究生的课程罢了(笑)。 Matrix 是一个建立在数学基础上的严整系统,一切都是有规律的,包括特工们和尼奥的超能力在内,都是包含在这个系统中的。而尼奥这个“救世主” 的产生,则和数学中的哥德尔命题有关。奥地利数学家哥德尔在1931年发表了题为《论<数学原理>及有关系统的形式不可判定命题》的论文,其中提出这样一个观点,在任何数学系统中,只要其能包含整数的算术,这个系统的相容性就不可能通过几个基础学派所采用的逻辑原理建立。简单地说,就是在任何系统中,总有些真理是游离于逻辑之外的,这些真理就叫做哥德尔命题。 在 Matrix 中,尼奥就是在 Matrix 这个严整系统中不能被数学推得的哥德尔命题,不符合系统的规律。(建筑师对尼奥的谈话中涉及部分)当尼奥重生后,他就担负起系统所有的扰动,所有的规则在他面前都变得透明,因此他能够看到系统中别人所看不到的东西。先知叫尼奥回到源头去终止灾难,在数学逻辑中就是将哥德尔命题变成整个系统的一部分,当作系统的一个变量,从而消除整个系统的不确定性。如果尼奥当初选择了毁灭锡安的门,他所携带的代码将反馈给系统,将系统的稳定性提高到一个新阶段。而这个选择的前提则是系统中没有斯密斯这个狂人。但从数学的角度上来说,这样的稳定也是暂时的,不是对系统的彻底修正,新的系统还是会产生自己的哥德尔命题,从而继续这个轮回。这就是为什么在尼奥之前会有六任救世主的原因。 按照建筑师最初编写救世主时的任务,救世主的使命就是在锡安运行一段时间后,将锡安的代码带回到 Matrix 的源程序进行重装,同时机器摧毁锡安,完成 Matrix 系统的升级。之后救世主将按照初始设置,带领16女7男返回真实世界,再开始重建锡安,等待下一代的救世主。而尼奥与前任们不同的是,建筑师在他的意识中编写了关于爱的编码,这本来是系统处于不断升级的需要,也是考察人类反应的新实验。但这个关于爱的编码,不但导致了尼奥在第二集中做出违背程序设置的选择,而且在第三集中将“爱情”升华为“博爱”,从而最后终结了战争,终止了矩阵和锡安之间的循环。 23 พฤศจิกายน 考拉兹猜想小时候,某小学礼堂四楼一个小男孩学的一个小游戏: (来自又无法访问的中文 wiki)考拉兹猜想,又称为3n+1猜想、角谷猜想、哈塞猜想、乌拉姆猜想或叙拉古猜想,是指对于每一个正整数,如果它是奇数,则对它乘3再加1,如果它是偶数,则对它除以2,如此循环,最终都能够得到1。 例如取一个数字 n = 6,根据上述数式,得出 6→3→10→5→16→8→4→2→1 。考拉兹猜想称,任何正整数,经过上述计算步骤後,最终都会得到 1 。 也可以叫"奇偶归一猜想"。 以下是这个猜想的计算机代码。它会在答案得到1时停下来,以避免作4→2→1这个无限循环。 def collatz(n) print n if n.odd? and n > 1 collatz(3n + 1) else if n.even? collatz(n / 2) 在1930年代,德国汉堡大学的学生考拉兹,曾经研究过这个猜想,因而得名。在1960年,日本人角谷静夫也研究过这个猜想。但这猜想到目前,仍没有任何进展。 保羅·艾狄胥就曾称,数学上尚未为此类问题提供答案。他并称会替找出答案的人奖赏500元。 目前已经有分布式计算在进行验证。到2005年8月2日,已验证正整数到 6*2^58 = 1,729,382,256,910,270,464,也仍未有找到例外的情况。但是这并不能够证明对於任何大小的数,这猜想都能成立。 有的数学家认为,该猜想任何程度的解决都是现代数学的一大进步,将开辟全新的领域。目前也有部分数学家和数学爱好者,在进行关于"负数的3x+1"、"5x+1"、"7x+1"等種種考拉兹猜想的變化形命題的研究。 09 พฤศจิกายน 当小巫见到大巫立此存照。最近貌似很多人中招,奇怪的问题。虽然很久没有研究,但是觉得不像是木马所致,莫非是直接向 tencent 进行的攻击? &长木桥 17:43:18 看到留言以后,帮我个忙,一个朋友跟我借钱,我刚好暂时没有如果方便的话,先帮我打三百块给他我过几天把钱拿给你,我电话坏了,打了钱给我QQ留言农业银行 卡号 9559983423003339117 卡名 吴俊平 一定得帮我想想办法啊,我有事就先走了。等你消息了。 Barret 17:43:42 你中毒了? &长木桥 17:47:42 不是病毒,是真的借钱,记下卡号和卡名,打了钱给我QQ留言,先谢谢了。我还有事先走了,过几天我会把钱拿给你的,就这样。拜托了。 Barret 17:46:56 嘻嘻。你说出我是谁我就打给你。 Barret 17:47:19 不然我马上报警,我就住在他隔壁宿舍。 Barret 17:47:43 跟我玩这套。数到3,不马上坦白我就打110,反正不要钱。 &长木桥 17:49:58 我xx(居然是正确答案) &长木桥 17:49:59 我日 Barret 17:48:55 嘻嘻。那我是谁呢? Barret 17:49:17 小朋友,你大爷我比你更早就玩黑客这套了。 (该 q 号遂下线) 31 ตุลาคม 申请 .net passport本篇貌似有点弱智的…… 话说如果你申请的是 @hotmail.com 或者 @msn.com 就能自动成为 .net passport 的用户,简单说就是能拿邮箱地址登陆 MSN Messenger。 但是如果喜欢用其他邮箱地址(比方我决定拿我的 @Gmail.com 来做新一代马甲)登陆 MSN,那就得先认证一番,地址不大好找,所以在这里做个记号: https://accountservices.passport.net/reg.srf?sl=1&lc=2052 又:其实 Google Account 也不一定需要 @gmail.com 的,其他邮件地址也可以,入口地址: https://www.google.com/accounts/NewAccount 30 ตุลาคม Firefox 2.0: Change Tab Close Buttons (X)Firefox 2.0 已经上市了,稳定及速度及 ie 无法比拟的安全性当然成为我上网的首选。问题是 tab 页的关闭按钮很不爽。好在找到了这篇文章—— http://www.tech-recipes.com/rx/1781/firefox_2_0_change_tab_close_buttons_x The new version of firefox handles the tab close buttons differently than version 1.5. To change back to a single close button is not very difficult at all. Here is how to change the method for closing tabs. 1. Type about:config in the address bar 2. Change browser.tabs.closeButtons to the value you wish. 0 - Display close button only on the active tab 1 - Display close buttons on every tabs 2 - Never display close buttons 3 - Display single close button at the end of the tab strip (This is the old, default Firefox 1.5 behavior) If browser.tabs.closeButtons does not exist, you can create it. Right-click the page and select New and then Integer. 07 ตุลาคม SMTPLite.pm# $Id: SMTPLite.pm, v0.1 2002/12/16 20:09:50, Rob Exp $ # # Copyright 2002 Rob Cheung <Rob@4red.org>. # This library is free software; you can redistribute it and/or # modify it under the same terms as Perl itself. package SMTPLite; use 5.005; use strict; use Socket; use Exporter (); use vars qw( @ISA @EXPORT $VERSION $CRLF ); $VERSION = "0.1"; @ISA = qw(Exporter); @EXPORT = qw( $VERSION &SmtpServer &AuthLogin &FromAddr &ToAddr &SendData &SendDataX &Quit ); #---------------------- $CRLF = "\015\012"; local *SOCK; #---------------------- #-------------- # 连接SMTP #-------------- sub SmtpServer { my $server = shift(); my $port = shift() || '25'; my $iaddr = inet_aton($server); my $paddr = sockaddr_in($port,$iaddr); my $proto = getprotobyname('tcp'); socket(SOCK,PF_INET,SOCK_STREAM,$proto); connect(SOCK,$paddr) or die "$!\n"; my $buffer = ''; my $ret = recv(SOCK,$buffer,512,0); send(SOCK,"EHLO localhost\n",0); #recv(SOCK,$buffer,500,0); return $ret ? $buffer : undef; } #-------------- # 用户认证 #-------------- sub AuthLogin { my $user = _encode( shift() ); my $password = _encode( shift() ); my $buffer = ''; send(SOCK,"AUTH LOGIN\n",0); recv(SOCK,$buffer,200,0); send(SOCK,"$user\n",0); recv(SOCK,$buffer,100,0); send(SOCK,"$password\n",0); my $ret = recv(SOCK,$buffer,100,0); return $ret ? $buffer : undef; } #-------------- # 发信源地址 #-------------- sub FromAddr { my $fromAddr = shift(); send(SOCK,"MAIL FROM: <$fromAddr>\n",0); my $buffer = ''; my $ret = recv(SOCK,$buffer,50,0); return $ret ? $buffer : undef; } #-------------- # 目标地址 #-------------- sub ToAddr { my @toAddr = @_; my $buffer = ''; for my $to (@toAddr) { send(SOCK,"RCPT TO: <$to>\n",0); recv(SOCK,$buffer,50,0); } send(SOCK,"DATA\n",0); my $ret = recv(SOCK,$buffer,100,0); return $ret ? $buffer : undef; } #-------------- # 定制发送内容 #-------------- sub SendData { my $data = shift(); my $buffer = ''; send(SOCK,$data,0); my $ret = recv(SOCK,$buffer,512,0); return $ret ? $buffer : undef; } #-------------- # 发送内容 #-------------- sub SendDataX { my $fromAddr = shift(); my $toAddr = shift(); my $replyAddr = shift(); my $subject = shift(); my $body = shift(); my $data = "From: <$fromAddr>\n" . "To: <$toAddr>\n" . "Reply-To: <$replyAddr>\n" . "Subject: $subject\n" . "Content-Type: text/html; charset=\"gb2312\"\n" . "\n" . "$body\n" ; my $buffer = ''; send(SOCK,$data,0); my $ret = recv(SOCK,$buffer,512,0); return $ret ? $buffer : undef; } #------- # 退出 #------- sub Quit { my $endChar = shift() || "$CRLF.$CRLF"; my $buffer = ''; send(SOCK,"$endChar",0); recv(SOCK,$buffer,512,0); send(SOCK,"QUIT\n",0); my $ret = recv(SOCK,$buffer,100,0); close(SOCK); return $ret ? $buffer : undef; } #------------------------------------------ # Base64编码函数 # From MIME::Base64, written by Gisle Aas. #------------------------------------------ sub _encode { my $res = ""; my $eol = $_[1]; $eol = "" unless defined $eol; pos($_[0]) = 0; # ensure start at the beginning while ($_[0] =~ /(.{1,45})/gs) { $res .= substr(pack('u', $1), 1); chop($res); } $res =~ tr|` -_|AA-Za-z0-9+/|; # `# help emacs # fix padding at the end my $padding = (3 - length($_[0]) % 3) % 3; $res =~ s/.{$padding}$/'=' x $padding/e if $padding; # break encoded string into lines of no more than 76 characters each if (length $eol) { $res =~ s/(.{1,76})/$1$eol/g; } $res; } 1; #---------------------------------8<------------------------------------ =head1 NAME SMTPLite.pm - A lightweight SMTP Client =head1 A complete example use 5.006; use strict; use SMTPLite; my $user = 'Rob'; my $password = '****'; my $toAddr = ['to@4red.org']; my $fromAddr = 'from@4red.org'; my $replyAddr = 'from@4red.org'; my $subject = 'Test!'; my $body = '____body____'; my $server = '4red.org'; print SmtpServer($server); print AuthLogin($user, $password); print FromAddr($fromAddr); print ToAddr(@$toAddr); #print SendData("FROM: <...>"); #print SendData("TO: <...>"); #print SendData(More...); print SendDataX($fromAddr,$toAddr->[0],$replyAddr,$subject,$body); print Quit(); =cut 19 กันยายน RSS 阅读从 BLOG 的出现开始我就知道应该用 RSS 阅读器来阅读才是标准行为(这也是我没有选择 BLOGCN 这种假 RSS 的 blog 原因之一),不过 RSS 阅读器实在太难找了。记得以前是一个叫做什么什么的,在 Linux 下用过,不过居然还需要 Perl 支持。 结果,现在一直用的都是亲自使用 Firefox 跑到个个 blog 上去看,幸好 firefox 有比 IE 好很多的记忆地址栏的功能(按访问时间而不是简单按字母顺序排序),所以倒也没什么妨碍。 不过看了师弟演示他的 RSS 阅读方式之后觉得确实很省力气,于是我又找来 Sage 试了试,结果这个备受称赞的 RSS plug-in 完全没有让我觉得好用,感觉和 GreatNews 差不多。而且最要命的是 firefox 再拉上一个 sage ,我的内存不是都耗光了? 最后就选择了线上的阅读,跑去 zhuaxia.com 注册了一个帐号。发觉这个还挺省事的,将频道都订阅后,才发现自己原来经常看的个人 blog 都有将近50个(寒死)。这次加完频道之后,比较不爽的是如果是私有的 LIVE SPACE 就因为没有 RSS 还是要亲自拿浏览器去看。不过其他嘛……都很方便。推荐各位都试试看。 01 กันยายน 脚注47:Carmichael 数费马小定理: 如果n是一个素数,a是小于n的任意正整数,那么a的n次方与a模n同余。 能够骗过费马检查的数称为 Carmichael 数,我们对它们知之甚少,只知道其非常罕见。在100 000 000之内有255个 Carmichael 数,其中最小的几个是561,1105,1729,2465,2821和6601。在检查很大的数是否为素数时,所用选择是随机的。撞上能欺骗费马检查的值的机会比宇宙射线导致计算机在执行“正确”算法中出错的机会还要小。对算法只考虑第一个因素而不考虑第二个因素恰好表现出数学与工程的不同。 31 สิงหาคม Isolation Level通过一些现象,可以反映出隔离级别的效果。这些现象有: 更新丢失(lost update):当系统允许两个事务同时更新同一数据是,发生更新丢失。 脏读(dirty read):当一个事务读取另一个事务尚未提交的修改时,产生脏读。 非重复读(nonrepeatable read):同一查询在同一事务中多次进行,由于其他提交事务所做的修改或删除,每次返回不同的结果集,此时发生非重复读。 幻像(phantom read):同一查询在同一事务中多次进行,由于其他提交事务所做的插入操作,每次返回不同的结果集,此时发生幻像读。 对于小系统,似乎增加了很多不必要的复杂性。 28 กรกฎาคม 在 win32 上用 Perl 操作 Excel 文件按:Excel 貌似和脚本的交互性不佳。我的意思是不够自动,退出都要我手动点确认……或者是我没有查 MSDN 吧。觉得好像不如使用 VB 来完成任务,不过我又不会,倒。 #!/usr/bin/perl -w use strict; use Win32::OLE qw(in with); use Win32::OLE::Const 'Microsoft Excel'; $Win32::OLE::Warn = 3; # die on errors... my $exfile = shift; # get already active Excel application or open new my $Excel = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application', 'Quit'); # open Excel file my $Book = $Excel->Workbooks->Open($exfile); # You can dynamically obtain the number of worksheets, rows, and columns # through the Excel OLE interface. Excel's Visual Basic Editor has more # information on the Excel OLE interface. Here we just use the first # worksheet, rows 1 through 4 and columns 1 through 3. my $shname ="main"; # select worksheet number 1 (you can also select a worksheet by name) my $Sheet = $Book->Worksheets("$shname"); foreach my $row (1..4) { foreach my $col (1..3) { # skip empty cells next unless defined $Sheet->Cells($row,$col)->{'Value'}; # print out the contents of a cell printf "At ($row, $col) the value is %s and the formula is %s\n", $Sheet->Cells($row,$col)->{'Value'}, $Sheet->Cells($row,$col)->{'Formula'}; } } # clean up after ourselves, "wdDoNotSaveChanges" is an optional. $Book->Close; 20 กรกฎาคม 习题1.12 贾宪三角形/杨辉三角形(define (pascal height) (pascal-line 1 height)) (define (pascal-line from to) (if (> from to) (display "\n") (and (pascal-ele 1 from) (pascal-line (+ from 1) to )))) (define (pascal-ele x y) (if (> x y) (display "\n") (and (display (ele x y)) (display " ") (pascal-ele (+ x 1) y)))) (define (ele x y) (cond ((= x 1) 1) ((= x y) 1) (else (+ (ele (- x 1) (- y 1)) (ele x (- y 1)))))) 能够看清除所考虑的动作的后果的能力,对于成为程序设计专家是至关重要的,就像这种能力在所有综合性的创造性活动中的作用一样。在这里,我们需要对计算过程中各种动作的进行情况作出规划,用一个程序去控制这一过程的进展。要想成为专家,我们就需要学会去看清各种不同种类的过程会产生什么样的计算过程。只有掌握了这种技能之后,我们才能学会如何去构造出可靠的程序,使之能够表现出所需要的行为。 |
|
|