2015年11月22日

結束與開始

曾經,想自己使用 Linux 架設 WordPress ,後來要搞一堆有的沒的東西,人也懶了,文章也難產了... 到後來決定使用 Service ,也就是 Blogger ,也已經經過好幾個好幾個年頭,而有開始,也有結束;這段時間,在這個 Blogger ,共有 60 萬人曾經看過,( 或被我誤導 XDD ) 我寫的各種文章,也有很多人留言,有鼓勵,有問問題,也有一些批評,和馬上被我丟到垃圾桶的廣告... 很遺憾的是沒辦法一個一個回復大家的問題,但很謝謝也很開心自己寫的筆記能對大家多多少少有些微不足道的幫助~~

而隨著時間的流逝,這裡也即將變成一個歷史的記憶,就如同標題一樣,有開始,自然也會有結束,這在今天,小弟我也在這邊宣告了 天空的垃圾場 Blogger 的結束...而雖然結束了,但這裡的文章,依舊會保持在這邊,繼續留在網際網路上幫(一ˊ)助( ㄉㄨˊ)大家。

但結束了,並不代表完結,就如同一些小店因為房租太貴,搬家一樣,小弟也花了一段時間陸陸續續的將文章轉移到了新的地方 ( 所以這篇有搬遷啟示的意味 XDD ),而新的住所就是大家熟悉的 GitHub Page.

http://skychang.github.io

或許有人會很好奇,為什麼要搬家勒 ?? Blogger 不是好好的嗎??

會選擇新的家,其實有幾個一直在思考的考量...其中一個考量是覺得 Blogger 沒在進步了...在以前,用編輯器寫文章,傳上去是一件理所當然的事情,但這個時代變了,而 Blogger 一直沒有跟上...

是的,小弟我的第一個考量,就是 MD 格式 ( MarkDown ) ,就如同上面說的,以前的模式是理所當然,但現在,小弟我更希望能用 MD 格式寫文章,而這個 MD 格式就如同 Source Code一樣,我只要存著這 Source Code ,我就可以自由的轉成 Html,甚至是在不同的平台轉換...而如今的 Blogger 做不到...或是說,要花一些功夫來做到...

其次是,以前好用的 Windows LiveWriter 也不支援新的 Windows OS,甚至是 MacOS,雖然 LiveWriter 真的是神物,搭配 Blogger 可以輕鬆處理貼圖問題...但在不支援的情況下,也真的是件很麻煩的事情了....當然,還是有其他的解決方案,但後來聽到 LiveWriter 官方也確定不維護,並且 Open Source 後,我思考後,也覺得差不多該放棄了...

後來,決定使用 GitHub Page,原因也很簡單,免費,而且可以針對文章進行版控,而針對 MD 也可以進行版本控制,未來更方便的將文章轉移到 GitBook 等平台...雖然在貼圖上面變的比較麻煩,也要自己處理一些留言和分析的東西,但現在也可以用 Sublime、Visual Studio 甚至是 Visual Studio Code 來寫文章了,這也代表,可以跨平台了,撰寫的過程也變的更加順暢了,也變的更像在寫程式 ( 寫完後,要先簽入,還要 CI CD ... ),而這也是小弟我轉換平台的原因。

另外,或許有人會想問,那為什麼網址不順便換過去勒??
原因很簡單,因為我想讓加入書籤的朋友,依舊能找到文章的所在....
雖然可以做到讓新的站,和這裡的每篇網址長的都一模一樣,但那畢竟是大量的工,與其這樣,小弟我後來還是決定,做一個切割...這裡還是維持這就好,讓大家找的到文章還是比較重要~~

最後,這裡的文章,依舊會保留在這邊,但未來也不會在這裡進行維護,而新的地方,也同樣會有這裡的所有文章... ( 但排版不知道會變成怎樣就是了 XDD ),所以,以後看到兩個天空的垃圾場,不用覺得訝異喔 XDDDDD

題外話,據說今天也是 點部落 二轉的日子,或許有人會問,為什麼不轉去 點部落 呢??
點部落是個好平台,但我進行轉換的過程中,完全不知道 點部落 要二轉,後來都轉的差不多的時候,我也弄的差不多了 XDDD 所以就直接搬到 GitHub 上面去了..... 或許未來 點部落 三轉,會再搬過去也說不定喔!!~

最後的最後,謝謝 Google Blogger 的這個平台,也謝謝曾經來看過,那 60 萬的瀏覽次數,我們在新的地方見!!~

Sky. 2015/11/22

2015年7月31日

紀錄文 - Windows 10 發佈

