IronPython(1) – 安裝與執行 script

IronPython 是一個移植到 .Net framework 之上的 Python 分支,與其他 Python 最大的不同點就是他可以直接調用 .Net framework 內的所有類別庫。
安裝前的必要條件:

官方既下載網址:

目前最新的版本是 Beta 8,下載以後的安裝非常簡單,解開以後就可以了。
點選 IronPythonConsole.exe 就可以執行。
還記得以前的 BASIC 嗎?(我想大概很少人知道這種古早又親切的語言了)
你可以試著輸入

print “Hello world!”

或是

print 1+2

就可以快速看到你指令的輸出結果。
接著我們試試看執行官方提供的範例:

execfile( “tutorial/wfdemo.py” )

畫面會帶出一個視窗,你可以試試看在上面以滑鼠隨意點選一點,視窗會出現 “Hello” 的字樣。
讓我們將視窗關閉,按下 ctrl+z 離開 PythonConsole。
學習需要目標,我想試著用 IronPython 重寫 RSSMSN
甚至以後再用 Python + PyGTK(或 wxWidget) 來重寫看看。
明天的目標,讀取 RSS。
其他可以參考的資料:

MSN bot – Smart Child

Encarta (encarta at conversagent.com)是微軟提供的一個 MSN bot ,你可以與他聊天打屁,我常常沒事就會跟他聊天練英文,他老是從Encyclopedia.com撈一堆答案給我。
今天下午寫程式之餘,感覺無聊,就問了一堆人關於現在的天氣。
是的,我也跟這個 bot 聊天了。
結果他說他不知道關於天氣的事情,然後跟我說可以去問另外一個 bot – SmartChild (smarterchild at hotmail.com)。
於是我就把 SmartChild 加入了聯絡人清單,開始跟他哈啦。
一開始他會問你一些問題,結束以後,就可以問他問題了。
以下就是我跟他的無聊對話:

mimi: 暴走程式、午後雷雨、好喝自製冷泡茶 說:
what’s the weather?
– SmarterChild – 說:
For what city, state, country or zip code do you want the weather?
mimi: 暴走程式、午後雷雨、好喝自製冷泡茶 說:
taipei
– SmarterChild – 說:
I know several places called Taipei or containing towns called Taipei. Which do you mean?
1 Taipei, Taiwan
2 Taipei/Sungshan, Taiwan
mimi: 暴走程式、午後雷雨、好喝自製冷泡茶 說:
1
– SmarterChild – 說:
Current weather conditions for Taipei, Taiwan:
Currently: 81 F
Condition: Clear
Heat Index: 86 F
Dewpoint: 73
Humidity: 79 %
Visibility: 6.21 mi
Wind: N/2 mph
To get the forecast for Taipei, Taiwan, just type “forecast.”

他還有蠻多服務的,有興趣的人不妨玩玩看。

Grep in vim

怎麼直接在 vim 裡面直接去 grep 檔案呢?
答案在這裡:grep.vim – Grep search tools integration with Vim
安裝步驟很簡單,下載以後,把 grep.vim 丟到 $HOME/.vim/plugins (Windows 就是 c:\documents and settings\your_name\vimfiles\plugins)。
接著就是設定啦,打開你的 $HOME/.vimrc (Windows 是 c:\documents and settings\your_name\_vimrc ),加入下面設定,主要是告訴 grep.vim grep 與 find 的路徑。因為我是用Native Win32 ports of some GNU utilities,又安裝在 c:\tools,所以就是:

let Grep_Path=’C:\tools\UnxUtils\usr\local\wbin\grep.exe’
let Grep_Find_Path=’C:\tools\UnxUtils\usr\local\wbin\find.exe’
let Grep_Xargs_Path=’C:\tools\UnxUtils\usr\local\wbin\xargs.exe’
let Grep_Skip_Dirs=’CVS’
let Grep_Default_Options=’-ir’
let Grep_Cygwin_Find=0
let Grep_Null_Device=’NUL’
let Grep_Shell_Quote_Char=””

完成這些步驟之後,重新打開vim,就可以用 :Grep your_pattern 來進行搜尋了。
搜尋的結果,vim會切割出另外一個 Windows 來顯示(通常在下面),你可以切換到該視窗(ctrl+w j),直接瀏覽搜尋結果,如果確定該行是你要的結果,也可以直接按下 Enter,vim 就會自動打開那個檔案並移到該行去。
這比你利用 console 去 grep,再手動切回 vim 來開檔要快多了。
如果要關閉搜尋結果,輸入 :cclose 就可以關閉。
:copen 是打開搜尋結果。
:colder 是切換到上一個搜尋結果。
:cnewew 是切換到較新的搜尋結果。
更多的用法,可以參照官方網頁

cvs2cl.pl

