faq


Azure Savings Plan 和 Azure Reservation (Reserved Instances) 傻傻分不清楚

圖片來源:https://pixabay.com/en/despair-alone-being-alone-archetype-513528/

圖片來源:https://pixabay.com/en/despair-alone-being-alone-archetype-513528/

要導入任何服務或者軟體之前,評估它的成本 (費用) 以及效益是說服老闆的最關鍵的一件事。

以 Azure 來說,以前有所謂的 Azure Reservation (Reserved Instance) 可以省到 62% 之多,所以如果有穩定使用的機器規格,不開 Reserved Instance 說不過去。

既然有了它,怎麼還會有另外一個所謂 Savings Plan 呢?

這篇來簡單的探討一下兩個的不同之處,以及什麼時候適合用什麼


為什麼我的 Azure Windows Virtual Machine (虛擬機器) 連線不到?故障排除指南指南 | FAQ

對於任何第一次上手任何雲端服務的時候,第一件事估計都是建立出 Virtual Machine (虛擬機器),算是雲端的 Hello World 吧。

這個時候,如果遇到無法連線(這邊的連線指的是透過 Remote Desktop Protocol)進去估計會很沮喪,導致撞墻不想繼續下去。

到底為什麼連不到

到底為什麼連不到

我這篇想要先介紹一下,如果遇到這件事,可以從什麼角度去嘗試排除問題。

這邊主要是會以 Azure 的 Windows VM,不過基本概念在任何雲端平台都是一樣的概念。


[Visual Studio] 爲什麽發生例外的時候,在偵錯模式下沒有自己進入中斷點

[Visual Studio]爲什麽發生例外的時候,在偵錯模式下沒有自己進入中斷點.jpg
圖片來源:https://pixabay.com/en/despair-alone-being-alone-archetype-513528/

一般來説,當Visual Studio進入到了debug (偵錯) 模式的時候,只要有任何的exception (例外) 發生的話,就算沒有下任何的breakpoint (中斷點) ,Visual Studio也會自動停下來。

但是如果有天Visual Studio不在停下來的話怎麽辦?

這篇來看一下Visual Studio裡面一個很重要的設定:Exception Setting


[faq]如何把各瀏覽器(IE、Edge和Chrome)的request一次儲存下來提供給工程師

[faq]如何把各瀏覽器(IE、Edge和Chrome)的request一次儲存下來提供給工程師.jpg
圖片來源:https://pixabay.com/en/despair-alone-being-alone-archetype-513528/

在上一篇([faq]如何把瀏覽器執行的request,快速建立到postman來做開發測試用)介紹了如何能夠透過在Chrome裡面複製有問題的request成爲cURL(Bash)指令,然後在postman裡面透過匯入的方式轉換成為可以方便測試以及呼叫的request。

可是如果今天我有很多個Request都有問題呢?

或者說如果假設今天使用系統的人不是用Chrome怎麽辦?

或者如果分辨不出那個request有問題怎麽辦?

這篇將介紹如何在IE、Edge以及Chrome匯出完整的network request成爲har,並且工程師可以如何使用這個HAR做使用。


[faq]如何把瀏覽器執行的request,快速建立到postman來做開發測試用

[postman]如何把瀏覽器執行的request複製,快速建立到postman來做開發測試用.jpg
圖片來源:https://pixabay.com/en/despair-alone-being-alone-archetype-513528/

近幾年拜前端蓬勃發展所賜,越來越多的網站使用前後端分離的架構。

後端只需要建立API,而前端只需要關注在畫面以及如何呼叫後端的API就好了。

這個時候,假設網站發生了錯誤,那麽怎麽樣快速建立出前端打到後臺API的方法就變得很重要。

因爲能夠快速建立出這些API的request,能夠更加容易透過改打的host而直接打到測試環境 - 更加容易debug問題出現在那邊。

更不用説,如果今天想要告知後端問題在那邊,那麽提供一個完整Request内容也可以減少溝通成本

這篇來看看如何用Chrome以及Postman搭配來達到這個效果。


[faq]ASP .NET Core Web Api使用RazorLight套件部署上Azure Web App執行不起來的故障排除

[faq]ASP .NET Core Web Api使用RazorLight套件部署上Azure Web App執行不起來的故障排除.jpg
圖片來源:https://pixabay.com/en/despair-alone-being-alone-archetype-513528/

寫過ASP .NET MVC的對於Razor語法想必不陌生,畢竟相較於以前aspx那種語法,使用Razor這個template語法寫起來簡潔並且易懂很多。

現在漸漸流行的是前端和後端分離,因此更多情況會撰寫Web Api,而畫面留給前端的框架來寫。

