VisualGDB 在建立 Unit Test Project 時會順便引入它自己提供的 Google Test Framework,用這個 Google Test Framework 便可以把測試結果串接到 VIsual Studio 中的 Test Explorer.

但問題是如果你不是用他的Google Test Framework,就無法串接 Test Explorer, 因此該如何讓 Google 官方的 Google Test 可以串接到 Test Explorer 呢? 可以參考這篇:

https://sysprogs.com/w/extending-the-visualgdb-test-system/

簡單說:

  1. 把 SysprogsTestHooks.cpp & SysprogsTestHooks.h 複製到 google test 的 source folder
  2. 修改 gtest.cpp,有四個地方要改(建議直接diff一下VisualGDB裡面的 gtest.cc 會更清楚)
    1. #include "SysprogsTestHooks.h"
    2. void TestInfo::Run()
      1. SysprogsTestHook_TestStartingEx((std::string(test_case_name()) + "_" + std::string(name())).c_str());
      2. SysprogsTestHook_TestEnded();
    3. void UnitTest::AddTestPartResult()
      1. SysprogsTestHook_TestFailed(NULL, message.c_str(), NULL);

 

結果:

diro 發表在 痞客邦 留言(0) 人氣()

研发管理中的轻量级思考方法 王福润(中兴)

這場要談的是系統思考與陰陽五行,之前因為對中醫有點興趣,在看到五行時,就覺得他是中國最佳系統思考代表,但是不知是不是時間的關係,我覺得許多關鍵點沒有交代的很清楚,所以收獲很有限。

 

所有事情都是平衡的,不平衡是因為你對它有期望。

陰中求陽,類似Satir的冰山理論,例如他"意願低",這時你要從另外四點去看看有沒有辦法改善。 

但是回來後,對系統思考有著墨的朋友似乎都對這主題不感興趣,William Yeh 給了一句話:過度化約論的學說,會變得什麼都可以解釋,卻也什麼也解釋不了 好像蠻有道理的啊...

不過老師有在微信上建了群,後續再讓我繼續一探虛實吧。

 

让价值顺畅流动——数据驱动转型之路 张燎原(阿里)

燎原是我去年在上海上 Less 時的同學,因為上次上課時有些討論讓我覺得他很有料,所以選擇這場。

他前半段在分享關於度量這件事,我覺得講的很好:一個好的度量,要講述完整的故事,並回答一個本質的問題。這乍看之下還是不大懂,但他後面舉汽車油耗的例子就清楚多了。

他也提到好的度量應該"由外度量",要由"整個系統"的外面去度量,否則會型成筒倉。例如千行代碼缺陷率、測試覆蓋率等等(像可以測出幾個 bug 我覺得也算)

好的度量才能引出正確的行為,燎原舉了英文窗戶稅(Window Tax) 的故事當例子,令人印象非常深刻,出發點是富人要多繳點稅,但最後卻變成大家把窗戶封起來...

接下來的分享講到流動效率、湖水岩石效應,持續交付,最後一路到 feature team。這部份比較常聽到,我就不再多寫了。

 

Walking Scrum history with patterns Kiro原田骑郎

聽完這場,發現 Kiro 桑根本就是大師級的人物啊 XD

從 pattern 的起源,一路講到 scrum 的起源,當中的 pattern,其實重點都寫在這裡了: http://scrumbook.org/   

連ScrumMaster / Product Owner 都是有 pattern 的 (Sacrifice One Person):

  • If a smaller diversion hits your team, Then: assign just one person to it until it gets handled.

欣赏式探寻-激发团队的无限潜能 五毛(一块工坊)

這門課感覺很注重在NLP,一開始講師讓小組內大家去分享二個自身的優勢,並搭配自身的故事來說明這兩個優勢。在說故事時,小組其它成員可以做三件事:

1.亮點:故事中還透露出的其它優勢

2.共嗚:分享者的優勢跟自己一樣,可以表達共嗚

3.探詢:問故事中的其它問題