前言

基本上,就這依舊是個紀錄文,紀錄一下 Windows 10 的發表,所以內容不會有什麼新功能介紹之類的,就存粹是個紀錄文…

開始

至 Windows 8 這個雙面刃上市以來,就一直被人家罵到臭頭,就算推出了8.1大家還是不領情… ( 其實小弟我是用的還滿習慣的XDD )
而隨著 Microsoft 的組織改組,新的執行長上任,整個開發團隊開始跑敏捷 Scrum ,更加的在乎使用者的建議:而這個模式下的產物就是 Windows 10

其實看整個新聞過程,Windows 10 從開始列的回歸XDD,就可以明顯感受到很重視使用者的意見,也讓使用者一片叫好 ( 可見開始列真的很重要…但小弟真的無感阿XDD ),而後隨著各個預覽版本,提供給使用者下載,甚至可以免費升級等新聞,也可以看到 Microsoft 正走向不同的路..

而經過長時間的過程 ( 小弟也是長時間的試用,踩坑… ) 終於在 2015/07/29 推出了 Windows 10 ,而版號 10240 更是有深層的含義 ( 2 的 10 次方,就是 Win 10 ),也可以看出微軟工程師是充滿著活力(惡搞)喜好著這份工作的XDD

前面的廢話就先說到這邊,接下來,依舊是讓人無聊乏味的安裝過程,就用安裝過程來紀念這上市的一刻吧~~

首先,安裝的畫面,根本沒變… ( 也合理啦… )

enter image description here

但是速度變快了,根據 FB 朋友的消息,大概都在 10min 左右裝完。

enter image description here

然後重新開機,出現這令人熟悉的Logo。

enter image description here

接著,嗨!我們正在為您進行設定~

enter image description here

完成之後,基本上設定都沒啥變動,唯一發現不同的一點就是這邊可以選擇要加入 Azure AD 或是公司網域,不知道是不是因為小弟安裝的是企業版,所以才跳出這個設定…而且也沒地方可以選擇使用 Microsoft Account 登入….後來只能選擇加入網域,而下一步也沒什麼特別的,就是建立 Local 帳號…

enter image description here

完成後,就可以看到漂亮的桌布,如果要使用 Microsoft Account 還是可以從設定這邊去變更…

enter image description here

當然,其他比較大的變動就是預設使用 Edge 了,能捨棄掉 IE ,真的是太棒了~ ( 當然,用搜尋還是可以招喚出舊 IE ),但至少有了這個舉動,可以讓一些企業開始重視把 IE 扔掉的議題了~

enter image description here

當然還有很多新的功能,例如可以有多個桌面,但是對小弟來說,也是可有可無啦XDD,稍微用了一下,還是不習慣= =….最後比較可惜的,小娜也還沒出現…

最後,在這 Windows 30年頭,也用一個從 Tom 哥那邊看來的影片,紀念一下 Windows 與我們走過的痕跡吧~

Windows 30 年頭

2015年7月30日

建立自己的 Docker image

假設一個情境,如果今天我們的應用程式已經開發完成了,以前還要把 Source Code 拿去客戶端部署,還要設定一堆參數等等,或是今天內部開發完成,要進行測試,也要部署到測試機上,如今有 Docker 了,有沒有辦法,只用前面介紹的 run -p 這個指令,就直接完成安裝!?

基本上,前面那篇,我們直接登入到 Docker 來進行抓取 Source 的動作,並且在裡面執行,最後 Commit ,的確,這是一種方法,也可以建立一個新的image,但是,我們不可能每次要 Run MVC 的時候,都還要登入進去執行吧,那真的很累人…其次,登入容器後,再去下載 Source 感覺也不是很好,準備環境也很麻煩,所以這篇,我們來看看,怎樣來建立自己的 Image。

準備本地端的 Source Code

首先,我們透過git指令,來取得ASP.NET 的 Source Code

git clone https://github.com/aspnet/Home.git aspnet-home

enter image description here

完成後,我們先進入專案的位置。

cd aspnet-home/samples/HelloWeb

enter image description here

建立 Dockerfile

接下來,我們透過文字編輯器,來新建一個 Dockerfile 的檔案,這個檔案主要是用來設定 Docker 容器的細節。

vi Dockerfile

enter image description here

文字的內容如下,第一行表示要用哪一個Image當作基底,接下來,拷貝目前目錄下的所有東西到 app ,然後進入app目錄,接著就來跑一下 kpm restore 這個指令,完成之後,對外的 port 要開 5004,並且於整個容器準備完成之後執行 k kestrel。除此之外,比較常用到的還有MAINTAINER(維護人)和ADD(同樣將檔案加入到image,但如果是壓縮黨會自動解壓縮)

