2023-06-14

陪你讀冊 | 如何讓人說實話

    你是否記得?小時候就不斷被父母叮嚀,碰到陌生人問
你奇怪的問題,比方說問你家在哪裡啊?你家的電話號碼是幾號啊?千萬不可以隨便回答陌生人,如果對方是壞人的話就慘囉。對於這些記憶我想你都還刻骨銘心,但其實人不可能永遠保持警戒,當你遇到一個外表看似兇悍,講話口吻也不怎麼得體的陌生人,自然你心中就會把他預設成「壞人」,除了盡量避免交談之外,也會用無謂的話語來替代回答。但如果你遇到的是一個帥哥/美女,或是一個看起來「乾乾淨淨」的「正常人」,再經由一些「套路」,你極有可能就自然而然在渾然不覺的情況下說出一堆平常不會透漏的資料,甚至是你的生日、結婚紀年日、甚至連身分證號碼都被套出... ...
    書中提到一個FBI受訓學員向珠寶店店員套話的實際案例,大家應該都知道,認識一個新朋友最重要的是「第一印象」,所以在面對面說話之前,首先就要利用「肢體語言」釋出三大友好信號--閃眉、歪頭、微笑以營造和諧氛圍,接著用想替女友選擇生日禮物開啟對話。
    學員:「哇,這款好精緻喔,我都想把它直接放入口袋拿走」(使用「推定陳述」技巧)
    店員:「嗯,我覺得你可以直接放進口袋」
    學員:「可是我看到那裏有監視器,這樣我會被抓吧!」(推定陳述)
    店員:「其實不會啦,因為那些監視器都是假的」
    學員:「假的?!」(裝出不可置信的樣子),「可是賣場有保全吧,他們應該很嚴密監控吧!」(推定陳述)
    店員:「哈哈,我一天大概只會看到他們一次,都不知道平常在哪裡鬼混」
    學員:「那只剩下你囉,那你應該要親自應付搶匪吧!」(推定陳述)
    店員:「當然不會啦,老闆有說歹徒要就讓他們拿走吧」
    學員:「真的假的?!」(不可置信的樣子)
    店員:「對,如果店內損失不超過一千美元,我們連報案都不用耶」
    好了,後續還有其他的對話內容,包含店員把保險箱的位置、保險箱裡面有的現金都「套」了出來。
    看到這邊你應該腦海中跟我一樣,已經浮現出整段對話內容,甚至可以接軌知名電視影集「六人行」(Friends)的某些劇中畫面,感覺是如此的真實可以執行,雖然看似簡單,其實這些套話應用許多人性心理不可抗拒的技巧,與其說是有人故意套你話,不如說是「你骨子裡就是會情不自禁想把話說出來」
    要知道人類天生就有糾正別人的本能,因為這會讓人自認為「高人一等」,不然網路上為什麼充斥這麼多「鍵盤柯南」、「網路專家」、「肉搜行為」呢?加上人天生就愛談八卦,而這些八卦往往也容易把一些商業機密夾帶出去。再來人都需要被肯定,本書中舉到的一個竊取各國學者專家的實際案例剛好跟我日前讀到的「我從太空考古」有87分像。

    另書作者提到他們因為在考古學中的新發現,被邀請至中國參與大型的國際研討會,所有的旅費皆為免費之外,他們一行所住的飯店、會議展覽都是五星級,而在會場中也不時有中國當地的學者「恭維般地請教」,但在如何讓人說實話的書中,這些著名的專家則是有些因此變成了背叛自己國家出賣機密的間諜...此外人也都有互惠的習性,別說人類,這應該是埋在地球上任何群居的動物DNA裡的天性,今天你給我水果,明天我給你捕到的魚,想當然而對話、情報也都是互惠的。最後要提的本能是人都把自己看做是專業領域的高手,大多數的人都對自己的職場表現感到自豪,也藉此提升自我價值,所以通常你跟人聊他們的工作,往往可以得到意外的商業訊息。
    書中還提到許多真實套話案例與技巧,這些案例真實到讓人超想立刻衝到街上隨便找個路人,或是一間商店的店員「試刀」看看。當然這些技巧也要因人而異使用,所以書中也把MBTI人格類型做了簡介,讓你知道什麼樣的技巧適用於在哪些人格特質,實際在套話的時候更不會出錯,也更有效率。

