2023/02/25
[Visual Studio 2022] v17.5 新功能 - All-In-One Search 全域搜尋
markdown
### 前言
在操作工具,最大的困擾除了要能快速找到檔案或資料,另一個就是本身功能的設定。
VS Code 的出現,及它的方便查詢文件及功能設定真是深得我心。
有在用 JetBrains 家族工具的朋友應該很熟悉 Shift+Shift。
在 Visual Studio 最常用的也是 Ctrl+T 或 Ctrl+Q,而在最新的 Visual Studio 2022 v17.5 終於給了個全域搜尋功能。
2023/02/20
[.NET] 升級 ASP.NET MVC 至 ASP.NET Core MVC 的注意事項
markdown
### 前言
繼上篇 [如何使用 .NET Upgrade Assistant 升級舊 ASP.NET MVC 專案](https://devmanna.blogspot.com/2023/02/howto-upgrade-using-net-upgrade-assistant.html) 所遇到的升級問題再做一個小小的注意事項筆記
### 網站檔案路徑
在 ASP.NET MVC 可以透過 `Server.MapPath()` 來指定在伺服器上的路徑
例如:
```cs
public class HomeController : Controller
{
public ActionResult Index()
{
string docsPath = Server.MapPath("~/docs");
//...
}
}
```
而在 ASP.NET Core MVC 需要經由注入 Microsoft.AspNetCore.Hosting.IWebHostEnvironment 來讀取環境變數
例如:
```cs
public class MyService
{
public MyService(IWebHostEnvironment env)
{
string docsPath = $@"{env.CotnentRootPath}/docs";
}
}
```
2023/02/19
[.NET] 如何使用 .NET Upgrade Assistant 升級舊 ASP.NET MVC 專案
markdown
### 問題
進入 .NET 7 的今日,手邊仍有許多舊的專案,要如何將舊專案升級呢?
微軟提供了 .NET Upgrade Assistant 工具來協助升級舊專案。
讓我們一起來一步步升級吧!
### 升級專案
舊專案環境:
- ASP.NET MVC 5.2.9
- .NET Framework 4.7.2
想要升級目標專案至 .NET 7
2023/02/06
[npm] 如何檢查 npm 全域套件是否更新至最新版本
markdown
### 問題
趁著更新 macOS 的版本,也順便把一些開發工具更新一波。
### 檢查 npm 全域套件是否為最新狀態
1. 可直接執行下列指令來作檢查
```
npx npm-check-updates -g
```
2. 安裝 npm-check-updates 這個全域套件來作檢查
其實初次呼叫第一個方法即會詢問是否安裝 npm-check-updates 套件
```
npm install -g npm-check-updates
```
檢查指令 (執行結果與第一個方法相同)
```
ncu -g
```
2023/02/05
[Mac] 解決更新 macOS 後,在 Terminal 執行 command 時出現 xcrun 錯誤訊息
markdown
### 問題
今天在更新 macOS 後, 在終端機執行 command 時出現 xcrun 錯誤。
訊息如下:
```
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
```
### 解決方法
重新安裝 Xcode Command Line Tools 即可
```
xcode-select --install
```
2023/01/17
[Linux] 相見恨晚 rsync 取代 cp 的複製指令
markdown
### 問題情境
在 Linux Server 傳輸檔案,絕大多數的使用情境是可以直接用有 UI 介面的工具透過 SFTP 傳輸檔案。
但有時會遇到僅有文字介面的遠端操作環境,即先遠端到客戶主機,然後用 SSH 連線到指定的 Server。
以前只會在文字介面下用 `cp` 複製的指令,但這個指令的問題點在於:
1. 不會覆蓋已存在的檔案,若要覆蓋需加 -i (interactive),但會一個一個詢問是否要覆蓋。一兩個檔案還沒什麼,當要更新的檔案很多時,操作上有點沒效率。
2. 若在 root 的權限操作下,會蓋掉原使用者及群組的權限 (這可是大件事啊...)
### 相見恨晚的 rsync
一直以為 rsync 只是用來同步用,透過跟社群朋友交流,發現它是有更新檔案覆蓋的功效,操作上跟 cp 類似,但是最棒的是可以保留指定使用者及群組權限,還可比對各檔案差異的傳輸狀況。
我目前的操作情境是把差異更新的檔案程式先下載到主機再做更新,所以只會做複製及更新檔案的動作,不做任何刪除檔案的異動。(若遇到真需要刪檔的時候,才再行確認手動刪除)
更新操作動作如下:
```
rsync -avh /source/update_folder/ /target/project_folder/
```
常用參數:
- `-v` : verbose 模式
- `-r` : recursive 遞迴所有子目錄下的目錄及檔案
- `-a` : 相當於 `-rlptgoD` 參數,遞迴備份所有子目錄下的目錄與檔案,保留連結檔、檔案的擁有者、群組、權限以及時間戳記
- `-z` : 使用壓縮
- `-h` : 將數字以比較容易閱讀的格式輸出
對應 cp 的類似的用法則是
```
cp -ia /source/update_folder/* /target/project_folder/
```
透過 rsync 來做檔案更新操作,真的是相見恨晚呀!rsync 還有更多強大的使用情境,待日後慢慢研究啦~
同場加碼 Windows 也可以使用 rsync (工具: [cwRsync](https://itefix.net/cwrsync))
### 參考資料
- [Linux 使用 rsync 遠端檔案同步與備份工具教學與範例](https://blog.gtwang.org/linux/rsync-local-remote-file-synchronization-commands/)
2023/01/16
[MySQL] 解決匯入資料時出現 Got a packet bigger than max_allowed_packet bytes 問題
markdown
### 問題
在 MySQL 匯入 *.sql 資料時出現 `[Err] 1153 - Got a packet bigger than 'max_allowed_packet' bytes` 的錯誤資訊。
### 解決方法
1. 修改 MySQL 設定檔案
在 [mysqld] 的設定區塊下加上 `max_allowed_packet=100M` 即可接受 100MB 以內的檔案 (預設為 16MB)
可依匯入的檔案大小做設定修改,最大值為 1GB,修改後必需重啟 Server 以生效
2. 不修改設定檔的狀況下,可在 Commandline 加上 `--max_allowed_packet` 參數設定
例如:
```
mysql --max_allowed_packet=100M -u root -p database < dump.sql
```
### 相關連結
- [mysql Client Options](https://dev.mysql.com/doc/refman/8.0/en/mysql-command-options.html#option_mysql_max-allowed-packet)
訂閱:
文章 (Atom)