05 4月 2009

[哦耶] 我也有生日禮物!(炫耀文)

我的生日向來都很低調,其實只要一杯咖啡配著音樂,如果能有心中在意的人一起陪伴,靜靜地度過,就很滿足了。

想不到,今年卻在生日前收到學生親手做給我的生日禮物和卡片!真是讓人忍不住哇哈哈哈地既開心又驕傲呢!

可愛的紙袋上還寫著 "Peter is a Good Teacher!" (給我一時眼花看成 "Peter is a God Teacher" 害我一時大驚…哦?原來我在學生的心中地位這麼『神』哦!趕緊再看一眼,原來是自己白目…)


袋子裡拿出的三顆手工包裝的糖果和一張「厚工」的卡片!


另一個學生送的藍色小熊和立體的手工卡片!


哎呀呀…雖然已經拿到禮物好幾天了,但是因為自己的情緒總是來得比較慢,因此也算是暗地裡樂了好幾天吧!(哇哈哈哈哈!)

03 4月 2009

Java & Python 程式碼疊疊樂之二

本週的作業是簡單的流程控制。在 Java 裡有 If...else if...else, switch...case, for, while... 和 do...while 五種,但是 Python 卻只有 if...elif...else, for...else..., while ... else 三種!差了兩種,難道 Python 比較弱嗎?其實也不是,只是 Java 已經把許多工具準備好了,在應用上會比較快一點。而 Python 的「極簡美學」是不會允許疊床架屋的取向。

廢話不多說,馬上進入本週的題目:「請寫出一個能將數字分數轉為等第分數 (e.g., A, B, C... F) 的程式!」因為每個禮拜天上午還要工作的緣故,這個禮拜的課程應該會錯過「使用者輸入」的部份,所以,我自己把題目再加上『數字分數的取得,是由使用者輸入的』的條件。經實作以後,在 Java 上,做出了以下三種版本:

Java 評等機器人一號 (完全使用 if...else if...else 的運算;耗用資源 2*5 = 10)

public class gradingRobotOne {
public static void main (String [] args) {
java.util.Scanner readingRobot = new java.util.Scanner(System.in);
System.out.print("請輸入分數:");
int input = readingRobot.nextInt();
String gradeLevel = "未判定!";
System.out.println("您輸入的分數為" + input);
System.out.println("===================");

if (input > 100 || input < 0) {
System.out.println("分數應該介於 0 到 100 之間!");
}
else {
if (input <= 100 && input > 90){
gradeLevel = "A";
}
else if (input <=90 && input > 80){
gradeLevel = "B";
}
else if (input <=80 && input > 70){
gradeLevel = "C";
}
else if (input <=70 && input >= 60){
gradeLevel = "D";
}
else {
gradeLevel = "F";
}
}
System.out.println("成績評定為:" + gradeLevel);
}
}


運作畫面:


if...else if...else 的語法像是一把雙面刃,每做「一個」判斷,就要佔「兩個」資源數,感覺實在是太不划算了。如果用 switch 的話,每做一次比對,只會佔用「一個」資源數,這麼看來,也許用 switch 會是比較好的選擇哦!依據此原則,做出機器人二號!

Java 評等機器人二號 (完全使用 switch...case 的運算;耗用資源 41+2*1=43)
public class gradingRobotTwo {
public static void main (String [] args) {
java.util.Scanner readingRobot = new java.util.Scanner(System.in);

System.out.print("請輸入分數:");
int input = readingRobot.nextInt();

System.out.println("你輸入的分數為:" + input);
System.out.println("====================");
char grade = 'N';

if (input > 100 || input < 0) {
System.out.println("分數應該介於 0 到 100 之間!");
System.out.println("成績無法評定");
}
else {
switch (input){
case 100:
grade = 'A';
break;
case 99:
grade = 'A';
break;
case 98:
grade = 'A';
break;
case 97:
grade = 'A';
break;
case 96:
grade = 'A';
break;
case 95:
grade = 'A';
break;
case 94:
grade = 'A';
break;
case 93:
grade = 'A';
break;
case 92:
grade = 'A';
break;
case 91:
grade = 'A';
break;
case 90:
grade = 'A';
break;
case 89:
grade = 'B';
break;
case 88:
grade = 'B';
break;
case 87:
grade = 'B';
break;
case 86:
grade = 'B';
break;
case 85:
grade = 'B';
break;
case 84:
grade = 'B';
break;
case 83:
grade = 'B';
break;
case 82:
grade = 'B';
break;
case 81:
grade = 'B';
break;
case 80:
grade = 'B';
break;
case 79:
grade = 'C';
break;
case 78:
grade = 'C';
break;
case 77:
grade = 'C';
break;
case 76:
grade = 'C';
break;
case 75:
grade = 'C';
break;
case 74:
grade = 'C';
break;
case 73:
grade = 'C';
break;
case 72:
grade = 'C';
break;
case 71:
grade = 'C';
break;
case 70:
grade = 'C';
break;
case 69:
grade = 'D';
break;
case 68:
grade = 'D';
break;
case 67:
grade = 'D';
break;
case 66:
grade = 'D';
break;
case 65:
grade = 'D';
break;
case 64:
grade = 'D';
break;
case 63:
grade = 'D';
break;
case 62:
grade = 'D';
break;
case 61:
grade = 'D';
break;
case 60:
grade = 'D';
break;
default:
grade = 'F';
break;
}
System.out.println("成績評定為:" + grade);
}
}
}

