星期日, 8月 11, 2019

Convolution Theorem and Overlap Save/Add Method



https://github.com/chenhsiu/remagic/blob/master/convolution.ipynb

The Overlap add/save method gives us an idea about how to use FFT to accelerate convolution. This method is generally much faster than typical pair-wise multiplication convolution by its definition. But how many performance gain we can get from this kind of FFT accelerated convolution? Let's do some experiments on the 2D convolution and see its result.


Convolution Theorem

First of all, let's try prove the convolution theorem with the python code.

From time domain

In [32]:
import numpy as np
from scipy.fftpack import fft, ifft, fftn, ifftn

x = [0, 0, 3, -1, 0]
h = [1, 1, 2, 1, 1]

X = fft(x)
H = fft(h)
r1 = np.real(ifft(X*H))

r2 = np.convolve(np.hstack((x[1:],x)), h, mode='valid')
print('%s == %s ? %s' % (r1, r2, 'Yes' if np.allclose(r1, r2) else 'No'))
[1. 2. 2. 2. 5.] == [1 2 2 2 5] ? Yes

From frequency domain

In [31]:
# frequency domain
X = np.array([1.+1.j, 2.+3.j, 1.+2.j, 3.+2.j])
H = np.array([2.+3.j, 1.+1.j, 3.+3.j, 4.+5.j])

Y = X * H
r1 = ifft(Y)
print('r1 = %s' % r1)

x = ifft(X)
h = ifft(H)
x = np.hstack((x[1:], x)) # by default is linear convolution, make it circular
r2 = np.convolve(x,h, mode='valid')
print('r2 = %s' % r2)

print('r1 == r2 ? %s' % ('Yes' if np.allclose(r1, r2) else 'No'))
r1 = [-0.75+10.5j   5.   -1.75j -1.25 -3.5j  -4.   -0.25j]
r2 = [-0.75+10.5j   5.   -1.75j -1.25 -3.5j  -4.   -0.25j]
r1 == r2 ? Yes

Time domain with different size signal

In [16]:
x = [7, 2, 3, -1, 0, -3, 5, 6]
h = [1, 2, -1]

X = fft(x)
H = fft(h, len(x))
r1 = ifft(X * H)
print('r1 = %s' % r1)
r2 = np.real(np.convolve(np.hstack((x[1:],x)),h,mode='valid'))
r2 = r2[len(r2) - len(x):]
print('r2 = %s' % r2)

print('r1 == r2 ? %s' % ('Yes' if np.allclose(r1, r2) else 'No'))
r1 = [ 1.40000000e+01+0.0000000e+00j  1.00000000e+01-2.2977602e-16j
 -1.11022302e-15+0.0000000e+00j  3.00000000e+00+2.2977602e-16j
 -5.00000000e+00+0.0000000e+00j -2.00000000e+00+6.5840240e-16j
 -1.00000000e+00+0.0000000e+00j  1.90000000e+01-6.5840240e-16j]
r2 = [14 10  0  3 -5 -2 -1 19]
r1 == r2 ? Yes

Fast Convolution with FFT

Now we see how the FFT can help us on fast convolution.
The convolve2d in scipy.signal uses pair-wised multiplication (see the source code ). Meanwhile, there is also a fftconvolve in scipy.signal which uses FFT to calculate convolution (see source code here). From its documentation:
This is generally much faster than convolve for large arrays (n > ~500), but can be slower when only a few output values are needed, and can only output float arrays (int or object array inputs will be cast to float).
For overlapadd2, we found a 2D overlap-add with FFT implementation on github. Below is its description:
Fast two-dimensional linear convolution via the overlap-add method. The overlap-add method is well-suited to convolving a very large array, Amat, with a much smaller filter array, Hmat by breaking the large convolution into many smaller L-sized sub-convolutions, and evaluating these using the FFT. The computational savings over the straightforward two-dimensional convolution via, say, scipy.signal.convolve2d, can be substantial for large Amat and/or Hmat.
The performance comparison result on my NB shows below:
methodconvolve2dfftconvolveoverlapadd2
speed3040 ms30.1 ms94.8 ms
We can see the FFT based convolution is generally much faster than typical convolution, from 30X to 100X acceleration. The result surprises me a bit because fftconvolve is still faster than overlapadd2. The overlapadd2 looks good and ideal, but the user still needs to tweak the size of L in order to get the best performance. Maybe overlapadd2 has the real benefits only when the input matrix is so big that can't be fit into memory and we have split into sub-convolutions.
One thing to note is, when we use FFT convolution on image processing, there will be a dark borders around the image, due to the zero-padding beyond its boundaries. The convolve2d function allows for other types of image boundaries, but is far slower.

