2009年6月30日 星期二

自問,自己「值」每個月兩萬二嗎?

Standard
每天對自己的領域鑽研又鑽研,每日睡夢中總想著明天還有什麼創意可以做,生怕自己一不小心就在這時代中落後。隱約還記得 [jserv] 在 IRC 上曾說過:「我們都是被熊追趕的人,只是當下跑在前面還是在後面的差別。」,是的,一旦不小心被其他人所超越了,就只能等著讓熊給抓走,被主流社會給丟棄。

先不論是否被社會所丟棄,近年來就連進入這場比賽的門票,都並不好拿,景氣不佳導致許多社會新鮮人被職場拒於門外。有鑑於此,教育部為協助畢業生進入職場,提出「培育優質人力促進就業計畫」,簡單來說,政府花每個月兩萬二千元請學生去公司體制上班實習以體驗職場,其詳細內容在此就不多說,不瞭解的人可以透過關鍵字「兩萬二」找到多討論和說明。雖然,該計劃制度細節和保障一直有所爭議,但就題目來看,出發點良好,所以若有朋友問我是否該參加,我總是鼓勵他們可以去嘗試看看,原因有幾點:
  • 吸取工作和實務經驗,以增加自身實力和履歷
  • 可藉由實戰瞭解自己不足之處
  • 未來仍有機會繼續留任甚至直接進入正式公司體系
當然,也有許多朋友對我的建議嗤之以鼻,並提出他們的論調,我也在此稍做回應:

每個月兩萬二千元太低,大學生畢業少說 2xxxx ~ 3xxxx

雖然我和大家一樣是個學生,但我一直以來就不懂大學畢業生 2xxxx 元起跳這價是誰定的?為何人人都可以說的如此理直氣壯?照理說,這些定價就像是青菜的價格一樣,是供需法則下的產物,颱風過後市場行情特好,平時就價碼普通甚至免費。同理,當市場不缺人力,各公司職缺不補,你又怎能期望自己一定有好的價碼。

更者,在這景氣不佳的時代,沒經驗的新鮮人,又能夠帶給公司多少幫助?也可能不幸地,反而增加了公司風險。考量種種,自然人力行情低落,甚至不易有職缺。我們可以想想,在這到處放無薪假又減薪的時機,能力不足的新鮮人,憑什麼要求更高的價碼?更或許該自問,自己「值」每個月兩萬二嗎?若是你是公司老闆,是否需要聘用自己?也許,這反而是莫大恩惠,有工作給你,又給你機會學經驗,何樂而不為?

只是進去公司做不重要雜務,當沒保障的非正式員工且只有一年

這點我承認,許多公司私底下暗地裡難聽的說著,要請這種「免錢勞工」賺一筆,反正政府買單又零成本。但是想想,一上了戰場,是不是只做雜務就很難說,難道會脖子上掛牌以區分非正式員工?碰到急事還挑人做?商場上就是戰場,既然在同公司屋簷下,總是會有各種機會接觸到實務。

此外,雖然表面上只有一年,又不算公司正式資歷,但可能因為熟悉公司內體制,而一年後繼續被正式聘用而留任的機會很高。除非,你覺得自己的能力和實力無法被肯定?倘若是真的一年到了就得拍拍屁股走人,那也只能自認能力不足,甚至應該開心,因為這一年本該能力不足而導致失業,但是卻因參加這計劃有工作又有學到經驗。但要是你覺得自己實力強卻被丟棄,那你更不用怕,因為履歷上又多添一筆,比剛畢業時又更有經驗了。

這種雜務工作,一年後就算留任又能多好,薪水又不高

不知道為何現在學生都有強烈的被害妄想,就這麼肯定這工作一定很爛?業主會永遠把你當台籍傭人使喚?而滿心充斥著懷才不遇被犬欺之感。個人很好奇,是否一間公司有這麼多茶可以端,有這麼多髒廁所可以掃?(茶葉很多,泡不用錢!整間公司的人腸胃都不好,上廁所都亂噴!)

事實上,公司對新進人員除了金錢上的開銷之外,還有時間上的成本,每個新人都需要一些時間被教育和適應。若是公司可以省去了這一年的教育成本和風險,有足夠時間評估人才,公司一定樂見。當然,任何職缺的補充,最理想是以這些已經被評估過的人為首選。至少,若我是公司經營者,就會這麼做,因為這一年籌碼若好好運用,將可以為公司帶來更大財富和生力軍,為何要短視近利的把這籌碼白白燒光?究竟短視的是業主,還是抱著質疑眼光的學生們?你說呢?