運作畫面: 本來以為一號的解法已經夠浪費資源了,想不到因為從使用者手上取得的輸入分數可能會落在 60~100 之間而有 41 種不同的可能性,每種可能性的比對都佔一個資源,再加上一開始排除 100 以上和 0 分以下的判斷,結果反而讓耗用資源數比純粹的 if...else if...else 多了一倍多呢! 為了解決以上的問題,套用「食神」裡的台詞『爭什麼爭,摻在一起做撒尿牛丸不就好了』!接下來的機器人三號,就要同時使用 if 和 switch 的語法來實作。首先要開刀切除的就是那 41 種可能性的比對,如果我們把從 60 ~ 100 之間的數字都除以 10 ,然後再取它的個位數來做比對,再把 100 這個特別的數字額外處理,這樣一下子需要比對的數字就從 41 個縮減變成 4 個了! Java 評等機器人三號 (混合 if...else if...else 和 switch...case 的運算;耗用資源 4+2*2=8)
public class gradingRobotThree {
public static void main (String [] args) {
java.util.Scanner readingRobot = new java.util.Scanner(System.in);
System.out.print("請輸入分數:");
int input = readingRobot.nextInt();
System.out.println("你輸入的分數為:" + input);
System.out.println("====================");
char grade = 'N';
int score = (int)(input*0.1);
if (score > 10 || score < 0) {
System.out.println("分數應該介於 0 到 100 之間!");
System.out.println("成績無法評定");
}
else if (score == 10){
grade = 'A';
}
else {
switch (score) {
case 9:
grade = 'A';
break;
case 8:
grade = 'B';
break;
case 7:
grade = 'C';
break;
case 6:
grade = 'D';
break;
default:
grade = 'F';
break;
}
}
System.out.println("成績評定為:" + grade);
}
}

運作畫面: 哈哈~做到這裡,真是忍不住說一聲「食神好棒啊!」果然讓耗用的運算資源大大降低了不少咧! Java 的部份做到這裡,那一樣的功能,在 Python 裡會怎麼做呢? 首先是 Python 的 if...elif...else 的語法。 Python 評等機器人一號(完全使用 if...elif...else 的運算;耗用資源 2*5 = 10)
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Filename: gradingRobotOne.py

grade = raw_input("請輸入分數: ") #利用 raw_input 的函式取得鍵盤輸入
score = int(grade) #從 raw_input 取得的字串類型 (String) 資料,轉換為 int 的類型
print "====================="
print "您輸入的分數為:", score

gradeLevel = "未判定!" #預設成績等級為「未判定!」
#利用判斷式把輸入的成績分等級
if score > 100 or score < 0:
print "分數應該介於 0 到 100 之間!"
elif score <= 100 and score >= 90:
gradeLevel = "A"
elif score <= 89 and score >= 80:
gradeLevel = "B"
elif score <= 79 and score >=70:
gradeLevel = "C"
elif score <= 69 and score >=60:
gradeLevel = "D"
else:
gradeLevel = "F"

print "成績評定為:", gradeLevel #印出評定結果