2023-05-11

你的天王山究竟是「團隊」還是「個人」

2023/5/10是NBA季後賽西區第二輪,金塊對上太陽系列賽G5對戰2-2平手搶聽牌的天王山之戰。NBA轉播的習慣是第四節開打前,場邊記者會訪問第三節結束領先的球隊的總教練,下方大家可以看到金塊總教練Michael Malone接受採訪的片段。

   

  只見Malone教練充滿激情、聲嘶力竭後沙啞到不行的解釋比賽情況,第四節開打前立刻跟記者與鏡頭前的觀眾匆匆說了:"Sorry, byebye",然後轉身離去。但有常看轉播的你可能也會注意到,很多教練即使在第四節開打後仍舊跟記者聊得很開心,甚至繼續有說有笑到比賽都經過了一兩分鐘教練才回到場上...畢竟總教練不是球員有精彩的highlight可以登上全美轉播的鏡頭,更別談單獨受訪的時間可以提升自己的知名度。 

  同樣的情況拉回職場,常常可以碰到大部分帶團隊的主管,花在「組織團隊往前走的時間」遠大於自己「參與更高層主管開會的時間」,如果事先早已把事情安排妥善讓團隊運作當然這麼作無可厚非,但弔詭的是團隊都已經像是一盤散沙,主管自己還在拚所謂的「個人業績」、「個人曝光度」、「個人的向上管理」。 

  以個人帶團隊的經驗,個人習慣把需要跟團隊溝通的時間先作一個固定時間的安排,比方說每日早上的站立會議,以及每兩週一次的retrospective會議,這些時間基本上我絕對不會參與或答應外部團隊的會議,對個人來說最重要的是「團隊產出」,這才是真正可以替公司帶來成長動能的主要課題

  一個良好的企業本身就應該要從上到下避免上述的為了「個人自轉」而造成「企業空轉」的情形,畢竟上梁不正下梁歪,上位的人靠的是「個人曝光度」還是「團隊業績」爬到上去的其實大家眼睛都是雪亮,有一就會有二,當主管都是靠向上管理而組成的空轉層,企業業績長久下來自然會陷入空轉

  但進社會歷練多年,往往我們只能感嘆理想很美好,現實卻很骨感

  拉回到比賽結果,金塊最後以16分之差贏太陽搶下天王山之戰。

2022-11-22

給追求高效工作的您:懂得歸納團隊目標陣行持續前進


圖片來源:FIFA WORLD CUP粉絲團


試問自己在工作上您自己、或您待的團隊、甚至您領導的團隊常常有以下狀況:
  • 覺得事情又多又雜,無法決定哪件事情該先完成
  • 覺得高層主管老是空穴來風,常常拍板分配一堆芝麻蒜皮卻又一定得做的工作
  • 覺得客戶永遠有找不完的碴,三不五時就要來打斷既有工作規畫與進展
  • 覺得團隊成員無法跟上自己的腳步,千叮嚀萬交代還做不好事情
  • 明明團隊用了著名的敏捷框架,也執行每日站立會議、每週review會議,但事情永遠像是炸了鍋處理不完
如果有以上症頭,代表團隊已經出現工作量與產能入不敷出的狀況,不管如何,以下提供個人、團隊運行兩種建議。

