The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

如何在 Azure Container Service、Azure Service Fabric 與 Azure Functions 之間做出選擇

今天看到一篇不錯的 Choosing between Azure Container Service, Azure Service Fabric and Azure Functions 文章,他們摘錄的 Building Microservice Applications with Microsoft Azure 這場 56 分鐘討論的精華,這場討論分別由這三個產品的 PM 聚在一起,把這三個 Azure 服務之間的差異與選用的時機介紹得非常清楚,解決了我許多心中的疑問,以下是我在吸收消化之後的內容分享。

... 繼續閱讀 ...

如何在 Windows 10 同時安裝與執行 Windows 與 Linux 容器 (Docker)

自從將我的 Windows 10 升級到周年更新後,發現有好多好玩的功能可以用,前陣子在玩 WSL (Windows Subsystem for Linux) ( Bash on Windows ),而最近則是把玩 Windows Containers 容器技術。今天這篇文章,主要想分享如何讓大家在自己的 Windows 10 電腦中同時安裝 Windows Containers 與 Linux Containers 環境,讓你在同一台開發主機上可以同時享受真正跨平台的容器支援。

... 繼續閱讀 ...

The Will Will Web 生日快樂! ( 差點忘記的九歲生日 )

今天對我來說是個重要的日子,那就是我 The Will Will Web 的生日,不過今年卻差點給忙忘了,剛剛突然想起 10/27 快過了,趕緊跳起來寫文章,哈。我覺得每年都過得好充實,今年也不意外,可以這樣每天過著充滿挑戰與成就的日子,雖然忙碌萬分,但也同時感覺幸運。一轉眼九年過去了,想當年給自己訂下的「每日一篇文章」的目標,持續了兩年多,連出國旅遊也不放過,現在想想還是有點懷念當年一天一篇文章的傻勁。現在,就讓我們歡慶 The Will Will Web 部落格九歲生日囉! :)

今年想不到跟去年一樣只寫了 30 篇文章,哈!即便現在 The Will Will Web 部落格的文章量越來越少,不過只要有寫,還是一如往常的堅持文章品質,盡可能地將複雜的步驟與觀念講解清楚。其實我的文字表達的能力,對我現在的實體教學課程有著極大的正面影響。有人說我上課總是能把複雜的技術講得很簡單,但我其實不這麼認為,我只是覺得我自己不喜歡複雜的東西、不喜歡記憶複雜的語法,所以能簡單的,絕對不要複雜。在面對初學技術的人,務必幫著大家建立起一條有點平坦又有點障礙的學習之路,平坦是指用觀念帶領大家進入新的技術領域,障礙是指透過實作與除錯認識自己的盲點,在解決問題的過程認識全新的觀念與技術。

由於我個人討厭複雜的事物,要是我必須用一個複雜的技���,那麼我一定會對我眼前的程式碼建立情感連結,用右腦思考,對抽象的事物發揮想像力,用一個我能夠想像的形體來認識眼前的新技術。這講的好像有點抽象,但這就是我能夠不斷學習新技術的秘密。這幾年當了老師之後,開始會有很多學員來問我問題,只要遇到我無法清晰表達出來的問題,都會想花時間徹底釐清背後的技術原理,如果一件事情能夠有個清楚的脈絡,任何抽象的技術都能在腦海中建立起扎實的思維模式 (Mindset),這時就不再是抽象的概念了。

接下來,就讓我來整理一下這一年到底做了什麼事吧!