但是這並不代表Razor沒有作用,畢竟有很多時候在後端需要用到template的概念產生一些内容。

例如説假設今天系統需要寄送mail,那麽mail内容就很適合用Razor template來撰寫。

RazorLight就是一個方便再.NET專案裡面使用Razor template的一個套件。

不過使用了之後,在local測試的時候可能沒有問題,但是部署上去整個網站run不起來怎麽辦?

這篇來看看使用RazorLight的ASP .NET Core Web Api在部署到Azure Web App之後怎麽避免出現錯誤。

github sample project

這篇描述的sample程式碼可以在github看到:https://github.com/alantsai-samples/dotnet-core-razorlight-publish

[faq]在SSMS遇到Timeout expired或者Execution Timeout(逾時)怎麽辦?

[faq]在SSMS遇到Timeout expired或者Execution Timeout(逾時)怎麽辦?.jpg
圖片來源:https://pixabay.com/en/despair-alone-being-alone-archetype-513528/

SSMS (Sql Server Management Studio) 相信應該是需要使用MSSQL都會裝的管理工具。

有些時候要執行一些要跑比較久的SQL語法的時候,或者要修改有大筆資料的Table Schema的時候,都有可能會遇到Timeout Expired或者Execution Timeout這種錯誤訊息的時候應該要怎麽辦?

這篇就來看看遇到這種問題,如何延長整個SSMS執行可容許的時間。


[faq]爲什麽Postman打不到網站?明明用瀏覽器打就可以

[faq]爲什麽Postman打不到網站?明明用瀏覽器打就可以.jpg
圖片來源:https://pixabay.com/en/despair-alone-being-alone-archetype-513528/

相信Postman應該是所有寫Web都會裝的工具之一,畢竟能夠把api儲存成爲collection,可以用環境便是,並且能夠分享給他人使用太方便了。

不過,之前遇到一個問題,明明網站已經起來了,然後瀏覽器打那個網址可以取得東西,但是爲什麽用postman卻不行呢?

這篇來看一下怎麽解決。


[git]如何快速清理已經合並(merged)的分支(branch) - local及remote

[git]如何快速清理已經合並(merged)的分支(branch) - local及remote.jpg
圖片來源:https://pixabay.com/en/despair-alone-being-alone-archetype-513528/

分支(branch)可以説是git的殺手鐧功能,透過建立分支就像使用多重影分身之術一樣,可能同時進行不同分支的開發,最後可以透過合并(merge)把所有的修改整合在一起。

不過開啓大量分支有一個缺點,那就是當合并成功之後,怎麽清理不需要的分支

這篇就來看看怎麽快速清理掉這些無用的"分身"。


[sql]怎麽快速從現有的資料庫Table產生出符合過濾條件資料的insert sql語法

[sql]怎麽快速從現有的資料庫Table產生產生出符合過濾條件的insert sql語法.jpg
圖片來源:https://pixabay.com/en/despair-alone-being-alone-archetype-513528/

有時候想要把現有的資料庫裡面的data傳遞給別人,但是又不想要把整個資料庫都給對方,這個時候給對方insert data的sql檔案是最快的。

但是,如果要自己手寫這個sql語法,如果只有1~2筆還好,但是如果有幾十筆呢?

如果不想要產生整個Table的資料,而是只有符合某些特定條件的才要,那麽要一筆一筆弄也太累了。

有沒有什麽工具可以使用讓這件事情變成只需要幾秒鐘就可以做到的呢?

這篇介紹一下兩種情景的產生方式?


[Azure DevOps]如何設定Pull Request的預設文字模板(template)

[Azure DevOps]如何設定Pull Request的預設文字模板(template).jpg
圖片來源:https://pixabay.com/en/despair-alone-being-alone-archetype-513528/

Pull Request是一個非常好的Code Review方式,也是當初Github讓git火紅起來的其中一個原因之一。

在建立Pull Request的時候,一般會有一段訊息可以輸入,這個訊息主要描述了這一次Pull Request的一個主要目的。

但是,當團隊合作開發的時候,很有可能A工程師會輸入一種格式的内容,而B工程師又是另外一種。或者有時候有些條件需要符合才應該發起Pull Request,但是工程師忘記了,造成Reviewer需要花時間最後才發現根本最基本的條件都沒達到。

有沒有什麽方式可以提醒工程師在Pull Request發起的訊息要打好,並且該檢查的東西都要檢查過了呢?

這一篇,來看看在Azure DevOps裡面,如何透過建立template(範本)達到這個需求。


