自由學習的風

幽夢影 張潮 少年讀書,如隙中窺月;中年讀書,如庭中望月;老年讀書,如臺上玩月。皆以閱歷之淺深,為所得之淺深耳。

VS Code 直接透過 sftp 同步到遠端伺服器

2024年9月29日 星期日

環境介紹:

  • 正式機:10.x.y.aaa,  Linux Ubuntu + Docker(Nginx + PHP + MySQL)
  • 開發機:10.x.y.bbb, Windows 11 + Laragon + VS Code

之前利用 VS Code 開發之前,總是利用 SSHFS-Win 掛載至本機後,再用比對軟體檢查哪些檔案有修改,是否需要上傳(註:freecommander 很好用)。

不過,有時只是一、二支程式需要上傳,總覺得這樣做的話有點繁瑣,最近發現有支 vscode 的 extension(擴充套件):sftp

可以 ssh 連到遠端伺服器,直接上傳,也支援多個網站,所以可以先上傳到測試伺服器,沒問題後再上傳到正式機。

安裝後要先設定遠端伺器資訊,按【F1】,選擇「SFTP: Config」,會在 .vscode 目錄中產生 sftp.json 設定範本檔,直接依個人需求填入設定值即可。


預設是只會有一組伺服器設定,若有多組伺服器的話,例如有測試機、正式機…等,那就要設定 profiles,把設定檔改成下列即可,連線時,按按【F1】,選擇「SFTP: Set Profile」,選擇要連線的伺服器即可。


這支擴充套件還提供其它蠻方便的功能,也可以去發掘喔!

利用 Docker 快速建立 Sql Server 環境

2023年2月16日 星期四

環境:

  1. Ubuntu Linux 2022
  2. Docker CE 23.0.1

Docker 映像檔:

  • mcr.microsoft.com/mssql/server:2022-latest

操作:

  1. 下載 SQL Server 2022 Image
    $ docker pull mcr.microsoft.com/mssql/server:2022-latest
  2. 執行容器(指定參數)
    $ docker run \
    -e "ACCEPT_EULA=Y" \
    -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" \
    -p 1433:1433 --name sql1 --hostname sql1 \
    -d \
    mcr.microsoft.com/mssql/server:2022-latest

  3. 檢查容器執行狀態
    $ docker ps  
  4. 安裝成功後,可下載或利用 chocolatey 來安裝 Sql Studio Management Studio
    c:\> choco install sql-server-management-studio
  5. 連線至 SQL Server 容器

容器執行參數說明:

  1. -e ACCEPT_EULA= 同意使用者授權合約
  2. -e MSSQL_SA_PASSWORD=<YourStrong@Passw0rd> 設定 SQL Server 最高管理員 sa 的密碼
  3. --name sql1 設定容器名稱
  4. --hostname sql1 設定容器主機名稱
  5. -p 1433: 1433 設定 port 的對應
  6. -d 設定容器以背景模式執行
  7. mcr.microsoft.com/mssql/server:2022-latest  SQL Server 映像檔來源與名稱

進階:

1. 掛載 volume 保存資料庫內容

  1. host 建立掛載的目錄
    $ mkdir data_mssql
  2. 【必須】設定該目錄擁有者, 預設owner id 為 10001
    $ sudo chown -R 10001 data_mssql
  3. 停止、刪除容器後,加上掛載 volume 參數後重新啟動容器
    $ docker run \
    -e "ACCEPT_EULA=Y" \
    -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" \
    -p 1433:1433 --name sql1 --hostname sql1 \
    -v ./data_mssql:/var/opt/mssql
    -d \
    mcr.microsoft.com/mssql/server:2022-latest

2. 利用 docker-compose 執行容器

1. 建立 docker-compose.yml 檔案,內容如下:
version: '3.5'

services:
  mssql:
    image: mcr.microsoft.com/mssql/server:2022-latest
    restart: always
    ports:
      - 1433:1433
    volumes:
      - ./data_mssql:/var/opt/mssql
    environment:
      - ACCEPT_EULA=Y
      - SA_PASSWORD=PutYourPassword
      - MSSQL_PID=Express