Reference

There is an article doing 2D convolution benchmark with various convolution libraries:
In [75]:
# before you run, eval the cell containing overlapadd2 at the end

from scipy import misc
import scipy.signal as sp
import matplotlib.pyplot as plt

A = misc.ascent()
A = A.astype(float)
print(A.shape)
H = np.outer(sp.gaussian(64, 8), sp.gaussian(64, 8))

print('==> using convolve2d')
%time B1 = sp.convolve2d(A, H, mode='same')
print('==> using fftconvolve')
%time B2 = sp.fftconvolve(A, H, mode='same')
print('==> using overlapadd2')
%time B3 = overlapadd2(A, H)

fig, (ax_orig, ax_conv, ax_fft2conv, ax_ovadd2) = plt.subplots(1, 4, figsize = (12, 8))
ax_orig.imshow(A, cmap='gray')
ax_orig.set_title('Original')
ax_orig.set_axis_off()
ax_conv.imshow(B1, cmap='gray')
ax_conv.set_title('convolve2d')
ax_conv.set_axis_off()
ax_fft2conv.imshow(B2, cmap='gray')
ax_fft2conv.set_title('fftconvolve')
ax_fft2conv.set_axis_off()
ax_ovadd2.imshow(B3, cmap='gray')
ax_ovadd2.set_title('overlapadd2')
ax_ovadd2.set_axis_off()
fig.show()
(512, 512)
==> using convolve2d
CPU times: user 2.84 s, sys: 4.87 ms, total: 2.84 s
Wall time: 2.84 s
==> using fftconvolve
CPU times: user 28.4 ms, sys: 11 µs, total: 28.4 ms
Wall time: 28.8 ms
==> using overlapadd2
L = [288 288]
Nfft = [360 360]
CPU times: user 54 ms, sys: 1.89 ms, total: 55.9 ms
Wall time: 56.1 ms
/usr/local/lib/python3.7/site-packages/ipykernel_launcher.py:32: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure.

星期日, 8月 26, 2018

SRE Book Ch 1&2


古人的名言說得好:『知易行難』。知道 Google SRE 這本書已經好一段時間了,還是最近才開始因為讀書會而好好的認真讀過。讀完前幾章的心路歷程是這樣的:
  1. 竊喜。過去的經驗畢竟還是有些用處的,看到有一樣的想法,不禁覺得英雄所見略同,還好這些日子沒白活。
  2. 扼腕。看著同樣的經歷活生生被寫在書本上,會覺得如果早點讀過,或許就不需用血淋淋的教訓去換取經驗。
  3. 期盼。個人的經驗總有限制,看到那些被寫出來的,沒經歷過的知識被整理得這麼完整,總想著若能真的實現該有多好,哪怕只是部分也好。
Google 也真夠意思,頭一兩章就擲地有聲,毫不囉唆,把 SRE 這件事整理歸納的很好。其中特別讓人感興趣的觀點是,Google 說 99.999% 跟 100% 根本沒差,SLA 從來就不是越高越好。甚至還引進 Error Budget 這個工具。
In general, for any software service or system, 100% is not the right reliability target because no user can tell the difference between a system being 100% available and 99.999% available. There are many other systems in the path between user and service (their laptop, their home WiFi, their ISP, the power grid…) and those systems collectively are far less than 99.999% available. Thus, the marginal difference between 99.999% and 100% gets lost in the noise of other unavailability, and the user receives no benefit from the enormous effort required to add that last 0.001% of availability.
人才濟濟如 Google,在 Dev 團隊與 SRE 團隊之間終究還是會有思維上的衝突,到底是該追求開發功能與速度,還是要維持高 availability 而盡量減少變動?Error Budget 是這麼看的:

假設我們的 SLA 是 99.95%,就表示每一季度可以接受 64.8 分鐘的 downtime。SLA 既然是 agreement,那就表示只要高於 99.95% 就是過關的,那麼這 64 分鐘就是可以拿來運用的預算:
  • 如果這一季度我們做得還不錯 (或是運氣特別好),沒有 downtime,那麼我們就有 64 分鐘的預算來上一些可能會有風險的新功能,萬一出事 SRE 團隊也不用太著急,因為情況不見得會失控
  • 如果這一季度 Dev 團隊的品質把關不夠嚴謹,已經有 40 分鐘的 downtime 了,那麼 Dev 團隊就乖一點,摸摸鼻子回頭想想怎麼改善
於是觀念一轉 ,突然間海闊天空了。原本吵得不可開交的爭執,變成大家來分餅,來分這塊 64 分鐘的 Error 大餅 (SRE 也可能想試一些較為 aggressive 的 infra change) 。

我們把場景換成 Dev 和 QA 之間 (如果有 QA 團隊的話),是不是 bug free 本身就是個假議題呢?如果沒有 P0 bug,是不是只要讓客戶維持在高度滿意的狀態即可,偶有 P1 或 P2 的 bug 只要傷害範圍不會太大即可?然後 QA 再也不會因為堅持完美而推遲 release,或是 Dev 再也不會為了嚐鮮而不顧產品品質?

同理如果是一個聰明的小孩,要做好 Mother Relationship Management 的話,就可以想想如何定義每個月的調皮預算 (Naughty Budget) — 把媽媽對於小孩乖巧度的期待控制在一個『有點乖又不會太乖』的程度,就可以適當的調皮搗蛋追求刺激,卻又不至於遭到被痛打的命運。

PS: 關於 SLA 這件事最好還是由業務端的人員去跟客戶好好商量 — 畢竟媽媽是無法開除小孩的,但客戶卻可以 XD


星期日, 10月 27, 2013

2013 澳洲遊

由於一直對南半球的天空有種浪漫的憧憬,加上有朋友住在澳洲,於是趁著國慶假期,規劃了一趟澳洲之旅,陸續拜訪了墨爾本以及雪梨這兩個城市。


講點旅途比較有趣的好了。

一開始抵達墨爾本,由於比跟朋友約定的時間早了不少,就想說先把 3G 網卡搞定,聯絡朋友也方便,就到附近的便利商店買預付卡。結果沒想到這個預付卡居然要『線上』開通。問題是我沒有網路,怎麼線上開通呢?到附近的 Hungry Jack 用免費的 wifi 看網頁,結果發現複雜到不行,乾脆打客服電話去開通。客服很熱情的想跟我聊天,說他也是亞洲人,在菲律賓,還問我看過袋鼠了沒有。我努力想把話題轉到開通這件事上,偏偏他又重複的推薦:You must plan to see kangaroo and koala, blah, blah。後來終於開通語音部分了,但數據連線還是有問題,只好跑一趟市區的電信門市才搞定。

所以下次到別的國家,還是直接去電信門市弄到好,不要隨便在超商買預付卡。

到盛產葡萄酒的澳洲,當然也要去酒莊晃晃。朋友帶我們去 Chandon,這家酒莊除了香檳很不錯之外,有名的就是被 LV 家族買下(大概是因為太常去買酒了,所以乾脆把整個酒莊買下來 XD)。


酒莊展售中心外就是一大片葡萄園,藍天綠地,簡直就像畫一樣。妙的是酒莊外的草坪上竟然停了一台直升機,有人走出來買酒,然後又達達達的搭直升機離開。果然有錢人的等級就是不一樣啊!

