2016年6月18日 星期六

SQL study

最近有機會去做了幾個SQL的題目,才發現自己的SQL knowledge有點弱,太多層的巢狀表格就不知道讓怎麼寫,之前大部份是小型資料庫,所以都靠Programming language 去幫忙計算。

Q: Update the field in table if  condition is success

A:
UPDATE OpenOrder SET Status=1 WHERE OpenOrderId In (SELECT OpenOrder.OpenOrderId FROM OpenOrder, SettleOrder WHERE OpenOrder.OpenOrderId = SettleOrder.OpenOrderId GROUP BY SettleOrder.OpenOrderId HAVING SUM(SettleOrder.SettleQty) < OpenOrder.Qty)


Q: Calculate the profit per each customer
SELECT Client.ClientName, SUM((SettlePrice-OrderPrice)*SettleQty) AS TotalPL FROM Client, OpenOrder, SettleOrder WHERE Client.ClientId=OpenOrder.ClientId AND OpenOrder.OpenOrderId=SettleOrder.OpenOrderId GROUP BY Client.ClientId


--
後來花了一點時間再研究後,才知道我忘了HAVING的用途還有3 個 table時我就卡住了...  :)

Solving problem and deep study always...

2012年6月16日 星期六

Python心得 + PYCON 2012

話中從上一份工作最後一年才開始接觸Python,就被這輕巧、精美又強大的語言所吸引,那時候不知道從那邊聽來的一句話就是好的工程師至少要學會兩種語言,一種是compiler time的一種是dynamic language ,例如像我現在這樣的C++ 和Python,以前在不會(不知道)Python的時候,很多自己用或是公司用的小工具都是用C++, C#自己刻的,雖然C#用起來相對C++輕鬆的多,但是都沒有python用起來方便,從此之後我就開始用google學python,雖然沒搞清楚python但還是寫了幾個有用的工具,也寫了一些 tool給QA工程師用,甚至到最後都要用boost::python把python當成print script 來用(最後因為先離職了 XD),目前只有完成一個authorization dll透過boost::python把encode/decode export出來給python用,並提供web api可以線上申請試用版。


後來新工作的關係,我大部分都是跟windbg為伍,不再需要一直寫程式了,很多C++, python的學習也相對都停下來,專心在研究kernel debugging skill,直到後來發現一個windbg extension - pykd,可以透過python來寫windbg的script,我才越來越感覺python的神奇。哈


上星期跑去參加PYCON 2012,對於一個真的沒仔細看Python書只用google來寫python的人來寫程式,每一樣東西都是很神奇的,對於能聽到NumPy, SciPy作者演講感覺到很興奮(之前工作都是跟DSP, Matlab打轉),聽到各方面的應用各是收獲良多(但是還是要抱怨一下,這次應該投搞主題少吧沒得挑,感覺有些主題相對內容空洞,分享的很沒意義),我也利用PYCON的週末寫了一下程式,太久沒真的動手寫程式感覺心情真是舒爽啊。


最近利用pykd開始寫一些工作用的script, extension,無論是分析kernel mode, user mode 或是BSOD dump files,希望能更加快我的debugging process。(也許明年我也可以上台分享windbg+python)



2011年9月29日 星期四

The journey of lifttime

"The journey discussed here starts with "Hello, World!", but where does it end? Far too often, it ends with a promotion to middle management. Too many talented people thoughtlessly take that promotion and find themselves just a few years later in jobs the don't enjoy and yearning for retirement. But for those who have a knack for developing software and enjoy the learning process, software development is a career that can last a lifetime, and it can be a great ride." - Apprenticeship Pattern
上一段話是學徒模式簡介上寫的東西,我看了還蠻有感覺的,我之前是在一個小公司上班,大概工作快二年就升上一個小課長,做著一些吃力不討好的事,手邊的工作一樣都不能少,還要去安排工作、開會等事項,我就會想想難道管理職都是技術能力不錯的人當嗎?因為當課長這幾年下來我一直沒有做好我課長的本份,我將我99%的心力放在技術coding上,後來想想我認為這樣是不對的,其他工程師是期望你做好管理職的本份而不是技術上,但我又會擔心如果我不實際去code,誰能擔上這個工作呢。當然事情發生了就要去解決,不過當時我沒有,我只是等著時間的流逝。

我想我的確是有欠思考,我接管理職時才27歲,太多人與人之間的事還沒學會怎麼處理,更何況去帶給資深、新人一些未來的方向,現在給我選擇的話我當時絕對不會接受管理職這種事,我寧願當個資深工程師做技術,而我的老闆是個聰明的管理者就好了。

好險我私底下是一直保持學習的熱情,持續在下班時間接受技術上的新東西,現在離開管理職了,我想我對於自己的技術及學習的能力是很有信心的,可以勝任我之後要做的工作。 :)



2011年9月28日 星期三

買書

