PageRank



轉移公告

計劃把 http://blog.hoamon.info/ 文章全部轉移至 http://www.hoamon.info/blog/ 這裡,而本 Blogger 站台的文章近 500 篇,我預計在 2014-12-31 前移轉完畢,完成後 http://blog.hoamon.info/ 將只作代轉服務,一律把舊連結如 http://blog.hoamon.info/index.html 轉成 http://www.hoamon.info/blog/index.html ,敬請舊雨新知互相走告。

新文章只發佈在 http://www.hoamon.info/blog/ 。

何岳峰 敬上

2007年10月29日 星期一

自由軟體比較安全?

引自 - 人間研究所: 自由軟體比較安全?

上一篇的作者拿 Windows 隨身碟病毒作引子,提到了 OpenOffice.org 的軟體最近也被找出一個漏洞,而這個漏洞目前只在 Linux 上被實現出來(白話說,目前只有 Linux 上跑的是 OpenOffice.org 2.0.4 以前版本的,就有機會被怪/駭,如果是 Windows 則目前沒事)。

該作者說:「當 Mac OS 和 Linux 越來越多人使用的時候,相關的惡意程式的增加也是自然的事。」所以自由軟體並沒有比較安全,現在會安全是使用者少的原因。

我:「多麼不倫不類的比較。」

請先看看 wikipedia 對病毒的解釋。

所有的程式設計師一定會承認,沒有軟體是十全十美的,一定會有漏洞,我是程式設計師,當然也認同這句話。

但漏洞不等同病毒呀!在 Windows 中,如果你定時/即時地把所有相關的應用軟體及 OS 的漏洞補齊,那你會不會在「不安裝防毒軟體」的情況下,把電腦交由一般使用者使用,會嗎?

又,你在 Ubuntu/RedHat/SuSE/... Linux 中,如果你定時/即時地把所有相關的應用軟體及 OS 的漏洞補齊,那你會不會在「不安裝防毒軟體」的情況下,把電腦交由一般使用者使用,會嗎?一定會吧!

簡單地說,隨身碟病毒不會因你更新了軟體漏洞,而有了防禦能力,它是需要更新防毒軟體的病毒碼,才能解決的。而 OpenOffice.org 卻是更新軟體版本就行了。

自由軟體/商業軟體一樣都會有漏洞,但評定安全的標準是須考慮漏洞、病毒、蠕蟲、木馬…的,在病毒、蠕蟲、木馬上,自由軟體的 Linux 比 商業軟體的 Windows 還安全,這跟人多人少沒關係,這是系統架構設計的問題(不懂,請再回到 wikipedia 對電腦病毒的解釋)。

所以,安不安全跟自由不自由也沒有關係, Mac OSX 、 AIX 、 HP-UX 、 Solaris 就都不是自由軟體呀!但它們的系統架構設計都勝過 Windows 。

當然使用者不一定愛「比較安全」的作業系統,男人也是。

2007年10月15日 星期一

Google的市值是全球科技股第二大了。

Google 的市值有多少呢!目前是 1980 億美金。那全球第一名是誰呢!應該沒人會講錯吧! MSFT ,是的,就是這家公司,從它 1986 年上市至今約二十年頭,它的市值也只比 2004 年上市的 Google 多了 3 成。
keep going google! i believe you!

2007年10月12日 星期五

破紀錄:有史以來,第一次中毒

之前從來沒有中過毒,要不就是我沒發現過。

還好我已經用了 VirtualBox 了。中毒的解決之道,就是 cp -rf /backup/XXX.vdi ~/.VirtualBox/XXX.vdi , 8 分鐘就復原了。

這陣子,我老婆的學校一直飽受病毒肆虐之苦。沒想到,現在也延燒到家裡了。

2007年10月9日 星期二

Lp_solve 安裝

lp_solve 是以 C 語言寫成的 Mixed Integer Linear Programming (MILP) solver ,所以基本上,你是用 C 語言的人是可以直接把它的函式庫包在所寫的程式中的。

但我們是用 Python 的人,那要如何能在 python 語言把 lp_solve 載入呢!要作到這個,你首先要知道 lpsolve55.dll (windows)/liblpsolve55.so(unix) 就是 lp_solve 的函式庫,你只要有這個檔案,你就可以使用 C 語言來寫 MILP 應用了。

而用 Python 的人,則是要多安裝一個 lpsolve55.pyd(windows)/lpsolve55.so(unix) ,這個檔是 Python 與 lp_solve 函式庫的溝通者/包裝者,你的 Python 程式都是先載入 lpsolve55.pyd(windows)/lpsolve55.so(unix) ,然後它會幫你處理與 lpsolve55.dll (windows)/liblpsolve55.so(unix) 的資料傳輸。