【給團隊】
  • 首先我們要有一個認知,工作量已經無法讓團隊消化,那身為主管的您,是否有辦法把不重要但卻要花時間的瑣事給減量甚至直接幹掉。舉例來說,每日站立會議是否能避免流於形式的流水帳工作報告,把落落長的每日30分站立會議縮為5分鐘的有效溝通會議。舉例來說,弊司在2019年全公司導入SCRUM作為敏捷開發的框架前,個人早在2013年領導團隊時就已經率先運行,因為有著多年一線開發經驗,我知道怎樣的溝通細節會是團隊所需,加上每天都在站,所有團隊成員的進度早已聊若指掌,所以常常在專案一忙起來,我就會直接不讓團隊成員一一報告,取而代之是我用幾句話直接總結,然後散會
  • 或是有些例行性報告,乾脆省略讓團隊專心在客戶或長期目標需要的產出即可。
  • 身為主管(或是PM)要非常清楚專案短、中、長期分別要完成的目標有哪些,千萬不要連自己在哪邊都不知道,然後接近Deadline時都還沒把進度分配給成員去執行。
  • 如果主管忙不過來,請適時的授權;好的授權不僅可以加速產出,提升團隊成員成長,而不是嘴上說一套要培養優秀接班人,但卻連放手都做不到。
  • 溝通效率:當面 > 電話 or 遠端語音 > 訊息 > 郵件 >>>>> 糾結於團隊內部討論,卻不實際找業主、第三方討論確認。
  • 只參加跟團隊有關的會議,把時間用在領導團隊非到處開會
【給個人】
  • 雖然最近很流行Quiet quitting一詞,但其實學會有效率的工作才是達成此心流狀態的最佳實踐。
  • 對於有升任主管企圖的同仁,學會向上管理、適時向主管反應你想擔更多的責任。不過世間本來就無法事事順心隨意,常常你很努力工作、也能高效並超越期待的完成目標,但主管還是無法放手... ...如果是這樣沒必要讓自己委屈,講到這應該就懂了吧。
  • 只參加跟自己有關的會議。
【Best Practice】
  • 找一個頭腦最清醒的時間,依個人經驗是早晨,所以個人非常、超級、無敵討厭早上就要浪費時間開會。
  • 不要一到公司就馬上收信、什麼都不想開始工作,請先保持清醒的把事情全盤統籌review,快速排出優先順序,規劃出來,畫出一張心中對於團隊的短、中、長期的目標陣行
  • 有了目標陣行後,不管此時再來什麼樣雜七雜八的瑣事基本上也無所畏懼,依著目標陣行讓團隊持續前進即可。

2021-07-10

80後的美好年代

    封筆許久,因緣際會來微解封一下.嗯...希望可以就此積分起來.

    近日才又承租N家的線上影音串流,拜賞一部日前討論熱烈且被封為神劇的The Quees's Gambit,其中一幕劇情是Beth已經獲得美國公開賽冠軍,名滿天下的時候在賣場巧遇高中同學推著嬰兒車瞎拼酒採購時的一段聊天,高中同學對著能夠靠比賽而四處跨州甚至是跨國旅行的Beth透露著欽羨的眼神.這幕讓我這種凡夫俗子突然有種好險自己是生80年代後的人. 

    在我們80年代初期出生的這一輩,並沒有戰後嬰兒潮團塊世代的人口紅利加持,加上自己更衰尾剛好落在人口出生率最高的那幾年,想當然而在資源相同,但競爭肯定遠比團塊世代人競爭來得激烈,從近年來已開發國家的人口出生率瘋狂下降、結婚年齡晚、不婚主義、草食主義橫行的社會現象早已不言而喻,更別提那節節攀升的房價... 

    但這樣的現代社會卻讓平凡的小我似乎可以更加悠遊,我們不需要才氣縱橫、也不需要功成名就,一年中只要有一段時間好好工作,然後就可以透過休假或一些轉換就讓自己環遊世界,更別提現在的網路與資訊發達,基本上只要一只背包、一本還沒過期的護照、一些存款、智慧型手機加上一點點勇氣,隨時都可以買張機票就前往世界各地,到當地再用APP找尋住宿都還來得及. 

    也許我們沒有著團塊世代的優勢,但我們有的是80後的新美好年代.

2018-03-12

[JAVA] How to type " underline _ " character using java.awt.Robot

