發表文章

胖子工程師辛酸史: 抉擇

十年後 , 胖子終於如他 名字(陳偉大)成為很有名氣的外商總經理 . 胖子(心理OS): 哈哈,作者大人終於結束我苦逼一生,我終於出頭天了. 有一天 , 胖子帶著他兒子報名電腦補習班 ,無意間 看到工程師B , 興奮的胖子屁顛屁顛跑去跟工程師B顯擺 . 胖子:  『 哈囉, 你最近過得好嗎? 你在這裡幹麼? 』 工程師B面無表情回答:  『 不算差.. 你呢? 』 胖子不減熱情高興回答:  『 最近我在XX公司當總經理 , 每天過得很忙都沒時間帶孩子 ,只好把孩子交給補習班 . 你的工作呢? 』 工程師B:  『 那很好啊!  我是這裡的老闆 , 站在這裡會擋到別人 , 我們去辦公室聊吧! 』 胖子(心理OS): 他不是去念美國XX大學的博士嗎? 怎麼會在這裡 辦公室內跟他兒子一樣大的小孩在桌子前寫著功課 , 而一旁還有五歲多小女孩獨自玩著 . 工程師B:  『 抱歉 , 我跟我妻子正在經營補習班 , 但擔心交給別人 , 因此我把我的小孩帶來這裡 , 就近照顧 . 』 白目的胖子又提問:  『 沒關係 . 你不是想當大學教授 , 怎麼變成補習班老師 . 』 工程師B淡定回答:  『 因為台北沒有老師缺 , 我老婆又不想離家太遠, 所以邊開補習班邊注意大學有沒有缺 . 』 胖子邊腦補邊用同情眼神看著工程師B (心理OS): (^.^)Y Ya!! 我終於贏了強勁的對手,果然人帥就是不一樣! 你千萬不要感到難過啊! 胖子腦補正開心時 , 電話響了上面顯示老闆.... 老闆:  『 胖子 , 今天我們的大客戶打電話要求我們重新聽擬計畫 ,  而且他們明天親自來聽 . 你現在趕快來準備 . 』 胖子:  『 是, 老闆 . 我立刻趕過去 . 』 然而 , 當胖子準備告辭時 ,  坐在桌子前的小男孩跟工程師B討論功課 , 而小女孩撒嬌要爸爸抱 . 這是多麼溫馨的一幕 . 胖子低頭看向兒子 ,  兒子正用羨慕眼神看著他們!! 由於胖子工作繁忙 , 兒子與他幾乎沒有這樣的互動 . 他是多麼失敗的父親阿! 無奈的胖子摸摸兒子的頭說: 『 這間補習班是爸爸認識的人開的! 你要在這裡乖乖的喔! 』 胖子把兒子交給工程師B後

[公告]翻譯More C++ Idioms

翻譯More C++ Idioms, 請大家多多指教 目標對象 程度:C++ 進階 背景知識 C++  物件導向 設計模式  翻譯原則 Idioms:C++程式設計者慣用語 C'ish:C語言風格 英中繁簡對照表 英文 台灣 大陸 runtime 執行期間 運行期 invoke 喚起 調用 concrete 具象的 實在的 interface 介面 接口 進度條 More C++ Idioms/初始化期間調用虛函數 More C++ Idioms/ 父類別是資料成員 More C++ Idioms/取址 More C++ Idioms/查詢能力 More C++ Idioms/介面類別

[VS依賴庫管理]Boost動態連結

圖片
當你使用boost動態連結函式庫時,編譯時會出現以下的錯誤代碼嗎? error C1189: #error :  "Mixing a dll boost library with a static runtime is a really bad idea..." 的確,boost 自動連結功能(auto-linking) 帶給我們便利性,節省專案設置的時間,然而如何正確設定專案就成為很重要課題。以上錯誤代碼C1189意思是『 用靜態Runtime混合boost動態連結庫真的昰一個錯誤想法 』,也就是說Boost動態連結的專案屬性設置錯誤。 設定Boost動態連結的專案屬性主要有以下的步驟: 在前置處理器,強制動態連結Boost函式庫 在Code Generation選擇Runtime Library 增加Boost標題檔和函式庫的路徑 錯誤代碼C1189就是在第二步Runtime Library設定錯誤,此步驟主要設定在多執行緒模式下如何連結C和C++執行函式庫(C and C++ Runtime Library),依據偵錯和發佈(Debug & Release)和靜態和動態函式庫(Static & Dll函式庫)主要分成以下四種: Multi-threaded (/MT) Multi-threaded Debug (/MTd) Multi-threaded DLL (/MD) Multi-threaded Debug DLL (/MDd) 簡單來說,若字尾帶有-d即偵錯版,沒有小寫d即發佈版。還有,判斷動態連結庫依據是多執行緒(Multi-threaded)後面是否有DLL,即縮寫為(/MD),而靜態連結則是直接為多執行緒縮寫(/MT)。 環境 Windows 7 64 bit VS C++ 2015  方案:ThirdPartyExample 專案名稱:TestBoost_Dynamic 專案配置:Win32 Debug & Release Boost   1.59.0 下載教學: Boost簡介與分割 所使用到動態連結程式庫(dll) Boost.System Boost.DateTime Boost.Reg