我覺得重點在於AI是鼓勵大家用正面去討論問題,有一個很重要的點:組織是個機器,還是個生命體?AI 欣賞式探詢的發明人 David Cooperrider 說:組織是個值得擁抱的奇蹟

從昨天的李衛紅到今天的五毛,都蠻強調正向、相信人的潛力這塊的,後來發現他們是 重塑組織 這本書的翻譯人員之一 。

重塑組織可以看看 Yves 的介紹,馬上就有點概念:

https://funevo.com/2016/07/12/reinventing-organizations-agile-transformation/

也因為這門課,讓我認真去看了 "比賽,從心開始" 這本書,但是仍然覺得領導團隊、重塑組織這塊還有很多東西要學,還有很長的路要走。

diro 發表在 痞客邦 留言(0) 人氣()

http://scrumgatheringchina.com/2018/

RSG 10 年了,不過今年是我第一次參加 XD

三叔公已經在第一時間寫好了重點,我就另外再寫些他沒提到的吧 :-)

 

Keynote - Bas Vodde

Bas Vodde 在演講中有說到,一個好的演講應該是會好好利用說故事來分享觀念的,他就接著分享了一個小故事:

有一次,他在新加坡,正在開車載小孩回家,但是非常塞車,行進非常緩慢,小孩坐在車上有點不耐煩,跟就 Bas 說他想要車子開快一點...

Bas:但是現在塞車,就只能這麼慢

child:對向車道沒有車,我們可以開對向車道,就可以很快了

Bas:但那是 wrong direction,你要慢慢的往 right direction 前進,還是快速的往 wrong direction 前進?

child: 快速的往 wrong direction!

Bas 要表達的意思是,很多組織只看速度,卻不理會方向正不正確,這是很可惜的一點。

此外,Bas 也再次強調 feature team 的重要性及好處

 

騰訊敏捷轉型之路 - 薛軍

強調 feature team 的重要性,騰訊在轉型後也轉向 feature team.

當時CTO發現騰訊決策慢、離用戶遠,因此決定導入敏捷

當時訂了一個KPI,要把用戶從200W人變成400W人,所以大家的想法就是:加功能,就搞出了邊發郵件邊聊天 =.=,這是傳統軟件思維公司的做法,因此失敗了

當時QQ的刻板印象就是給年輕人用的,是玩具,因此他們改從 qqmail 出發。 

發佈為終 -> 發佈為始

投資很多資源在CI及自動化測試,做到每天release

不再寫進度報告(證明你媽是你媽...),而是用 working software 來代表一天的工作成果。每天 daily scrum 前,先玩半小時自己昨天的產出。

用戶有感這覺的事再做,不要去優化工程師自high的東西

優化用戶的高頻行為,就是一種減法策略

不敏捷,無微信

微信的 UX 進化之旅也蠻有意思的,很多小細節都很貼心,說當初 CTO 大概寄了一千封信出來討論一些功能上的 refine

 

重新塑造组織 - 李衛红

Bosch 的敏捷轉型推動者,分享了他在 Bosch 推動的心路歷程,比較偏向引導、人性、心靈層面領域。

我要強調的是,Bosch 也是 feature team 的架構(他們稱為 purpose team),這已經是今天第三次提到 feature team 了。

 

全链路项目管理 刘煦萍、曹靓(网易)

學了二個遊戲:拼樂高及 pizza工廠,這兩個應該在網路上都可以找到。

拼樂高要讓大家體會的是需求有多麼難描述清楚,以及你應該跟客戶更加緊密的溝通

Pizza 工廠跟傳球遊戲有點像,讓大家思考如何改善流程,還蠻有意思的。

我覺得相較於樂高遊戲,Jugg 的 Scrum Drawing Game 其實更好玩,可能也是時間比較充足的關係,更能讓你體驗整個 Scrum 的架構及精神,我真心推薦大家有機會一定要試試。

 

今日小結

Tell Story、Feature Team、相信人與團隊、遊戲學習