不過話雖如此,碰到惡質主管或短視的爛公司,只是想榨乾你價值也不是不可能,但這本來就是求職的風險,也只有認了不是嗎?

後記

當做免費又有錢賺的職訓班,似乎更能容易以平常心看待這個計劃。對許多人而言,大學時,沒有累積實質的經驗,現在有機會來補救一下還是不錯。當然,要是你已經有非常足夠的經驗和能力,就應該不用怕沒工作和失業才是,也根本不用去浪費時間研究這計劃有沒有保障了。你應該去找的是高薪的工作。

自問,自己「值」每個月兩萬二嗎?沒有,賜我「全職」工作一萬八,我就要偷笑了,我自認沒有能力每天有效率的朝九晚五。難怪,我一直只能當打零工的工讀生呀。

後面有熊!努力跑呀!

2009年6月22日 星期一

善用檔案系統的 Extended Attributes

Standard
檔案系統(Filesystem)的技術對資訊科技產業貢獻極大,只要是提到檔案儲存,就不能沒有檔案系統的存在,廣義來說,只要是能夠提供格式使一筆筆檔案資料正確存入和取出,都可以稱做為一種檔案系統。而就一般人而言,對檔案系統(Filesystem)的認知,主要在於處理檔案名稱、權限、資料存取方法以及排列架構,其中偶爾也會討論到效能的問題。先不論效能優劣的問題,事實上,現今大多數檔案系統,都有著良好且先進的設計,不少的擴充性和功能都已經被支援,我們可以來細細探討其帶來的益處和便利性。

檔案系統範疇甚廣,有許多領域的技術可討論,在短短的篇幅中也無法交代完整,有興趣者可以自行在網路上搜尋到大批文獻和論文。本文重點將在於討論檔案系統的 Extended Attributes(延伸屬性),該屬性又稱 xattrs,這是一個可供 User-Space 應用程式存取的屬性,其提供『鍵/值(key/Value)』機制,且鍵值資料可被關聯到指定的檔案上。換言之,我們可以為檔案添加一些附屬的資料和性質,而不需要更動到檔案內部資料,或是另外設計一個資料庫以記錄這些檔案的關聯資料。

由於 Extended Attributes 被實作於檔案系統演算法的層面,當然並不是所有的檔案系統都有支援,像是有悠久歷史的 FAT 就缺少這類實作。而 Linux 上使用的 ext3,實作方式是將 Extended Attributes 記錄在目標檔案 inode 裡的可用空間之中,使讀取 Extended Attributes 的資料相當快速,我們不用擔心要許多的 I/O 操作才能達到存取的目的。

以下是幾個操作 Extended Attributes 的函式:
/* 取得目標檔案之『鍵/值』 */
ssize_t getxattr(const char *path, const char *name, void *value, size_t size)
/* 設定目標檔案之『鍵/值』 */
int setxattr(const char *path, const char *name, const void *value, size_t size, int flags)
/* 列出目標檔案之所有延伸屬性 */
ssize_t listxattr(const char *path, char *list, size_t size)
/* 刪除目標檔案之『鍵/值』 */
int removexattr(const char *path, const char *name)

以下是相同功能,但是針對 File Description 的函數:
ssize_t fgetxattr(int filedes, const char *name, void *value, size_t size)
int fsetxattr(int filedes, const char *name, const void *value, size_t size, int flags)
ssize_t flistxattr(int filedes, char *list, size_t size)
int fremovexattr(int filedes, const char *name)

一個實際 Extended Attributes 的應用,就是用在 MIME Types 的 cache 機制。不像 MS Windows,Unix-like 系統裡許多檔案是不能用副檔名判別檔案類型,導致一些 File Manager 都會去預讀檔案標頭和部份內容以判別類型,但這是一個很沒有效率的手段,因為有大量的 I/O 產生。因此,這問題逼迫各家 File Manager 都會去實作一套資料庫,對這些檔案類型做 cache,以便第二次開啟時能有效率的判別檔案類型。事實上,可以使用 Extended Attributes ,儲存目標檔案的類型,有效率的實作 cache 機制,只不過因為需要考慮到當下檔案系統是否支援,或許兩種方法並行才能解決此問題。

2009年6月16日 星期二

