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/

何岳峰 敬上

2008年3月28日 星期五

英語對小學生是不重要的

老婆發過一個文:超額教師辦法會議後記,因為有人提了意見,而我又回覆她,所以我想拿這個引子繼續說。

以我這個年紀、作的工作來說,英語/英文實在是太重要了,這一點是不可否認的。我得用英文來找新的技術手冊、學新的觀念,甚至寫英文文章,未來也希望透過英語賺英語系國家的錢。對我來說,不用英文,就是讓我沒有競爭力。

但是,有一天我老婆強迫她的姪子(一個小四,一個小五)唸英語時,我問他們倆一個問題:「我肚子餓,我想要吃漢堡的英語,怎麼講?」他們支支唔唔地拖了很久,事實上,這問題他們應該要會的,我是從他們的英語課本中拿出來問他們的。接著,我告訴他們答案,並說:「其實,美國乞丐會講的食物更多種,還不只是漢堡,他們也會說牛排、可樂、薯條…,那這樣子,你們覺得為什麼要學會英語呢?又或者他可以講比你們還多的英語詞句那為什麼還要當乞丐而不是去當醫生、程式設計師、會計師、水電師傅、建築師呢?」

差別就在專業能力,而專業能力的基礎是不須要英語/英文的,在台灣,你絕對可以找到中文的教科書來教會你專業能力,而為了要看懂這些中文教科書,小時候更應該專注在國語、數學、社會、自然上。等你學好國語、數學、社會、自然後,再好好學會英語/英文,最後精進你的專業能力才是。

學英文(或是其他外語)的目的,不是和他人對話,而是博覽群書。

PS我大學聯考英文 28 分,經過一年重考後,我的英文是 24 分,但又如何呢!小時候英文不好,不影響我唸大學(第二次考試結果我是可以填中央土木或中興電機的,只是我選了中興土木,如果你想問為什麼,那這又是一篇 Blog 了)!但是現在英文不好,會影響我的競爭力。所以,我比小學生更應該在英文上下功夫。

檯面上沒有青發,我們該胡九萬的

-- 我們沒有權利討論周女士的選擇,她也沒有這個義務滿足我們的想法 --

第十二任總統選舉終於結束了,不管是新聞還是談話性節目,著墨最多的都是馬總統的家庭,而熱門的又是『馬夫人是否該辭去『周處長』的工作』。我認為這夠了。

在選票圈選欄中,我明明只看到『九萬』,沒看到『青發』,為什麼大家拼命想『胡』青發呢!!

試想,如果我們選擇的是一個單身的總統,那麼要找誰作『第一夫人』呢?所以憲法、法律根本不會制定『第一夫人』的工作是什麼,那麼為什麼有這麼多的嘴巴對『周女士』的未來該作什麼工作有意見呢?

我們來看看過去吳女士的作為,在她健康良好的情況下,她會去宣慰僑胞、國會致詞、出席國宴…,但她生病後,有作到任何一項工作嗎! 台灣還是可以照常運轉,所以『第一夫人』作什麼是不重要的。

如果你覺得『第一夫人』一定要作什麼事,才能讓台灣婦幼地位及環境提昇,那麼『馬蕭』的婦女政策就是個屁話了。『第一夫人』不須等同『婦幼部部長』。如果你還有『母儀天下』的想法,那就回到封建時代,沒有民主了,台灣也選不出女性總統了。

又如果你認為『周女士』擔任兆豐銀法務處處長,在兆豐銀將來與政府有利益衝突時,會對法官或是整個司法制度有所影響的話,那麼你就是瞧不起『台灣司法』了,天子犯法與庶民同罪,這是司法的基本。

或許你還是有疑慮,認為『第一夫人』有工作總比沒有工作對政府的影響比較大,那麼我們再回頭看看吳女士的例子,她是沒有工作的『第一夫人』,而她卻與『國務機要費案』及『SOGO禮卷案』有關,於此,你還覺得沒有工作會比較好嗎?

我的結論是『沒有第一夫人對台灣也沒有關係』及『對政府的影響力不是取決於第一夫人有沒有工作』兩點。就這個議題,我希望台灣媒體可以夠了,別再談了,不要讓人民轉移了焦點,現在最重要的是民進黨政府『平穩』地轉移政權及國民黨政府『積極』地帶台灣向前行。

檯面上沒有青發,我們該胡九萬的。

2008年3月24日 星期一

How to connect MS SQL Server with Python in the Linux OS?