運作畫面: 整體看起來,和 Java 版本的評等機器人一號幾乎沒什麼分別。只是 Python 的程式碼結構較為簡單,掐頭去尾大概可以少個七~十行左右吧!果然是「載入 Python,少做多玩」的精神。 寫到這裡,應該就沒有其他的 Python 寫法了吧?畢竟 Python 本身是沒有帶著 switch 的語法的。而在 Java 版本的評等機器人二號和三號裡,switch 都是主要的判斷式呢。嗯…不過我不信邪,難道先天沒有,後天不能學嗎?在網路上查了查, Python 的 switch 能力,可以透過它特有的 dictionary 資料結構配合預先制定的 function 來達成。這樣說起來太玄了,還是直接看看程式碼配合在其中的註解來神遊一下吧! Python 評等機器人二號 (使用「自製的」switch 配合 if...elif...else 的句法;耗用資源數:5+2*3 = 11)
#! /usr/bin/python
# -*- coding: utf-8 -*-
# Filename: gradingRobotTwo.py

grade = raw_input ("請輸入分數: ") #利用 raw_input 的函式取得鍵盤輸入
score = int(grade) #從 raw_input 取得的字串類型 (String) 資料,轉換為 int 的類型
numLevel = int(score * 0.1)
print "====================="
print "您輸入的分數為:", score

gradeLevel = '未判定!' #預設成績等級為「未判定!」

#建立模擬 switch 語法的執行內容
def funcA():
gradeLevel = 'A'
return gradeLevel
def funcB():
gradeLevel = 'B'
return gradeLevel
def funcC():
gradeLevel = 'C'
return gradeLevel
def funcD():
gradeLevel = 'D'
return gradeLevel
def funcF():
gradeLevel = 'F'
return gradeLevel
#利用 dictionary 的資料結構建立模擬 switch 語法的 case 條件
values = {
9:funcA,
8:funcB,
7:funcC,
6:funcD,
5:funcF,
}
#設定判斷式,先排除超過 100 和低於 0 分,再額外設定 100 分和所有低於 60 分的條件,餘項目呼叫模擬 switch 的內容
if score > 100 or score < 0:
print "分數應該介於 0 到 100 之間!"
elif score == 100:
gradeLevel = 'A'
elif score <= 59:
values.get('5')()
else:
gradeLevel = values[numLevel]()

print "成績判定為:" + gradeLevel #印出結果

運作畫面: 哈~雖然用自製的 switch 在 Python 下編寫出的程式耗用資源還是比 Java 的評等機器人三號多了些,但是 Python 的程式是不用「預先編譯」的哦!所以如果遇上一個評等標準要一直改來改去的操作環境時, Python 評等機器人二號就比 Java 的評等機器人三號更能勝任愉快了! (ps.我覺得我好像有一點對 Python 偏心…) Note: Thanks for the feedback from an expert. Now I know that there is a handy module which can do better than the Python version of gradingRobotTwo.py (感謝匿名的高手回覆,我才知道還有一個好用的模組可以達到和 Python 版機器人二號一樣的目的,但卻更省資源的寫法) Python gradingRobotThree (By adopting bisect module, CPU resource consuming drop down to the lowest record: 2*1 = 2)(Python 評等機器人三號!藉由 bisect 模組的採用,這個版本的資源耗損達到了歷史的新低點: 2*1 = 2)
#! /usr/bin/python
# -*- coding:utf-8 -*-
# Filename: gradingRobotThree.py

from bisect import bisect #Thanks for the feedback with this handy module :)

grade = raw_input ("Please key-in the grade: ")
score = int(grade)
#numLevel = int(score * 0.1)
print "====================="
print "The grade is:", score

gradeLevels = "FDCBA"
breakpoints = [60, 70, 80, 90] # This can be rughly seen as [F < 60 => D < 70 => C < 80 => B < 90 => A]

def grading(total):
return gradeLevels[bisect(breakpoints, total)]

if score > 100 or score < 0:
print "The score number should be between 0 and 100 !"
else:
print "The grade level is:" + grading(score)

Screenshot:

22 3月 2009

Python & Java 程式碼疊疊樂之一

幾個月以來我一直在工作之餘自學 Python。這套程式語言在國內的資源很少,所以許多文件都是原文寫就。但畢竟自己總是外文系畢業的,所以這倒是不對我造成什麼困擾。

與此同時,也因為 Java 和 Python 一樣都是屬於物件導向 (Object-oriented) 的語言。所以我在學習 Python 的同時,也摸索著 Java 的同一功能的實作方式,並且記在一本很有趣的筆記本上。我把筆記本的左頁寫著 Java 該功能的概念和實作法;右頁則是記著在 Python 中的實作方式。

