撰文於銘 飄散隨風 心行無語 仰首蒼穹

使用 SSH 和金鑰登入 cPanel 主機

這篇是要介紹使用 SSH 和金鑰登入 cPanel 的主機,我是以 Buluhost 和 GreenGeeks 主機為例。不過有些主機商沒有提供 SSH 的功能,例如 Sugarhosts,我有幾個站放在那邊,它的最大的好處是可以用中文溝通,可惜 SSH 不支援。

 

底下是記錄操作過程。

 

要求主機商啟用 SSH

 

有網友說 Bulehost 預設 SSH 是啟用的,好像也看過官網如此提過。不過我在測試時,看到這個訊息:

 

Shell access is not enabled on your account!

If you need shell access please contact support.

 

所以就線上請 Bulehost 幫我啟用,幸好只用簡單的英文就完成任務,對方立刻就幫忙啟用了。

 

至於 GreenGeeks 則是在 Support 網頁按下 Open new Ticket,簡單寫著我需要 SSH 功能,對方也是很快就來信說已經啟用了。

 

查詢主機 IP、網址和登入帳號

 

在 cPanel 界面中,可以找到主機的 IP,也可以看到用戶名和網域,下圖紅色的文字是被我修改過的,看的出來那是不合理的 IP。 :)

 

image

 

重要度:
文章分類:

C# 使用 HttpClient 非同步下載檔案

因為所寫的 C# 程式需要由網路下載大的檔案,但官方文件所寫的內容不夠多,所以花了點時間,研究了 HttpClient 非同步下載,並且記錄了一些資料,以供自己未來複習及提供有需要的人參考。

 

WebClient vs HttpClient

 

在微軟官方文件中,一開始有找到了 WebClient 和 HttpClient 二種類別,結果在 WebClient 的官方文件中,看到這一段:

 

 

我們不建議您將類別用於 WebClient 新的開發。 請改用 System.Net.Http.HttpClient 類別。
 

 

所以就放棄研究 WebClient,直攻 HttpClient 了。

 

HttpClient 及注意事項

 

HttpClient 雖然比 WebClient 好用,但有一些事要注意。

 

首先是不要大量使用新建立的 HttpClient,底下是官方文件的說明:

 

 

HttpClient 的目的是要具現化一次,並在應用程式的整個生命週期中重複使用。具現化每個要求的 HttpClient 類別,將會耗盡繁重負載下可用的通訊端數目。這會導致 >socketexception 錯誤。以下是正確使用 HttpClient 的範例。
 

 

 

public class GoodController : ApiController

{

    private static readonly HttpClient HttpClient;

 

    static GoodController()

    {

        HttpClient = new HttpClient();

    }

}

 

不過,在實測中,最多同時只能開啟二個連結。

 

查了不少資料,才知道有個變數 ServicePointManager.DefaultConnectionLimit,官方說明

 

 

ServicePoint 物件所允許的同時連線最大數。 ASP.NET 裝載的應用程式預設的連線限制為10,其他則為2。

 

 

所以若要多開啟幾個連結,不知如何做才好?目前我只找到二個方法:

 

1. 增加 ServicePointManager.DefaultConnectionLimit

2. HttpClient 每次都建立新物件,就沒這個問題了。

 

 

在網路上也查詢了其它文章,有人提到若用 static 的方式來執行 HttpClient ,也會有一些限制,例如長期連線時,可能因為網路上的 DNS 更新後,HttpClient 沒有更新解析 DNS,就會有問題。

 

因此有人介紹更好用的 HttpClientFactory,不過官方文件我只有查到 IHttpClientFactory,而且看起來有點複雜,反正我目前的程式不會用到大量的連線,也不會需要長時間使用,不用擔心 DNS 更新的問題,所以決定還是使用 HttpClient 即可。

 

另外,官方還有這個建議:

 

 

想要下載大量資料 (50 mb 或以上的) ,則應用程式應該串流這些下載,而不使用預設的緩衝。如果使用預設緩衝,用戶端記憶體使用量將會變得非常大,可能會大幅降低效能。

 

 

這也是我需要測試的,因為我需要下載的檔案會有超過 GB 的大小。

 

重要度:
文章分類:
電腦標籤:

安裝 Drupal 9

 

安裝環境

 

XAMPP 免裝版,內含:

 

  • PHP:8.0.9
  • Web:Apache/2.4.48 (Win64) OpenSSL/1.1.1k
  • Database:10.4.20-MariaDB
 

Drupal:9.3.0

 

下載檔案

 

下載 Drupal 9 最新版,解壓縮至指定目錄,例如:

 

/htdocs/drupal9

 

底下是根據 Drupal 目錄中的 INSTALL.txt 的說明安裝的。

 

安裝 Composer

 

參考此說明

 

https://getcomposer.org/doc/00-intro.md#globally

 