不管走在墨爾本或是雪梨,你都看的到不同國籍種族的人在街上行走,十足是個多元化的社會。相比之下,雪梨比較擁擠一點,路上行人也較匆忙,但各個港口景點比較豐富,尤其是搭配 MyMulti-3 的大眾運輸套票,連渡輪也可以無限次搭乘,從環形碼頭往來北雪梨的諸多碼頭,從海灣上欣賞雪梨的美,是很不一樣的體驗。


到了一個國家,最直接感受到的也是物價,原本以為德國物價已經很貴了,沒想到澳洲物價更貴。澳洲不只物價貴,凡事只要牽涉到人工的,一律貴到嚇人。所以這裡水電之類勞力的工作,薪資並不會比一般上班族差,而且愛做不做,每天準時上下班,假日更還要享受生活。連澳洲牛肉也沒有便宜到哪裡去,跟台灣買的到的澳洲牛肉價位差不多,吃起來當然也一樣。比較特別的是澳洲的羊肉特別好吃,完全沒有羊騷味,非常鮮美。


典型的澳洲人非常友善親切,走在路上自拍的時候常遇到主動說要幫我們拍照的人。澳洲人非常悠閒有禮,假日的時候在公園或是海灘邊,常常看到有人就直接躺在草地上曬太陽,或是拿一本書閱讀,也有拿一本筆記本寫著不知道什麼心得。澳洲人有著不錯的閱讀習慣,不管去到哪裡,很容易就可以看到人們閱讀,或是記著筆記,這在台灣可是很少見的。

澳洲另外有趣的,是他們的澳洲腔英語。基本上,他們的諸多用字也跟美式英語很不一樣。例如藥局通常是叫 pharmacy,但他們多用 chemist 這個字。我們常講 cool, great, 他們怎是喜歡講 beautiful (或是 lovely), 凡事總能來 beautiful 一下。喜歡講 mate, 沒事都來 mate 一下。


台灣最近流行『媽寶』一詞。實際上,台灣普遍有種奶娘文化,管東管西,把人民當小孩一樣管教,不管是捷運上的標語或是台籍的空姐,細心呵護到一種奇怪的感覺。這次搭乘澳航,飛機上的空媽空爸(年紀普遍大,但是親切有禮)才不管你那麼多,有問題再問,把大家都當成年人一般看待。各旅遊景點例如藍山或是企鵝島(飛利浦島),說實在的有些地方難免危險,但不見過高的護欄以及太多警告標語,所有人自重自律。『獨立自重』是身為一個成年人被社會要求的基本行為,只要在守法的範圍內,基本上尊重個別的行為舉止。


例如 Puffing Billy 蒸汽小火車,他最有名的就是行進過程中可以全程把手腳伸出車外,就這樣一路掛著行駛 40 分鐘以上,偶爾行經森林或草原,享受周邊新鮮的空氣以及大自然的美景。當然一路上列車與周邊都有一定的距離,基本上想搆都搆不到。這讓我想到阿里山的高山小火車,就沒有這樣的趣味。我相信因為大家都會這樣做,所以站方一定會維護行進間不會有異物傷害到乘客,大家有共識,都能自律自重自己負責任,也就減少了許多不必要的社會成本。

雖然澳洲物價高,人工貴,經濟這幾年也不好,但基本上他們拒絕加班,享受生活,堅持一份工作該有的最低待遇,也許因而物價指數會不斷上漲,但薪資也跟著上漲。整體算來,日子說不上富裕,多半過得去,但可以得到的生活品質卻是在台灣有錢都買不到。對比之下,台灣這幾年除了房價以外,基本上物價算平穩,拜大家努力追求 cost down 所賜,薪資也就十六年凍漲,加班文化盛行,人人辛勤工作。如果這麼除一除,高物價換來的生活品質換算成 CP 值卻可能還是比台灣要高的多。


不過這樣比較起來也不公平,台灣地小人綢,天然資源貧乏。澳洲則是得天獨厚,坐擁將近 80% 的中國土地面積,而人口竟只有兩千多萬。所以說這樣的生活品質很大部分是來自於豐厚的天然資源,只能說澳洲是個好命的富家子。不過這些我想逐漸也會因為移民政策而有所改變,澳洲法定時新是 16-18 澳幣左右,但各大城市的 working holiday 多的是每小時 8 澳幣的工作大家搶著做,仲介抽成,黑工也是時有所聞。外來人口政策很大程度會影響所謂的澳洲 style。儘管如此,這個富家子的家底實在太豐厚了,所以這塊土地上的人民真的是很受老天眷顧的一群人。