兩個月過去,自己用 Python 配合 wxPython 開發自己的第一支「有圖形介面」(GUI) 的程式給自己工作室使用!但是對使用 Java ,仍然不是一個很有自信的語言。

今天,終於排到了電腦補習班的 Java 課,開始「真正地」跟老師學習這套號稱簡單,實則「眉角」很多的程式語言!為了繼續維持這種「同時學兩種語言」的感覺,從現在開始,就把每次的 Java 作業,同時也實作一份 Python 的版本,放在這裡當做是筆記。同時這種「疊疊樂」的行為,也的確是所有宅男會對自己手邊的新玩意兒做的事情呀!

如果在少少的讀者中有人看出了什麼問題,因而得到指教的話,那對自己也是好事一件呢。

本週的 Java 作業:變數的屬性和 System.out.println() 的功能!
---------------------------------------------------------------
public class dataType {
public static void main (String [] args){

System.out.println("整數");
byte b = 7;
short s = 77;
int i = 777;
long l = 7777;
System.out.println("byte: " + b);
System.out.println("short: " + s);
System.out.println("int: " + i);
System.out.println("long: " + l);
System.out.println();//空一行

System.out.println("浮點數");
float f = 7.0f;
double d = 7.7;
System.out.println("float: " + f);
System.out.println("double:" + d);
System.out.println();//空一行

System.out.println("字元");
char c = 'P';
System.out.println("char: " + c);
System.out.println();//空一行

System.out.println("布林值");
boolean boo = true;
System.out.println("boolean:" + boo);
System.out.println(); //空一行

}
}


---------------------------------------------------------------
同樣的功能,在 Python 下的寫法就簡單許多!

#!/usr/bin/python
# -*- coding: utf-8 -*-
# Filename: dataType.py

print "整數"
b = 7
s = 77
i = 777
l = 7777
print 'byte: ', b
print 'short:', s
print 'int: ', i
print 'long: ', l
print '' #空一行


print "浮點數"
f = 7.0
d = 7.7
print 'float:', f
print 'double:', d
print '' #空一行

print "字元";
c = 'P'
print 'char:', c
print '' #空一行

print "布林值"
boo = True
print 'boolean:', boo
print '' #空一行


這次最有趣的發現是原來 Java 的布林值是 true/false 而 Python 是用大寫的 True/False!

31 1月 2009

[閱讀]「向周星馳學成功」+「燦爛千陽」

趁著年假,一口氣讀了兩本書。
一是寶鼎出版,盧俊、張永美合著的「向周星馳學成功」。
以成「書」的角度來看,整本書的內文其實有點上下文接不太起來,而且行為的風格則是近年來台灣的年輕人不太能接受的說教文了。以周星馳的成功做為經緯,鋪成一個影迷各方面的分析,總是不免會帶著三分崇拜的味道。當一個人成功了以後,在「粉絲」的眼裡似乎做什麼都是對的了。同樣的閱讀經驗在另一本陳昇的歌迷寫的「昇迷歲月」裡也曾經體會過,不過那是另一個話題了。

我對周星馳沒有什麼偏見,甚至我自己也認為是他的影迷之一。

雖然以「書」的角度來看這本文字集,會和期望有所落差,但我還是為裡面的一段文字感動許久…『…因為人總是會隨著長大而變得理性,不只是愛情,人是否還有勇氣為一件自己認為值得的事,決定自己的一生呢?』今天是年假的最後一天,明天開始又要和學生們繼續為了學習而努力打拼。去年的收入很少,今年的收入在哪裡也還不知道。但參與這些孩子的學習成長是一件我覺得「值得」的事情,於是我就撩下去了。

另一本讓我讀得整顆心都揪起來的,則是木馬文化出版,Khaled Hosseini (卡勤德.胡賽尼) 著,李靜宜譯的「燦爛千陽」。

故事的內容交雜了兩個相差十五歲女性的一生。一個是私生女背景的瑪黎安,因為身為名人的父親沒有勇氣拋棄自己的「好名聲」而被迫遠嫁給外地一位相差二十五歲的家暴丈夫;另一個則是出身中產家庭,父親為老師,自己也受過良好教育的萊拉。兩名女性因為阿富汗軍閥政權派系的戰火而嫁給了同一個先生,從彼此當對方是隱形人的階段一直到情同姐妹。

