轉職需要的準備工作

最近因為換了工作, 發現報到前後還要準備一些有的沒的, 特別把它整理出來:

1. 畢業證書: 上次用它應該是 1997 年吧? 找了半天才在一個牛皮紙袋裡找到. 赫然發現以前放在帶黃穗子的黑色燙金字圓紙筒裡面也不是那麼矬, 至少一眼就可以發現.

2. 退伍令: 哇! 我已經快除役了吧! 嗯, Google 查證得知尉級是 50 歲才除役, 還差一點.

3. 進修記錄: 呃…過去十幾年沒上過什麼課耶, 會不會很丟臉啊? 搜了一下, 計找到:

Synopsys synthesis 上課 30 小時 (呃, 畢竟我不是 designer, 上了課也沒用過到), 

Sun Service 開的 Java 課程結業證書 (其實我都忘光了) ,

即時作業系統 (這張上面還有打成績, 還好是滿分),

管理才能訓練研習營 (啊! 竟然有這張, 在螃蟹公司受訓時獲得的),

以及在自強基金會上日本語入門的結業證明.

好吧! 勉強擠出五張, 以後要設法多弄點這東西, 不然好像很沒有上進心.

4.  離職證明, 大概都會用到吧!

5.  勞健保退保單, 這是確認已經從前公司離職的另外一個方法. 據說法律上可以接受一個人在兩家公司都有勞健保. 因此確認拿到另外一家公司的退保證明, 就可以確認他/她已經不屬於那家公司了.

除了上述的有形準備, 另外就是心理準備了.

我們一進到新的環境, 就會看到很多和以前不一樣的地方. 讓我舉個誇張點的例子: 假如原來在 A 公司的 PC標準配備是 Win 7 / i7 主機加 16GB DDR3, 到了 B 公司忽然變成 Win XP / P4 主機加 2GB DDR2, 這樣工程師應該會嚇一大跳吧!

但是談 offer 的時候, 就算是最依賴 PC 的工程師也只可能會問上下班時間, 和軟體開發流程, 而不會問電腦的配備如何?

換言之, 我們接受了大環境, 小細節的差異就要跟著接受.  除非新的制度不合理而且很容易做出改善, 否則理應照單全收, 這是心理準備之一.

心理準備之二就是權責範圍的改變. 比方說 X 公司小, 很多事情都需要親自做決策, 到了 Y 公司, 裡面人山人海, 做什麼都要參考其他人的意見. 像這樣涉及工作方式的轉變, 更是優先要適應的項目.

畢竟換工作意味著改變, 如果什麼都不變就不用換了. 天下更沒有十全十美的工作, 不可能錢多事少離家近, 位高權重責任輕. 就算是出國規定只能坐頭等艙的公司, 也未必是你我的首選. 伴隨著改變而來的 "副作用", 當然是一定要接受的.

心理準備之三, 就是和真人互動. 換了一群同事, 也就換了一個生態圈. 哪些會要參加? 哪些事要經過誰的同意? 甚至哪個位置是同事開會時的固定座位, 這些都是新人需要適應的. 王建民轉到國民隊前, 國民隊就把 40 號空出來給他. 這是高調轉職的特例. 正常情況是: 任何巨砲強投轉到洋基隊後, 無論球團對他的期望多麼高, 想要 Jeter 把背號 2 號交出來都是不可能的!

以上三點就是我想到需要適應的心理準備, 分別對應到: 第一眼看到的物, 馬上要處理的事, 以及需要培養默契的人.

景氣對策信號小註解

昨天在 Cheers 雜誌上讀到, 有位王仲麟先生用景氣對策信號 (Monitoring indicator) 的分數來判斷是否進場. 當分數低於 17 分的話就可以進場, 29 分以上就要出場.

這個指標是啥呢? 它包含了經濟領先, 同時與落後指標. 領先指標的部分包括:

景氣領先指標綜合指數
景氣領先指標6個月平滑化年變動率
外銷訂單指數
貨幣總計數 M1B
股價指數
製造業存貨量指數
工業及服務業每人每月加班工時
核發建照面積(住宅類住宅、商業辦公、工業倉儲)
SEMI半導體接單出貨比

 同時指標的部分包括:

景氣同時指標綜合指數
景氣同時指標循環波動(不含趨勢)
工業生產指數
電力(企業)總用電量
批發零售及餐飲業營業額指數
非農業部門就業人數
海關出口值
機械及電機設備進口值
製造業銷售量指數

落後指標的部分包括:

景氣落後指標綜合指數
景氣落後指標循環波動(不含趨勢)
失業率
工業及服務業經常性受僱員工人數
製造業單位產出勞動成本指數
金融業隔夜拆款利率
主要金融機構放款與投資
製造業存貨率

除了分數, 政府也用燈號來表示分數的區間.

OK! 大家一定也關心現在幾分了吧!? 請看下圖. 9 8 月還有 22 分之多, 10 9 月的還沒有公佈. 但顯然距離金融海嘯時期的 9 分還有一大段差距.

DVB-T2 小註解

乍聽之下, DVB-T2 好像是 DVB-T 的後繼版本, 多少有點向前相容吧! 並沒有, 它只向 "錢" 相容, 調變規格和 DVB-T 差了很多. 雖然平平是 OFDM + QAM, 不過 QAM 的大小和 FEC (forward error correction) 就不同了. 更別說 DVB-T2 有 rotated constellations (令人聯想到傾斜的太魯閣號列車跑比較快).

DVB-T2 使得原本只能傳一路的 HD 的頻帶, 可以傳兩路 HD 加上一路 SD. 在芬蘭, DVB-T2 可憐地只分到 2 個頻道, 但即使是這樣, 它們還是塞進了 7~8 個 HD 節目 [note], 可見通訊技術真的進步了很多.