FROM microsoft/aspnet

COPY . /app
WORKDIR /app
RUN [“kpm”, “restore”]

EXPOSE 5004
ENTRYPOINT [“k”, “kestrel”]

enter image description here

Build Image

接下來,我們就可以透過 build 的指令來建立新的image,並且取名為 myapp,後面的 . 表示路徑位置,也就是要指向 Dockerfile的位置。

sudo docker build -t myapp .

enter image description here

很快地就會完成了,完成之後我們可以透過等下指令看一下是否有增加進去。

sudo docker images

enter image description here

Run

完成後,我們就可以拿這個 Image 來進行建置容器的動作,這邊的 -d 代表的是讓容器在背景執行,最後我們再用 docker ps 來查看,就可以發現,他在背景執行了。

sudo docker run -t -d -p 80:5004 myapp

enter image description here

上傳到 Docker Hub

最後,我們可以把我們準備好的 Image 提供給別的使用者共享,我們可以把我們的影像檔傳到 Docker Hub 上,所以在進行最後一個步驟之前,要先去申請 Docker Hub 的帳號。

申請完成之後,我們就可以透過以下指令進行登入。

sudo docker login

enter image description here

那再上傳之前,有一點需要注意,Docker Hub 的格式為 UserName/Repo,所以這邊我們要先改名一下,不然會傳不上去,我們先用以下指令查看我們目前有哪些 Image。

sudo docker images

接下來,我們就可以用以下指令改名,改成 skychang/mapp。

sudo docker tag myapp2:latest skychang/myapp:latest

enter image description here

最後,我們再用 push ,就可以傳到 Docker Hub 嚕!

sudo docker push skychang/myapp

enter image description here

完成後,就可以在 Docker Hub 看到嚕!!

enter image description here

刪除用不到的 Image

如果有用不到的 Image ,可以透過 rmi 的指令移除 image , rmi 後面的參數是代表 image 的名稱

sudo docker images 來查看所有的資訊

sudo docker rmi myapp

enter image description here

參考資料

讓 ASP.NET MVC 執行於 Docker

上一篇,我們看到了,如何安裝 Docker,並且 Run Ubuntu,和進入來管理,而這篇,我們就來使用一下 Microsoft 提供的 ASP.NET 5 Preview Docker Image,順便學一下,如何讓外面的 Port 對應到容器內部的 Port。
這篇基本上是參考這篇並進行調整。

備註:這篇的做法是在容器裡面把 Source Code 丟進去處理,下一篇會在介紹更好的方法。

取得 ASP.NET 5 Docker Image 和執行

首先,我們要先取得 ASP.NET 5 Docker Image,我們可以透過以下指令來取得。

sudo docker pull microsoft/aspnet

enter image description here

完成之後,我們一樣,就可以透過 run 來執行此 Image,但這邊要特別注意一下,這邊多了一個 -p,這個的意思是代表對應的意思,表示要把外面的 80 Port 對應到容器內部的 5004,因為在容器裡面,所有連線都無法連入的,所以必須要自定義 Port。

sudo docker run -p 80:5004 -t -i microsoft/aspnet

enter image description here

下完指令後,我們可以開另外一個終端機,透過以下指令來查看,對應的狀況。

sudo iptables -t nat -nL

看完之後,回到容器內,官方的 Image 基本上是不會有任何 MVC 的 Code 的,他提供的是一個很簡單的 Linux 還境,而裡面包含了 mono 和 K系列的指令 ( 未來會換成D系列 ),所以我們要直接在容器內下載官方範例,而下載要用到wget,因為容器原本沒有此套件,所以我們就用一下 apt-get 來安裝一下吧。

於容器內下載 Source 並執行

apt-get install wget

enter image description here

安裝完成之後,我們就可以透過 wget 來取得 source。

cd ~ && wget https://github.com/aspnet/Home/archive/master.zip && unzip master.zip && rm master.zip

enter image description here

完成之後,我們就只需要執行以下指令,來讓 MVC 專案取得必要的 Lib ,並且啟動。

cd ~/Home-master/samples/HelloMvc && kpm restore && k kestrel

enter image description here

到這邊基本上就ok了,但是,大家別忘記了,我們在Azure的環境啊!!所以Azure的端點也別忘記開啟…

enter image description here

完成之後,我們只要輸入這台Azure VM的網址位置,使用 80 Port就可以看到結果了!!

enter image description here

Commit