在故事裡,各式各樣權力派系的掌權像是翻頁一樣的快速,但是對女性的壓榨、迫害卻像是兩位主角受不完的苦難一樣讓人難過。直到後半部,瑪黎安為了救萊拉而殺了自己的丈夫,並且出面自首好讓萊拉能和年輕時的愛人重新開始一個新的人生時,我還是一直害怕在下一頁,命運或是作者是不是還另外安排了什麼苦難折磨在等著萊拉。這種既想快點翻到下一頁,又害怕未來是另一段無止盡的折磨的閱讀經驗,還真是第一次。

說是作者的安排,其實我寧可相信這樣的故事在戰火肆虐的阿富汗應該是隨處可見的心碎故事。但和周星馳的個人奮鬥史一樣,每個人都是為了自己內心那一點點「希望」、「夢想」和「愛」,努力地、卑微地使盡身上每一份力氣,活著吧。

[註:本文圖片引用自博客來網路書店]

27 1月 2009

define: Peter. w...

2008 是變動的一年。四月初開始做人生的第一份「正職工作」,然後在九月底把它給辭退了。在事後花了很多很多的時間在反省這件事到底做得對不對,終於,在農曆春節的前夕,應該可以把心安定下來,像是 CSI 每集結案時主角們都要從對受害者的投射情緒中抽離般,對自己說「那是很正確的事情!」

如果說一個人一輩子遇到的每個起起伏伏都會留下印記的話,我希望我能儘量用正面的態度來看待每個印記,不管是一個讓人驕傲的刺青,還是一道難堪的傷疤。生命中的時時刻刻或多或少都定義了一個人「自我」的模樣。

現在過著創業的生活,收入不多,但是精神上是富足且愉快的。同時學習著 Java 和 Python 兩種程式語言,同時看著 Linguistics 和 Bioinformation 的書籍文章,不用對哪個教授或是學派負責,我愉快地充實自己。也不是為了什麼「文憑」或是「技能」考量,而是單純地享受「學習」的純粹樂趣。這麼說來,我的生活其實遠比上班族或是研究生幸福太多太多了!

在學習 Python 和 wxPython 的 GUI 時,我也才發現我很喜歡用條理分明的方式來表示每一道命題,也許這正是我一開始時受實驗語音學吸引的原因,也是再後來受形式語意學吸引的原因。只是當學習的目的是為了討好某位大咖時,那股純粹的樂趣就大打折扣了。

>>> peter
Traceback (most recent call last):
File "", line 1, in
NameError: name 'peter' is not defined

21 10月 2008

骨子.穀子

穀子壓根兒不覺得自己有一天會變成像是米漿那樣被磨得細細的然後和一大堆不知道打哪兒來的芝麻土豆兒打成漿,然後被個還沒醒的小鬼睜著睡眼矇矓的眼睛似望非望地盯著著,用那肥肥短短的手指著,然後唏哩呼嚕地下肚兒...

沒出息!骨子裡,他這麼覺得。

要下到地裡去,長了一片片綠油油,成了一畦畦黃浧浧,這樣才像個穀子該有的樣子。

可那竟也是少數吧,其實他心裡有數(有數得很)。

穀子骨子裡不認為自己是的那個樣子,最後卻免不得變成了其中之一的下場。

每個穀子都想要選擇自己的下場,不過這片田總是看天公伯臉色的時間,多過了看自己心情的時候。

我也一直覺得,我不適合做個英文老師的。那樣的生活有點太單調...學生都是不懂得感激的,我太了解了 - 畢竟我也當過學生。不是每個老師都值得尊敬的,這我更了解了,因為我現在就常被稱做「老師」!

老則老矣,師則未必。

所以,新的營業項目便訂了出來,林果不用英文教師,我們用受過完整語言學語料分析訓練的語言分析師。

這也是一種非米漿的結果吧...我骨子裡這麼想。

26 7月 2008

多餘的綴字.嘴角的笑

標題沒有錯,是綴字,不是贅字。
「綴」是裝飾的意思;「贅」則是多餘的意思。
如果標題下成了「多餘的贅字」,那不就畫蛇添足地變成了「多餘的多餘的字」了嘛!

好友簡 Sir 在大學的時候,就顯露出一種很特殊的能力,他能光是用念的,就賦予一些多音節的字眼更細膩的意義。從他身上我學到兩個很特別的字眼,一是 redundant, 一是 sophisticate. 今天要談的是前者。