星期日, 8月 26, 2012

Code Rush - Mozilla 紀錄片

MozTW 軟體自由日《Code Rush》放映會
〈Code Rush〉是 David Winton 導演於 1998 年至 2000 年間拍攝的紀錄片,紀錄了矽谷的 Netscape 工程師們將瀏覽器原始碼釋出,成為 Mozilla 專案的經過;同時 Netscape 也正經歷被 AOL 併購的過程。本片描繪了 Netscape 的工程師們,犧牲日常生活與家庭,努力防止他們的公司倒閉的經歷。...

這部紀錄片詳實的記錄了程式設計師的生活, 對寫程式的熱情與執著, 矽谷的掏金夢, 投資銀行家的市儈與貪婪, 以及 2000 年當時尚未破滅的網路泡沫.

我在想, 其實不只是矽谷的 Netscape, 在台灣電子新貴的那個年代, 應該也有這麼一群群爆肝工程師, 犧牲日常生活與家庭, 用自己滿腔的熱血去鎔鑄擊殺競爭對手的神兵利器; 或是燃燒自己的生命去為落後的產品線爭取一線生機. 然而個人的熱情終究抵不過大環境的現實. 在面對 AOL 的併購, Netscape 員工只能落寞的安慰自己, "這畢竟比起被 Microsoft 併購要來的好得多".

這可能就像是, 平常熬夜加班, 企圖開發出更優異產品的晨星工程師, 在隔天看到被聯發科併購消息的時候, 心裡所感受到的一股失落.

然後 Netscape 的故事卻又讓我聯想到一篇文章 你絕對不應該做的事之一.

事無絕對, 也許就是有這麼多林林總總, 才有今日蓬勃發展的 Firefox.

星期二, 4月 17, 2012

TME 開放原始碼

從去年底開始規劃到現在,TME 終於在這次的 OSDC.TW 2012 上面宣佈公開原始碼。

TME (Trend Message Exchange) 是我進入趨勢科技的第一個專案。最初的 TME 是由美國那邊的團隊做完 PoC (Proof of Concept, 概念驗證) 然後移交給台灣的研發團隊。只是過程中也許是沒溝通清楚,竟然直接讓 PoC 的東西上線,後果當然是狀況連連。這時的 TME 統稱為 TME 1.0,正好是我進入公司的時間點。

經歷一段時間的痛苦期,最後還是決定『砍掉重練、原地重建』。我們重新設計系統架構之後,稱之為 TME 2.0,最早由我獨自進行開發,我還記得第一次的 milestone demo 是在 2009 年 9 月下旬左右。

隨著專案的進行,逐漸有其他成員加入,高峰時期大約有三位 RD 與三位 QA 總共六個人參與。專案約在 2010 年 Q3 左右完成,隔年逐步完成既有使用者更新與新服務的導入。2011 年年中取得高層授權 open source,年底開始著手進行 TME 2.5 開發並籌備 open source 事宜。從 TME 2.5 開始,我已不再參與開發工作,往後的維護與新功能的開發撰寫,主要由 lunastorm 在獨挑大樑。open source 的籌備過程中 lunastorm 貢獻良多,可以說是花最多心思、出最多力的人。而我多半在與公司的內部流程溝通交涉。

OSDC 前夕,我在網站上瀏覽這些過去所寫的程式碼,熟悉之外,也覺得深深的感動。

以前也曾想過該用什麼方式來參與 open source 專案,但都是插花似的貢獻幾個 patch 而已,沒有 TME 來的這麼完整,而且還是工作相關的專案衍生而來,這實在是當初所意想不到的。

無論如何,完整的把一件事做完了,為文以誌。



http://tw.trendmicro.com/tw/about/news/pr/article/20120417030109.html