其實有時候跟大家交流並沒有什麼新東西 ,但重點是有些舊東西又會重新的啟發你一些想法,例如今天大家一直提到的 feature team,這概念很普通,但你在組織內可能沒有做的很好,現在一直收到 feature team 的訊息,又會讓人重新審視一下自己目前的狀況。在不同的 context 下,一樣的訊息會給你不一樣的啟發

引導及團隊這塊,當更偏向心靈層面時,是我一直比較弱的地方,我想接下來可以好好拜讀衛紅老師的文章,希望能有更多啟發。其實敏捷像是東西方哲學在靠攏時的一個中間產物。因此中間牽扯到的知識實在是太廣泛了。

diro 發表在 痞客邦 留言(0) 人氣()

 
在 LeSS 最後一天,聽到別的公司在導入敏捷時,也成立了很多很多的實踐社群 CoP (Community of Practice),其中一個是 心靈成長 CoP,讓我印象非常深刻,這邊來聊聊為什麼 :) 在第五項修練中,彼得聖吉一直在強調"整體":
「遠古的人類並未把自己跟所處的世界加以區分。那時的人類所看見的世界是一個未被打破的整體,人與自然合而為一。但不知自何時起,我們學會了區分自己, 視自己為分離的個體。我們刻意凸顯個人意識,強調獨立的意志、個人需求和個人的願望。這種自我意識的演化愈來愈強,我們也愈來愈與他人以及上帝所創造的萬物區分。 這對人類的演進而言,是福,也是禍。」
「在企業裡,行銷部門與製造部門處於對立狀態;第一線的管理人員對總公司管理當局懷有近乎憎惡的敵意;各部門的競爭更甚於跟同業的競爭。」
 
系統思考,講的是不要只看單一個體與簡單的因果關係,你以為你搞懂了整個公司的系統全貌,但從更高一個層級來看,公司也只是大自然中的一個小小個體。 而因為東西方哲學系統的差異、思考的方式不同,彼得聖吉很推崇東方哲學(從整體出發),深受釋儒道影響,也跟南懷瑾大師有許多互動:
南懷瑾與彼得.聖吉
 
而為了追求更高一個層級中的系統觀,我引用修練的軌跡中講的[天人合一],畫出了這三個層級:
 
[拼命工作]-[系統思考]-[天人合一]
註:拼命工作,或可稱做 [頭痛醫頭,腳痛醫腳]
 
在[系統思考]出現以前,為了追求更好,唯一能作的就是[拼命工作],但當你的意識進化到[系統思考]這一層級時,就會發現[拼命工作]不一定是有效果的,你可能是在"成長上限"的基模中被困住了,你必需做的是觀照整體、找到 Leverage points 來逆轉整個系統。但是你跟意識停留在[拼命工作]這一層級的人講[系統思考]時,通常他會覺得你腦袋壞了,舉狼圖騰的例子來說:
 
牧場獵人:身為一個牧場的守獲者,我拼了命把這些狼全殺光不是最好嗎!!你竟然叫我不要打狼打過頭!?
 
一樣的道理,現在要從[系統思考]升級到[天人合一]這一層級,想必也是很多人無法接受的(就跟小說 三体 裡面不同維度的概念一樣..),但是彼得聖吉一樣先為我們跨出了這一步:
修練的軌跡(已絕版,幸好當年有買 XDD)
推薦序:「第六項修練」是心的修練,是靈性的、感性的,是非理性的、沒有結論的。《修練的軌跡》讀起來也許比《第五項修練》更加「不怎麼容易讀」。但是,《第五項修練》的萬千讀者必能在脈絡當中讀出聖吉的苦心孤詣。他毫不吝惜地與我們分享更深層次的學習,在從腦到心的漫長旅程上,他舉一盞「U」型明燈,殷勤守護。
 
東西方哲學,各是兩個極端(整體與片段),看起來彼得聖吉很努力地把他們連結起來,令我佩服。也許有一天,我們會丟掉彼得聖吉的著作,反而直接從我們的釋儒道去體悟這些東西,看來真的要來研究一下大學、中庸跟管子才可以了 XD
 