最後,如果我們登出的話,就gg了,剛剛做的事情就還要重來一次…Orz…所以這邊我們會用上一個章節教到 Commit 來簽入新版本。

這邊,我們先用以下指令來查看這台容器的ID。

sudo docker ps

之後再下以下指令,來簽入。

sudo docker commit -m=’簽入描述’ -a=’簽入者’ 7ce430e7c072 aspmvc/test:ver1

完成後,我們可以再用 docker ps 來看一下結果。

enter image description here

備註

這篇基本上是參考這篇進行調整,原文內,他並不是在容器內下載 source ,而是在外面下載 source,並且透過掛載的方式掛上去。

掛載的指令如下,將本地 OS 上的目錄掛載到 容器 內,而 ro 代表唯獨。

-v [本地路徑]:[容器路徑]:ro

基本上原文的做法會比較好,畢竟實務上,我們不可能每次都登入到容器裡面去下載 source 然後再簽入,直接從外部掛載的方式,會有極大的彈性,而這篇文章是為了示範,才調整了架構。

參考資料

在Ubuntu運行Docker

首先,在開始前,小弟一定要推薦一下這個網站和這個網站,這個兩個網站寫了很多,而且由淺入深的教學,而這篇文章,一開始會先練習這個網站的前篇教學,並且搭配此網站網站的說明,下一篇,則會使用 Microsoft 提供的 ASP.NET 5 Preview Docker Image 來完成 ASP.NET MVC 應用程式。

安裝 Docker

基本上,Ubuntu 已經有內建了 Docker,或是使用 apt-get 來安裝也是可以的,但是既然神人大大推薦用 curl 的方式取得,那我們這邊就使用 curl 來取得 Docker吧!!

curl -sSL https://get.docker.com/ubuntu/ | sudo sh

enter image description here

完成之後,我們就可以啟動 Docker了!!

sudo service docker start

enter image description here

Hello Docker

接下來,我們先採用另外一位神人大的教學,來簡單的輸出一下 Hello Docker.

sudo docker run ubuntu:12.04 echo ‘Hello Docker’

enter image description here

是的,就是這樣簡單,我們就可以看到Hello Docker!!,但是大家可能會想,啥?不就是只是輸出一個 Hello Docker 啊…這和虛擬化,容器技術有啥關係。

沒錯,別懷疑,這個 Hello Docker 其實是從虛擬化出來的 Ubuntu 12.04 版本 echo 出來的!!!

也就是說,那短短的幾秒鐘時間,Docker 就已經把虛擬的 OS 準備完成,並且執行,且輸出了!!

所以,上面那行指令的意思,就是說,我們要 Run 一個 ubuntu:12.04 版本,並且 run 完成之後,於 Sehll 執行 echo ‘Hello Docker’ . 而在執行的過程中,他就會自動地把 ubuntu 12.04 的 image 載下來,結果如下圖。

enter image description here

完成後,我們就可以透過以下指令,來看看目前這台機器有多少個 image,從下圖就可以看到 Ubuntu 已經安裝上去了。

sudo docker images

enter image description here

登入終端機

但是,我們不可能每次都把一整串的字串,串到 run 後面吧…我們需要可以登入,登入!!登入啊啊啊!!

當然,這也可以做到,我們可以下以下的指令,這個指令的意思就是,建立容器的時候,順便建立一個終端機( -t ),並且建立與容器標準輸入的互動進行連結 ( -i ),這樣你就可以在裡面下指令操作了~~

sudo docker run -t -i ubuntu:12.04

但是,請注意,雖然我們從終端機離開,並不會關掉容器,但如果我們把容器 Kill 或是 移除,那你裡面做的所有事情都會不見…如果你在裡面做了些事情,而希望把裡面的東西存下來,就必須使用 commit 指令,其中7ce430e7c072是表示目前的容器ID ( 可以透過 docker ps 來查看目前執行的容器 ),而aspmvc/text:ver1 代表的是容器的名稱和Tag名稱。
(此指令要在容器外面下喔!)

sudo docker commit -m=’簽入描述’ -a=’簽入者’ 7ce430e7c072 aspmvc/test:ver1

重新登入容器

另外,如果你登出了,想要在登入進去那一個容器,我們可以先用

sudo docker ps -a 來查到所有目前執行的容器。

然後再用以下指令登入( 後面是id ),下面兩個的差異,一個是直接回到容器裡,另外一個則會開另外一個終端機,目前建議使用第二種方式。

sudo docker attach 665b4a1e17b6

sudo docker exec -i -t a66289aeefa6 bash

停止與刪除背景執行的容器

