2009/3/12

幫jar檔瘦身 Remove Unused Classes

寫程式的時候,通常會使用很多 library ,但是一旦遇到要把程式以 JNLP 的方式,送到client端的時候,產生jar的大小就很重要了,以LGPL license來看,我們的程式可以連結到LGPL license的library,我們不一定要以一個一個獨立的jar來散佈library,我們可以把所有classes集合在一個jar檔裡面,只要我們沒有修改到原始程式,就應該符合license的規定。

所以我們可以把程式沒有使用到的 binary classes 都去掉,Open Source 授權的關係,我們不修改 library 原始程式,不使用obfuscator,但也能達到縮小 jar 的目的。

首先要準備一個 使用到的 classlist 檔案,在執行程式的時候,加上 -verbose:class 參數,ex: java -verbose: Test ,把結果輸出到一個 classlist.txt 檔案檔案裡面會有類似這樣的資料,這就表示JVM從commons-logging-1.1.1.jar裡面載入了一個 class org.apache.commons.logging.LogConfigurationException。
[Loaded org.apache.commons.logging.LogConfigurationException from file:/D:/testproject/lib/commons-logging-1.1.1.jar]

1. 把所有 library 的 jar 用 org.apache.tools.zip.ZipFile 解開到某個 release 的目錄
2. 把編譯的 class 程式,也複製到 release 目錄
3. 從剛剛的 classlist.txt 裡面,把使用到的 classes 名稱,收集在一個 hash 裡面
4. 用 org.apache.commons.io.FileUtils.iterateFiles 把 release 目錄裡面所有的 .class 都集合起來
5. 一個一個比對 是不是有在 classlist.txt 的 hash 裡面
6. 如果不存在就把這個 class 刪掉
7. 最後 再用 jar cvf ..\proejct.jar . 就可以產生一個去掉沒有使用到的 classes 的 jar

2009/3/4

模仿犯-下 by 宮部美幸

上集花了一週,下集只花了三天就看完了,原因是我看著看著,就急著想要知道最後的結果是什麼,到底和平是怎麼被抓到的。

不同於對其他人內心的詳細描寫,作者並沒有直接撰寫網川浩一 (和平)的內心世界,反而是藉由其他人的描寫,讓讀著以旁觀者的身份,瞭解這個自大的殺人犯,對和平來說,這是他精心策劃的舞台,每一次的轉折,都是由他設計導演,所有人都得按照他的劇本來表演。

雖然有時候會出現突發的狀況,但和平都能冷靜地思考,並判斷下一步,所有人該怎麼走位。遇到了有馬義男,跟塚田真一,著實讓和平有點難以應付,因為他們不像是由美子,那麼單純容易掌握。但他們兩位都是受害者,倖存下來的人,常常會自責到讓自己無法面對自己,這也是他們的弱點。受害者跟加害者兩邊倖存的家人,也是和平操控情勢的利器。

和平怎麼也沒想到,自己費盡心思導演的一切,竟然已經被十年前的一本以實際案件為基礎撰寫的小說寫出來了,雷同的情節,他被茲子在現場節目上影射只是個模仿犯,讓他一下子無法承受,當場就承認了罪狀,反駁全都是他自己策劃的。就像是費盡心思研發的成品,結果卻早在多年前,就被人申請了專利,又被以侵權告上法院,這當然讓人無法接受。

模仿犯這個主題,直到全書的最後才點明,讓人有恍然大悟的感覺,畢竟我已經等了一千多頁了。

2009/3/1

模仿犯 by 宮部美幸

因為我是網路訂購的,剛拿到這本書的時候,真的嚇了一跳,怎麼會有這麼厚的小說,不過有先看過評語,都說這位作家非常擅長寫故事,除了得獎之外,還有「國民作家」的頭銜,上下兩本書加起來總共一千三百多頁,我一開始就在懷疑,我到底要花多久的時間才能看完。

目前花了一週的時間,就把上集事件之卷讀完,作者真的非常會講故事,但我覺得更貼切的說法是,作者非常擅長描寫每一位出場人物「瞬間的雜念」,因為我自己也常常會在心裡產生許多短暫的、臨時的想法與動念,善意的就像是靈光一現的idea,會趕緊用筆記錄下來,但也會有惡意的,那些就會馬上在心裡拿起板擦抹去。