2. 執行

$ docker-compose up -d 


VS Code integreted terminial 的環境變數沒有更新

2023年1月15日 星期日

執行環境:

  • Windows 11 21H2(22000.1042)
  • Laragon 5.0(6.0)
  • VSCode
  • CodeIgniter 4.1.9

在Windows環境上利用 Laragon 來建立 PHP 開發環境十分方便,可以快整切換 PHP 版本,程式撰寫則用  VSCode,本來都沒啥問題,不過,這兩天測試之前建立的 CodeIgniter 4,它的版本是  4.1.9,看官網已經出到  4.3.0,不過需要 PHP 7.4 以上,但是之前都在 PHP 7.3 開發,結果在 Laragon 切換成 PHP 7.4 後,VSCode integreted terminial 顯示的還是  PHP 7.3。

試了下列動作:

  1. 把 VSCode 全部關掉,重新再執行 => 無效
  2. 檢查電腦環境變數,PATH 沒有設定 PHP 路徑
  3. 將 PHP 7.4 路徑加入 PATH 環境變數 => 無效

本來以為是電腦出問題了,後來看到一份資料,需要從終端機直接執行 VSCode,讚!有效,解決了,平時我都是按 Win Key,再直接執行,沒想到執行方式不一樣會造成這種影響。


讀取 空氣品質指標(AQI) 的OpenData 資料

2022年10月15日 星期六

一、前由

前2天有位夥伴反應一個問題,之前讀取線上的 空氣品質指標(AQI) 資料時可以秒開,可是現在已經換成新的網址,結果讀取時間變得得慢,想請教大家有沒有解法。

 1. 空氣品質指標(AQI) 舊網址:http://opendata2.epa.gov.tw/AQI.json

 2. 空氣品質指標(AQI) 新網址:ttps://data.epa.gov.tw/api/v2/aqx_p_432?api_key=e8dd42e6-9b8b-43f8-991e-b3dee723a52d&limit=1000&sort=ImportDate desc&format=JSON

二、測試、找原因

直接用瀏覽器開AQI 舊網址,果然秒開;接著瀏覽器再開新 AQI 網址,心裡默數,回應時間不一定,從6秒~11秒都有,換成 Windows PowerShell終端機,利用 curl 指令來抓取新網址,也是一樣的回應時間。

查了資料,發現新網址是環保署的服務,也有提供 API 的操作手冊,  裡面有提供 filter 來過濾回傳的內容資料,參考操作手冊,直接在網址上加上 filter 的條件,情況還是一樣,而且 filter 條件並沒有作用

不死心,又查了一下資料,有篇文章「MicroPython 空氣品質 AQI 獲取之方式」有提到抓取資料改成要申請 API_KEY、換成 HTTPS 協定,以及利用 filters 的 API 語法來指定查詢的項目。所以我就去申請了一組 API_KEY 準備看看是否正常,唉!無效,還是一樣慢,API 語法也沒有作用……

總覺得不太可能提供給全國查詢的服務會這麼慢,所以直接利用 php 去抓網頁資料,Guess What ?

秒回啊!

三、實作

利用簡單的語法寫了簡單抓不同城市的 AQI 資料,回應速度快,滿意,結案!

<h2>空氣品質指標(AQI)查詢</h2>
<form action="" method="POST">

  <select name="county" id="">
    <option value="新北市">新北市</option>
    <option value="高雄市">高雄市</option>
    <option value="臺北市">臺北市</option>
    <option value="臺中市">臺中市</option>
    <option value="臺南市">臺南市</option>
  </select>

  <input type="submit" value="查詢">

</form>

<?php
if (isset($_POST["county"]) &&  $_POST["county"] != "") {
  $county = $_POST["county"] ?? '新北市';
  $key = 'e8dd42e6-9b8b-43f8-991e-b3dee723a52d';
  $filter = 'county,EQ,' . $county;
  $url = sprintf('https://data.epa.gov.tw/api/v2/aqx_p_432?filters=%s&api_key=%s&format=json', $filter, $key);
  $data =  file_get_contents($url);

  $jsondata = json_decode($data);

  echo ('<h2>' . $county . '</h2>');
  var_dump($jsondata->records);
}