最後,回到一開始講的,我對於對岸已經開始進化往[天人合一]邁進,感到震憾..

diro 發表在 痞客邦 留言(0) 人氣()

這次音響系統在環境的部份,電源跟擴散板算是跟上一次差比較多的地方。

電源線這次聽從建議試用看看 2.6mm 的單芯線,但因為台灣買不到,只好用代購從日本買了 20M 回來,因為船運時間比較久,所以還沒動工我就先下單了,用 buyee 代購還蠻方便的,而且因為電源線通常是以100米為單位在出售,好不容易找到一家有零售的,可以裁切任意長度(最小單位還是米啦) ,但下單時看起來很像是 "20條 1M",也請 buyee 先幫我確認是 "1條 20M",服務還蠻好的。

 

耶!收到了,真的是1條20M的 XD

 

2.6mm 的單芯線,真的是又粗又硬啊..

 

2.6mm 的單芯線,配上安可的排插,老闆說是無敵組合,但是因為整個系統都跟上一代不一樣了,所以其實我也不知道到底是厲害多少..

 

接著就是擴散板的部份,在平面圖出來的時侯,就帶著設計師跟老闆一起討論擴散板的位置、實作方式,但是符合老闆聲學要求的擴散板造型,擺在客廳實在是不大搭 =.=

 

 

大師:能做成這個樣子最好啦,我覺得沒有很醜啊?

我:我前面用薄木板把它遮住行不行啊?(OS:我真的無法認同你視覺上的美學 XDD),不然真的很不搭耶

大師:夠薄就可以。不過呢,這個擴散板一般木工師傅不願意做啦,做起來很麻煩..

設計師:我們的不會,我們的工班都可以配合。

大師:這邊櫃子的門,門片也不能太厚,不然會反射太多

設計師:但是這個門片很大,太薄會軟掉,不然我後面加幾個條啊可以嗎?

大師:應該可以。

我:那就弄幾個條啊,不用貼皮啦

設計師:我們沒有在做這麼low的東西啦(口頭禪又來了),還是要貼個皮才行

在經歷了幾次來回的討論之後,終於把擴散板定案下來了,總共做了3個擴散板,其它地方就照原本的設計,就能符合聲學要求。

 

 

師傅開始滿懷疑惑的做著這不知要幹啥的東西

 

電視牆後方的兩個擴散板成形了

 

完成後,外觀完全看不出來(師傅:這到底是殺小?)

 

師傅:這是故意要搞我嗎....

 

沒想到這門片裝起來還蠻好看的啊 XD

 

 

講了這麼多,實際聽起來到底怎麼樣呢?其實,還沒擺喇叭之前,在客廳講話時,我就發現,這裡講話的聲音真的是太乾淨了!!

 

最後,大師來幫我調整擺位及一些細節,調整前我覺得定位比原本的差很多,但調完後,整個定位都回來了,而且聲音聽起來又比以前的更加"寬鬆"!聽到這動人的音樂,覺得前面的努力都值得了 XDD

 

大師:沙發都還沒來就叫我來調音是怎樣..

 

真的是...會感動人的聲音!!

 

 

 

diro 發表在 痞客邦 留言(0) 人氣()

複雜的磁磚終於貼完了,嵌燈也順利的貼上去,最後的成品是很令人感動的,貼起來的質感真的很棒 XD 

 

 

特地找了漂亮的沐浴乳瓶來放在這精巧的置物格

 

 

 

 

白馬帝梵諾這款磚,搭 TOTO 的遙控器質感也很棒!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

diro 發表在 痞客邦 留言(0) 人氣()

這次裝潢的時侯,主臥跟客廳都採用了電動窗簾。客廳採用電動窗簾,最主要的原因是怕傢俱、木作久了會變色,所以想說用了電動窗簾,設定 schedule 後,白天就可以自動把窗簾拉上,增加傢俱及木作的耐用度。

 

 

 

但是這款電動窗簾其實並沒有 schedule 的功能,只有一個無線遙控器,因此只好自己來了 XD

 