演講行程 ( 共 14 場 )
教學課程 ( 這一年花了 103 天在教學上 )
  • 多奇教育訓練
    • 2015/11/07 ASP.NET MVC 5 開發實戰 (台北)
    • 2015/12/12 JavaScript 開發實戰:核心概念篇 (台北)
    • 2015/12/13 AngularJS 開發實戰:新手入門篇 (台北)
    • 2015/12/15 使用Jenkins CI與Azure架構連續性整合方案
    • 2015/12/19 AngularJS 開發實戰:模組開發篇 (台北)
    • 2015/12/20 JavaScript 開發實戰:核心概念篇 (台中)
    • 2015/12/26 JavaScript 開發實戰:核心概念篇 (高雄)
    • 2015/12/27 JavaScript 開發實戰:核心概念篇 (台北)
    • 2016/01/23 Git 版本控管實戰:新手入門篇 (台北)
    • 2016/01/31 Git 版本控管實戰:版控流程管理 (台北)
    • 2016/02/20 Visual Studio 2015 開發與偵錯技巧 (台北)
    • 2016/03/05 ASP.NET MVC 5 開發實戰 (台北)
    • 2016/04/09 使用Jenkins CI與Azure架構連續性整合方案
    • 2016/04/16 Visual Studio 2015 開發與偵錯技巧 (台中)
    • 2016/04/23 Visual Studio 2015 開發與偵錯技巧 (高雄)
    • 2016/05/07 Visual Studio 2015 開發與偵錯技巧 (台北)
    • 2016/05/14 Entity Framework 6 開發實戰 (台北)
    • 2016/05/22 JavaScript 開發實戰:核心概念篇 (台北)
    • 2016/05/28 JavaScript 開發實戰:核心概念篇 (台中)
    • 2016/05/29 JavaScript 開發實戰:核心概念篇 (高雄)
    • 2016/06/18 Git 版本控管實戰:新手入門篇 (台北)
    • 2016/06/19 ASP.NET Web API 2 開發實戰 (台北)
    • 2016/06/26 Microsoft Azure 網站應用程式開發實戰
    • 2016/07/31 AngularJS 2 開發實戰:新手入門篇 (台中)
    • 2016/08/06 AngularJS 2 開發實戰:新手入門篇 (台北)
    • 2016/08/07 JavaScript 開發實戰:核心概念篇 (台北)
    • 2016/08/13 AngularJS 2 開發實戰:新手入門篇 (高雄)
    • 2016/08/20 AngularJS 2 開發實戰:新手入門篇 (台北)
    • 2016/08/27 AngularJS 2 開發實戰:新手入門篇 (台北)
    • 2016/09/03 ASP.NET Web API 2 開發實戰 (高雄)
    • 2016/09/04 ASP.NET Web API 2 開發實戰 (台中)
    • 2016/09/11 ASP.NET Web API 2 開發實戰 (台北)
    • 2016/10/01 AngularJS 2 開發實戰:新手入門篇 (台北)
    • 2016/10/15 ASP.NET MVC 5 開發實戰 (台北)
  • 企業內訓
    • 2015/11/03 HTML5與CSS3開發實戰 (友達光電)
    • 2015/11/10 JavaScript 開發實戰 (友達光電)
    • 2015/12/11 ASP.NET MVC 5 開發攻略 (友達光電)
    • 2016/01/27 AngularJS 效能調校 (有無科技)
    • 2016/02/16 ASP.NET MVC 5 開發實戰 (伯牙網路)
    • 2016/03/01 一等一科技前端教育訓練
    • 2016/03/07 LiteOn 網站資安教育訓練
    • 2016/03/15 Trello 中小企業應用實戰 (創鈺國際)
    • 2016/04/29 Git 版本控管實戰:新手入門篇 (臺北市自由軟體推動小組)
    • 2016/05/26 Azure PaaS 入門 (安心保科技)
    • 2016/08/02 Git 版本控管實戰:新手入門篇 (中華電信學院)
    • 2016/08/03 銓敘部-ASP.NET MVC 5 (資通電腦)
    • 2016/08/05 前端工程培訓課程 (新光人壽)
    • 2016/08/09 JavaScript 開發實戰:核心概念篇 (中華電信學院)
    • 2016/08/16 Angular 2 開發實戰 (中華電信學院)
    • 2016/09/06 ASP.NET MVC 5 開發實戰 (財團法人台灣金融研訓院)
    • 2016/10/07 前端工程培訓課程 (資策會資訊處)
    • 2016/10/11 Git 版本控管實戰:新手入門篇 (中華電信學院)
    • 2016/10/26 Git 版本控管實戰:流程管理篇 (中華電信學院)
線上教學課程( 共 4 場 )
  • 2015/11/20 你所不知道的 Microsoft Azure 雲端資源採購技巧
  • 2015/11/27 你所不知道的 Microsoft Azure 雲端資源採購技巧
  • 2016/03/09 你所不知道的 Microsoft Azure 雲端資源採購技巧
  • 2016/05/18 LINQ 快速上手 #7