Ubuntu 7.04 版: 請到 sourceforge.net 下載 5.5.0.10 的檔案。

  1. lp_solve_5.5.0.10_dev.tar.gz - 裡面放的是 liblpsolve55.so
  2. lp_solve_5.5.0.10_Python_source.tar.gz - 裡面放的是 lpsolve55.so 的程式碼

把 liblpsolve55.so 放到你的 /usr/lib 下(而其他解出來的檔案則拿到 lp_solve_5.5.0.10_Python_source 的資料夾中,與 extra 同一層)。接下來確定你有安裝 python-dev 套件,如果沒有,你應該知道如何安裝它吧!(# sudo apt-get install python-dev),接下來解開 lp_solve_5.5.0.10_Python_source.tar.gz ,進入到 extra/Python 中,執行 # sudo python setup.py install 。

如果沒有意外出現的話,你可以在 python 直譯器中見到如下訊息:

Python 2.5.1 (r251:54863, May  2 2007, 16:56:35) 
[GCC 4.1.2 (Ubuntu 4.1.2-0ubuntu4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from lpsolve55 import lpsolve
>>> lpsolve()
lpsolve Python Interface version 5.5.0.5
using lpsolve version 5.5.0.10

Usage: [ret1, ret2, ...] = lpsolve('functionname', arg1, arg2, ...)

2007年9月28日 星期五

陣列特殊排序需求

Example: 排序 '140.120.109.1', '140.1.109.2', '14.120.109.1', '120.140.109.2'…等 ip 格式的文字串。這種排序的結果應是將 ip 切成 4 個部份後再來排序的。

>>> a = [4,5,6,1,2,3]
>>> a.sort()
>>> print a
[1,2,3,4,5,6]

上面的例子告訴我們,每個 list 都會有 sort 方法,而它的功能就是把陣列中元素作排序。如果陣列中元素有字串、另一個陣列、其他物件等, sort 方法一樣都可以排序,只是你對一個混合型態的陣列作排序,不容易有實質意義。

而如果陣列中的元素是單型態的,但它們的資料格式長得有點複雜,像是 ip 位置,那麼該如何排序呢!

>>> def sort_by_ip(X, Y):
... x_list = X.split('.')
... y_list = Y.split('.')
... for (i, x) in enumerate(x_list):
... if int(x) > int(y_list[i]):
... return 1
... else:
... return -1
... return 0
...
>>> ip = ['1.1.1.1', '140.120.109.1', '140.1.109.2', '14.120.109.1', '120.140.109.2']
>>> ip.sort(sort_by_ip)
>>> print ip
['1.1.1.1', '14.120.109.1', '120.140.109.2', '140.1.109.2', '140.120.109.1']

我 們利用一個自定的 sort_by_ip 方法來客製化我們的排序需求。陣列的 sort 方法,在執行時,會依序將陣列中的元素以兩個兩個為單位丟給 sort_by_ip 方法來處理,由 sort_by_ip 方法回傳出這兩個元素的大小,如果是前者為大,回傳值為 1 ,如果是後者為大,就回傳 -1 ,相等則回傳 0 。

所以你也就不須煩惱 sort 方法是不是用 quicksort/bubble 演算法,只須考量兩個元素的大小是如何判定的。

當問題只縮小到判定兩者大小時,就十分簡單了,在 sort_by_ip 方法中,我們首先拿到兩個元素的值,然後以 split 方法將其斷成 4 個子元素,再來依序比較這 4 個子元素的大小即可。

再來談一個例子:[{'cost': 10, 'id': 3}, {'cost': 1, 'id': 13}, {'cost': 100, 'id': 33}, {'cost': 84, 'id': 4}]該如何排序,解答如下:

def sort_by_cost(X, Y):
if X['cost'] > Y['cost']: return 1
elif X['cost'] <>
else: return 0

2007年9月23日 星期日

基隆市立信二停車場

用心就是不一樣。

這次到北部遊玩,有幸來到信二停車場,發現到令人感動的管理方式:
  1. 入場以人工方式輸入車號後領卡進場
  2. 每樓層以不同顏色標記
  3. 出場以人工輸入車號判讀停放時間,並檢查是否符合車卡上車號
這麼作有如下幾個優點:
  1. 以顏色區別後,使用者多了一種方式來記住停放車子的樓層。
  2. 出場得符合車卡上的車號,這樣車子被竊的機率降低了。
  3. 出場以人工輸入車號來判讀停放時間,這樣出場時間可以少個幾秒鐘。
缺點有一個:得多花一個人力。

2007年9月21日 星期五

小(大)學生一定要有電腦及網路才可以畢業!

這陣子燦坤、家樂福、全國電子推了幾個廣告,訴求就是「威脅」、「利誘」、「柔性呼喚」要開學的學生或是學生家長,在學涯生活中一定得買台電腦,要不然學習會輸別人的。

這是商人的詭計,與情人節買花、普渡要旺旺的道理是一樣的。但在聽我說下去前,請你們先去看看一個高級知識份子的文章「不要學電腦,不要學英文」,以下三個網址的內容都一樣的:
http://home.pchome.com.tw/internet/intro33/new_page_8.htm
http://blog.yam.com/eyesfun/article/8155310
http://www.pczone.com.tw/vbb3/thread/21/71021/

看完了嗎?還沒,請記住,我的文章沒他好,如果你不看他的,卻繼續看我的,那代表你沒眼光。再給你 3 分鐘。

曾在南投縣北山國中上過一個學期的資訊課。學期開始,我就為同學們介紹什麼是資訊、什麼是電腦,電腦不等同資訊;資訊也不等同電腦,所以我們上課其實不是一直在用電腦的,我會上點數學、講些社會上應用電腦資訊的例子,像是快遞如何透過資訊系統協助送貨、 7-11 如何管理庫存…之類的。

而最重要的一點是,我出的作業,一定要在課堂上作完。

因為我知道不是每個小朋友家裡都有電腦及網路的。台灣雖然是開發中國家,雖然是資訊產品的最大出口國之一,但還是有人家裡不能買或不願買一台電腦,辦條網路線的。

家裡沒有電腦,我是一點都不覺得有什麼關係的,尤其對小朋友來說,電腦對他們一點都不重要。何必為了 1 個月花 3 小時作一個文書處理作業買台電腦回家呢!況且如果老師真的出了電腦作業,也真的要求小朋友帶回家作出來,那也沒有關係,至少對市區學生來說,我們多半都有圖書館,圖書館裡有電腦、網路可以使用,像是欣榮紀念圖書館中還有 Ubuntu 可以用呢!又或者學校的電腦教室也可以使用呀!要不然學費中的電腦使用費是繳心酸的嗎(但大部份的家長其實不知道電腦使用費有一部份是花在教師電腦及全校網路連線費)?

但以上所說,不代表現在學校老師了解這個現象。

我的姪子、姪女目前就讀南光國小,就常遇到老師要他們回家打報告、找資料,打報告是沒問題啦!因為家裡有電腦,但找資料的話,卻因沒有網路,所以他們就會跟家裡大人說:「要到姑丈家,或是舅舅家用網路。」於是 3 分鐘找資料,剩下的時間玩網路遊戲。

所以當我聽到老師又出網路作業回家作的時候,心裡就不高興。對小朋友來說,在網路上找資料一點都不重要。重要的應該是教他們「如何利用資訊」。甚至我還覺得根本不要教所謂的文書處理軟體、影像處理軟體、網頁製作軟體等,這些東西對他們未來的益處不若「如何利用資訊」來得重要。

資訊有很多形式,紙本的、口述的、數位的、網路的…,資訊的儲存位置也有很多地方,其中對小朋友(其實對大朋友也是)最有幫助的是圖書館。但學校老師常常不教(或許是他們也不會運用圖書館),只(會)用 Google 找資料的人是愚蠢又懶惰的。

而事實上,許多國中小電腦老師也只會教小朋友文書處理軟體,於是國小教一遍,國中又教一遍,搞得小朋友認為電腦就是這樣子,除了網路遊戲外,其他都是一整個無聊。

如果可以,我希望電腦可以晚一點教。

拿我親身的實例來說:高四(1995)時,我爸就買了一台 Win95 的電腦,要拿來幹什麼,我不知道,但當我上大學時,它成了我寫作業的工具,利用它來打報告及玩 NHL 97 ,一直到研究所,我才踏入重灌電腦/程式設計的行列,我還記得高中工藝課看不懂老師寫的 basic 程式,只好看同學打三國志 3 的情景,但比起這些國高中就有在玩電腦的同學,現在與他們相比,在電腦科學/應用上並不輸他們呀。

如果可以,我真的希望電腦可以晚一點教,因為有太多更重要的東西要學了。
Related Posts Plugin for WordPress, Blogger...