趨勢科技持續支持開放原始碼 公開 TME原始碼於相關社群平台

【 2012 年 4 月 17 日 台北訊】 全球雲端安全領導廠商趨勢科技 ( 東京證券交易所股票代碼: 4704) 今天宣布將其事件觸發訊息匯流排 Trend Message Exchange ( 簡稱 TME) 的原始程式碼 公布於開放原始碼社群平台。趨勢科技持續支持原始碼開放,期許 TME 架構能更廣泛被運用於不同的領域。

趨勢科技開發 TME 的宗旨是為了解決高擴充性、符合成本效益的訊息基礎架構需求,使資料中心能有效率地串流內部資訊安全事件。 TME 具有輕鬆管理並擴充即時處理能力的特性,能即時處理龐大的資訊流。 Trend Message Exchange 是高可用性、高擴充性的訊息傳遞架構,由趨勢科技所設計開發,專為傳遞及處理大量事件訊息而設計。

趨勢科技資安解決方案架構師 Andrew Purtell 闡述:「 TME 的架構具備水平擴充能力,該架構現在每天可處理趨勢科技資料中心內的數千個事件串流與數十億個事件。 TME 提供圖形化網頁主控台,管理者可即時管理串流的工作流程,進而達成營運能力提升,且大幅降低服務部署時間的目標。 」

趨勢科技 TME 負責人黃振修表示:「 TME 是趨勢科技 Smart Protection Network™ 的關鍵元件。 Smart Protection Network 整合來自全球感應器網路的資訊,即時蒐集並發掘威脅,以達成防範資安威脅的功效。 TME 的優異效能與 便利 性能支援 SPN 防範資安威脅的目標 。現今的開放原始碼計劃內容為 TME 發展 的 基礎,正因為站在巨人的肩膀之上,所以我們才能迅速實現有效防範資安威脅的目標,因此,趨勢科技決定將成果回饋給開放原始碼社群,希望 TME 架構能更廣泛地被應用於各個領域 。」

台灣開放原始碼開發者大會 (Open Source Developer’s Conference) 主辦人 簡信昌 對趨勢科技此舉表示支持 , 他說 : 「趨勢科技在 2012 年接連釋出 "HijackThis” 與 "Trend Message Exchange (TME) ” 的原始碼。 TME 原始碼的開放 對台灣軟體和雲端運算產業來說是一項重大指標。身為開放原始碼的提倡及推廣者,我們非常樂見趨勢科技台灣研發團隊所發起的 TME 開放原始碼計劃,它將促進軟體產業對開放原始碼的參與和貢獻」

趨勢科技將繼續維護該程式原始碼,開發人員一有任何重要修改,就會將其更新在 Github 上。此次開放原始碼的作法,有機會使訊息匯流排架構更加先進, TME 亦有機會獲得進一步發展,甚至成為一套更優異的解決方案。

該原始碼現已正式開放下載,網址為:https://github.com/trendmicro/tme。

星期日, 4月 01, 2012

[推薦] 給基層主管的37封信

給基層主管的37封信
http://www.books.com.tw/exep/prod/booksfile.php?item=0010531021


幾個月前,有人好奇的問我:轉換到管理職後的心得與感想,或是工作上的不同處。

我想,差異處固然是很大,學到的東西也很多,可是卻不知道該怎麼講出來。
只好說,不然你想知道什麼,讓你問,我盡量回答。
但我知道這樣其實沒用,因為根本不知道有哪些問題可以問。

過年後,剛好另一位同事也給了我一個題目『Things I learned as a manager』,要我在weekly上sharing。
我也很傷腦筋該怎麼講,就只好先拖一陣子,等有想法再說。

很巧,最近看到一本書『給基層主管的37封信』。裡面講的,跟我所經歷的種種,有很高比例的重疊。
我覺得這本書整理的很好,有很完整的架構,實用而沒有太多生澀的理論。

推薦給可能會有興趣的你。

星期六, 1月 28, 2012

杜拉克 - 經理人及其工作

經理人的標準定義是,如果一個人必須為他人和他人的工作承擔責任,那麼他就是一位經理人。
經理人有兩項特殊的任務,凡是必須承擔這兩項任務的人都是經理人。