最近因為換了工作,需要大量的英文能力,然後我又小時候不學好,現在英文大概只有國一的程度吧(好險新公司可以接受破英文再摩練),為了努力挽救我的英文能力,現在買書也盡量買原文書,雖然感覺有點自不量力但是這也是沒辦法的,看一本書要很久不過至少看的是自己喜歡的書也順便練習不熟的單字,一舉兩用啊 XDD

---- 書單 -----
Apprenticeship Patterns
Refactoring
Code Complete
Prefactoing
-----------------

ps. 如果以前學生時代有這麼認真讀書的話,我就不會一直這麼孤單了,大學畢業後真正在寫程式的只剩我一人 orz

2011年7月6日 星期三

[讀書筆記] Code Craft - Ch1~Ch3

1. 善於防守
  • 使用好的程式設計風格和合理的設計
  • 不要倉促地編寫程式碼
  • 不要相信任何人
  • 程式設計的目標是清晰,而不是精簡
  • 不要讓任何人做他們不該做的修補工作
  • 編譯時打開所有警告開關
  • 使用靜態分析工具
  • 使用安全的資料結構
  • 檢查所有的返回值
  • 審慎地處理記憶體 (和其他寶貴的資源)
  • 在宣告位置初始化所有的變數
  • 盡可能推遲變數的宣告
  • 使用標準語言工具
  • 使用好的診斷資訊日誌工具
  • 審慎地進行強制轉換
  • 提供預定的行為、遵從語言習慣、檢查數值的上下限、正確設定常數
  • 契約式設計 (design by contract)
2. 精心佈局
  • 程式師對程式碼充滿了熱情,因此程式碼的樣式相當能觸動他們的心弦
  • 如果你的團隊已經有了一個程式設計標準,那麼就使用這個標準,不要使用你自己喜歡的風格
3. 名正言順
  • 如果你無法想出恰當的名稱,那麼你也許就需要改變你的設計了。這是有地方不對勁的徵兆。
  • 在進行命名時,將重點放在清晰而非簡潔上
  • 在名稱中避免使用多餘的詞。尤其是在型別名中避免使用以下這些詞語:class, data, object, type

-----
讀了三個章節唯一喜歡的只有第一章而已,先花時間看別本好了,這本書就章節跳著看

2011年7月4日 星期一

[讀書筆記] Peopleware - 第六部 續集

27. 再談團隊殺手
  • 大部分團隊殺手所造成的傷害都來自於徹底貶損工作,或貶損從事該工作的人
  • 團隊會自動自發設定並堅持一個令人引以為傲的工藝標準
  • 管理階層相信藉由掛海報可以培養這些美德(品質),而非藉由努力工作和管理才幹
  • 長期加班是降低生產力的做法,多出來的工作時間總會被不良的副作用給抵銷掉
  • 當你打算動用團隊成員不同的加班能力時,這麼做往往會摧毀團隊
  • 最好不要為了如期完成而加太多班,即使那是一個當你無法如期完成時可以卸責的藉口
28. 競爭
  • 當孩子缺乏父母關愛,沒有注入足夠的時間、尊重、關注與感情,較容易產生競爭
  • 競爭有什麼影響?第一個被攜牲的,就是常見於健康團隊中,輕鬆而有有效的同儕指導
  • 當今知識工作者所組成的團隊普遍都是技術的混合體,我們越來越相信,大部分的指導係來自於團隊成員本身
  • 排除那些不能讓管理人員及工程師以工作成果為榮的障礙,這也就是說「尤其」年度考績制度及目標管理必須停用
  • 目標管理及其類似概念乃是管理上的逃避藉口,藉由過分簡化的外部激勵因素來刺激員工的表現
  • 任何對團隊成員的差別待遇,都有可能助長競爭,管理者有必要採取行動以降低或彌補這個影響
  • 促使團隊死亡的管理作為:年度薪資或獎懲考評、目標管理、讀美特定員工的特殊成就、根據績效稿賞、獎勵、分紅、幾乎任何形式的績效評量
  • 協助所有成員都了解,個人成功與整體成功緊緊相扣
29. 流程改善計劃
  • 當今大獲成功的標準幾乎全都是介面標準
  • CMM的似是而非,在於流程改善是好的,但流程改善計畫就不好了,或至少通常不好
  • 能幹的員工始終都在進行流程改善
  • 組織越「成熟」,就越不願意冒險
  • 貴公司最出名的災難專案,極有可能正是貴公司這幾年來所做過最棒的專案
  • 越改善了工作方法,工作就越艱難 - 剩下的都是更知識密集,需要更多技術與經驗的工作
  • 最值得做的專案,是那些會導致公司降級的專案