我是採用 Windows 版的安裝,下載並執行 Composer-Setup.exe

 

重要度:
文章分類:
電腦標籤:

C# 使用 Skin 套件讓程式更美觀 (下)

 

DarkUI

 

DarkUI 是參考此頁

 

https://ourcodeworld.com/articles/read/517/how-to-use-a-darkui-dark-user-interface-in-winforms-c-sharp

 

首先用 git clone 這個專案

 

https://github.com/RobinPerris/DarkUI.git

 

用 Visual Studio 開啟它,並且 build 它。會在 bin/Debug 中產生新的 DarkUI.dll

 

再開新專案,將此 dll 的元件加入工具箱中,會看到一堆暗色系的元件。

 

image

 

重要度:
文章分類:

C# 使用 Skin 套件讓程式更美觀 (中)

Material Skin

 

Material Skin 有不少人推薦,安裝方法同上,先在 NuGet 套件中搜尋 material skin,底下可以看到有不少種,應該是挑比較新的版本吧?我多挑幾個來試試。

 

image

 

在測試時有好幾個是無法順利安裝的,例如:

 

image

 

再把安裝好的套件一一加入工具箱中。

 

image

 

全部一一安裝時,發現會有衝突,底下改試著逐一安裝。

 

重要度:
文章分類:

C# 使用 Skin 套件讓程式更美觀 (上)

Iris Skin

 

首先建立一個專案,放上一堆元件。

 

image

 

在專案「參考」按右鍵,選取「管理 NuGet 套件」。

 

image

 

在 NuGet 套件管理員瀏覽頁上方的搜尋框中輸入「irisskin」,會找到 HiNetCloud.IrisSkin4,選擇它並在右方選擇安裝,就會安裝到專案中。

 

重要度:
文章分類:

Google雲端硬碟更改檔名變成上傳的陷阱

最近在 Google 串流版的雲端硬碟進行更名時,發現一個奇怪的現象,寫出來給大家參考,免得日後踩到同樣的地雷 。 :)

假設我有五個檔案。

 

121-0001.jpg

121-0002.jpg

121-0003.jpg

121-0004.jpg

121-0005.jpg

 

我想把它們改名,也就是把最後一個數字減一,理論上我只要寫這個批次檔就可以了,注意順序不可以錯誤。

 

ren 121-0001.jpg 121-0000.jpg

ren 121-0002.jpg 121-0001.jpg

ren 121-0003.jpg 121-0002.jpg

ren 121-0004.jpg 121-0003.jpg

ren 121-0005.jpg 121-0004.jpg

 

不過在實際執行後,檔案的確立刻改好了,但發現雲端硬碟程式在大量工作,一查才發現它在上傳檔案。

 

image

 

重要度:
文章分類:

C# WinForm 取得傳入的參數

C# WinForm 程式要取得使用者傳入的參數,可以使用

 

Environment.GetCommandLineArgs();

 

所取得的第一個元素就是執行檔的檔案名稱。

 

 

public MainForm()

{

    InitializeComponent();

    string[] args = Environment.GetCommandLineArgs();

    foreach(string s in args) {

        MessageBox.Show(s);

    }

}

 

另一種在網路上常看到的方法,就是手動在 Main 主程式的參數中加上 string[] args。

這個方式取得的參數,並不包含執行檔的檔案名稱,這是和上面方法不同的地方,在使用上要注意。

 

[STAThread]

static void Main(string[] args)

{

    foreach(string s in args) {

        MessageBox.Show(s);

    }

    Application.EnableVisualStyles();

    Application.SetCompatibleTextRenderingDefault(false);

    Application.Run(new MainForm());

}

 

 

重要度:
文章分類:
電腦標籤:

C# 單元測試

C# 單元測試

參考:

https://docs.microsoft.com/zh-tw/visualstudio/test/getting-started-with-unit-testing?view=vs-2019&tabs=mstest

 

建立測試程式

先建立測試程式

 

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace UnitTest {

    public class Sample {

 

        int a = 0;

        int b = 0;

 

        public Sample(int x, int y) {

            a = x;

            b = y;

        }

 

        public int Add() {

            return a + b;

        }

 

        public int Add2() {

            return a * 2 + b * 2;

        }

 

        public int AddAnother (int x) {

            return a + b + x;

        }

    }

}

 

建立測試單元

在程式視窗中按滑鼠右鍵,選擇「建立單元測試」

 

image

重要度:
文章分類:

在 Visual Studio 上使用 GitHub 進行版本控制

本文簡單示範 Visual Studio 建立 C# 專案並使用 GitHub 基本功能。

雖然 Windows 的 TortoiseGit 很好用,但如果可以直接在 Visual Studio 上直接操作,那還是比較方便。

建立專案

image

 

image

重要度:
文章分類:

頁面

訂閱 人生海海 RSS