若有執行中的容器,想要停止,可以透過底下的指令來完成。

sudo docker ps -a

sudo docker stop 9162a162f840

停止後,就可以用 rm 指令來移除容器。 ( 或是直接用 rm -f 來強制停止)

sudo docker rm 9162a162f840

如果有太多容器,想要一次全部移除,可以下以下指令

sudo docker rm $(sudo docker ps -a)

enter image description here

基本上,初步就到這篇,下一篇我們會透過 Microsoft 提供的容器,來建立 ASP.NET MVC 應用程式。

參考資料

Azure上的Ubuntu與遠端桌面管理 VNC

大家應該都很清楚,透過Azure可以輕鬆的建立Windows的VM,但實際上,要建立Linux的VM也一樣容易,
而本篇,就由小弟來為大家介紹Ubuntu in Azure。

建立Ubuntu VM 與 登入

建立Linux VM的方式基本上與建立Windows沒兩樣,這邊小弟選擇了Linux裡面大家很常使用的Ubuntu來作為教學。

而這邊要特別注意,我們選擇的是Ubuntu 14.10的版本,而後面開啟遠端設定的版本,也是針對14.10,如果您使用了別的版本,那可能會照成設定失敗的狀況。

enter image description here

接下來,我們選擇 Ubuntu 14.10的版本,其餘的設定和建立一般的Windows Server差不多,一樣可以選擇地區或是資源群組。

enter image description here

完成之後,我們沒辦法和 Windows 一樣,直接下載 RDP 的檔案來連線,我們必須透過 SSH 來進行連線。
這邊要注意一下,我們要在後面加上 -l 的參數,並且帶入帳號,不然他預設會用我們目前終端機的帳號,第一次登入的時候,會要求將金鑰寫入,所以這邊一定要按下 yes ,然後就可以輸入帳號密碼了~

enter image description here

VNC 開始之前

基本上,到上面那邊的操作,就已經可以順利登入了,但小弟畢竟是懶惰的,如果遠端登入也有 UI 那不是更棒嗎!!而目前,Ubuntu已經預設提供了 VNC 外,也提供透過Microsoft Remote Desktop ( RDP )的方式來遠端登入,( 其實底層還是 VNC 只是中間透過xRDP 來進行命令的轉換 ),基本上透過 RDP 的速度會比較快,但是目前 Ubuntu 預設的桌面和 xRDP 有一些衝突,所以要另外安裝其他的桌面環境,而這邊為了初步體驗順利,我們就直接來看看,透過 VNC 的方式來進行遠端登入。

但開始前,小弟先提醒大家,目前小弟測試使用 VNC 登入,效果不是很好,滿慢的,所以有這個需求的朋友,可能要先有心理準備…

更新 Ubuntu 與 安裝 Ubuntu Desktop

裝完 Ubuntu 後,第一步當然就是更新…所以我們要下

sudo apt-get update

來更新。

enter image description here

接下來,我們就可以裝預設的桌面環境了。

sudo apt-get install ubuntu-desktop

這邊裝的過程有點久,大家可能要耐心等待一下。

enter image description here

安裝 x11vnc 與 設定

接下來,我們要安裝 x11vnc 來當作我們的 VNC Server
sudo apt-get install x11vnc

enter image description here

安裝完成之後,要設定遠端的登入密碼。
sudo x11vnc -storepasswd /etc/x11vnc.pass

最後,我們要到/etc/init/的目錄下,新增加x11vnc.conf這個檔案

小弟這邊直接使用 vi 來進行編輯。

sudo vi /etc/init/x11vnc.conf

內容如下,但要小心/usr/bin/x11vnc 等一長串,其實是”同一行”!!

start on login-session-start
script
/usr/bin/x11vnc -xkb -auth /var/run/lightdm/root/:0 -noxrecord -noxfixes -noxdamage -rfbauth /etc/x11vnc.pass -forever -bg -rfbport 5900 -o /var/log/x11vnc.log
end script

enter image description here

存擋完成之後,我們就可以重新開啟Ubuntu

sudo reboot

enter image description here

設定 Azure 端點

當然,最重要的,也別忘記設定 Azure 的端點。

enter image description here

連線

接下來,就可以透過 VNC 的軟體進行登入嚕!! ( 小弟這邊是直接使用 OSX 內建的 VNC 軟體 )
只要在 Safari 裡面輸入 VNC://網址,就可以進行登入

enter image description here

接下來輸入密碼

enter image description here

然後就可以成功進去了!!(這邊的登入密碼,就是建立 VM 時所 Key 的密碼,但有時候會因為網路的延遲,造成大小寫轉換失效,所以如果進不去,可以多試驗幾次)