四、後記

後來發現 Windows 底下的 curl  指令有點"不好操控",利用 Linux 環境直接下 curl 指令,回應速度也是秒開。



sr-only 是做什麼用的?

常常在網頁中看到這個屬性,檢視網頁發現不會顯示,好奇查了一下資料,原因它是指「screen reader only」,也就是設計給螢幕閱讀器讀取的屬性,一般的瀏覽器不會顯示,長知識了!


CentOS 7 如何更新 php 版本

2022年4月23日 星期六

 之前利用 Remi 的 Repo 來安裝 php 7.0,現在想把 7.0 更新到 7.4,又不想裝上每個套件都加上後綴 xxx74 這種醜醜的名稱,這時候可以透過修改 Remi 的 Repo 來達成。

yum-config-manager  --enable remi-php74

# yum update

二行指令,搞定!





常用遠端連線程式列表

2022年4月12日 星期二

做個記錄。

連線後可直接接管螢幕畫面:

  •  VNC
  • TeamViewer
  • Anydesk
  • ShowMyPC
  • AweSun
連線後被控端會登出:
  • 遠端桌面連線 (micrsoft)

[系統]隱藏某個Windows 更新項目

2021年4月7日 星期三

 之前在 Windows 7 時代,可以在更新項目中直接選擇將某些更新隱藏起來不更新,結果到了 Windows 10 就把這項功能移除掉了。

本來也沒啥問題,不過,Windows 最近的更新又出包了,我有一台  20H2 一直會更新 KB5000802 這支更新檔,造成反覆更新、反覆開機,上網查了一下,嘿!原來得自己去官網下載程式才提供。