Redundant 這個字念來就有種不乾不脆噹噹咚咚東西掉一地的感覺。像是積了一個禮拜的垃圾沒有倒,或是上一餐的剩菜沒有收就睡了。明明也沒什麼影響,但是躺在床上將夢不夢之時,總是感到有種不暢快。

後來,又遇到了更多不中不西的字眼,更讓人感到十分的不清爽。以下幾個例子:

1). tone 調
tone 的意思就是「調」,那難道「 tone 調」 的意思,就是「調調(兒)」嗎?

2). PDF 格式
PDF 的全名是 Portable Document Format, 這其中的 "F" 就是「格式」,那又來個「格式」… 這…全名不就變成了『可攜式文件格式格式』!唔…這下可失去了原來制訂這種格式輕便的調調了。

3). PCB 板
PCB 的全名是 Print Circuit Board (印刷電路板), 道理和 PDF 很像。都已經有個 Bord 了,又何苦再來個「板」呢?每次聽到「 PCB 板」的時候,腦海中出現的是像小孩說話似的『印刷電路板板』,總是忍不住想到韋小寶口中時不時出現的揚州粗口,『先人板板』!

客倌,難道多個 redundant duplication 就會有什麼點綴的效果嗎?

後話:不過每次想到「先人板板」又會想到什麼台南擔擔麵一類的東西就是了。
ps. 「先人板板」和「台南擔擔麵」可是一點關係也沒有啊!

註:「後話」不就是 "ps." (Post script) 嘛?我這篇真是何苦來哉…

02 4月 2008

自由價值的商品化 - 薇琦姑娘印書坊

每次看到留著一頭長長卷卷髮型的女生,我就會想到兩個人。一個是小甜甜(不是姓布蘭妮那個,是後來姓安東尼的那個),一個是我姐姐。從 [Ubuntu TW 正體中文站] 的討論串中連到 [薇琦姑娘印書坊] 時,我的第一印象大概就是上面兩個拉麵頭女孩的綜合體吧!

這家印書坊的概念很有趣,容我引述一下:「…一本書的主題是出版社編輯界定的,不是讀者。上街覓食,我們可以吃套餐,也可以吃自助餐,為什麼書的世界裏面還沒有自助餐呢?…這就是薇琦姑娘印書坊的基本構想:提供知識書的自助餐服務,各網路開放文本資源,是各種菜色,您訂出主題,薇琦姑娘的編輯們幫您挑選高品質的相關文章,配上一個典雅的封面,實現您希望的書。」

簡單地說,只要顧客自訂出題目,這家薇琦姑娘就會上網搜尋開放文本(如 Wikipedia 維基百科這一類的來源),然後依你的主題,幫你編出一本書。這麼一個「極高度客制化」的產品,竟然收費「極度便宜」,在「首波書目」中主打的兩本書,也不過新台幣兩百多元 (含運) 而已。擁有一本「限量」的書籍,竟是如此容易!

在應用方面,中小學校老師在課堂間的補充教材,就可以以極低的價格,獲得幾乎是為了自己的學生專門編出的書籍。老師可以依價格、依內容深度、依授課時間和薇琦印書坊協調出最適合自己學生的「一本書」。而且每一班的學生拿到的書都可以說是「世界上只有這幾本」哦!這樣對中小學教師的備課以及學生的課外學習而言,都將會是輕鬆許多的一件事。

甚至,印書坊自己也可以規劃一些流行議題/長青議題的紙本書籍,做長檔的商品。像是目前在架上的 [阿里山上有什麼] ,書名直接又俏皮,相信在這一波大陸客來台觀光的潮流下,可以好好地向大陸的旅行社做促銷。甚至還能接著做 [日月潭裡有什麼] 、[大溪慈湖那是誰] 這一類的主題書,商機可謂不小。

在我這個點閱率如此低的 Blog 上花了時間篇幅來介紹這家薇琦印書坊,並不是為了打商業廣告,而是我真心地佩服想出這個絕妙點子的商家。應用開放自由的結晶,以「服務」和「客制化」做為產品,誰說開放原始碼不能賺錢呢?

25 3月 2008

求職踩地雷 (Hunting for Mines/Jobs)