現在來講講 DVB-T2 帶來的商業利益:

1. Free-to-air

如果一個地區的免費頻道很少, 那麼 DVB-T2 可以提供更多節目的特性, 可能會吸引人去買新的 STB. 如果當地的頻道本來就多得不像話, DVB-T2 帶來的好處是把 SD 節目全部變成 HD.

2. Pay-DTT (digital terrestiral television)

同樣是付費的電視, DVB-T2 的滲透力比較高. 因此一個新的付費服務, 放在 DTT 上會比放在 cable 或是 satellite 更有成功的機會.

採用 DVB-T2 的國家包括: UK, Italy, Sweden, Turkey, Serbia, South Africa, Russia, Ukraine.

想了解 DVB-T2 的技術摘要可以看 note2.

[note]  http://www.digitag.org/DTTResources/DVB-T2_Handbook.pdf

[note 2] http://www.enensys.com/technologies/dvb-t2-overview.html

Web Workers 小註解

如果看到 dedicated worker 這個名詞, 可能會讓人聯想到專注的工作者. 而 shared worker 就像是共用的人力資源. 其實無論 dedicated worker 或是 shared worker 都是 web worker 的一種, 而 web worker 當然不是指網路工作者.

Web worker 是 HTML (特別是 HTML5)  的一個 feature, 它允許一個以上的 thread, 特別是在有任務很重的 Javascript 的狀況下, 有效率地在 browser 上執行.

在未支援 web worker 的環境下, 必須等到 Javascript 被執行完之後, 才能執行完某個 thread. 這使得 Javascript 所花的時間不能夠被隱藏起來, 而降低了執行的效率.

Browser 支援 web worker 之後, 它定義了 run Java 的 API. 多個 Javascript 都可以被放到 background 執行. 而且這些 Javascript 不會直接 access DOM, 只是透過 message passing 來收發 event.

舉例來說, 傳統的 HTML 會花一段 code 寫 Javascript, 然後用 <Javascript></Javascript> 包起來, 接著在 HML 中調用 Javascript 所定義的 function.

但 Web worker 的做法, 直接在 <Javascript></Javascript> 中間, 把 Javascript 指定給 worker 管理. load 一個 Javascript 或是關閉它的方式如下:

var worker = new Worker("worker_script.js");
 
worker.close();

把 message 傳給 worker, 或是從 worker 接收的方法如下:

worker.postMessage("Hello World!");

worker.onmessage = function(event) { do something }

Dedicated worker 表示 worker 被 create 出來的時候, 它的 message port 就已經被產生了, 例如上面這種寫法. 它的最大優勢就是簡單.

shared worker 依據 port 來共用 worker. 表面看起來和 dedicated worker 只差一點點:

var worker = new SharedWorker("worker_script.js");
worker.port.onmessage = function(event) { do something }

但實際上, Javascript 裡面會有一個 assign port 的動作, 再為 port 設定一個 listener:

var port = event.ports[0];

port.onmessage = function(event) { do something }

透過這樣的'方式, 多個 window 都可以共用一個 worker thread.

由於 dedicated 和 shared worker 的特性不太相同, 號稱支援 Web worker 的 browser 也未必同時支援這兩種模式. 我們可以透過傳回值來確認 browser 是否提出支援.

// Test if Dedicated Web Workers are available
if(window.Worker) { g_bDedicatedWorkersEnabled = true; }

// Test if Shared Web Workers are available
if(window.SharedWorker) { g_bSharedWorkersEnabled = true; }

[ref]

1. WIKI

2. Web Workers Editor's Draft 4 October 2011 [Complete!]

3. Javascript Web Workers: Opera 10.6 Beta Supports SharedWorkers

4. An Introduction to HTML 5 Web Workers  [Best!]
 

WebGL 小註解

WebGL 正如其名, 具有 Web + GL 兩種性質. 它是一個 3D rendering 的 API, 修改自 OpenGL ES 2.0, 而且它使用 Web browser 當作 middleware. 只要有 browser, 就可以用 HTML 來畫 3D.

當然, 此時 WebGL 需要借助 HTML 的 CANVAS. 下面是 CANVAS 的一個例子, 說明 canvas {} 可以畫出圖來. 只不過這個例子是 2D 的, 而不是 3D 的.

大家可以發現, canvas 需要先做一個類似宣告的動作. 以便取得 ID (假設是 xxx 或是上面例子中的 tutorial.

var canvas = document.getElementById(‘xxx’);

然後再用這個 ID 取得 context, 有了 context  就有 drawing buffer. 和其他語言一樣, 第二次用同樣的名字去 getContext, 只會傳回同樣的內容, 不會再 create 新的  object . 

var ctx = canvas.getContext(’yyy’);

至於 drawing buffer 的內容, 主要是 color (8 bit), depth (16 bit), 和 stencil (模板 8 bit).

那麼 view point 呢? 表示方法如下, 由四點所組成的矩形構成四個參數:

ctx.viewport(0, 0, canvas.width, canvas.height);

 在陰影處理的部分, WebGL 支援 GLSL (OpenGL ES Shading Language). 

最後要提一下 DOM (document object model), WebGL 也會用到它. 因為 DOM 是跨 HTML, XHTML, XML 的資料表示方法. 所以 WebGL 的 function 和 interface 是用 DOM 來描述的.

對了! 據說所有知名的 browser 都打算支援 WebGL, 除了 IE9 不想放棄自家的 DirectX 之外.

[ref] WebGL Specification V1.0