錄製 YouTube 影片 ( 共 2 則影片 )

今年的教育訓練天數又提高了,好像有點忙到不知道什麼叫做假日,即便大部分的周末都在授課,但是還是會替自己安排特別的假期,去到一個陌生的地方旅遊、去到一個陌生的環境體驗人生,以前我不太能體會「認真工作認真玩」這句話的意思,最近這一年終於懂了一些,原來,生活還是要靠自己創造,才有趣!

最後,就讓我們一起慶祝 The Will Will Web 九歲生日吧~ (^_^)

... 繼續閱讀 ...

如何在 Windows 10 周年更新安裝 Bash on Windows 並解決中文亂碼問題

今天趁著颱風天在家,花了 10 個小時把筆電升級到 Windwos 10 周年更新版本,並且裝了一直想安裝的 Bash on Windows 套件 ( Windows Subsystem for Linux ) ( 簡稱 WSL ),裝的過程還算順利,就唯獨「中文亂碼」問題很討厭,每每遇到這種問題,我就會本能的想要徹底了解背後的原理與嘗試從根本解決問題。本篇文章就來說說如何安裝這個 WSL 套件,並設法解決中文無法正常顯示與輸入的問題。

... 繼續閱讀 ...

前端工程研究:關於 JavaScript 中 Date 型別的常見地雷與建議作法

今天這篇文章,我想來談談 JavaScript 到底如何實作「日期字串」格式解析,日期時間有太多種表達方式,一般人在剛接觸日期格式的時候,都不會想太多跨瀏覽器的問題,通常都是遇到問題的時才來靠北瀏覽器有多爛多爛。有趣的是,有時候還會怪錯對象,例如 XXXX 框架好爛,我寫 JS 這麼久都沒遇過這問題,用了 XXXX 框架才遇到的。現在,我們就開始來對這個說常用不常用,用到時不熟悉的「日期」型別,話說從頭。

... 繼續閱讀 ...

如何在 ASP.NET Web API 2 專案中啟用表單驗證 (Forms Authentication)

使用 Visual Studio 2015 開發 ASP.NET Web API 2 專案時,有好幾種專案範本可以選擇,你可以從「空白」專案範本開始,也可以從「MVC」專案範本開始 (記得勾選 Web API 核心參考),也可以直接從「Web API」專案範本開始,由於專案範本通常夾雜大量的範例程式,很多時候我們並無法在第一時間得知每段程式碼與設定檔的細節,以至於在後續開發的過程發生許多問題。本篇文章將帶大家了解如何成功在 ASP.NET Web API 2 專案正確啟用 ASP.NET 的表單驗證機制 (FormsAuthenticaion)。

... 繼續閱讀 ...

Angular 2 開發心得分享 (01):使用 HTML 自訂元素的注意事項

使用 Angular 2 開發網站跟以前 Angular 1 最不一樣的地方在於「網頁元件化」的觀念,網頁中所有看到的東西都將變成一個個的 directive 元件,當你將現有網頁 HTML 版型變成 Angular 2 的 Directive 元件後,Angular 2 執行時會把這些 HTML 片段編譯過,並且找出這些 HTML 片段中是否含有其他的 Directive 元件,如果有找到,就會初始化這個 Directive 元件。不過當你的 HTML 版型中有用到「自訂的 HTML 元素」或「寫錯的 HTML 元素」,執行時期就會立刻發生錯誤,這問題發生的原因與解決方法,將是本文討論的重點。

... 繼續閱讀 ...

關於 TypeScript 2.0 之後的模組定義檔 ( Declaration Files ) ( *.d.ts )

為了讓 TypeScript 能與目前市面上各種 JavaScript 模組/函式庫一起運作,模組定義檔 ( Declaration Files ) ( *.d.ts ) 是 TypeScript 不可或缺的一部分,從最早期的 TSD (TypeScript Definition manager for DefinitelyTyped) 工具,到去年十月才推出的 typings (The TypeScript Definition Manager) 工具,今年六月 TypeScript 開發團隊決定從 TypeScript 2.0 改用 npm 來管理所有的模組定義檔,有在使用 TypeScript 的開發人員得要注意囉!

