利用
sudo vim /etc/profile
新增環境變數
透過 export 可以設定環境變數
export key_id=XXXX
export access_key=XXXX
編輯完畢
再用
source /etc/profile
重新載入設定檔
最後再利用 echo 測試環境變數是否設定成功
echo $key_id
echo $access_key
如果設定成功
你應該可以看到設定的內容
2019年6月17日 星期一
2019年6月15日 星期六
PyCharm 出現 Error: Please select a valid Python interpreter 錯誤訊息的解決方法
PyCharm 出現 Error: Please select a valid Python interpreter 錯誤訊息
選擇 Python Interpreter 的下拉選單
選擇 Python 3.6
就能正常執行了
2019年6月9日 星期日
Windows 10 修改 Git 憑證帳號密碼
控制台\使用者帳戶\認證管理員
CMD 上面輸入 control
可以直接呼叫「控制台」
CMD 上面輸入 control userpasswords
可以直接呼叫「使用者帳戶」
選擇要修改的憑證
修改憑證的帳號與密碼
接下來就能正常簽入了。
2019年5月29日 星期三
一般軟體階段介紹與說明
Alpha
此版本重點在實踐主要功能,做為內部意見交流所用,Bug 比較多,但不是此階段的重點。
Beta
此版本承接 Alpha 版本,消除了嚴重的 Bug,重點會放在 UI 的使用體驗。
RC / Preview
基本上沒太多 Bug,為發行前的最後一版。
PS. RC 是 Release Candidate (發行 候選)的縮寫
Release / Final
發行版本,是交付給使用者的版本。
此版本重點在實踐主要功能,做為內部意見交流所用,Bug 比較多,但不是此階段的重點。
Beta
此版本承接 Alpha 版本,消除了嚴重的 Bug,重點會放在 UI 的使用體驗。
RC / Preview
基本上沒太多 Bug,為發行前的最後一版。
PS. RC 是 Release Candidate (發行 候選)的縮寫
Release / Final
發行版本,是交付給使用者的版本。
Visual Studio 版本號介紹與說明
Visual Studio 一般常見的版本號樣式
是以 1.2.3.4 的樣式呈現
對應在英文上
為 Major(1).Minor(2).Build(3).Revision(4)
現在針對每個欄位的意義
做一個簡單的說明
Major
通常是大更新,使的程式無法向下相容,這個版號會遞增
Minor
也是大更新,但是程式可以向下相容,這個版號會遞增
Build
通常是一些小更新,例如:修正 Bug,這個版號會遞增
PS.這個欄位也有人用更新日期代表
Revision
通常是內部版本,或修正安全性漏洞,這個版號會遞增
是以 1.2.3.4 的樣式呈現
對應在英文上
為 Major(1).Minor(2).Build(3).Revision(4)
現在針對每個欄位的意義
做一個簡單的說明
Major
通常是大更新,使的程式無法向下相容,這個版號會遞增
Minor
也是大更新,但是程式可以向下相容,這個版號會遞增
Build
通常是一些小更新,例如:修正 Bug,這個版號會遞增
PS.這個欄位也有人用更新日期代表
Revision
通常是內部版本,或修正安全性漏洞,這個版號會遞增
Visual Studio 2017 發佈後,執行批次檔(配合 pscp、plink 一鍵更新遠端 Ubuntu 伺服器檔案)
首先先要設定完發佈設定檔 FolderProfile.pubxml
再來修改檔案內容
PS.記得 *.bat 檔案檔案屬性要選「永遠複製」不然執行階段會出現找不到批次檔的訊息
還有 *.bat 檔案在專案編譯後在根目錄下 Exec Command=WinToUbuntu.bat 可以不需要 *.bat 路徑。
批次檔內可以利用上次提到的 pscp 將檔案複製到遠端的 Ubuntu 伺服器內
就能做到一鍵發佈並更新遠端 Ubuntu 檔案
例如:
pscp -i "C:/ppk/ubuntu.ppk" -pw password *.* user@1.2.3.4:/home
plink 可以執行遠端的 Ubuntu 指令
例如:
plink -ssh -i ubuntu.ppk user@1.2.3.4 -pw password cd /home; ls;
PS.
1.寫完 *.bat 檔案,記得實際操作 pscp 與 plink 指令測試一次,這樣 Register 會記錄過授權記錄, *.bat 才能正常執行。
2.Windows 10 安裝 PuTTY 後,pscp 與 plink 的路徑會被引用,所以不需要複製 pscp 與 plink 的執行檔。
再來修改檔案內容
<Target Name="ExecuteBatAfterPublish" AfterTargets="AfterPublish">
<Exec Command="C:\Batch\WinToUbuntu.bat" WorkingDirectory="$(publishUrl)" />
</Target>
PS.記得 *.bat 檔案檔案屬性要選「永遠複製」不然執行階段會出現找不到批次檔的訊息
還有 *.bat 檔案在專案編譯後在根目錄下 Exec Command=WinToUbuntu.bat 可以不需要 *.bat 路徑。
批次檔內可以利用上次提到的 pscp 將檔案複製到遠端的 Ubuntu 伺服器內
就能做到一鍵發佈並更新遠端 Ubuntu 檔案
例如:
pscp -i "C:/ppk/ubuntu.ppk" -pw password *.* user@1.2.3.4:/home
plink 可以執行遠端的 Ubuntu 指令
例如:
plink -ssh -i ubuntu.ppk user@1.2.3.4 -pw password cd /home; ls;
PS.
1.寫完 *.bat 檔案,記得實際操作 pscp 與 plink 指令測試一次,這樣 Register 會記錄過授權記錄, *.bat 才能正常執行。
2.Windows 10 安裝 PuTTY 後,pscp 與 plink 的路徑會被引用,所以不需要複製 pscp 與 plink 的執行檔。
利用 pscp、plink 將 Windows 10 的檔案複製到 Ubuntu 指定目錄中
安裝 PuTTY 會有 pscp 、plink 執行檔,pscp 可以用來複製檔案到遠端的 Ubuntu 上
plink 可以執行遠端 Ubuntu 的命令
pscp 指令如下:
pscp -i "C:/ppk/ubuntu.ppk" -pw password *.* user@1.2.3.4:/home
上列指令目的:
複製 "C:/linux-x64/*.*" 的檔案到遠端 IP : 1.2.3.4 的 Ubuntu 目錄 /home 下
說明:
-i 讀取 ppk 路徑(EC2 預設都需要 ppk)
-pw Ubuntu 密碼
user@ 是指帳戶名稱加上@
plink 指令如下:
plink -ssh -i ubuntu.ppk user@1.2.3.4 -pw password cd /home; ls;
上列指令目的:
登入遠端 IP:1.2.3.4 的 Ubuntu 執行 cd /home 與 ls
說明:
-i 讀取 ppk 路徑(EC2 預設都需要 ppk)
-pw Ubuntu 密碼
user@ 是指帳戶名稱加上@
plink 可以執行遠端 Ubuntu 的命令
pscp 指令如下:
pscp -i "C:/ppk/ubuntu.ppk" -pw password *.* user@1.2.3.4:/home
上列指令目的:
複製 "C:/linux-x64/*.*" 的檔案到遠端 IP : 1.2.3.4 的 Ubuntu 目錄 /home 下
說明:
-i 讀取 ppk 路徑(EC2 預設都需要 ppk)
-pw Ubuntu 密碼
user@ 是指帳戶名稱加上@
plink 指令如下:
plink -ssh -i ubuntu.ppk user@1.2.3.4 -pw password cd /home; ls;
上列指令目的:
登入遠端 IP:1.2.3.4 的 Ubuntu 執行 cd /home 與 ls
說明:
-i 讀取 ppk 路徑(EC2 預設都需要 ppk)
-pw Ubuntu 密碼
user@ 是指帳戶名稱加上@
2019年5月28日 星期二
ASP.NET Core WebAPI 中的分析工具 MiniProfiler
NuGet 安裝 MiniProfiler.AspNetCore.Mvc
在 Startup.cs 上新增程式碼
在 xxxxController 新增測試碼
在瀏覽器上輸入 http://localhost:port/api/xxxx 可呼叫此程式
執行完畢
在 http://localhost:port/profiler/results 可以看到 MiniProfiler
在 Startup.cs 上新增程式碼
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
#region Register the MiniProfiler services
services.AddMiniProfiler(options => options.RouteBasePath = "/profiler");
#endregion Register the MiniProfiler services
....
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseResponseCompression();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
#region Register the MiniProfiler
app.UseMiniProfiler();
#endregion Register the MiniProfiler
}
在 xxxxController 新增測試碼
[HttpGet]
public IEnumerable Get()
{
string url1 = string.Empty;
string url2 = string.Empty;
using (MiniProfiler.Current.Step("Get方法"))
{
using (MiniProfiler.Current.Step("準備數據"))
{
using (MiniProfiler.Current.CustomTiming("SQL", "SELECT * FROM Config"))
{
// 模擬一個SQL查詢
Thread.Sleep(500);
url1 = "https://www.baidu.com";
url2 = "https://www.sina.com.cn/";
}
}
using (MiniProfiler.Current.Step("使用從數據庫中查詢的數據,進行Http請求"))
{
using (MiniProfiler.Current.CustomTiming("HTTP", "GET " + url1))
{
var client = new WebClient();
var reply = client.DownloadString(url1);
}
using (MiniProfiler.Current.CustomTiming("HTTP", "GET " + url2))
{
var client = new WebClient();
var reply = client.DownloadString(url2);
}
}
}
return new string[] { "value1", "value2" };
}
在瀏覽器上輸入 http://localhost:port/api/xxxx 可呼叫此程式
執行完畢
在 http://localhost:port/profiler/results 可以看到 MiniProfiler
2019年5月25日 星期六
ASP.NET Core 安裝 NSwag 自動產生 API 說明文件檔案
目的:自動抓取註解產生下面的 API 說明文件網頁
上次講到 Swashbuckle 在 Ubuntu 環境,
專案執行發生異常,
於是就換了 NSwag,
目前執行下來沒什麼問題,
這邊記錄一下安裝的過程與要注意的事項。
安裝 NuGet 套件:
NSwag.AspNetCore NSwag 主要套件
NSwag.SwaggerGeneration.AspNetCore 自動從 cs 抓註解到我們指定的 xml 檔案
新增「隱藏警告:1591」
PS.特別要注意 xml 檔案名稱要跟專案一樣,才能自動抓取到註解內容
先引用 NSwag.AspNetCore
設定一下 Startup.cs 的 ConfigureServices
與設定一下 Startup.cs 的 Configure
記得註解 <summary> 要寫,每次編譯後 XML 的內容都會更新唷!
程式開啟後,輸入網址 http://localhost:port/swagger
就能開啟 Swagger UI 網頁
上次講到 Swashbuckle 在 Ubuntu 環境,
專案執行發生異常,
於是就換了 NSwag,
目前執行下來沒什麼問題,
這邊記錄一下安裝的過程與要注意的事項。
安裝 NuGet 套件:
NSwag.AspNetCore NSwag 主要套件
NSwag.SwaggerGeneration.AspNetCore 自動從 cs 抓註解到我們指定的 xml 檔案
新增「隱藏警告:1591」
PS.特別要注意 xml 檔案名稱要跟專案一樣,才能自動抓取到註解內容
先引用 NSwag.AspNetCore
using NSwag.AspNetCore;
設定一下 Startup.cs 的 ConfigureServices
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
#region Register the Swagger services
// Register the Swagger services
services.AddSwaggerDocument();
#endregion Register the Swagger services
}
與設定一下 Startup.cs 的 Configure
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
#region Register the Swagger generator and the Swagger UI middlewares
// Register the Swagger generator and the Swagger UI middlewares
app.UseSwagger();
app.UseSwaggerUi3();
#endregion Register the Swagger generator and the Swagger UI middlewares
app.UseMvc(routes =>
{
routes.MapRoute(name: "default", template: "{controller}/{action}/{id?}");
});
}
記得註解 <summary> 要寫,每次編譯後 XML 的內容都會更新唷!
/// <summary>
/// 簡單的 Controller 範例
/// </summary>
程式開啟後,輸入網址 http://localhost:port/swagger
就能開啟 Swagger UI 網頁
2019年5月23日 星期四
c# async 和 await 簡易說明
函式前面增加 async 就會成為異步函式(執行過程中不會等待函式執行完畢才往下跑)
異步函式內需要有await 關鍵字
await 後面要接回傳 Task 的函式
因為回傳 Task 簡稱他為異步任務
異步函式呼叫與一般函式一樣
只差在執行中不等待函式執行完
最後可以看到「異步任務」
在程式執行完畢後
才把任務跑完
/// <summary>
/// 異步函式
/// </summary>
static async void AsyncFun()
{
// 裡面要有 await 關鍵字
// await 後面要接回傳 Task 的函式
// 因為回傳 Task 簡稱他為異步任務
List<formatter> f_ = new List<formatter>{
new Formatter("「異步任務」", Color.Red)};
Print("執行 {0} 『開始』", Color.Yellow, f_.ToArray());
bool ret_ = await DelayFun();
Print("執行 {0} 『結束』", Color.Yellow, f_.ToArray());
}
異步函式內需要有await 關鍵字
await 後面要接回傳 Task 的函式
因為回傳 Task 簡稱他為異步任務
/// <summary>
/// 異步任務
/// </summary>
/// <returns>true</returns>
static Task<bool> DelayFun()
{
return Task.Run(() =>
{
List<Formatter> f_ = new List<Formatter>{
new Formatter("等待五秒", Color.YellowGreen)};
Print("{0} 開始", Color.Red, f_.ToArray());
Thread.Sleep(5000);
Print("{0} 結束", Color.Red, f_.ToArray());
return true;
});
}
異步函式呼叫與一般函式一樣
只差在執行中不等待函式執行完
static void Main(string[] args)
{
....
// 異步函式
List<Formatter> f0_ = new List<Formatter>{
new Formatter("「異步函式」", Color.Red)};
Print("執行 {0} 開始", Color.Green, f0_.ToArray());
AsyncFun();
Print("執行 {0} 結束", Color.Green, f0_.ToArray());
....
}
最後可以看到「異步任務」
在程式執行完畢後
才把任務跑完
訂閱:
文章 (Atom)
Visual Studio 2017/2019 推薦的擴充功能與更新
參考文章: 覺得 Google 的 Blogger 不太順手?透過 HTML 的 iframe 移花接木 HackMD
-
最近電腦沒在操作,CPU 風扇一直高速在運轉,查了一下工作管理員,發現 WMI Provider Host 一直占用著 CPU。 檢查一下「事件檢視器」應用程式及服務紀錄檔\Microsoft\Windows\WMI-Activity\Poerational,發現有錯誤一...
-
當無法修復或解除安裝 Visual Studio 時, 可以透過 InstallCleanup.exe 工具來移除所有安裝的 Visual Studio。 InstallCleanup.exe 工具所在的目錄: C:\Program Files (x86)\Micros...