原廠附的遙控器質感還不錯,是採用磁吸式跟掛架結合

 

我使用了 OpenHAB + RM2 Pro +RM Bridge 來完成第一步。

 

第一步 - 用 RM Bridge 來控制窗簾

http://rm-bridge.fun2code.de/

原本的 RM2 Pro 就可以透過它的 App 就來控制窗簾了,但 App 並沒有提供任何 API 或者 HTTP command 讓我們透過程式去操作,因此我另外用了 RM Bridge 操作 RM2 Pro。

RM Bridge 本身就有提供 learning code 的介面 http://rm-bridge.fun2code.de/rm_manage/code_learning.html,你可以自己定義指令名稱,然後按下原本的遙控器讓他學習即可。下面則是窗簾、投影機及布幕等學習完的指令清單。接下來只要透過 URL 就可以去發射遙控器訊號了。

 

 

 

當然,RM2 Pro 本身也有提供完整的 SDK,所以其實要全部自己來,不透過 RM Bridge 也是可以的。

 

第二步 - 整合進入 OpenHAB

http://www.openhab.org/

OpenHAB 是我目前最喜歡的 home automation 平台,因為各式各樣的 binding 非常豐富,從常見的 Philips Hue, Sonos, INSTEON,到 DAIKIN 冷氣,SAMSUNG電視,甚至我的音樂撥放器 SqueezeBox 都有。而一般 RD 最喜歡看到的 HTTP,TCP也都一應俱全,而且如果覺得不夠,也可以自己再擴充,真的是夢幻逸品啊 XD

 

這裡我是使用 HTTP binding 來跟 RM Bridge 整合。OpenHAB 最困難的地方是它的設定檔,官方網頁開宗明義就有說:很難學,但是很值得 XD

 

首先要把它加到 OpenHAB 的 item 中,以我的環境為例:

/opt/openhab/configurations/items/demo.items

 

在最後面加入

Switch  Curtain           "Living Room Curtain"                   { http=">[ON:GET:http://192.168.11.5:7474/code/openit] >[OFF:GET:http://192.168.11.5:7474/code/closeit]" }

 

這樣就多了一個 type 為 Switch 的 Curtain 物件,並在 ON/OFF 時分別會送不同的 URL

 

接下來要在 sitemaps 中把這個 Curtain 加進去:

/opt/openhab/configurations/sitemaps/homekit.sitemap

 

sitemap homekit label="Diro HomeKit" {

  Switch item=Curtain label="Curtain"

  Switch item=Screen label="Screen"

  Switch item=Projector label="Projector"

}

 

接下來啟動 OpenHAB 後,就可以透過瀏覽器看到:

 

這樣就可以透過 OpenHAB 去設定 schedule 來定時開關窗簾了。

 

第三步 - 整合 HomeKit bridge

https://github.com/htreu/OpenHAB-HomeKit-Bridge

最後就是要想辦法跟 SIRI 做整合了,只能說 OpenHAB 實在太強大了,貢獻者眾,竟然已經有人寫好了 HomeKit Bridge!!

 

因此只要正確的啟動,就沒有問題了

npm start -- --name "myopenhab-bridge" --sitemap homekit

 

如果平常沒有在用 node.js 的,應該會缺很多 package,基本上補一補就沒什麼問題了

npm install --save-dev babel-preset-es2015

npm install --save-dev babel-preset-stage-2

npm install stdio

npm install hap-nodejs

npm install ws

 

 

 

npm install debug

...

 

接下來最重要的是要安裝 eve  來編輯 HomeKit database。打開 eve 後,就會有設定介面,並且可以找到 myopenhab-bridge 這個裝置,加進去之後,就可以看到下面所有的設備啦(Curtain, Projector, Screen...)

 

接下來就跟操作一般 HomeKit 的設備一樣了,設定房間、設備名稱等,然後就可以用 SIRI 來控制他們了 :)

 

 

示範影片:

diro 發表在 痞客邦 留言(10) 人氣()