[VS依賴庫管理]Boost簡介與篩選

圖片
你曾經認為Boost 函式庫過於龐大,而不敢使用嗎? 官方編譯好Boost函式庫 解壓縮大約有28GB,因為此龐大函式庫是由不同IDE版本編譯出來。首先,請根據你所設定的環境,取出Lib和Header資料夾,將大小減少到2.2GB。 請問將下圖所有函式庫上傳,讓團隊其他人自行決定如何使用,這是好的專案管理嗎? 答案是非常差!!! 首先,上圖是依據專案編譯屬性所分類的函式庫,詳細請參考以下的命名規則。因此若你將所有函式庫上傳,你無法清楚告知其他人如何在新專案正確地設定編譯屬性去連結函式庫。編譯屬性不同會改變產品發佈原則,部署人員必須花時間重新打包,而且產品發佈也缺少一致性。 舉例來說,圖二某人決定新專案有以下三個設定: 靜態連結 Boost函式庫 只使用Boost 裡面的三種函式庫 動態連結C++標準庫 然而,產品發佈原則是跨平台和獨立運行的應用程式,並且不會受更新IDE所影響,請問以上的設定是對的嗎? 錯, 因為動態連結C++標準函式庫代表客戶開發機必須安裝 『 Visual C++ 可轉散發套件(Visual C++ Redistributable Packages ) 』,所以 產品發佈時 必須將 VS2015 的 Visual C++ 可轉散發套件 和應用程式一起打包安裝檔。 此套件會隨著IDE 更新 有所改變 。 也就是說, 每次開發者更換IDE,部署人員就必須 重新打包 , 無形中增加專案時間成本。所以,篩選函式庫不但能讓其他人清楚如何正確使用,而且也減少第三方函式庫大小。 圖二 . 已分割Boost函式庫 另一方面,Boost目前是 『 準 』 函式庫,某些函式庫並不適合在產品開發上,而且Boost有些功能專案已實作,若不篩選Boost函式庫將導致一種功能有兩份程式碼。舉例來說,專案已經實作產生UUID的API,但是沒有文件說明產生UUID,你分派新人任務產生UUID時,你認為他會怎麼做? 若參考StackOverflow答案,新人就直接使用boost::uuids::random_generator,不但增加引用Boost標頭文件,而且增加產品編譯時間。還有,當你必須更改產生UUID機制,你 必須修正兩個地方,使程式碼缺少一致性。 因此,建議篩選Boost函式

[傾聽他人]回應抱怨

圖片
圖一. 太陽花(source: wikipedia ) 你曾經困擾如何與負面情緒朋友溝通嗎?還有,你好心給他一些建議,他都一一反駁你,使彼此產生衝突,甚至他還關掉與你溝通大門。請你先思考當朋友跟你抱怨時,他真的需要你的建議嗎? 其實,大部分抱怨的人心中已有答案,他們並不需要你的建議,而是傾聽與理解。舉例來說,當你朋友對你說以下的話, 唉~ 主管叫不動其它人,結果他一直分配新工作給我! 結果又不加薪,真過份! 你會做以下那一種回應? 辛苦你了!上次我下班前也被主管叫進去,害我晚半小時下班,真是鬼公司 『 吃得苦中苦,方為人上人 』你就當做主管給你磨練機會 ,像XXX年輕很辛苦,現在不是在有名的外商工作嗎? 你是不是為主管不重視你而感到生氣? 不要再抱怨!你是不是不喜歡工作阿 首先,答案1做法是先簡單安慰當事人,然後你開始長篇大論過去的經歷或朋友的例子,這樣做法不但轉移當事人的話題,而且讓彼此之前立場顛倒,甚至當事人需要安慰你!換句話說,你把人家的話題搶走,這可能會讓他感到自己痛苦被忽略,甚至被標上自以為是的標籤,你的任務是傾聽他的抱怨,而不是只顧着要展現自己,這樣只會增加彼此之間的距離。因此,傾聽時, 請記得今天主角是谁,並且持續當事人的話題 。 接下來,若我給當事人美好未來藍圖或建議,這樣做法應該沒問題吧?錯!!! 你很有可能被當事人打槍,一方面未來是難以預測,在不了解當事人能力或產業走向下,亂評論別人的未來,讓人感到很不負責任。另一方面,你真的理解當事人工作狀況嗎?每個人所遇到的情形都不一樣,解決方案也有所不同,不要擅自把別人經歷套用在他身上,或許他的心中早有答案,所以 你只要傾聽,不要給任何建議。 其次,最佳答案是3,為什麼? 請你重新看一遍當事人的抱怨,透露他很在意薪水和工作分配不公,因此它依此基礎去回應當事人可能感受或想法,不但讓他感受到你的重視,並且鼓勵他抒發他的情緒。若你無法看出他的感受,妳可以選擇性重複當事人的話語關鍵字,鼓勵他繼續談話,例如:其他人在幹嗎?所以,正確地回應是 以當事人的談話內容為基礎去拓展話題。 最後,答案4是最糟的做法,你不但否定當事人的價值,而且對他人行為亂下評語。你這樣只是散發你的優越感,自以為是了解他人感受,對當事人一點幫助都沒有。正確地傾聽主要有以下幾點: 帶