[faq]如何故障排除ASP .NET Core網站啟動失敗問題

[faq]如何故障排除ASP .NET Core網站啟動失敗問題.jpg
圖片來源:https://pixabay.com/en/despair-alone-being-alone-archetype-513528/

辛辛苦苦開發的Asp .Net Core網站做完了,在local測試也沒什麽問題了,接下來肯定是要發佈到正式機器讓世界看看你的傑作。

但是,當發佈到Azure Web App上面,卻出現了An error occurred while starting the application,然後其他除了執行環境訊息之外什麽訊息都沒有。

這個時候該怎麽辦?我只是想要把網站run起來怎麽那麽困難!!!

這篇將介紹如何偵錯這類的問題。


[.net core]如何在開發階段透過Visual Studio設定不同的執行環境 (環境變數)

[.net core]如何在開發階段透過Visual Studio設定不同的執行環境 (環境變數).jpg
圖片來源:https://pixabay.com/en/despair-alone-being-alone-archetype-513528/

在上一篇([faq]ASP .NET Core 如何在開發的情況下讓Controller不需要過Authorization (驗證))介紹了如何透過當執行環境是Development的時候不要過驗證。

透過那樣的設定可以讓開發者在開發階段的時候不用擔心驗證的部分。不過有時候需要把驗證的部分一起考慮進去怎麽辦?

例如想要做整合測試,確保需要權限的api邏輯沒有錯誤的時候怎麽辦?總不能夠直接打staging的機器吧。

這件事情其實在Visual Studio可以很容易的辦到,來看看如何切換執行環境。


[faq]ASP .NET Core 如何在開發的情況下讓Controller不需要過Authorization (驗證)

ASP .NET Core 如何在開發的情況下讓Controller不需要過Authorization (驗證).jpg
圖片來源:https://pixabay.com/en/key-tag-security-label-symbol-2114047/

最近常開發以及維護ASP .NET Core Web API的網站,其中一個會遇到問題就是,如何在開發的情況下繞過驗證/授權(Authorization)

這篇將介紹,如何透過設定的方式一次開啓驗證以及不驗證。


[faq]Windows 1803之後git for windows無法透過Start-SshAgent啓用ssh agent - 需要一直輸入passphrase的問題

[faq]Windows 1803之後git for windows無法透過Start-SshAgent啓用ssh agent - 需要一直輸入passphrase的問題.jpg
圖片來源:https://pixabay.com/en/despair-alone-being-alone-archetype-513528/

還記得之前有一篇介紹git for windows最新版本的Credential Manager有問題導致沒有辦法和遠端repo溝通(Windows安裝 git 2.19.1 之後做git clone-pull-push出現)。透過那一篇,理論上和遠端repo驗證就沒什麽問題了。

不過我自己在使用的時候發現,不知道爲什麽Azure DevOps的repo雖然跳出來輸入的是正確的帳號和密碼,但是git就是出現驗證失敗(github就不會)。

好吧,那換一種驗證方式,改成使用ssh。

不過用ssh又遇到另外一個問題,每一次和遠端溝通都要輸入passphrase超級麻煩,這個時候突然想起以前寫過(何謂ssh,在Windows下如何使用ssh,如何在Windows透過ssh下載和上傳程式到github)透過ssh agent不用一直輸入密碼。

興奮的打開那一篇,學著裡面輸入Start-SshAgent,結果出現了error:1058

什麽鬼,難道不能夠讓我開開心心的pull/push然後不輸入密碼嗎?

這篇將來介紹到底在Windows 1803之後做了什麽導致ssh agent啓動不起來。


[faq]Windows安裝 git 2.19.1 之後做git clone/pull/push出現NullReferenceException錯誤的問題解決方式

[faq]Windows安裝 git之後做git push出現NullReferenceException錯誤的問題解決方式.jpg
圖片來源:https://pixabay.com/en/despair-alone-being-alone-archetype-513528/

最近在一臺乾净的電腦裡面重新安裝了開發環境,git作爲版控工具肯定是首選要裝的工具之一。

環境准備好了之後,當然就是要clone專案下來開始開發,可是竟然出現了fatal: NulIReferenceException encountered. Object reference not set to an instance of an object.

太詭異了吧,用了git這麽多年還沒有遇到過這種問題,到底要怎麽處理呢?


[tool]用acs-engine在azure透過VMSS建立出kubernetes (k8s) 自動延展的cluster - 下篇

[tool]用acs-engine在azure透過VMSS建立出kubernetes (k8s) 自動延展的cluster - 上篇.jpg
圖片來源:https://pixabay.com/en/key-tag-security-label-symbol-2114047/