以往看過的小說人物,大多個性鮮明,說話與動作都很直接,但這本書寫法的不同,而是細膩地描寫當事人的所有「突然」的想法,所有的猜測,反反覆覆地,而且每一個人都會在心裡作不同程度的推理,有時候作者還會點明,受害者如果注意某個東西,或是換成某一種想法,可能就會發現犯人的惡行,自然能趨吉避凶。

看著犯人栗橋浩美的心境,真的有不寒而慄的感受,看著他在心裡假想,如果..那麼就會..,假設他殺人會怎麼樣,假想受害者在別墅裡會怎麼樣。我只覺得一位成功的小說作者,到底該「人格分裂」到什麼程度,才能夠具體的掌握每一個人物的心情與想法,卻又能真切地感受到他們的想法,不讓人覺得突兀,也得能製造出合理的情節。

下集開始要看和平這位極有自信又冷靜的犯人,他的內心世界,我在期待著,到底故事要怎麼收尾呢?這是限制級的小說,兒童不宜,看後我得把他藏在書架的後面。

2009/2/21

僕人 by James C. Hunter

傾聽
領導(leadership): 一種用來影響別人的技能,能讓他們全心投入,為達成共同目標奮戰不懈。
威權(power): 一種能力,利用你的地位,罔顧別人的意願,強迫他們照著你的決心行事。
威信(authority): 一種技能,運用影響力,讓別人心甘情願地照著你的決心行事。
顧客 - 夥伴 - 組長 - 中階經理 - 副總裁 - 執行長
領導 - 威信 - 犧牲奉獻 - 愛 - 決心
營造環境
改變自己


個人 -> 團隊 -> 產品 -> 公司 -> 個人
個人
    收入
    自我實現
    成就感
    勇於負責
團隊
    完成任務
    互助合作
    溝通協調
    信任
產品
    品質好
    價格低
    系統穩定
    bug少
公司
    永續發展(存活)
    cost down
    增加客戶

2009/2/3

影印紙的背面不要用 by 村井哲之

很多企業都對無法提高公司獲利而苦惱,既然短時間內景氣不可能回升,當然就得從降低成本著手,最近有許多企業,都順著不景氣的裁員潮流,以汰弱留強的方式,降低人事成本,雖然是個立竿見影的方法,但裁員會造成員工士氣低迷不振,也會失去突破冒險的精神。

而本書提供了降低成本的方法,正確地執行,結果反而會讓員工士氣大振,更能把節省下來的錢,增加員工人數,提昇服務品質,而且降低成本絕對不能等到財務困難時再作,要找對方法,積極地驗證,才有成功的機會。

幾乎每一個人都會對回收使用影印紙的背面,再用來列印覺得理所當然,但是本書提出了一些實例,讓我們瞭解到,為了節省幾毛錢的紙,企業付出的代價卻是,拆釘書針的時間,放置回收箱的空間,印錯面再重印的費用,因兩面列印,而造成的誤會,誤以為背面是回收再利用的文件,而被忽略,不想浪費時間改用手送紙而堆積如山的回收紙。

企業的首要任務,是要消除「經營者」與「執行者」之間的認知落差,不在其位,不謀其政,因為多數員工都無法以經營管理者的角度,來檢視所有事件與政策,這就會造成在上位者推行的戰略計畫,無法被員工有效地執行。為了消除這種認知差距,管理者必須要有效且明白地披露,原本只有管理者能夠得到的資訊,以成本管理來說,就是把所有的開支明細,詳細地公佈給所有員工知道。

真正在現場執行的人是所有員工,當然也只有線上作業人員,最知道要怎麼節省開支,一旦每一位員工都能明確的知道所有的開支,那麼他們就能夠在作業的時候,提出一些有效的成本節省的方法。讓大家都有「每一位員工都是經營者」的感覺,那麼大家就都能以宏觀的角度,對待大家的公司,更用心面對自己的工作。