自由學習的風

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

利用 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