enter image description here

總結

基本上,這樣就可以輕鬆的登入到 Ubuntu 的遠端畫面,但小弟建議,還是用終端機吧…真的快很多….

參考資料

2015年3月21日

2015 軟體研發高峰會

從Visual Studio 2005開始,這套軟體就活在小弟的電腦裡面,雖然當時還不是很會用…(抖抖),但因為學校上課的關係,就讓他一直存活者。

而到了Visual Studio 2010,Visual Studio整個煥然一新,更是讓人覺得Visual Studio進入了另外了一個里程碑!!而這個時期,也正是小弟第一次來台北參加恩師Ruddy老師與百敬老師的研討會 ( 當時一整個覺得百敬老師外表像流氓一樣..但內心實際上根本就是個活佛…... ),而直到現在,Visual Studio也準備進入2015了,歷經了10年的時間,看著Visual Studio的版號,就等同看著自己的成長阿…

阿,廢話那麼多,那這場軟體高峰會為什麼會吸引小弟去哩??又為何講古講了一堆Visual Studio勒!?因為這場Microsoft請到了 全球資深副總裁 潘正磊女士 Julia ,大家會想說他是誰!?他就是鼎鼎大名的Visual Studio Team的超高級長官!! 有多高級哩??..連 C#之父Anders Hejlsberg都是他底下的人…( 現在Scrum的創辦人之一Ken Schwaber,應該也是在他底下,只是這次沒有證實… ) 所以,大家這樣應該就可以猜到,他底下負責的產品,就是Visual Studio、.Net、TFS、Visual Studio Online、TypeScript!!

既然那麼重量級的人物出現,小弟我又怎麼可能不去晃晃哩!!?

這次是舉辦在高級的寒舍艾麗裡面,時間還沒到,其實就已經有很多人開始報到了~~

IMG_2871

這次的會場其實非常漂亮=v=,我們也可以看到DX Team的團隊已經在準備了。

IMG_2872

這次當然還是由我們台灣區偉大的Dann哥來負責主持與總指揮啦XDD,快要開始前,Dann哥已經躍躍欲試了XDD。

IMG_2873

正式開始!!,當然就是由Dann哥主持啦!!

IMG_2874

接下來,有那麼大的人物來台灣,當然就是由台灣區的微軟總經理 紹光華 開場嚕。

IMG_2875

總經理首先針對微軟的政策,特別述說了Mobile-first與Cloud-first,所以可以看出,行動與雲端依然是微軟主要的策略。

IMG_2876

接下來,提到了MS的開宗始祖Bill Gates,在1975年說的那句名言,而40年後的今天,現任的微軟執行長Satya Nadella,也依據雲,提出了相同的論點。

IMG_2877

接下來的重頭戲,就是Julia上台了!!~基本上他是中國人,所以全程是用中文來講,完全不用擔心聽不懂,在開頭的自我介紹中,Julia說他從Visual Studio第一版,就開始參與,而且是裡面的開發工程師,所以可以看出,她也有深厚的技術實力;也可以看到微軟的制度,就算是高層的總裁,技術實力也依樣的深厚。

IMG_2880

Julia一開始就提到,微軟未來的三大方向,就是更開發,更創新和更加的敏捷,而對於她來說每一個企業,都是一個軟件公司,因為每家企業,未來都會持續的開發屬於自己的系統,也因此未來軟體的開發會極為重要;另外因為雲端和手持裝置的崛起,流量可能會是以前的百倍,而透過Mobile與Cloud來收集資料與分析,更是未來的趨勢。

IMG_2881

更開放的部分,微軟用更開放的態度,和其他公司合作,例如在Azure上面放上Oracle的VM,甚至是最近的大新聞,Google的AngularJS 2.0 將使用TypeScript、又或是在iOS裝置上提供Office等等,這些都是以前微軟沒有做到的事情;而如今,連.Net都Open Source了!!

IMG_2882

更創新的部分,則提供更多的方案,來讓不同的使用者滿足,例如Visual Studio 2015就開始內建使用JavaScript的Cordova來建立Mobile,但可能還是有很多人使用C#阿,所以也提供了以C#為基底的Xamarin;當然,使用C++的朋友們,也有提供以C++為主的跨平台方案~ ( 這次的Office轉移,就是使用C++的跨平台方案 )。

其次,雲端的開發上,提供了新版的.Net Core,讓Web Site的開發更小;而透過雲端的應用Load Test也更方便測試。