早上試了半天,怎麼樣都無法讓 cvs log 輸出成比較美的樣子…
後來還是請 Google 大神幫忙,很快他就告訴我,可以用 cvs2cl.pl 這個 perl script 來幫忙。
由於我是在 CygWin 下執行 CVSNT,所以我稍稍修改了一下 script,將這行

my @log_source_command = qw( cvs log );

修改為

my @log_source_command = ( “/cygdrive/c/program files/cvsnt/cvs”, “log” );

果然很快就搞定了~~
輸出的結果果然就跟坊間的 ChangeLog 一樣。
Note:
Perl 的 qw( ) 會把內容拆成字串陣列,所以 qw( cvs log ) 會被拆開成兩個字串 “cvs” 與 “log”。
非常感謝這位大德的投影片

以 script 產生 5000 首 mp3

5000 首 mp3 ?!
去哪裡生啊,靈機一動,不如使用 script 來產生,快又有效。
最早的一個版本是拿一個樣板的 mp3 來複製,可是又怕內容有版權問題,所以後來改用 Text to Speech 的軟體來將文字轉成聲音…
我的環境:Fecora Core 5
會用到的套件:Festival (text2wave)、lame (轉 wave 為 mp3)、id3tag (為轉好的 mp3 上 id3 tag)。
程式碼如下:

#!/bin/sh
#
# run2.sh
# This script is used to generate short songs.
# You can decide how many songs should be generated by modify LIMITSONGS variable.
#
# Dependency:
# festival (Text to speech by text2wave)
# lame (convert wave to mp3)
# id3tag (tag the generated mp3)
#
# Tested environment:
# Fedora Core 5
#
ITER=1
LIMITSONGS=5002
((TOTAL=LIMITEDSONGS – 1))
while (($ITER text.txt
text2wave -F 19200 -o $WAVEFILE text.txt
lame $WAVEFILE $NEWFILENAME
id3tag –artist=$ARTIST –album=$ALBUM –song=$TITLE –genre=classic –track=$ITER –desc=”generated by script.” –total=$TOTAL $NEWFILENAME
((ITER = ITER + 1 ))
rm -f $WAVEFILE
done
rm -f text.txt
echo “done.”

LIMITESONGS 用來控制要產生的數量。
TEXT 則是要說的文字,目前 festival 還不支援中文,所以只能放一些英文字串。
托福,也因此我學到 bash script 裡面可以運算變數內容,作加減乘除,以前我以為只能運算文字內容而已,真的是不經一事不長一智。

錯誤 1935

在某些時候,安裝 .Net framework redistributable package 會失敗,出現如下的錯誤訊息:
錯誤 1935。An error occured during the installation of assembly component {….}. HRESULT: -2147319761.
netframeworkinstallation_1935_error
這時候你可以參考這位大老寫的剖析,相當清楚:Troubleshooting 1935 and 2908 errors during installation
我(或者應該說是我朋友)遇到的情況是用如下步驟就可解決:

  1. 將 %windir%\system32\mscoree.dll (在 Windows 98/me 上是 %windir%\system\mscoree.dll) 更名。
  2. 如果 %windir%\system32\urttemp 存在的話,刪除掉。(在 Windows 98/me 上是 %windir%\system\urttemp)
  3. 重新執行 .Net framework redistributable package 安裝程式

sp_attach_db

用法很簡單…

EXEC sp_attach_db @dbname = N’pubs’,
@filename1 = N’c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf’,
@filename2 = N’c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf’

在 osql command line mode 下輸入以後,記得再輸入 go,表示執行指令。
參考資料:

冷泡茶

兩三年前在看電視的時候,就發現了冷泡茶的方法。

後來經過實驗之後,的確蠻好喝的,可以幾乎 100% 複製出回甘的感覺。

方法如下:找個寶特瓶,抓適量茶葉丟進去,加開水,丟到冰箱,放置約五到六小時就大功告成。以 600 cc 為例,茶葉的量約半個掌心。

注意事項:

  1. 不要拿茶包,拿好一點的茶,否則你永遠也別想泡出好喝的冷泡茶。
  2. 不要用熱開水或溫開水,要用冷開水。
  3. 不要丟在冰箱太多天。

SELinux tip

今天要用到時,才驚覺以前的筆記居然不見了…,努力回想了好一陣子,才想起來。
一般來說,如果不熟的話,最好是關掉 SELinux 選項。
那我為甚麼要用?…..別問了吧….
SELinux 的 policy 真的是複雜,複雜到我實在是不太想看下去。
這裡有個簡單的方法可以幫你產生 policy,首先,先去執行被 SELinux 阻擋的程式,然後執行
#audit2allow -d -o xxx.policy
這會產生 xxx.policy
接著把這個檔案複製到 /etc/selinux/targeted/src/policy/domains/misc/local.te
切到 /etc/selinux/targeted/src/policy/
執行 make reload
這樣就大功告成了。
p.s. 我的環境是CentOS 4.3,RHEL、WHEL、Fedora應該都差不多。