2018年10月18日 星期四

如何手動切換到Azure DevOps(VSTS)的新UI?

VSTS最近改名為Azure DevOps,其實對用戶的影響不大,原則上VSTS每季都在更新,所以有新功能不足為奇。

但在這段時間UI上卻大改了一番,這導致先前很多寫的blog和錄製的教學影片有需要調整,但調整非一朝一夕,所以還是得先讓大家知道一下切換新舊UI的方法。

如果你是舊版的UI,大概長得像底下這樣:

至於新版的UI,則是:

某些舊的專案,你進去之後可能還停留在舊版UI,其實你也可以手動切換成新版UI,接換的地方藏在右上角你的頭像底下:

其實,進去之後你會發現,一堆新舊功能的切換都放在這裡:

你可以選擇為整個組織或個人切換(上圖A),至於UI的切換則是在上圖B所標示的位置。如此一來,你就可以隨心所欲地為整個團隊或你個人切換喜歡的UI囉。

2018年10月14日 星期日

就說了,敏捷不要推動!

一個下午,以前公司的同事跑來,哭訴著在新工作中推動敏捷發生的種種慘況。

我盡可能的耐心聽完,跟大家知道的一樣,不外乎是一些常碰到的現象,長官們不支持,團隊成員後期的配合度也越來越低,數個月後看不到任何果效,反而被客戶抱怨開發品質變差,一直要配合測試『半成品』…凡此種種,導致了一個很顯而易見的結果:半年後團隊回到了原本習慣的開發方式,他則是離職謝罪,業界再添一個失敗的敏捷案例。

他說:『我不後悔,如果再來一次,我依舊會堅持推動敏捷!』

我笑笑地看著他,問道:『我以前說要怎麼推動敏捷,記得嗎?』

他看了看我,想了一會,回答:『你好像沒說過,你說的是…不要推動!』

『是啊,我以前說了,敏捷「不要推動! 」,我不是開玩笑的!』我笑著說。

『特別是當你的主管腦袋裡面根本沒有敏捷時,推動是沒用的』我喝了一口咖啡『反過來說,當你的團隊腦袋裡充滿敏捷時,根本不用推動,屆時你想攔都攔不住。』
 
『那不推動能怎麼辦呢?專案狀況很糟,難道放著不理嗎?』他有點不服氣。

『不是的,平常的時候,你得要帶風向。』

『 帶風向?』他看著我,一幅不可置信的樣子。『這些人的腦袋跟XX(消音處理)做的一樣,我怎麼可能帶得了風向? 』他又補了一句『別開玩笑了。』

『你有沒有想過』我問他:『如果你連風向都帶不了,又怎麼可能推動呢?』話說完,他傻了。

『所以,關於推動,你首先要做的是其實是擴張影響力。』我接著補充道:『帶出影響的方法有很多種,除了你自己以身作則的示範之外,推薦好的書、適合的研討會、有預算的話外請講師上課、在企業內安排敏捷成功案例分享...有很多事情可以做。基本上就是,洗腦。』
  
『我認識某家公司的CIO,這幾年舉凡公司會議,開口必提microservices、docker,即便他不確切知道這些term到底是什麼,或許跟他心裡想的有所差異,但不論如何,這些名詞朗朗上口,這也是洗腦成功的案例…』我說道。
 
他打斷我:『但是…如果主管們的腦袋裡沒有敏捷,那到底塞了些甚麼XX(再次消音處理)?』
 
我回答:『每一個層級的主管,在意的往往有所不同,很多人以為主管愛打高空,但原則上愈高層的主管,關切的事情卻總是愈務實(現實),你必須知道他們在想什麼,然後用他們的語言去和他們對話...』我接著說:『你看敏捷這個字很美,超級正面,似乎沒人不喜歡,沒錯,沒有人會反對敏捷。但真實情況是,大家擁抱敏捷,但根本不想改變,而大多數老闆的腦袋裡其實只有Cash Flow(現金流),你的敏捷能帶來立即的現金流嗎? 如果不行,對他來說意義就相當有限。』

『如果你推廣了半年的敏捷,但老闆看到的反而是眼下的現金流逐漸減少,那你覺得結果會如何?』我問。
 
