Posts
Rider - Sync settings
要讓 Rider 在不同裝置有一致的設定,可開啟 Rider 的同步設定功能。
點選 Rider 的 [ File | Sync Settings to JetBrains Account… ] 主選單選項。
點選 Enable Settings Sync 按鈕啟動 Rider 設定同步。啟動後 Rider 會開始同步界面、編輯器、熱鍵、外掛等設定。
同步啟動後本來的 [ File | Sync Settings to JetBrains Account… ] 主選單選項會變為 [ File | IDE Settings Sync ]。如果要關閉同步,可點選 [ File | IDE Settings Sync | Disable Sync…] 主選單選項。
然後評估是否刪除雲端的同步資料,決定是否勾選勾選框,最後按下 Disable Settings Sync 按鈕,即可關閉同步功能。
如果雲端已有同步的設定,其它裝置要使用同步設定,或是同裝置關閉同步後想重新同步,一樣點選 [ File | Sync Settings to JetBrains Acc ount… ] 主選單選項,然後點選 Get Settings from Account 按鈕從雲端設定同步回本機。或是點選 Keep and Sync Local Settings 按鈕以本地的設定為主,將本地的設定同步到雲端。
read morePosts
gRPC - Setup singleton service
ASP.NET Core 的 gRPC service 預設是沒有 Singleton 的,所以如果今天 gRPC client 發送多次訊息給 gRPC server。
gRPC server 會建多次 gRPC service 實體。
為避免這樣的情況,可在 Startup 的 ConfigureServices 內透過 services.AddSingleton 將 Service 的實體帶入。
... public class Startup { public void ConfigureServices(IServiceCollection services) { ... services.AddGrpc(); services.AddSingleton(service); ... } ... } gRPC server 就只會用指定的 gRPC service 實體去做事。
read morePosts
gRPC - Setup service options with ASP.NET Core
在 ASP.NET Core 支援設定的 gRPC service option 有:
Option Default Description SendMaxMessageSize null 最大訊息大小可以從伺服器傳送的位元組數。 嘗試傳送的訊息長度超過設定的最大訊息大小會導致例外狀況。 ReceiveMaxMessageSize 4 MB 最大訊息大小可以由伺服器接收的位元組數。 如果伺服器收到的訊息超過此限制,它會擲回例外狀況。 增加此值可讓伺服器接收較大的訊息,但可能會造成負面影響記憶體耗用量。 EnableDetailedErrors false 如果true詳細服務方法擲回例外狀況時,將會傳回給用戶端的例外狀況訊息。 預設為 false。 這個設定設為true可能會導致洩漏機密資訊。 可在 Startup 的 ConfigureServices 內透過 services.AddGrpc 針對所有 Service 下去設定。
... public class Startup { public void ConfigureServices(IServiceCollection services) { ... services.AddGrpc(options => { options.ReceiveMaxMessageSize = receiveMsgLimit; options.SendMaxMessageSize = sendMsgLimit; }); ... } ... } 也可以透過 services.AddGrpc().AddServiceOptions 針對特定 Service 下去設定。
... public class Startup { public void ConfigureServices(IServiceCollection services) { .
read morePosts
Git - Reset local branch to remote state
若在本地操作 Git 錯誤,想將本地分支還原到跟遠端分支一樣狀態的話。
可以將遠端分支 fetch 下來。
git fetch ${RemoteName} ${BranchName} 然後強制將本地分支還原至遠端分支的狀態。
git reset --hard ${RemoteName}/${BranchName} 像是筆者這邊不小心做錯,搞出了 Revert Commit。
這時可以像下面這樣調用。
git fetch origin source git reset --hard origin/source 本地分支就會變為跟遠端分支一樣的狀態,本地做錯的動作就會被還原。
Link Reset a Branch to Remote State with git
read morePosts
appcmd - Add site binding
要使用 appcmd 設定站台的 Binding,可以使用 appcmd set site,使用 /site.name 指定要綁定的站台名稱,用 /+bindings 指定 Binding 的資訊,像是 Protocol、IP、Port、與 Host 名稱。
appcmd set site /site.name: "${SiteName}" /+bindings.[protocol='${Protocol}',bindingInformation='${IP}:${Port}:${HostName}'] 像是要幫 Default Web Site 綁定本地用的 SSL,就可以像下面這樣輸入命令。
appcmd set site /site.name: "Default Web Site" /+bindings.[protocol='https',bindingInformation='*:443:localhost'] 命令運行後站台的 Binding 就做完了。
Link Setting Host name on SSL Binding on IIS7
read morePosts
wget - Download file via proxy
要讓 wget 透過 proxy 抓取檔案,可設定 http_proxy、https_proxy、或是 ftp_proxy。
如果一次性的調用,可直接在終端機手動輸入 Proxy 設定。
export http_proxy=http://${ProxyServer}:${port} export https_proxy=$http_proxy export ftp_proxy=$http_proxy 如果每次都需要走 Proxy,可修改 .wgetrc 檔。
vim ~/.wgetrc 在 .wgetrc 中做 Proxy 設定。
http_proxy = http://${ProxyServer}:${port} https_proxy = http://${ProxyServer}:${port} ftp_proxy = http://${ProxyServer}:{port} 調用 wget 時可用 –proxy 決定是否透過 proxy 連線。
wget --proxy=on|off 或是直接在 .wgetrc 中設定是否是否透過 Proxy 連線。
use_proxy = on 如果 Proxy 設需要驗證,且 Proxy 設定未輸入驗證資訊,可透過 –proxy-user 與 –proxy-password 將 Proxy 的驗證資訊帶入。
Link How to use wget to download file via proxy – The Geek Diary
read morePosts
Copy terminal output to clipboard
要將終端機命令的輸出送到剪貼簿,我們可以使用 pbcopy 命令。只要在調用命令時用 pipeline 將命令輸出送給 pbcopy 即可。
${Command} | pbcopy 調用完可找個記事本貼上試試,應該可以看到調用命令後的輸出內容。
也可以透過 pbpaste 命令將剪貼簿的內容貼入終端機內。
Link Copy terminal output to clipboard Mac OS X
read morePosts
Print directory tree with find command
若未裝 tree 命令但想要顯示 Directory tree,可以用 find 命令搭配 sed 命令做到類似的效果。
find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g' 運行起來很接近 tree 命令的效果,只是線不像 tree 命令那樣漂亮,也沒有像 tree 命令那樣可吃命令參數。
如果這樣的效果已經很夠用,那可以設上 alias。
alias tree="find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'" 後續方便重複使用。
Link mac tree命令- 破男孩- 博客園
read morePosts
'Mocha - the fun, simple, flexible JavaScript test framework'
Mocha 是 Node.js 上的單元測試框架。該單元測試框架能讓我們撰寫測試案例、運行單元測試、及產生測試報告等。
使用前先從 Registry 下載套件。
npm install mocha --save-dev 然後透過 Mocha 提供的 describe、it、before、after、beforeEach、afterEach 這幾個方法撰寫單元測試。
describe 用來設定描述測試的功能或情境,it 用來設定測試案例,before 用來設定測試情境下所有測試案例運行前要做的動作,after 用來設定測試情境下所有測試案例運行後要做的動作,beforeEach 用來設定每個測試案例運行前要做的動作,afterEach 用來設定每個測試案例運行後要做的動作。
像是下面這樣:
describe('Array', function() { describe('#indexOf()', function() { it('should return -1 when the value is not present', function() { ... }); }); }); 單元測試的斷言部份 Mocha 並未提供,需額外使用 Chai 之類的斷言套件搭配撰寫。
所以如果用 Mocha 搭配 Chai 撰寫,程式就會像下面這樣:
var assert = require('assert'); describe('Array', function() { describe('#indexOf()', function() { it('should return -1 when the value is not present', function() { assert.
read morePosts
Chai - A BDD / TDD assertion library for node
Chai 是 Node.js 的 BDD / TDD 斷言套件。
使用前先從 Registry 下載套件。
npm install chai --save-dev Chai 有三種撰寫風格,should、expect、assert,assert 是比較偏向傳統的斷言方式,expect 與 should 則是偏向 BDD style 的斷言方式。
無論哪個撰寫風格在撰寫前都需引用 Chai 套件。
const chai = require('chai'); should 撰寫風格使用上要先告知 Chai 套件使用 should 撰寫風格。
chai.should(); 接著用目標值應該是…、目標值應該等於…、目標值應該有…類似這樣的寫法撰寫斷言。
... target.should.be.a(type); target.should.eaequal(value); target.should.have.lengthOf(length); ... 程式寫起來會像下面這樣:
const chai = require('chai'); const foo = "bar"; const beverages = { tea: [ 'chai', 'matcha', 'oolong' ] }; chai.should(); foo.should.be.a('string'); foo.should.equal('bar'); foo.should.have.lengthOf(3); beverages.should.have.property('tea').with.lengthOf(3); 如果斷言錯誤,可以看到像下面這樣斷言錯誤的訊息。
read more