java.awt.Robot is a very powerful library to control and simulate human's keyboard type and mouse click actions. But some special characters like "_" (the library contanst is KeyEvent.VK_UNDERSCORE) will invoke an error as follow.

       
Exception in thread "main" java.lang.IllegalArgumentException: Invalid key code
 at sun.awt.windows.WRobotPeer.keyPress(Native Method)
 at java.awt.Robot.keyPress(Robot.java:243)


The solution is:
       
public void underline() {
    keyPress(KeyEvent.VK_SHIFT);
    keyPress(KeyEvent.VK_MINUS);
    keyRelease(KeyEvent.VK_MINUS);
    keyRelease(KeyEvent.VK_SHIFT);
}

public void keyClick(int k) {
    keyPress(k);
    delay(50);
    keyRelease(k);
}


Cheers.



2017-12-28

用AI向經典StarCraft致敬: 安裝建置Deepmind pysc2


好久沒寫文啦,歲末年終,照慣例總要寫個文來收個尾,今天讓7年級頭的在下用AI向經典的PC即時對戰遊戲Startcraft星海爭霸致敬。

暨Deepmind研發的Alpha GO在圍棋領域大敗人類後,現在他們要向即時戰略進軍啦。雖然個人是不太看好能在近年就有所突破,畢竟兩款Game在本質複雜度就不是同個檔次,但這不是本文討論範圍。大概是今年五月就有發出消息,然後Deepmind八月釋出pysc2的操作tool開源專案連結在此。

pysc2是暴雪跟Deepmind兩間公司合作的開源API,用來操作模擬人類操作Starcraft這款遊戲,看到py就知道這是用python寫的小工具,sc2就是目前只支援starcraft 2(可是我只會玩一代,泣),以下是安裝建置Deepmind pysc2說明。

[系統環境]

  • Windows 10(打遊戲方便...)
  • Blizzard Starcraft II,現在免費,要裝趕快~
  • Python 2.7+ 或 3.4+

[安裝步驟]

  • 首先安裝python環境,請自行搜尋python安裝檔.msi,我的版本是2.7.8
  • 然後去設定python的系統環境變數,請開啟控制台 => 系統 => 環境變數,新增 %PYTHON_HOME%,值應該是 C:/Python27;再來於 path 補上 ;%PYTHON_HOME。大致上就是一般補環境變數,方便 cmd 操作。這裡要注意的是,Windows 10似乎要重開機才會生效,倒是跟之前的版本設定後立即生效不一樣。
  • 再來裝一下pysc2,
    • 先下載src: $ git clone https://github.com/deepmind/pysc2.git
    • $ pip install pysc2
  • 再來要先抓地圖,否則工具跑不起來,放在 StarcraftII/Maps/ 資料夾中,沒有的話就自己建吧
[執行]
  • 執行Agent (default)
    • $python -m pysc2.bin.agent --map Simple64

2017-04-07

[Basketball] 為什麼NBA球員就算裁判已經響哨,還是要去蓋對方球員的火鍋


    不知道常看NBA的大家有沒有注意到一個現象,當比賽暫停,裁判都已經吹哨了,這時候如果A隊球員如果投球,B隊球員怎樣就是要去刪他火鍋(是手癢嗎)

    其實這跟運動心理學還有人類大腦有關,當球員能順利投進球(不管是否比賽進行中),大腦會因為"進球成功"這件事情分泌多巴胺,多巴胺的分泌可以讓球員不僅心理上的快樂,連帶體力跟精神都能更加維持。其二,讓對方多投籃一次,不管投進與否都會給對方調整的機會,手感不好可以修正彈道,手感順的人可以更順(順啦~)

    所以常打球的你應該會發現,如果某一天你的手感特別好,就會越投越順,即使跳了三天三夜也不會累;或者有項運動:"桌球"更能體現多巴胺的神效,只要成功把球打進檯面腦內就分泌多巴胺,恰恰好桌球可以在極短時間、極短距離就大量完成"打進檯面"的成功激勵,所以初學者很容易上癮打桌球,即使打不好一直撿球也會樂此不疲(真心不騙)

    另外,投籃不進也會讓球員肌肉緊繃(下意識),產生些微意志沮喪的心情。


    總而言之,如果我是敵隊球員,當然不會給對手製造任何製造多巴胺的機會,不讓你找到投籃進球的節奏,就算裁判響哨比賽暫停,我還是要刪你火鍋,蓋到你的。