PS: 不過,很奇怪的是…官網搜尋到的下載網址顯示 File Not Found...只能找其它資訊站台 :(



參考文章:Show or Hide Updates Tool will block unwanted Windows Updates in Windows 10
下載網站:Downloading Microsoft Show or Hide Updates Troubleshooter

[Ubuntu] 清除 broken 和 residual package

2021年1月31日 星期日

在 debian/ubuntu/mint  安裝或移除套件時,幾乎都是利用 apt 這支程式來處理。

但是有時候安裝失敗時、或是未完全移除時(--purge),就會有套件變得不完全。

residual package 用  dpkg -l 列出來時,會在開頭出現 rc 的字符,而 broken package  則會在開頭出現 iU 的字符,我們可以用下列的指令來篩選出來:

dpkg -l |grep "^rc" 

dpkg -l |grep "^iU"








我們可以下達 apt purge [package name] 的指令來徹底移除它,不過,如果類似的套件很多,就是件折磨人的事了,不過,linux 的好處就可以自己隨意組合指令來符合自己的需求,搭配 awk 把套件名稱撈出來,再丟給 apt 來移除,方便又省事!

sudo apt purge $(dpkg -l |grep "^rc" | awk '{print $2}')

[Ubuntu] 單網卡綁多個網段的IP

2021年1月19日 星期二

[php] 學生作業系統 - 評分便利篇

2021年1月11日 星期一

目標:

  1. 作品圖片可以一列多個作品。
  2. 作品存取日期在一周內會顯示顯目底色。

[C#] 有趣的截圖方式

2021年1月10日 星期日

 截圖的方式有好幾種,這一篇文章是我看到的有趣又簡潔的一種方式 - 模擬使用者按[print screen] 按鈕的方式來做截圖,Interesting!!!

      this.Hide();            

            System.Threading.Thread.Sleep(1000);

            SendKeys.Send("{PRTSC}");

            Image myImage = Clipboard.GetImage();

            pictureBox1.Image = myImage;

            

            myImage.Save("E:\\abc.jpg");

            this.Show();

        }

[Share] How to Install WCMP (Windows, Caddy, MySQL and PHP) Manually

2020年12月31日 星期四

那時年紀輕,只知 DOS

2020年12月26日 星期六

16歲時只知 DOS,大一計概時多了 Windows 和 只能在電算中心連線的 Unix 程式(ftp, telnet, news, gopher),還在後續的蹺課生涯和學長的私下分享接觸到大X帖,畢業後,對於服務器建置和網路技術十分好奇,更驚訝有人願意免費提供這樣的軟體而不求回報,太強了!

Ubuntu Server 20.04 安裝在 ESXi 伺服器之後的問題

2020年12月21日 星期一

問題1: themald error:




無法載入 thermal-conf.xml,網路上的解法,可照下列步驟處理:
1. 開啟 vSphere Client。
2. 找到虛擬機/編輯虛擬機器設定。
3. 選項/進階/一般 ,點擊【組態參數】

4. 點擊【新增列】,名稱輸入「disk.EnableUUID」,值為「TRUE」。


5. 點擊【確定】後,啟動虛擬機即可。

[記錄] VMware Hardware Version List 虛擬機器版本

 一直在 vSphere Client 看到虛擬機右上角會出現驚嘆號,旁邊還有一個數字,上網查了一下,原來不同軟體和版本支援的"虛擬機器版本"也不一樣,把官網的內容記下來,下次就不用再找了

Ref: https://kb.vmware.com/s/article/1003746





[C# ] 指令參數解析套件 CommandLine

2020年10月7日 星期三

用來判斷指令後的參數,查到的資料有 NDesk.Options 和 這套 CommandLine,這套用起來還不錯,開源。

參考資料:


NSA - UEFI Secure Boot Customization

2020年9月19日 星期六

 PDF 

[C#] 利用 .NET core 3.x 存取 Windows Registry

2020年9月11日 星期五

 前幾天用 Jetbrains Rider 寫了一支 C# 的小程式,裡面需要對 Windows Registry 做讀取、刪除的動作,一開始建新專案時選擇 .NET Core 的 framework,結果編譯不成功。

後來改成用 .Net Framework 4.8之後,程式未修改,編譯就 pass 了,後來發現有些 API ,在 .NET Core 預設是不支援的,得自己手動增加才行,用 nuget 這個工具可以做這個動作。

下列的項目是只有 Windows 才有的 API :

  • Code Pages
  • CodeDom
  • Configuration
  • Directory Services
  • Drawing
  • ODBC
  • Permissions
  • Ports
  • Windows Access Control Lists (ACL)
  • Windows Communication Foundation (WCF)
  • Windows Cryptography
  • Windows EventLog
  • Windows Management Instrumentation (WMI)
  • Windows Performance Counters
  • Windows Registry
  • Windows Runtime Caching
  • Windows Services
微軟出一個相容性的整合包(Windows Compatibility Pack),可以一次支援上列的項目,不過,我個人是覺得整合包用在開發環境上比較理想,正式環境的話,我比較傾向用到的項目才安裝。

Ubuntu Server 18.04 更新到 20.04.1 後,Xshell4 無法連線(no matching key exchange)

2020年8月29日 星期六

 前兩天把 Ubuntu Server 18.04 升級成 20.04.1,結果,發生用 Xshell 4 無法連線,出現「no matching key exchange 」,用 putty 連線也一樣。

查了 putty 的版本,是0.6x 的版本,重新下載新版 (0.74)後,putty 就可以正常連線了。不過, 我用另一台電腦上的 Xshell 6 其實也可以連線,所以,但是因為某個原因,我並不想把 Xshell4 升級,所以又努力查原因…

看了一下 log 檔:

no matching key exchange method found. Their offer: diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1

看來應該是某個(些)運算法不支援了,若要強制支援的話,得另外在 「/etc/ssh/sshd_config」加上參數:

KexAlgorithms diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group1-sha1,curve25519-sha256@libssh.org

把 sshd 重新啟動後,Bingo!!! 連線正常。


Ref: xshell4連接ubuntu,報錯No matching outgoing encryption