處此之外,在生產力方面,也持續的讓C++ 速度的提升等等,效能的提升,讓大家能更加的感受到改進。

最終,Julia提出了她的願景,就是希望幫助每一個開發人員,無論你是哪個平台,哪個語言。

IMG_2883

接下來談到了Visual Studio的開發歷程,改成每2~4個月更新一次;那這個原因當然是因為現在Visual Studio 開發Team已經完全啟用敏捷,所以更新與回饋的速度就更快了,這也是因應現在的潮流;所以我們可以看到Visual Studio 2012和Visual Studio 2013的推出間隔其實是很短的,而過程中,也不斷的發佈新的更新包。

IMG_2884

接下來提到,以前的Visual Studio開發,參與人數高達4700人。

IMG_2885

當然,也是跨全球的一個研發團隊。

IMG_2886

接下來,就提到,以前Visual Studio的開發就是使用瀑布流的方式 ( 所以台灣其實沒有落後很多,基本上台灣遇到的問題,微軟也遇到過了XDDD )。

他們的週期大概是兩年到三年一輪,所以一開始會花很多的時間,決定未來兩年後的趨勢。

IMG_2887

而這個過程中,測試花的時間,其實會遠比寫Code的好幾倍,而早期會花費很多的測試時間和測試人員;Julia有提到,那是因為早期的時候,都是要透過店鋪購買盒裝的軟體,而如果裡面出現嚴重的bug,那回收回來的成本是很可觀的;而現在則可以透過網際網路快速的更新,所以著重的反而是能快速反應使用者的需求… ( 題外話..其實家用電玩也是一樣,記得之前看過FF13的報導,日本Square Enix 之前也是花費了大量的測試人員進行測試與封閉型的開發,現在也逐漸轉變成敏捷的方式了。 )

IMG_2888

而早期的專案結構,會有PM、Development和Testing,如果有讀過微軟出的測試一書的朋友,就會對於底下的這張圖很熟悉~~,當然,現在就不是這樣的結構了。

IMG_2890

那現在變成怎樣子勒,現在約18的月發行一次大版本,例如 xx 2015 xx 2017之類的,而每六個月會評估一次,目前的方向和方案是否與市場狀況相同,團隊則以3週為一個Sprint,而且人數也沒以前那麼多了,目前不到2000人。

IMG_2891

而現在的內部開發人員,會非常的重視白箱測試,也就是會撰寫Unit Test ( 那黑箱測試,不會就落到我這白老鼠的身上了吧= =+.. 總之會場沒特別提到黑箱怎樣做了… ),並且多聽使用者的反饋,而不是以前的蠻幹。

另外,工程師也開始進行數據收集與分析的工作 ( 這點台灣倒是還沒有開始… ),透過數據收集與分析,來決定未來的方向;所以也不是以前,完全靠有經驗的大師們指揮,就算是大師們,也必須透過數據。

另外,工程師也要開始直接與客戶交流 ( 這點台灣最難辦到吧XDD 我們都是宅宅阿~~抖抖 ) 透過與客戶的交流,來更了解客戶的需求。

IMG_2892

組織結構也改成如下圖了,移除了Testing,但並不代表不用測試,而是由開發人員自行來測試,也就是說,整合了開發人員與測試人員;整合的過程中也滿有意思的,Julia有提到,先讓兩邊人馬互相交換做事情,而過程中,也發現到,原來兩邊人馬有非常多的重工。

但不管怎樣,目前還是依據功能來區分;並且每個Team都有非常高的自主性管理。

IMG_2893

Team Room 的結構,不再是以前一個一個獨立的房間,而是把大家聚在一起,更加的Open,從一開始只有一棟的試驗,現在已經有四棟的大樓,都是採用此模式了。 ( 其實小弟的Team目前也是用此模式,溝通更快了,間隙更小了 )

IMG_2894

接下來,提到Sprint,基本上是三周一次,而三周內,還有一周會進行佈署,所以時程其實是非常緊迫的;而Julia也有提到,初期改成Scrum的時候,內部也是有很多人反對,例如…我是寫編譯器核心的,我兩周根本沒辦法Demo!!但後來實際run後,的確還是可行的,畢竟不可能兩周完全沒做事情吧,有做多少東西,就Demo多少東西~~

IMG_2895

最後,再重新回顧的時候,有提到Visual Studio 2015 CTP的Codava 第一代的安裝包,就是因為沒有WIN 7的版本,所以一堆Win 7的使用者,都發生了錯誤;其次,當進行Codava安裝的時候,很多都要透過第三方的下載的中心,進行下載,但有時,第三方的下載中心可能會出問題,或是擅自的更改位置,這些都會讓安裝過程遇到問題,但這些都是和功能無關,MS還是會想辦法解決,這就是注重需求與體驗,也就是未來微軟的方向。 ( 從這邊也可以看到,現在的整合,真的是難上加難阿… )