30.讓改變發生
  • 人們不只是排斥某個特定的改變,他們排斥所有的改變,那是因為人們痛恨改改
  • 頒布新體制的人將成為所有舊體制既得利益者的公敵,至於會從新體制中獲益的人,則不會積極地給予支持
  • 對於任何改變,相信、但心存疑慮者才是唯一有意義的潛在盟友,至於兩個極端,盲目忠誠者和強硬反對者都是真正的敵人
  • 改變能否成功,就看你如何管理相信、但心存疑慮者
  • 別指望以邏輯推理做為說服眾人的王牌
  • 咒語:對改變所做的基本回應並不是邏輯性的,而是情緒性的
  • 絕對不要貶損舊方法,相反地,應該讚美它,以利於走向改變發生的道路
  • 提醒人們任何改善都伴隨著改變,完全都不改變,就無法有所改善
  • 一個構想,一個簡化的「更好的做事方式」,就能從舊狀態直接改變至新狀態,事情沒有那麼簡單,絕對沒有
  • 改變的發生有賴引進外來因素:改變的催化劑
  • 混亂是改變的必經之路,沒有捷徑
  • 混亂階段越痛苦,就會覺得新狀態的價值越大 --- 只要你能抵達新狀態
  • 舊狀態 -> (外來因素) -> 混亂 -> (概念轉換) -> 施行與整合 -> 新狀態
  • 改變不可能在缺乏安全感的情況下發生
  • 人類天生對混亂狀態的恐懼感,也許有助於解釋小孩子比成年人更容易學習新事物
31. 人力資本
  • 人力資本你可以視為是非常有價值的,若是誤把它視為沉沒費用,只怕會引導經理人採取不當行動,無法留住組織投資的價值
  • 「無法留住組織投資的價值」是不良管理的主要結果之一
  • 費用 v.s 投資
  • 企業整頓的目的,在於擴大編制,而非縮減編制
  • 擁有知識工作者的公司必須明瞭,人力資本是他們最重要的投資,好公司早就這麼做了
32. 組織學習
  • 學習並非單純的經驗累積
  • 當組織自我改造,開始斟酌經驗所顯露出來的意涵,經驗方能轉化為學習
  • 學習受限於組織是否有能力把人留住
  • 有關組織學習的關鍵問題,並非如何去做,而是在哪裡發生
  • 學習型組織通常具備的特徵就是堅強的中階管理層,但很值得指出,如果有裁員的話,最常被裁的就是中階管理層
  • 把中階管理層從組織圖中刪除掉,肯定不利於學習,但反過來說卻不一定對,為了塑造出一個生氣蓬勃的學習中心,中階管理者必須相互構通,並學習和睦融洽地一起共事,這非常少見
  • 更糟的是,經理人缺乏成任何團隊凝結所必須的要素:產品共同擁有的感覺 「有好東西就佔為己有,無法佔有就毀掉它」
33. 終極的管理罪惡是……
  • 任何例行的會議多少都令人懷疑具有儀式的目地,而不是為了取得眾人的共識
  • 早期的人力過剩 - 專案始於規畫和設計,初期的活動若能由一支規模略小的團隊負責執行是最好不過的了
  • 時間分割不太容易被寒覺
34. 打造社區
  • 偉大經理人所能做的事情中最棒的:打造社區
  • 社區並不會自己出現在工作中,而是必須被創造出來的
  • 打造社區、使社區健全並滿足每一個人的科學,就是政治學
  • 拒絕政治是一個災難,是放棄經理人的真正責任


愛德華.戴明(W. Ewards Deming) 『轉危為安』 (Out of the Crisis) 1982

[讀書筆記] Peopleware - 第五部 在此工作應是樂事一樁

工作應該是快樂的

24. 混亂與秩序
  • 不再有混亂,我們也不會因此而更快樂,相反地,我們會因無聊而哭泣
  • 敞開心胸的經理人則不同,他們樂於把小睏小睏的混亂留給別人
  • 建設性地再造少量的混亂 - 先導專案、競賽、腦力激盪、緊張刺激的培訓經驗、訓練、旅遊、會議、慶祝、以及閉關
  • 先導專案就是把厚重的標準手冊放一旁,嘗試某些新穎而未經證實的技術,初期會很沒效率,這是改變的代價,但這份代價將使你得到新技術帶來的生產力提升,還有一個額外的好處,就是霍桑效應,亦即當部屬從事不同的新奇事物時,所爆發出來的活力與興致
  • 把專案當成採用某些新技術的先導專案,你可能會因此而花比較少的錢
  • 當成標準化所達成的是眾產品之間的文件一致性,而無法達到有意義的功能一致性
  • 先導專案必須特別注意:不要在任何專案中,對一個以上的新技術進行試驗
  • 在最健全的環境裡,專案成員都會了解,在每個專案中,以某個單一新技術進行試驗是受到鼓勵的行為,然而在其他方面就得按照標準來
  • 我們每天上班都應該要符合常規並遵守秩序,但還是要保有冒險,做傻事,以及少許建設性混亂的空間
25. 自由電子
  • 榮譽會員、大師,以及內部企業家 - 自己決定自己的工作
  • 大多數人的確如此 - 喜歡老闆講清楚要達成哪些目標才算成功
  • 最佳經理人的特徵,就是有能力找出少數兼具遠見與成熟的關鍵人物,然後任其自由發揮
26. 霍爾格。丹斯克
  • 喚醒沈睡的巨人

LinkWithin

Related Posts with Thumbnails