LXNM current status and the plan in the future

Standard
Next generation of LXNM(Lightweight Network Manager) is still under development right now, You guys can see the prototype which was implemented in SVN already. In the future, LXNM will provide some programs includes lxnm daemon, utility which is a command line program to make control of all kind of networking devices be unified into only one utility, a LXPanel plugin and a standalone applet for running without LXPanel.

So the project will has three parts to be maintained:
1. lxnm (LXNM Daemon and command line utility - lxnetctl)
2. lxpanel-netstat (LXPanel plugin)
3. lxnm-applet (standalone applet)

For the current version in SVN, lxnm can be working now, we can using lxnetctl utility to connect to lxnm daemon to control our networking devices and get informations include ethernet and wireless interface.

BTW, I am now working on lxnm-applet to implement a graphical LXNM client to display and control network devices.

2009年6月13日 星期六

回答一個很多人在問的問題

Standard
朋友們總是會關心我的近況,問我最近過得好不好?我所接的案子如何?或我的顧主、客戶近況又如何?但有時這些關心,卻是尷尬的問題。周遭朋友們都知道,自 gOS 剛踏上台灣開始發展起,我便有參與並協助,從人少到逐漸成形。就因為我都有參與其過程,所以許多朋友或各種場合認識的人會不時問我 gOS 近況,尤其是這一兩個月,許多人又頻頻問我,最近 gOS 如何?有什麼新方向?令我必須要不斷面對這一個重覆的問題,卻又無法回答。

『是的,我已經不再為 gOS 做事,也沒有再接他們的案子』

原因一言難盡,也有許多部份是理念不合,但我確實不再與 gOS 有任何合作的案子和開發。所以,若是有人對 gOS 的公司或產品上有任何的問題,我無法再詳細回答或提供任何訊息和協助。

至於我現在在做什麼?暫時一樣接案過日,期望能堅持些理念和技術,儘快能不總是依附他人,創造理想的明天以證明自己的堅持。

最後無論如何,仍然感謝一路上的貴人,曾給我許多機會渡過難關。

2009年6月11日 星期四

FreedomHEC Taipei 2009 - Fastboot 簡報上線

Standard
今年的『FreedomHEC Taipei 2009』如期於 6 月 10 日開始,請來許多重量級的外國講者,傳授很多 Kernel Driver 以及硬體相關的寶貴實作開發經驗,有人還拿著『 Linux Device Driver』一書,去找講者簽名。 :-)

小弟很榮幸受『資策會』邀請,並於該活動給了一場主題為『Fastboot』的 talk。現在簡報檔上線有興趣的人可以參考:
  • FreedomHEC Taipei 2009 - Fastboot [PDF]
Fastboot 議題自從 Netbook 效應開始,就被廣泛提出討論,也不斷有不同的實作被發展出來,『快速開機』彷彿已經是個新一代消費性電子產品的必備標準。因此,就算該議題已經被討論和研究有許多時日,許多人仍對其非常有興趣。有更多的快訴開機方法,仍未被完善的發展出來,這也是值得我們探討的一部份。

2009年6月2日 星期二

值得玩味的程式作業

Standard
昨日,有人在 MSN 敲我,請我幫助她解一題程式作業,她說班上沒人會寫,只好向外求助。該作業是從某間大學(忘記是哪一所了)資工系的某堂課所出的,個人覺得題目出的很好且很有趣,值得細細品味。 :-)

題目大致如下:
  • 寫出一個多項式相乘的程式
  • 使用串列的方法
  • 可自定任意多項式
  • 舉例:(2X+3Y+4Z)(XY2+X2Y+Z2) = 2XY3+2X2Y2+2Z2X+3XY3+3X2Y2+3Z2Y+4XY2Z+4X2YZ+4Z3
    <註>未知數後的數值代表『指數』,如:X2 代表 X 的平方
對一般學生來說,這作業的困難點是會用到多種技巧,該程式將運用到串列的基本結構、字串解析的技巧以及指標的應用,最重要的需要充分的邏輯思考,以細心慢慢刻出這支小程式。不但如此,該程式寫出來後,還有很多最佳化的改進空間和擴充性,能讓人想改了又改,欲罷不能呀!

筆者在這邊提供一份自己的解答,供有興趣的人參考:
http://people.linux.org.tw/~fred/homework/mathor.c

後記
比起機械,資工系的作業好有趣!早知道當初填志願就填它了!(摔杯子)