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

The Will Will Web

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

在 Linux 如何使用 curl 下載從 Google Drive 分享的檔案

前陣子我需要安裝一台 Sybase ASE 資料庫到 Linux 主機,當我拿到安裝檔的時候,其實是一個 Google Drive 共用的連結,檔案大小有 1.4GB 左右,我不想先下載到我的 Windows 主機再上傳到 Linux 主機,我想直接從 Linux 主機下載該檔案。上網找了許多解決方案,但是這些作法幾乎都已經失效,最後還是自己研究出了一個很棒的方法,有需要的人請繼續看下去。

... 繼續閱讀 ...

關於 Linux 下 Bash 與 Zsh 啟動檔的載入順序研究

Linux 用了二十多年,從沒認真想過 Login Shell 載入的啟動檔順序為何,我們經常會看到 .bashrc, .bash_profile, .bash_login, .profile 諸如此類的檔案,在安裝一些工具或系統的時候,也多多少少會需要設定這些檔案,加入一些環境變數或其他設定之類的。除了我常用的 Bash 以外,外面還有 Zsh 也很多人用,這時到底要編輯哪個檔案才是正確的呢?我將用這篇文章來好好釐清這個真相。

... 繼續閱讀 ...

Ubuntu 20.04 LTS 伺服器如何調整網路介面設定從 DHCP 變更為固定 IP 地址

Ubuntu 20.04 LTS 伺服器預設採用 Netplan 作為網路設定的工具,但是要變更網路介面設定實在是有點麻煩,沒找到有好用的 TUI (Terminal UI) 工具可以用。我想透過這篇文章記錄一下變更 IP 設定的過程。如果有不同的網路情境導致設定步驟不同,我會陸續補充到這篇文章裡。

... 繼續閱讀 ...

在 Azure Pipelines 裡面正確使用 ROBOCOPY 複製檔案的方法

在命令列環境下執行程式,這個世界普遍有個共識,那就是應用程式的結束狀態碼(Exit Code)為 0 時,就會被視為是「沒有錯誤」的結果。任何非 0 的結束狀態碼,都代表有一定程度的錯誤發生。因此在 Azure Pipelines 或任何其他 CI 平台上,預設遇到應用程式回傳 Non-Zero 的結束狀態碼,就會自動報錯。誰知道 ROBOCOPY 原來複製成功,也會回傳非 0 的結束狀態碼!

... 繼續閱讀 ...

如何快速建置一個 Node.js 專案並使用 TypeScript 與 VSCode 進行開發

每次要開始寫一個 Node.js 搭配 TypeScript 的專案,都沒有一個能讓自己滿意的專案範本,不然就是網路上經常找到不完整的參考文件。這篇文章我打算建立一個 Node.js 搭配 TypeScript 進行開發的專案範本,完整交代整個建置過程,並用一個簡單的例子說明開發與執行的注意事項。

... 繼續閱讀 ...

如何正確建置 ASP.NET MVC 5 原始碼並對原始碼進行分析研究

上次寫這個主題已經是 2009/2/8 的事情了,原來我已經用 ASP.NET MVC 寫了超過 12 年。時至今日 ASP.NET MVC 5 已經非常穩定,而且微軟還有團隊在維護這套框架,但不會增加新功能,只會修正社群回報的 Bug 而已。由於最近正在進行 ASP.NET MVC 5 開發實戰課程,我也非常建議學員可以下載原始碼回來研究,所以這篇文章我將說明下載原始碼編譯的幾個重要步驟。

... 繼續閱讀 ...

HttpClient 的 PostAsJsonAsync 擴充方法如何停用 chunked 分段資料傳輸

由於 Azure Logic App 的 HTTP Trigger 不支援 Transfer-Encoding: chunked 的 HTTP 要求,而 HttpClient 的 PostAsJsonAsync 擴充方法只支援透過 Transfer-Encoding: chunked 發出 HTTP 要求,這個問題是我嘗試了將近 30 分鐘才發現的魔鬼細節,真的是雷到一整個無以復加。今天這篇文章,我要來說明如何讓 HttpClient 的 PostAsJsonAsync 擴充方法支援 chunked 資料傳輸,以及 Transfer-Encoding: chunked 這個 HTTP 標頭到底是什麼。

... 繼續閱讀 ...

執行 Docker 容器可使用 dumb-init 或 tini 改善程序優雅結束的問題

現在越來越多環境都跑在 Docker 環境下,但不知道你是否有遇過想要停止容器,但執行 docker stop 之後卻無法立即停止的狀況?這個問題會牽扯到我在 當 .NET Core 執行在 Linux 或 Docker 容器中如何優雅的結束 文章中提到的 訊號(Signal) 是如何傳送到容器的程序。這篇文章我將更深入的探討這個問題,以及提供解決方法。

... 繼續閱讀 ...

分享幾個常用的 7-Zip 壓縮與解壓縮命令

我們最近幾年幾乎所有案子都導入 CI/CD,把所有能自動化的工作全部都指令化,所以只要公司需要開發時期用的測試機,或是客戶需要安裝主機,通常都可以在 10 分鐘內搞定所有環境與設定。今天這篇文章我要來分享幾個常用的 7-Zip 命令與參數,因為 7-Zip 在第一次使用 7z 命令的時候,他的使用方式比較沒那麼直覺,所以寫成文章供未來查表參考之用。

... 繼續閱讀 ...

自製編譯器不求人:快速上手 ANTLR 與 .NET 開發環境設定

有時候我們需要自訂 DSL (Domain Specific Language) 領域特定語言,就需要自訂格式、語法,並自製編譯器去解析這份語言。目前最為普遍的作法大概就是 ANTLR 工具了。這個工具主要由 Java 開發而成,但可以自動產生 C# 程式碼,讓你用 C# 去解析這份語言,甚至可以用這份語言產生另一份語言,這也是 DSL 的另一種常見情境。

... 繼續閱讀 ...

整理幾個 Azure Logic Apps 與 Power Automate 會用到的日期函式

最近熱愛 low-codeno-code 的解決方案,簡單拖拉幾個設定,或是複製之前寫好的 JSON,就可以快速完成一個日常的自動化工作,減少越來越多的人工操作,重點是幾乎不用花錢,也不用花心思在部署上。今天我要來整理幾個 Azure Logic AppsPower Automate 會用到的日期函數,因為我的自動化工作大多都跟日期時間有點關係。

... 繼續閱讀 ...