Basically, the general method is using ODBC Interface. In the Unix environment, we can use unixODBC library, but i had tried in failure.

So... another method is using hard core TDS protocol of Sybase Server. because MicroSoft buy the MSSQL server source code from Sybase, so they use the same protocol. maybe there are some difference between the servers. but i could not found it as far.

and i wanted using Python to program, so the requirement is below here:
  • freetds(http://www.freetds.org/): TDS protocol library written in C
  • python-sybase(http://www.freetds.org/userguide/python.htm): python interface for controll freetds library
  • python-devel (using in compile python-sybase)
Installation in Ubuntu is so easy, try apt-get install python-devel first. and then install freetds and python-sybase. command is below here:

# tar -zxf freetds.tgz

# cd freetds

# ./configure --prefix=/usr/local/freetds

# make

# sudo make install

# tar -zxf python-sybase.0.37.tgz #PS i try 0.37, because 0.38 is having something wrong in my server

# cd python-sybase.0.37

# sudo SYBASE=/usr/local/freetds \
CFLAGS="-DHAVE_FREETDS" \
LD_LIBRARY_PATH=/usr/local/freetds/lib:${LD_LIBRARY_PATH} \
python setup.py install


OK! installation is done!

try the freetds library is OK!

# /usr/local/freetds/bin/tsql -H {ServerIP} -p 1433 -U {Username} -P {Password}

> EXEC sp_databases

> go

this 『EXEC sp_databases』 command will show the all databases that this {Username} can read.

> use testdb

> EXEC sp_tables

> go

this 『EXEC sp_tables』 command will show the all tables of testdb.

> EXEC sp_columns @table_name = 'users'

> go

this 『EXEC sp_columns @table_name = 'users'』 command will show the all fields of table 'users'.

if everything seen OK! you can try Sybase module in the python interpreter.

# SYBASE=/usr/local/freetds CFLAGS="-DHAVE_FREETDS" LD_LIBRARY_PATH=/usr/local/freetds/lib /usr/bin/python
 1 import Sybase

2 class DictCursor(Sybase.Cursor):

3 def row2dict(self, row):

4 d = {}

5 for i,elt in enumerate(row):

6 d[self.description[i][0]] = elt

7 return d

8 def fetchall(self):

9 rows = Sybase.Cursor.fetchall(self)

10 result = []

11 for row in rows:

12 result.append(self.row2dict(row))

13 return result

14 def fetchone(self):

15 return row2dict(Sybase.Cursor.fetchone(self))

16 def fetchmany(self):

17 rows = Sybase.Cursor.fetchmany(self)

18 result = []

19 for row in rows:

20 result.append(self.row2dict(row))

21 return result

22 class Connection(Sybase.Connection):

23 def dictcursor(self):

24 return DictCursor(self)

25 db = Connection(ip:port, account, password, dbname)

26 c = db.dictcursor()

27 sql = "select * from sometable"

28 c.execute(sql)

29 rows = c.fetchall()

30 for row in rows:

31 for k, v in row.items():

32 print k, v

33 print 'done'
OK! this is real done!

2008年3月18日 星期二

社會不是靠著錢滾錢來成長地,靠的是你我日復一日的工作

引自 同門對決---The Great Debate between Jeremy Siegel and Zvi Bodie讀後感


"""人們不可能從金融市場裡,從投資的行為中,得到每年十幾趴的真實報酬,那會讓太多人,在有點本金之後,投資所得就可以維持生活,而放棄本業,以投資過活。不過,人類世界,不是靠大家在金融市場忙進忙出就會有錢,有真實價值跑出來。有真實價值的東西,是人們從事本業,所提供的服務與製造的產品。絕大多數人,將從投資的行為中,得到失望的結果,不如意的報酬,而失望的繼續工作,推動人類社會的運轉。每年 20%?!那只是用來賣雜誌、賣建議、賣whatsoever的情緒性字眼。

我的建議是,找個自己喜歡的工作,然後理性的認知,投資只是個讓資產有機會緩慢成長的管道。"""



這與我在 投資不只是「錢滾錢」而已 中提到『如果你還沒有投資自己,就不應該去投資別人』的觀念是不謀而合,不同的是我以正面方式敘述,該文以負面方式敘述。

而我也是確確實實地從投資行為中得到失望的結果,才了解到應該找個更能發揮自我、熱情的工作來做,更有希望賺到大錢。

2008年3月17日 星期一

x的,所有的糟糕事都擠在一起出現

今天早上,心血來潮,把線性規劃套在 51 個城市旅行問題上,演算法應該沒寫錯,但這個題目應該會跑很久。所以,我在程式寫完的那一刻要把它 commit 到我的版本控制器上,但發現網路不通。原來是,學弟們超流了,被計中斷網。

索性直接跑吧! 從上午 11 點一直跑到下午 4 點,才覺得這可能無止盡,想說還是把程式放到家裡的閘道器去 run 吧!反正它本來就不關機的。下面是我下的指令:

# /usr/bin/python2.4 TSP-51_byLP.py > TSP-51_byLP.log
# cp -rf TSP-51_byLP.*

原本在 TSP-51_byLP.* 後面,應該還要跟著一個資料夾的,但我太快按下 [Enter] 了。所以…。

x的,寫了一個早上的程式就變成它 run 出來的 log 。

x的,還是趁現在沒忘掉前,再寫一個吧!

2008年3月11日 星期二

寫作業是『學會』的基石

有一天,我的小姪子說:「好希望我現在就是國中生了,這樣三年級的數學題目,就變得很簡單。」

我笑笑地跟他說:「為什麼長大了,就什麼都會?那如果這樣的話,阿公應該是最會寫作業的人囉!」接下來,我就和他解釋,國中生覺得小學三年級的數學很簡單,那是因為他在三、四、五、六年級的時候寫了很多的作業,因為這樣的練習,讓他學會了小學數學。所以,如果你什麼都不學,到了國中的年紀其實你還是什麼都不會。學會的重點在作業(練習)。

我們小時候不明白這個道理,等到我們長大了,卻疏忽『作業』的重要性,我們比較崇拜『腦內計算機』,而輕視『動手作』,所以學習的效率降低了。

有人跟我說該讀的書要在 30 歲以前就要讀完, 30 歲以後,記憶力、理解力都下降,這時候才讀書太晚了。我倒覺得多『動手作』就能讓你的記憶力、理解力維持在水準之上。

所以, Python 的書看多了,還是要搭配寫個程式來練習,達到相輔相成的效果!

用 iptables 來開防火牆的洞!

題目有點聳動,事實上,並沒有開洞,只是利用原來的洞作不同協定的事。

因為工作的關係,總是會幫別人代管主機,然而大公司有大公司的政策,所以代管主機通常只能露一個洞出來給大家用,也就是 80 port 。要用 ssh 管理主機時,得用 VPN 連線到公司的 VPN Gateway ,再作連線動作。

但目前我遇到的 VPN Gateway 有仲琦、思科兩家,我在 Linux 上實在找不到可用的 VPN client ,所以一直得用 VirtualBox 上的 XP 來作維護工作,這令人很不愉快。我只想打指令,卻得開個 GUI 來礙眼。

只是,答案早就在那了,我到昨天才撿起來。

/sbin/iptables -A PREROUTING -t nat -p tcp -s ${自己電腦的IP} --dport 80 -j DNAT --to ${伺服器IP}:22

先利用 VPN 連線進到主機中,加入這條規則,之後你就可以不用再透過 VPN Gateway ,直接從 ${自己電腦的IP} 遠端連入了。

若是你想要使用 https 連線,一樣的道理,規則改成如下:

/sbin/iptables -A PREROUTING -t nat -p tcp -s ${自己電腦的IP} --dport 80 -j DNAT --to ${伺服器IP}:443

只是這麼作只能用一個外部 IP 換得一個伺服器上的 Port 。

所以就把腦筋動到 netfilter-L7 模組上,正想大刀搞搞,結果看到官網上一句話:

"""Warning: Some users have reported kernel crashes when they using SMP with l7-filter. (Some have also reported that their SMP systems run fine.) If you have a multi-CPU machine, test carefully before putting it into production with l7-filter."""

興致全減,因為我代管的主機都是雙核心,我可不想費這個風險。還是拿 ip 換 port 吧!

P.S. 測試過程中,有個插曲,本想利用 apache 的 R-Proxy 功能直接作 http => https 的工作,然後花了很多時間才發現 R-Proxy 只能作到 http => http 及 https => https ,而不能作 http => https 及 https => http 的工作。

2008年3月5日 星期三

雪山隧道錄影



年初走南橫環繞北台灣時,經過雪山隧道所拍攝的。

進一步資訊請看 wikimedia:雪山隧道

ps 本片全長影片 12:09 ,本來是要放到 youtube 去的,沒想到它們不收大於 10 分鐘以上的影片,還好它的哥哥 Google Vedio 可以放。
Related Posts Plugin for WordPress, Blogger...