『我們再換一個角色,拿HR主管來說,倘若你告訴他敏捷能夠面對變化、在乎價值,對她來說這可能跟天書一樣不知所云』我頓了一會兒,說道:『我們來練習一下好了,假設我要讓HR主管接受敏捷,你覺得我會怎麼做呢?』

他呆了半餉。見他沒反應,我回答:『我必須告訴她,企業接受了敏捷,將可以在既有的薪資預算內,聘請到更優秀的開發人員,因為開發人員喜歡和優秀的人一起在好的環境中共同工作...這件事情才是她關切的重點,她一聽,或許就有機會稍稍開始被打動...』

他插嘴:『等…等等,你是說…』『敏捷的開發人員比較便宜?』他瞪大眼睛看著我。

我立刻澄清:『我沒這麼說,別曲解我的意思』我補充:『你知道嗎? 有一個統計,影響大多數員工選擇留下來或離開的關鍵因素,不是薪資、也不是老闆,而是…』

『同事』他搶著回答。

『沒錯,你答對了。』

我說:『人們不是不會考慮薪資和主管的好壞,但往往影響員工離職或留下與否的最大因素,是同事之間的相處和團隊氣氛。採用敏捷開發的團隊,在其他客觀條件都一樣的狀況下,總是擁有比較好的合作氛圍,這已經是無庸置疑的事實了。』

『那為什麼我們的團隊氣氛那麼糟呢?』他嘆了口氣。

『這要問你囉,你真的覺得他們已經準備好開始了嗎?還是其實是你逼著大家去實現你心中那個理想的敏捷呢?』我問。

他默然不語。

我打開NB那張我很喜歡的投影片:

『還記得吧。』我問他。

頓了一下之後我接著道:『舉凡在組織內想要推動的變革,都勢必會遇到阻力,你要記得,沒有任何人喜歡自己的工作習慣和模式被外力改變,小從申請一枝鉛筆的流程、或是更換一套ERP系統、大至推動一個新的工作方法或工具,都是一樣的。多趁勢而為少逆勢而行,時不我予或局勢尚未明朗之前,別急著推動變革,你得先建構出影響力。別讓自己變成吃力又不討好的失敗案例。』

『還記得我上次說過怎麼建立影響力吧?』我問。『呵,我記得硬碟裡還有你那份slides…』他回答。我說:『先吃飯吧,待會我再談談關於影響力的部分…』

後記:
我不知道將來他換了新工作之後,是否又會忍不住想要改變別人的工作習慣,不過至少,下一次他應該會有更聰明的做法才是。

2018年10月13日 星期六

在azure vm上加掛SSD磁碟機

隨著科技的進步,背在身上的設備有越來越小越來越輕的趨勢,這個月入手了一台surface go,十吋的大小讓你很容易放入側背的包包裏面,不過他的運算能力也有一定的限制,也因為如此,最近在azure vm上的使用越來越兇,一般開發或是日常的工作,可能都在azure vm上搞定了。

最近因為一些操作上的需要,想要在azure上擴充一台SSD Disk,隨手把流程紀錄一下。在Azure上要擴充一顆硬碟相當容易,只需要在portal選擇磁碟的部分:

按下新增之後,你會看到『建立磁碟』的選項:

點選後會看到底下畫面:

上圖一資源群組的部分,我會建議你把建立出來的disk放在跟VM一樣的群組中,方便未來的管理。而圖中二的大小,當然就影響價格,你可以參可底下的連結:
https://azure.microsoft.com/zh-tw/pricing/details/managed-disks/

大概一分鐘左右會建立完成,完成後你只需要回到磁碟管理畫面中,從下拉的選項中就可以找到你剛才建立的磁碟,點選他後按下儲存即可:

你可以能會希望,這樣操作之後,進入VM就看到一顆活生生的硬碟? 無奈事與願違:

你並不會看到立刻出現了新的硬碟,這是正常的,就好比你自己組裝電腦,把硬碟接上去之後,還得做一些動作對吧? 沒錯,請執行diskmgmt.msc :

進入磁碟管理畫面中之後,你會看到剛建立的硬碟應該會被找到:


後面的動作就跟當年自己組裝電腦完全一樣囉,把硬碟加入並且指派磁碟機代號,完成format之後,就會看到該硬碟出現了:

其實還蠻簡單的對吧。

隨著身上的設備越來越輕,網路的連線越來越快,我們正邁向一個所有事情都可以在雲上搞定的時代,唯一需要注意的是你的荷包夠不夠深,信用卡額度夠不夠大而已…

enjoy it.

2018年10月10日 星期三

看看誰能存取你的Microsoft Account

這幾天在整理帳號。

我們先前介紹過Microsoft Graph API,你應該知道MS Account支援OAuth進行授權和身分驗證。也就是說,你透過你的MS Account登入某些網站或系統時,該應用程式可能會跟你索取你帳號的一些使用權限,那個畫面往往長得像是底下這樣(其實不只MS Account,你的google account更常被這樣使用):

最基本的,就是跟你索取你帳號的個人資料(像是姓名、email…etc.),當你用某個MS帳號登入第三方系統時,這是最常見的狀況。

但除此之外,你可能在按下『是』的時候,還同時間授予了該應用一些權限,諸如存取你的通訊錄、行事曆、或是你的onedrive檔案資料夾…等(這些權限的索取都會顯示在上面的清單中,但很多人沒有特別留意)。

一般來說,這些應用程式企圖取得這些授權並非惡意,只是為了做一些系統整合,像是把某一個預約添加到你的行事曆中、或是把手機上的照片存到你的Onedrive內這樣。

但,當某些App我們不常使用(或是該App被認為有安全性疑慮)時,你最好重新檢視一下你到底開了哪些權限給甚麼App?

底下這個位置,可以看到你到底授權了哪些應用程式存取你的MS Account。

https://account.live.com/consent/Manage

出現的畫面類似底下這樣:

你可以看到那些應用程式(或網站)可以存取你的帳號,點選編輯,將出現該應用程式可以存取你哪些資訊的細節:

畫面中列出最近一次的使用時間其實蠻貼心的,這有助於讓你更放心的決定是否要把授予該應用程式的權限刪除,一旦刪除了,該應用程式就無法拿著token去取得你的資料了。

當然,如果你要重新授予該應用程式權限,大部分的狀況下只需要重新用你的MS Account帳號登入該應用程式即可,如果你不很確定,可以看看最近一次的使用日期,如果很久沒用了,應該可以大方的將授予該應用的存取權限刪除。

趁著假日,趕快看看你的帳號到底給了哪些人(app/網站)哪些存取權限吧。

2018年10月4日 星期四

配合asp.net快速使用ngrok

最近常常需要透過ngrok來偵錯WebHook或WebAPI,前面曾經介紹過,當你下載了該工具之後,可以在DOS prompt下一個類似底下這樣的簡單指令來讓你的localhost網站能夠被外界讀取:

ngrok http 31217 -host-header="localhost:31217"

執行後你會看到類似底下的畫面:

這表示,上面這樣的指令已經可以讓ngrok把你的 http://localhost:31217 對應到 http://c5bfcbb9.ngrok.io

這樣的動作做久了之後,常常打command line不免覺得很煩,所以乾脆寫一個簡單的batch file:

透過然後把上面這個簡單的batch file放在桌面上(或是其他你順手的位置),需要ngrok為你服務時,只需要執行它:

輸入五位數的port NO.之後,就會自動運行ngrok囉…

hope it helps.

2018年10月3日 星期三

用滑鼠右鍵在檔案總管資料夾中開啟Command Line

我小時候很喜歡tom hanks演的一部電影: 阿甘正傳,劇裡面有一句對話: life is like a box of chocolates. you never know what you're gonna get.

曾經我以為,在這個最輝時期的市占率超過九成的Windows作業系統中,我會用到command line的機會應該越來越少了,但人生,就像阿甘說的,你永遠不知道接下來會碰到什麼。

好吧,我碰到的是,我已經開cmd line開到很煩的程度了,而且我時常必須在特定資料夾底下開command line,我一開始傻傻的先開啟prompt,然後透過CD指令切換資料夾。