有個小小的電腦遊戲叫踩地雷。我剛開始玩的時候,還以為這個遊戲的目的,就是要儘快踩到地雷好結束遊戲。一直到看我表妹玩的時候,她那「神.出.入.化」的避雷技巧,才讓我恍然大悟,原來這個遊戲是這樣玩啊。遊戲想要我去點開的小方格,我都沒有點到。

求職面試其實是一種很好玩的事情。先把「能不能得到工作」的問題放一邊的話,我相信其實我的表現和玩踩地雷應該是差不多。業主想要的,我都沒有。節錄幾段有趣的問題如下:

面談國外業務工作時…
業主:「你有行銷的經驗嗎?」
苦主:「沒有。(我剛畢業,你希望我賣過什麼?腎臟嗎?)」
業主:「你沒有商學背景哦?可是我們希望能有商學背景,或是國貿經驗的。」
苦主:「這些我都沒有哦。(看來我不但要賣腎臟,還得賣到國外才行。話說回來,那你們通知我來面談是什麼意思?)」
業主:「你的訓練太偏向技術面了。都沒有行銷方面的訓練哦。」
苦主:「我想業務人員,一定要深入了解自己的產品。不只是規格上的了解,還有技術上的了解。這樣當顧客提出的要求超過目前產品的設計時,我們也能當下就反應過來,讓顧客知道我們有在多少時間內研發出顧客需求產品的能力。那麼即使這筆生意做不成,也還有下一筆的機會。(簡言之,我不是那種天花亂墜,硬要你買的人啦。)」
業主:「做生意和做朋友不一樣。」
苦主:「嗯。(所以,你買新車的時候會找生意人買,還是找在當業務的朋友買?)」

總而言之,雖然我聽過一個說法:「找工作的人,在面談的時候都很無助 (Nelly 2008)。」但是幾次的面談下來,我發現有部份的企業主,其無助的程度也不亞於求職面試者吶。業主心裡大概是想『我們要找一個,每個月給他三萬塊,他每個月會帶進來五十筆以上訂單的員工。』這種生金蛋的鵝,難道會在路上晃來晃去給你撿到嗎?

當然,這樣想也無可厚非,但是這樣的條件先設好了,每過一天沒找到,就是少賺一天的錢,少賺一天的錢,就是虧一天的錢。

如果,我們把條件改為:「我們要找一個有潛力成為,每個月給他三萬塊,他就能帶進來五十筆以上訂單的員工。」那麼只要公司有養成制度、評估制度、輔導及汰換流程的設計,任何一個「頭腦清楚的活人」都能幫公司賺錢。及早找到員工,就早一步開始訓練,早一步開始訓練,就早一步開始賺錢。剩下的,就只剩下你們找的這個活人,有沒有「足夠的動機」而已了。

在面談的時候,評估這位面試者的頭腦是否清楚,動機是否強烈,絕對遠遠比押寶看他會不會呱地一聲,就生出一顆金蛋來得明顯且容易啊。

10 2月 2008

零,碎的幸福小事

[畢業的小事]

經過了好多次的嚐試再嚐試,終於拿到了語言學碩士學位。那麼,這一張紙對我來說,意義為何呢?

過年的這幾天,許久不見的親戚不時發出驚嘆:『哇!你終於畢業了,那接下來想找什麼方面的工作?』而我自己,卻像是一直沒有進入『我畢業了!』的情緒裡面。像是終於從一口井裡爬出來,卻發現自己困在電視機裡!?(呃?這是什麼奇怪的聯想?)言而總之,能畢業,都是一種幸福的情緒吧。也許只是我還沒進去那股「畢業的幸福感」裡面,也許也只是我還沒有脫離「研究生的心理狀態」,也許,這一切都只是一個三年多的夢。

一個人要怎麼去為昨夜的夢境感到幸與不幸呢?在長長的時光裡,某人三年多的努力,終究是歷史上的小小事件吧。


[零碎的幸福]

還沒理出個頭緒,在房子後面收下在七日細雨中仍然泛潮的衣服時,聽見了隔壁的先生在和自己的孩子玩煙火的聲音。嘶~咻~聲不斷,卻掩不住小孩子的驚叫聲中的那股興奮。外頭的氣溫好冷好冷,細雨沒停的下著。但是在一陣一陣的火花之間照亮的畫面,也許會在那孩子的心底凝成一幅鮮活的回憶。細雨沒完沒了的下著,時光也是。

就在不停的時分之間,總會有一些零碎的幸福。