IMG_2900

另外,有提到一件事情,是別的國家問的問題,你們微軟是跑真正的sprint嗎?

Julia也解釋說,如果是真正的Sprint,Bug單是不會大起大落的,因為真正的Sprint,在每次交付的時候,都會有許多的bug單回饋回來;而如果是假的Sprint,那會到最後的時候,才會看到大量的Bug單提交…

IMG_2902

所以~Microsoft是真的Srpint ( 笑 )

IMG_2903

最後,現場留了一些時間來Q&A,而Q&A的問題如雪片般的飛來 ( 可見大家還是非常想知道大公司內部是怎樣運作的… )

以下是Q&A的內容,當然,內容是小弟憑印象Key的~

Q : 短期的開發是否認定客戶為白老鼠
A : 我們希望客戶可以參與到,並且確認的確是客戶所需要的,而事實證明,客戶也很樂意的反饋,並且告訴我們,這東西做的是對還是不對;最終,我們會修正成客戶真正想要的。

Q : 可否敘述清楚,關於3、6、18這些數字。
A : 以去年年初 ( 一、二月為案例 ) ,我們決定要制定跨平台開發,過程中,我們不新增人,而是調度人員,透過調度人員,讓大家能做到不同的事情;六個月後出版,再來看看,做出來的東西,是否和現在的市場符合;過程則使用為期3周一次的進入Sprint 來開始開發;而在進行Codova的部分,我們也發現,原本的核心應該可以更好,所以抽了一部份的人,去改Codova核心,這也是回饋Open Source的一個方法。

Q : 可否敘述文件是怎樣寫的。
A : 我們的文檔多半是Word寫的,我們沒有使用沉重的工具,因為每天都在改..所以不需要沈重的文件,其實Code就是最好的文件了;但有些時候,我們會希望透過Word,來寫一些當初的想法或是當初比較特殊的思維;但不管怎樣,這是由每個Team自行決定;最後,交流才是最重要的,只要Code清晰的表達,文件只要能共享就可以了。

Q : 人員流失(離職)怎麼辦勒??
A : 我們會定期Code Review的機制來解決這個問題。 ( 看來未來有人問到小弟這個問題,小弟有一個極好的案例可以拿來解釋了~~ )

IMG_2905

過程中,其實大家都聽得很認真也很High,這邊也謝謝Julia女士的經驗分享,也謝謝她帶領的團隊,能提供一個那麼好用的ide工具。

IMG_2906

接著,就是由Dann哥所率領的DX Demo Team,來進行VS 2015的功能Demo。

IMG_2907

他們以一個企業叫車的案例,來串所有的Demo內容,所以我們可以看到跨平台開發還有新的ASP.NET 5。

IMG_2909

比較好玩的梗,雙Scott都變成叫車司機XDD,希望哪一天我可以搭到這兩位的車 ( 抖抖 ),另外,果然還是Scott Gu第一名阿XDDD。

IMG_2911

另外一個主題是當紅的物聯網,這邊拿電梯監控和倫敦地鐵為案例。

IMG_2916

其實倫敦地鐵去年TechDay就已經出現過了..QQ..,但也可以看出,其實微軟這方面,很早就已經開始準備與琢磨。

IMG_2917

比較有意思的是這個架構圖,透過Azure服務來達到IoT ( 未來有機會,小弟來實作一下看看好了=V= )

IMG_2928

另外一個大主題就是大數據,這也是近期出現在FB當紅的題目 如果搭上了鐵達尼號,有機會生還嗎?

IMG_2929

這是依據那些搭上鐵達尼號的名單,來進行分析;後來,發現只要是女生,生還比率最高= =+。

最後,就是由小白來進行5min的壓力測試與佈署的Demo,雖然只有短短的五分鐘,但我知道,這個東西是要準備很久的,so,小白辛苦了XDD

總之,雖然只有半天的研討會,和短短的Demo,但聽到了官方開發Visual Studio的經驗,還是非常可貴的,而透過這半天的研討會,也讓小弟深深的開始省思,一個軟體的成功,並不是只是單單的開發出來就好,尤其現在這個快速改變的時代,整個思維也必須敏捷與改變才行。

總之,還是要謝謝 Visual Studio Team 與 Julia的帶領,讓我們能一直不斷的使用這麼好的開發軟體。