星期六, 12月 31, 2005

再來一個關於唸書的小故事

最近腦袋想了很多東西,三不五時又回想起之前碰到的一些事情,百感交集之外、順便再寫下來好了。

大學聯考考的範圍大,有些同學在應付小範圍的月考、期考時還不錯,等到一下子用對付高中三年的聯考時,考的就不是那麼好了,我可能也算是其中之一。

高中時有個同學,超有個性的,舉個例子來說好了,單車雙載這個名詞不曉得有人知道嗎?在我那個年代,單車雙載算是有點危險的行為(天知道那裡危險了,真是天殺的僵化教育制度)。單車雙載被教官抓到了,要被記警告的。這在幼年無知又愚蠢的我可是大不了的事。一般被教官抓到了,通常都是勸導一番,寫個悔過書,貼在佈告欄上,教官就會放你一馬,不記警告。我也被抓過,雖然不認同這樣的方式,也是乖乖的寫了悔過書。但是我提的這位同學呢,被抓到單車雙載,他不也寫悔過書,很豪邁的就記警告。這在當年愚蠢的我看來只是覺得很酷而以,實在是不明瞭他為什麼要這樣做。

回到正題,這位同學呢,我印像裡他高中三年間的功課從來不是頂尖的行列,至少在我那時最頂尖的時代,我不曾發現他的存在。可是高三時,學校開始進入複習考時,你就發現他的成績開始變好了,等到進入模擬考的範圍,這可是模擬考的範圍,他的成績突然可以在全校前一百名之內,而且,我印像裡,他是越考越好。

大學聯考放榜之後,我得知他考上了交大電子,這在當年那個時代可是第三志願。可是你在回想他三年來的成績,你實在不覺得他是會考到這麼好成績的其中一個人。多年後,對照這些故事,我突然悟出一些道理。唸書真的是要做自己啊。有沒有唸懂,其實你自己最清楚了。

好吧,你真的要問我什麼時候才會唸書的,老實的說,是在工作二年之後的事了。

星期五, 12月 30, 2005

關於唸書這檔事

從小我大概就知道自己不是唸書的料..仗著自己有點小聰明,也讓我順利國小畢業....啊,國小畢業不用唸書的是嗎? 進初中、進嘉義高中。高一下學期是我比較有在唸書的時候、然後....就上大學了。

大學聯考說實在自己不是考的很好,可是那也怨不得別人。因為這真的是自己不知道唸書的真義。為什麼呢?

我在高中時期很畸形,數學、理化都是全校的前10%左右,數學更好一點、高二那年全學年下來大概可以排名在前3%。可是國文啦、公民、歷史、地理都很慘。高二的國文老師很變態,只要碰到文言文的課文就是叫我們背、小考背課文、錯一字扣四分、也就是錯25字就會變零分。我就這樣,小考連續整年都考零分

客官,我不是耍帥故意考零分的啊,也不是有崇高的理想不背課文。我每次考試都唸的.....我覺得很認真的程度。然後每次考下來,大約都是錯二十七字、二十八字左右。搞的國文老師那時覺得我是放羊班小孩一樣。從這件事就可以約略看的出來,我是為了成績在唸書的,不是為了真的自己的興趣。先暫且不表。

高三時,開始學物理,尤於高二的數學成績還不錯,我高三就沒去補物理了,想說數理本來就不分家,應該不會差太多才對。結果,考第一次月考下來,成績慘不忍賭。我當場就很聰明的......就找同學問為什麼。同學很好心的拿了補習班的講義給我看。靠.....邊站,為什麼跟月考的題目那麼像啊。自從那次之後,我每次月考前都會跟同學借講義,算一算後再考試的成績我印像裡每次月考好像也都有八九十分。

報應很快就會來的,高三物理那麼難的原因是因為老師的考題是考了很多很難的解題技巧,這對事先算過講義的我來說不是太難的事,解題技巧只要事先算過,就不會在考試時目瞪口呆,要在短時間內想出新的解題技巧。我就在每次月考都還考得還可以狀況下。忽略了物理的本義、根本就沒有去唸書。

大學聯考時,我那個的年代的大學聯考標榜著要改革(到現在還在改不是嗎?)出題非常靈活,考了很多觀念的問題。結果,我還記得我大學聯考物理只考了28分,連低標都不到。

扯了這麼多,我想表達的重點只是,唸書不要為了成績,千萬不要在意分數,你要在意是最後考試的那一次分數,可是如果在那之前的分數跟你有衝突,那就看看你的目標到底是什麼了。

星期五, 12月 23, 2005

NSIS, 免費的 Install System

終於找到一個free, 而且還是open source的install System.
可以拿來取代InstallShield了。

NSIS 全名是Nullsoft Scriptable Install System,是一個幫你製做安裝程式的開源軟體。基本上的製作方式是一段script file, 交由NSIS compiler 幫你製成installation executable.

Script file對於software development 當然是重點。
基本上的script file由幾個主要要件組成,包含
  1. Installer Attribute: 這是這個Installer的主要屬性,例如這個installer 是什麼名稱。
  2. Pages: 控制Installer執行時,要顯示幾個頁面,可以做成Install Wizard安裝精靈。
  3. Sections: 區段,script file 至少要含個section, 每一個section就代表一個component, 可以在Component Pages裡被選擇是否要被安裝。UnInstaller 的section會在section name加上"un."的prefix。
  4. Function: 可分為User function 與Callback function。User function就是自行定義的function,寫好後自行呼叫,Callback function是定義好後有特定event可被系統呼叫執行。




底下是因為太久沒用,所以又K了好久的Document所寫基本的功能。可以用來當成Template。

#----------------- Attribute Start ---------------------

Outfile install.exe ; Generated setup file
Name "ProductName" ; Name your module here
InstallDir $PROGRAMFILES\Productname ; The destination folder.

; Request application privileges for Windows Vista
RequestExecutionLevel admin

Page directory
Page instfiles
UninstPage instfiles

#----------------- Section Start ---------------------
Section "Installer Section"
CreateDirectory $INSTDIR
SetOutPath $INSTDIR
File "..\Release\Product.exe" ; The program file you really want to install, use "file" command to install it.
WriteUninstaller $INSTDIR\uninstaller.exe
SectionEnd

; Delete Installed file plus the uninstaller
Delete $INSTDIR\*.exe
RMDir $INSTDIR

#----------------- Function Section Start ---------------------
# Call back function
Function .onInit

# Prevent execute the installer at second time.
# Create MutexA 3rd arguemnt should be changed to a uniquie value
System::Call 'kernel32::CreateMutexA(i 0, i 0, t "Atrust") i .r1 ?e'
Pop $R0

StrCmp $R0 0 +3
MessageBox MB_OK|MB_ICONEXCLAMATION "The installer is already running."
Abort
FunctionEnd





Tag: 介紹, Open Source, Installation System, InstallShield.