這總蠢事做久了之後,我就想我必須要擁有一個功能。那就是,我想要在檔案總管裡,按下滑鼠右鍵,就出現底下這樣的選單『在此開啟CmdLine』:

然後點選之後,就自動幫我開啟prompt並且直接切換到該資料夾:

that’s it. 我要的不多。

如何實現這個功能? Windows 的秘密總是在機碼裡:

只要修改你電腦上的registry,加上上面這些schema即可。如果你想比較快的完成這件事情,把上面這些指令存成一個副檔名為.reg的檔案,我已經幫你存好了:

http://arock.blob.core.windows.net/blogdata201810/%E5%9C%A8%E6%AD%A4%E9%96%8B%E5%95%9FCommand%20Line.reg

然後去執行它,你會看到:

這很正常,因為修改機碼是一件危險的事情,特別是從網路上來源不明的設定檔。如果你很有勇氣地按下Yes,那會看到:

好了,現在你在檔案總管中,點選特定資料夾按下滑鼠右鍵,就會出現這個選項了:

enjoy it.

2018年9月16日 星期日

使用C#開發Linebot(27) - 在發送的訊息中加上Quick Reply

LINE在今年的7月底推出了Quick Reply機制,他可以讓使用者可以更輕鬆的回覆Line bot所發送的問題,官方細節你可以參可底下連結:
https://developers.line.me/en/news/2018/07/31

過去,我們要讓用戶回答Line bot的某個問題,除了透過自然語言(讓用戶隨意打)的方式,就是透過Template Message,讓line bot跳出一整塊大面積的選單訊息,像是:

但這樣的Tempalte Message佔用了很大一塊版面,每塊卻又只能最多放四個選項,有些時候顯得大而無當。特別是若你其實只是要用戶選擇一個簡單的答案時,根本不需要像上面這樣的Template Message又是大圖又是標題的。

這時,你可以採用底下這樣的QuickReply來解決:

Quick Reply 就是上圖Menu上方的小小選項(Action),最多可以出現13個Action,並且支援postback, message, datetime picker, camera, camera roll等各種action。

要實現這樣的功能很簡單,請參考底下這樣的程式碼:

過去我們在發送訊息的時候,也是採用PushMessage,而為了支援QuickReply的功能,我們額外建立了一個TextMessage類別(第2行),你可以直接建立該物件,並指定要顯示的訊息。

接著,透過該物件的quickReply屬性,你可以在items集合中以Add方法加入想要新增的QuickReply item。

在上面例子中,我們新增了三個都是一般的QuickReplyMessageAction,該action的行為如同先前介紹過在TemplateMessage中的MessageAction一般,就是顯示一個標題,執行結果如下:

圖示則是第三個參數 new Uri(…)所指定的,別忘了必須是https並且為.png格式。

如此一來,用戶就可以直接點選上面的『特休』、『事假』、『病假』其中之一。點選時的行為就等同於用戶說了『特休』、『事假』、『病假』這幾個字一般,這就是QuickReplyMessageAction所呈現的功能。

而更精彩的是,除了QuickReplyMessageAction之外,前面提到過,還有可以讓用戶直接選擇時間日期的QuickReplyDatetimePickerAction,支援地圖位置選擇的QuickReplyLocationAction,支援相機的QuickReplyCameraAction與QuickReplyCamerarollAction…,這些功能可以讓你的Line bot,直接要求用戶提供座標位置、照片、輸入時間日期…等,像是:

如此一來,就不用全部仰賴自然語言輸入了,不錯吧,快試試看囉…

要透過LineBotSDK使用此功能,別忘了要升級到 0.8.2以上的版本唷。更詳細的教學影片請參考我們的線上課程囉。

-----------
線上課程:https://www.udemy.com/line-bot/
電子書:http://studyhost.blogspot.tw/2017/12/line-bot.html
LineBotSDK:https://www.nuget.org/packages/LineBotSDK
如果需要即時取得更多相關訊息,可按這裡加入FB專頁。若這篇文章對您有所幫助,請幫我們分享出去,謝謝您的支持。

Related Posts Plugin for WordPress, Blogger...

熱門文章