1. 創造出大於各部份總和的真正整體,創造出有生產力的實體,而其產出將大於所有投入資源的總和。經理人必須善於發揮資源優勢,尤其是人力資源方面的長處,以中和其短處。
2. 調和每個決策和行動的長程需求和眼前立即的需要。換句話說,他必須一方面埋頭苦幹,一方面放寬視野,高瞻遠矚。經理人既不能說『船到橋頭自然直』,也不能說『真正重要的是百年大計』。如果經理人不能處理好未來一百天可能遭遇的問題,公司或許根本看不到百年後的未來。經理人穿梭於兩種時間範圍內,為企業整體績效和自己部門的績效負責。

經理人的工作中包含五項基本任務,無論他是否意識到這些任務,他們在管理的時候都會做這些事情,他可能做得很好,也可能做的很差,但他總是在做這些事情:

1. 經理人設定目標,決定目標該是什麼,也決定該採取什麼行動,以達成目標。他將目標有效傳達給部門員工,並透過這些員工來達成目標。
2. 經理人從事組織的工作,他分析達成目標所需的活動,決策和關係,將工作分門別類,並分割為可管理的職務,將這些單位和職務組織成適當的結構,選擇對的人來管理這些單位,也管理需要完成的工作。

3. 經理人必須激勵員工,和員工溝通。他透過管理,透過與屬下的關係,透過獎勵措施與升遷政策,以及不斷的雙向溝通,把負責不同職務的人變成一個團隊。

4. 經理人必須為工作建立衡量的標準。他必須確立組織中每個人都有適用的衡量標準,衡量標準把重心放在整個組織的績效,同時也放在個人工作績效,並協助個人達成績效。

5. 經理人必須培養人才。經理人可以透過管理方式,讓員工更容易或更難以自我發展。他可能引導下屬朝向正確的方向發展,也可能誤導他們。他可以激發他們的潛能或壓抑他們的發展。他可能強化他們的操守,或令他們腐化。

善用時間的經理人花在和上司溝通的時間遠大於和屬下溝通的時間,他們不和屬下討論自己的問題,但是卻懂得如何讓屬下主動談論他們的問題。善用時間的經理人也花很多時間思考上司的問題,以及思考他對上司,對整個企業的成功,可以有什麼貢獻。

星期五, 11月 18, 2011

看電影, 學領導

週次教學內容
一領導的意義與功能。
二看電影學習領導--巴頓將軍。
三領導的困境。
四看電影學習領導--拿破崙。
五領導者的特質。
六看電影學習領導--驚爆十三天。
七領導的方式。
八看電影學習領導--投名狀。
九期中考週
十看電影學習領導--喜馬拉雅。
十一領導的原則。
十二看電影學習領導--搶救雷恩大兵。
十三領導的要領。
十四看電影學習領導--核戰爆發令。
十五領導者的修為。
十六看電影學習領導--怒海爭鋒。
十七期末分組口述報告
十八期末分組口述報告

星期四, 11月 17, 2011

那我現在還是個英雄, 他知道嗎?

前陣子迷上電影《賽德克.巴萊》。最喜歡電影裡這句對白:

「莫那頭目,我祖父說你年輕時候是個英雄」
「那我現在還是個英雄,他知道嗎?」



畢業後工作七年,偶爾想起初次踏入職場的年少輕狂,依稀記得當初滿懷理想
經過這些年來的跌跌撞撞,不禁想問一句:

「那我現在還是滿懷理想,有人知道嗎?」

再過七年,再經過一波波磨難與波折,我想我還是會再問一句:

「那我現在還是滿懷理想,有人知道嗎?」

飆股台灣

路人都知道,台灣今年經濟很好,但是到底有多好?來紀錄一下,這個百年難得一見的榮景。 可不可以普發現金?當然可以!不然政府也是拿去無效投資亂花。 ==== 2026全年 GDP 成長率:11.05%,創1988年以來新高,為39年最高水準 2月的7.71%大幅上修 => 5月...