[Chrome書籤]復原舊版管理員

圖片
最近,Chrome在版本42將正式發佈新的書籤管理員 ,它使介面更為美觀和流行,然而卻犧牲 可用性 ,如圖一所示。 作者 Venkat eswarlu 針對圖一的書籤管理員列出以下的缺點[1]: 新版本載入書籤管理員的速度變慢 新版本無法依字母來排列 開啟Chrome任務管理員,它仍然繼續在背景執行(圖二) 加入新書籤到特定資料夾是困難 圖一. 新Chrome書籤管理員 對我而言,最困擾是第五點加入書籤的問題,尤其將書籤分很多層的時候,你無法一步驟 選擇所要 的資料夾,而是 不夠直觀的操作也增添困難性 。另一方面 ,新書籤管理員為內建的擴充功能 ,然而它有時所需要記憶體並不低 ,因此我也懷疑此功能會讓Chrome越變越慢 。 圖二   . 仍然在背景執行的書籤管理員 因此 ,我 將教你如何變回舊版書籤管理員,然而Chrome隨時會把這功能完全淘汰掉,因此此答案只能暫時有效。 環境 Windows 7 64 bit Google Chrome 開發版 版本 44.0.2398.0 dev-m (64-bit) 教程 首先,請在Chrome的地址欄輸入以下的文字,進入Google實驗性功能介面。 chrome://flags/#enhanced-bookmarks-experiment 圖三. 開啟Chrome的實驗功能 接下來,尋找標籤『 啟用強化書籤 』後,請在下拉式選單選擇 『 停用 』。   圖四. 關閉書籤功能 接著,請點選『 立即重新啟動 』使設定生效。   圖四.重新啟動Chrome 最後,重新啟動後 ,再次按下『 書籤星星按鈕 』即可使用舊版書籤管理。 圖五.舊版書籤功能 Reference: Venkat eswarlu , Chrome 42: How to get old Bookmarking Interface and Manager back? http://techdows.com/2015/04/chrome-42-how-to-get-old-bookmarking-interface-and-manager-back.html

美國寒冬(American Winter):動搖中美國夢

圖片
有一天,我旁邊坐著一個美國同事,我無法忘記他對台灣提出一系列的疑問,例如: 『為何台灣人比美國人還瘋狂去Costco?』 『為何台灣人會那麼喜歡外國人球員?』 『台灣人為何喜歡外國文化勝過自己國家呢?』 那時候我無法回答他的問題,或許我骨子裏也認為外國月亮比較圓,我無法有自信反駁他。然而,我想起學姊在我留學前說過的一句話:『妳不要把事情想得太美好,你真的了解要去的國家嗎?』這些話讓我開始反思一味想脫離被稱作鬼島的台灣,去美國工作就能解決問題嗎?我真的了解美國目前的狀況嗎?,美國夢仍然存在美國嗎? HBO紀錄片美國寒冬將推翻你對美國美好的幻想,讓你看到真實中的美國,並且開始對美國夢感到存疑 圖一. 美國寒冬宣傳海報(來源: American Winter-Home ) 首先, 中產階級貧窮化 只會發生在台灣,美國就不會有這個問題嗎?此紀錄片就揭露美國情況也在惡化中。中產階級是一群受過良好教育的人,他們有人人稱羨的好工作,打從心底相信只要努力工作,即使被資遣也能快速找到工作,他們無法相信有一天會繳不起日常生活費用,甚至讓自己的孩子吃不飽。在紀錄片,約翰(John)本來年收入五萬五千美元,大約一百五十萬台幣,他在大約五十歲時被資遣,然而他不但房子面臨被拍賣的局面,而且也無法滿足孩子娛樂需求(看電影),印象最深的是他含淚的說: 『這並不容易!我是50歲的成人,但我需要打電話求父親幫我付電費!』 約翰不但擔心自己所遭遇的狀況,他更害怕孩子的未來。約翰並不是片中唯一的中產階級例子,目前, 美國大約有4千八百萬的人活在貧窮線以下,占總人口大約15% ,然而這只是美國官方數字,這真的能真實呈現美國貧窮人口?在美國波特蘭,專家說目前中產階級是接近貧窮的危險族群。 圖二 . 貼心的美國小兄弟( 來源: American Winter- Preview ) 美國夢倡導不論窮人或中產階級努力工作就有回報,不必擔心日常生活,孩子能不能吃飽,甚至給孩子一個美好未來。然而,上圖孩子父母Ben&Paula說: 『我們只想著錢,如何餵飽孩子們,忘記夢,我們如何度過明天,明天就是夢,晚餐也是一個夢!』 而左邊8歲貼心美國小男孩海洋(Ocean)說: 『我聽到有時爸媽略過晚餐,因為他們需要餵我們,有時我聽到這句話,我哭了!因為讓我覺