2017-03-09

[砸七砸八] 遷移自建Docker私有庫 & 客製化公有庫Docker並納入私有庫

最近用了一些Dockerfile與docker的東西,快速筆記一下避免忘記:

[遷移自建docker registry]

  • 想自建docker registry(也就是docker image repository倉庫)自有庫,很簡單,直接到官方docker build一下就可以自建倉庫,略述。
  • 當自有庫運行一段時間,你在上面已經有了大量自建的docker image後,如果想要遷移,這時候你可以把整個registry做docker打包,然後tar起來並且壓縮,略述。
  • 接著把壓縮的registry tar用一般檔案搬移的方式mv/cp/scp/rsync到任何新的宿主機HOST上,把他解壓縮並docker run就可以繼續執行。
    • 參考指令(以下僅為範例指令,請依當下環境自行修改)。
    • #docker run -d -p 4000:5000 --restart=always --name registry-name -v 'pwd'/your-data:/var/lib/registry registry:version

  • 無網路問題,因為container共享HOST網路。

[客製化公有庫的Dockerfile & 納入私有庫]
  • 網路上很多公有庫的docker很好用,但總是需要客製化,無所謂,反正就是拿他的Dockerfile來修改。

  • 修改後重建指令
    • #docker build -t "sean/docker-image:v030901" .
  • 貼上自有庫registry認得的tag
    • #docker tag -f sean/docker-image:v030901 ${registry_ip:registry:port}/${project}/${docker-image-name}:${tag_version}
  • 上傳到自有庫方便自己使用,可以跟自己的CI/CD流程自動化串整
    • #docker push ${registry_ip:registry:port}/${project}/${docker-image-name}:${tag_version}

2017-01-18

陪你讀冊 | 決斷兩秒間(Blink: The Power of Thinking Without Thinking)

圖片來源:Blink: The Power of Thinking Without Thinking

    受到羅輯思維視頻啟發,以往個人看書,都是看過、畫重點後就把書擱在一旁,看過的書目其實不少,但真要從記憶殿堂中把知識取出再利用的成效明顯不彰(汗...)。而羅輯思維推出的"得到APP"其中之一萬維鋼欄目的知識積累方法,是透過將自己看過的書寫成筆記,以撰寫的方法進行梳理自己的邏輯思維。

    最近迷上Malcolm Gladwell的書籍,從最早的異數:超凡與平凡的界線在哪?開始閱讀,陸陸續續又買了以小勝大:弱者如何找到優勢,反敗為勝?引爆趨勢:小改變如何引發大流行、還有本次文章要提到的決斷2秒間:擷取關鍵資訊,發揮不假思索的力量,等有空會一本本把閱讀手札補上。

    決斷2秒間:擷取關鍵資訊,發揮不假思索的力量所有探討的主題圍繞在"薄片擷取"理論,所謂薄片擷取指的就是人可以透過數年成長歷練的經驗以及知識,在很短的時間只要看過一眼,就可以得出一個可能比運作數個月的研究工作團隊還精準的判斷,為此書裡舉了一個美國加州蓋提美術館(J. Paul Getty Museum)在1983年買到假大理石雕塑(Getty kouros)的故事做為引述。

2016-11-04

[Selenium] How to solve org.openqa.selenium.remote.ProtocolHandshake createSession problem

    近期用 Selenium 在沒有更新任何源碼的情況,再次執行後遇到以下錯誤:


Starting ChromeDriver 2.23.409699 (49b0fa931cda1caad0ae15b7d1b68004acd05129) on port 21975
Only local connections are allowed.
十一月 04, 2016 1:55:08 下午 org.openqa.selenium.remote.ProtocolHandshake createSession
資訊: Attempting bi-dialect session, assuming Postel's Law holds true on the remote end
十一月 04, 2016 1:55:10 下午 org.openqa.selenium.remote.ProtocolHandshake createSession
資訊: Detected dialect: OSS
Exception in thread "main" org.openqa.selenium.NoSuchSessionException: no such session
  (Driver info: chromedriver=2.23.409699 (49b0fa931cda1caad0ae15b7d1b68004acd05129),platform=Windows NT 6.1.7601 SP1 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 4 milliseconds
Build info: version: '3.0.0-beta4', revision: '3169782', time: '2016-09-29 10:30:04 -0700'


    解法是要將 ChromeDriver 2.23 更新到 2.25 即可,不過這點還滿弔詭的,因為我個人並沒有更動到任何既有源碼或更新 Selenium 套件,代表 ChromeDriver 本身一定有做一些檢查,這點有空再來研究。

[額外資訊]

2016-11-03

Ubuntu安裝Java JDK 7或JDK 8

介紹於 Ubuntu 14.04 / 16.04 上安裝 Java JDK 7 / 8 的方法。

[說明]
當網路環境處於離線,或不一定直接能存取到internet仰賴proxy時,使用ppa的安裝基本會失效,乾脆到官網上下載 jdk 檔案然後直接進行設定反而是最快的做法。

[步驟]
  1. 請至官網下載JDK,我們這裡用 jdk1.8.0_111 這個版本作為示範,請自行替換版號。
  2. 建立 Ubuntu 的 jvm 目錄,指令:
    • #sudo mkdir /usr/lib/jvm
  3. 將下載的 jdk 檔案解壓縮到 jvm 目錄,指令:
    • #sudo tar -zxvf jdk-8u111-linux-x64.tar.gz -C /usr/lib/jvm
  4. 再來要將 java 預設路徑告知系統,請:
    • #sudo vim ~/.bashrc
    • 添加以下內容
    •        
      export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_111
      export JRE_HOME=${JAVA_HOME}/jre
      export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
      export PATH=${JAVA_HOME}/bin:$PATH
      
      
    • 使環境變數生效
    • #source ~/.bashrc
  5. 然後執行以下步驟,讓 Ubuntu 認得這個版本的 JDK
    • #sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_111/bin/java 300
    • #sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.8.0_111/bin/javac 300  

2016-11-02

[Ubuntu] 設定ssh可遠端用密碼登入

    某些版本的Ubuntu預設沒有開啟ssh遠端用帳密登入的權限,所以當你使用Puttie等連線軟體的時候會遇到登入錯誤,解法如下:

  1. 直接到Server上登入Ubuntu Console
  2. #sudo vim /etc/ssh/sshd_config
  3. 將 PasswordAuthentication 變數由 no 改為 yes
  4. 重啟ssh service,指令:/etc/init.d/ssh restart
  5. 即可由遠端透過ssh登入
  6. #sudo -s
  7. #passwd

2016-10-29

[自動化網頁測試] 於Ubuntu使用Selenium整合Headless Firefox

這裡介紹Geb(瀏覽器自動化browser automation)的解決方案Selenium + Headless Firefox。

[環境與工具]

  • Ubuntu Server 14.04 LTS
  • JDK 1.8.0_91(注意!! jdk 1.7 Selenium 會有問題)
  • Ubuntu沒有GUI,需要使用xvfb(x window virtual framebuffer)作為headless browsergraphic render
  • Web Driver
    • firefox webdrivergeckodriver-v0.10.0
    • google chrome webdriverchromedriver_win32 / linux64
    • 請自行下載並注意執行環境平台
[xvfb & firefox]
  • 安裝指令
    • #sudo apt-get install firefox xvfb
  • 安裝過程如果缺少字型
    • #sudo apt-get update
    • #sudo apt-get install -y xorg xvfb dbus-x11 xfonts-100dpi xfonts-75dpi xfonts-cyrillic
  • 啟動xvfbgraphic render,頻道0~99任選,1280x960x16為模擬視窗大小,目前使用此值運作正常
    • #Xvfb :99 -ac -screen 0 1280x960x16
  • 擷取xvfb畫面