在上一篇(用acs-engine在azure透過VMSS建立出kubernetes (k8s) 自動延展的cluster - 上篇)介紹了如何使用acs-engine這個工具產生出了可以在azure上面部署的ARM template,并且成功部署上了Azure。

在這篇將會延續上篇建立出來的vm,并且透過工具對建立出來的k8s cluster做操作,并且看看azure和k8s怎麽的深度結合。

以下用到的指令整合在一起可以從我的github看到:mhat-acs-enginge-azure-k8s/src/02 access-k8s/access-k8s-cluster.ps1

[tool]用acs-engine在azure透過VMSS建立出kubernetes (k8s) 自動延展的cluster - 上篇

[tool]用acs-engine在azure透過VMSS建立出kubernetes (k8s) 自動延展的cluster - 上篇.jpg
圖片來源:https://pixabay.com/en/key-tag-security-label-symbol-2114047/

最近有機會接觸到要用azure的IaaS服務建立出可以自動擴展的kubernetes (以下簡稱k8s) 叢集 (以下簡稱cluster)。

雖然常碰azure的一定會知道,其實azure有提供k8s的PaaS服務(不管是Azure kubernetes Service (AKS) 還是 更高一層的 Azure Container Instance (ACI))但是有些地方是沒有那些服務的(可以期待9月)或者如果想要自己控制完整的vm那要怎麽辦呢?

這篇將會快速介紹一下用acs-engine產生在Azure IaaS上面可以使用的k8s自動延展的cluster,在下一篇在介紹如何操作并且看到azure怎麽和k8s整合。


[VSTS]如何調整Visual Studio Team Service的區域(Region)

image
圖片來源:https://pixabay.com/en/key-tag-security-label-symbol-2114047/

Visual Studio Team Services (VSTS) 可以簡單理解成為雲端版的Team Foundation Server (TFS),而且微軟很佛心的讓5人以下團隊免費使用。

在建立VSTS的時候,有個選項是VSTS的資料要放在哪個區域(Region)。早期的時候,只有在美國,現在的話在東亞(East Asia)也有辦法建立了。

不過如果是早期建立在美國的VSTS是否能夠移動到East Asia呢?這篇將會介紹如何透過寫VSTS的support ticket來達到這個轉換。


[faq]解決C#呼叫有ssl憑證問題的網站出現遠端憑證是無效的錯誤問題

image
圖片來源:https://pixabay.com/en/despair-alone-being-alone-archetype-513528/

有時候需要在C#的程式裡面發出request和內部或者外部的服務溝通,如果內部或者外部的服務只允許https連線,而且的ssl憑證並沒有經過認證(有可能是用self signed certifcate),那麼C#會直接出錯:

image
錯誤訊息範例畫面

system.security.authentication.authenticationexception the remote certificate is invalid according to the validation procedure

System.Net.Http.HttpRequestException: 傳送要求時發生錯誤。 ---> System.Net.WebException: 基礎連接已關閉: 無法為 SSL/TLS 安全通道建立信任關係。
---> System.Security.Authentication.AuthenticationException: 根據驗證程序,遠端憑證是無效的。

一般來說要解決這個問題有兩個做法:

  1. 把self sign的certificate裝到程式的機器上面並且信任那個憑證
  2. 在送出request的時候做一些特殊處理

這篇將會對於第二個做法,調整程式讓發出request遇到這種問題的時候能夠處理這種問題。


[iis]為什麼ssl cipher suite關閉了檢查還是有出現問題 - 如何local檢查ssl和cipher suite

image
圖片來源:https://pixabay.com/en/despair-alone-being-alone-archetype-513528/

之前有介紹透過使用IISCrypto來快速設定SSL相關的資安設定。正常來說只要重啟以後禁用的ssl和cipher suite應該就不會出現。

不過如果用一些檢測工具,例如透過Qualys SSL Lab的SSL ServerTest,那麼有可能還是會看到已經禁用的cipher suite

這是為什麼呢?這樣到底如何驗證設定是否有成功?這篇將會介紹如何透過local檢測的方式確認修改是否有成功。


[.Net]Dll明明有在,為什麼出現找不到DLL錯誤 - 一次搞懂如何處理Dll版本問題(Dll Hell)

image
圖片來源:https://pixabay.com/en/despair-alone-being-alone-archetype-513528/

當系統越來越模組化,大量library開始透過nuget方式組成的時候,開始會遇到一個情況,那就是Dll版本問題(Dll Hell)。

如果對於Dll版本問題沒有一些了解的情況下,常常會遇到明明Dll存在bin下面,但是還是出現找不到的錯誤訊息:

image
System.IO.FileLoadException: Could not load file or assembly 'Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference.

這篇將對於.Net如何處理Dll Hell的問題做一些介紹。


[git]repo、branch和tag取名建議和注意事項 - 怎麼取名比較不會有問題

image
圖片來源:https://pixabay.com/en/key-tag-security-label-symbol-2114047/

最近在和同事協同開發的時候,發生了一件事情:

由於我們還沒啟用CD(自動部署)但是更新測試機器又不一定是同一個人,為了好管控目前程式碼和目前測試機器上面的版本,我們使用了一個標籤叫做TestServer來記錄。

不過當我同事更新的時候,他使用了testserver作為標籤,結果我這邊發生了雖然local只有一個tagtestserver,但是在remote上面其實有兩個標籤:TestServertestserver

為什麼會發生這個事情呢?如果不處理,未來在看的時候非常混亂,這讓我想起來一直想要寫的一篇文章,為git repo、tag和branch取名的時候應該要注意什麼比較不會有問題,因此兩篇一起寫,算是不好好naming會帶來什麼問題的use case範例。

搜索關鍵字:naming guidance for git repo, tag and branch.


IIS 無法取得font - 錯誤 Failed to decode downloaded font - 了解MIME設定和gitattributes錯誤導致的問題

IIS 無法取得font - 錯誤 Failed to decode downloaded font - 了解MIME設定和gitattributes錯誤導致的問題
圖片來源:https://pixabay.com/en/despair-alone-being-alone-archetype-513528/

最近在案子裡面遇到網站有使用到Fontello的元件。網站的靜態切板沒什麼問題但是掛到了iis之後,發現icon的部分都出不來,然後chrome F12的developer工具出現了錯誤訊息:

Failed to decode downloaded font

Failed to decode downloaded font

OTS parsing error: incorrect file size in WOFF header

但是看network裡面fontello的font又有load成功   
但是看network裡面fontello的font又有load成功

這不是我第一次使用這種font相關的套件,為什麼以前沒有發生呢?這篇將會對於發生的原因和解決方式做個總結。

關鍵字:fontello出不來、fontawesome出不來、無法使用font套件

該怎麼開專案的資料夾結構?每個專案應該要有的資料夾結構和檔案

該怎麼開專案的資料夾結構?
圖片來源:https://pixabay.com/en/key-tag-security-label-symbol-2114047/

每當需要建立一個新的專案的時候,最長遇到的問題就是,我的 資料夾應該怎麼開有哪些檔案是必須要存在

對於初學者來說,可能會覺得這有什麼好難的,我就visual studio開起來,然後建立一個專案就可以開始工作了,範例不都是這樣開的嗎?

這個為什麼很重要呢?假設有些必要的檔案沒有建立,除了在開發上會造成負擔(例如缺少git忽略檔案),在之後自己回來看的時候就要花很多時間去找。例如文件在哪裡?專案的變更記錄在哪裡?ci的自動化build script在哪裡?

如果每個專案的結構和內容相近的話,不僅讓找資料更加方便,也能提醒自己有些東西需要補(例如萬惡的文件XD)。

這篇將會介紹每個專案應該要有的資料夾結構和應該要有的檔案,讓未來在建立專案的時候不會忘記。

最後,在實際進入之前,和任何軟體開發一樣,這個有很重的個人喜好(personal preference)在裡面,所以可能和各位習慣不同,由我先拋磚引玉,如果有不同想法和更好建議也歡迎提出來。

關鍵字:專案結構、開專案資料夾、project strcture、特殊檔案



[git]為什麼常出現有修改但是比對不卻顯示不出差異?談談檔案斷行問題和如何達到不同平台正確一致化

用git之後,有時候遇到在檢查狀態的時候明明顯示有修改,但是實際比對的時候發現完全沒有差異

通常來說發生這種情況就是檔案的斷行跑掉了,如果沒有好好解決到時候log會常常出現修改,但是實際上並不是真的修改,未來查找log很辛苦。

在這篇將會對於如何一勞永逸處理掉這個斷行問題做個說明。


[Visual Studio]如何在Visual Studio 2015使用C#7的功能?

隨著Visual Studio 2017發佈之後,C# 7也同時發佈了。

C# 7 和 C# 6一樣,帶來都是比較偏幫助開發的時候寫起來更加簡潔的一些寫法,因此很容易就會想要使用來增加易讀性。

這個時候如果團隊使用的Visual Studio版本不同,容易就會發生編譯問題,以Visual Studio 2015來說,在編譯C# 7 就會出錯,那是否就不能夠用了呢?