... 繼續閱讀 ...

如何修改 Visual Studio Code 內建的 TypeScript 版本

最近這兩周由於 Angular 2 已經來到了 RC5 版本,且 Angular CLI 也來到了 1.0.0-beta.11-webpack.2 版本,正式改用 webpack 作為 Angular 2 今後的模組管理工具,專案的整體編譯速度比以前用 SystemJS 快了好幾倍,我們用的非常開心。但唯獨有一點不太理想,就是當 Angular CLI 升級後所建立的專案,在 Visual Studio Code 裡面一直會出現討厭的警告訊息 ( 紅色下曲線 ),在經過幾天的消化與研究之後,終於發現原來是 Visual Studio Code 與 TypeScript 的問題,欲知詳情,請繼續看下去!

... 繼續閱讀 ...

新版 Docker for Windows 正式推出:全新安裝與快速上手

就在前天 (2016/7/29) docker 公司已正式推出全新的 Docker for Windows 版本,這個版本跟之前不同的是,本次推出的版本是個原生 Windows 應用程式,不再需要借助 VirtualBox、Docker Toolbox、boot2docker 或其他工具就可以執行,只要你的 Windows 作業系統是 Windows 10 專業版或企業版 (64-bit),並在安裝 Hyper-V 功能之後即可進行安裝與設定,這樣的改變帶來了更快、更穩定的容器環境,更增加許多全新功能與自動升級能力,幫助大家改善開發與部署的生產力。本篇文章將帶大家快速預覽新版 Docker for Windows 的安裝過程與使用方式。

... 繼續閱讀 ...

前端工程的夢幻逸品:Angular 2 開發框架介紹

目前 Angular 2 已經進展到 RC4 版本,在過不久的將來就要推出正式版本,許多人磨刀霍霍,既期待又怕受傷害。期待的是,希望 Angular 2 能夠真正解決我們開發 Web 應用程式的各種難題,不單單只是網站而已,還必須考量到 SPA 架構、開發效率、執行效率、行動裝置、原生 App 應用、伺服器渲染、多國語支援、開發工具、… 等多種面向,想也知道這不是個容易的任務。害怕的是,不知道這個坑到底有多深,用下去之後會不會很難上手、系統越做越大會不會越來越難維護、多人開發的時候會不會很難套用開發規範、會不會很難偵錯、容不容易跟後端整合、… 等等。 而我希望在這篇文章中,能夠解開大家心中的疑惑。

... 繼續閱讀 ...

如何解決在 Windows 用 npm 安裝 TypeScript 之後 tsc 還是舊版的問題

由於 Angular 2 官方建議採用 TypeScript 做為主要的開發語言,一般來說 TypeScript 都會建議使用 npm 進行安裝,安裝後就可以在命令提示字元下使用 tsc 命令對 *.ts 進行編譯動作。不過這幾年 TypeScript 的變化很快,轉眼都已經到 1.8 版了。雖然透過 npm 安裝 TypeScript 是很容易的一件事,不過對於有安裝過 Visual Studio 的使用者來說,這條路可能會變得異常崎嶇,如果你在用 npm 安裝過 TypeScript 並且輸入 tsc.exe -v 總是顯示 1.0 版 ( 或低於 1.8 版) 的話,這篇文章你可能要繼續看下去。

... 繼續閱讀 ...

如何在執行 Web 單鍵發行時,一併輸出完整的 pdb 偵錯符號檔

我在前些陣子開了好幾個梯次的 Visual Studio 2015 開發與偵錯技巧 課程,課程中有提到我們在對 .NET 應用程式進行偵錯時,有個最重要的 pdb 符號檔必須隨著專案一起發行,才能夠在執行的過程中得知完整的偵錯資訊,否則不但無法在程式執行過程中載入偵錯工具 (Debugger),連例外狀況發生時也將無法得知錯誤發生的呼叫堆疊與程式碼行數。但我們在 Visual Studio 常用的 Web 單鍵發行功能,預設設定是採用 Release 方案組態進行發布,而且預設還會將所有 pdb 符號檔排除,也就是透過 Web 單鍵發行的網站,將完全不會有相對應的 pdb 檔案,本篇文章告訴該如何設定。

... 繼續閱讀 ...