2019年7月26日 星期五

Azure DevPos Git 的 ForcePush 產生錯誤訊息 TF401027: You need the Git 'ForcePush' permission to perform this action. 的解決方法

最近在刪除 Git 上的敏感資料

使用到 Git 的 ForcePush 產生錯誤訊息


git push origin HEAD:master –force





看起來應該是權限不足
上去 Azure DevPos 找了一下設定





























點選 Manage repositories

























Force push (rewrite history, delete branches and tags) 設定為 Allow

PS.群組我選 Project Collection Administrators 視需求每人選的有所不同

2019年7月24日 星期三

在 Ubuntu 用 Shell Script 監測硬碟使用量並在容量過低時利用 team 通訊軟體通知

前陣子 EC2 掛了一台
查了一下資料
發現有蠻方便的監控方式,來源網址:Shell Script 監測硬碟使用量



#!/bin/bash
 
echo "== Ubuntu == run check-disk =="

team_url=【你 team 的 url】
alert=50
 
df -H | grep -vE '^Filesystem|tmpfs' | awk '{ print $5 " " $6 }' | while read output;
do
        usepercent=$(echo $output | awk '{ print $1}' | cut -d'%' -f1  )
        partition=$(echo $output | awk '{ print $2 }' )
        if [ $usepercent -ge $alert ]; then
   if [ $partition = '/' ]; then
    curl -H "Content-Type: application/json" -d "{\"text\":\"$(date) $(hostname) Disk Space Alert= $partition($usepercent%) \"}" $team_url
    break
   fi
        fi
done

echo "== Ubuntu == stop check-disk =="


如果沒安裝 curl 請安裝(Shell Script 需要 curl 才能跟 team 溝通)
參考網址:How to add connectors in Microsoft Teams
安裝方法如下:


sudo apt-get update

sudo apt install curl


記得找一下 team 頻道的 Webhook url 取代上面的【你 team 的 url】
參考網址:[Microsoft Teams]使用Webhook傳訊息到Teams頻道
方法如下:






























點擊「連接器」



























點擊「已設定」與「管理」(如果沒安裝「傳入 Webhook」請安裝)






























按下「複製」鈕就能取得網址

如果想每天定時監控與通知
可以利用 crontab 定時通知
記得給 check-disk.sh 管理權限(有權限 ls 看到會是綠色的)


chmod +x check-disk.sh


每天半夜 12 點定時通知

0 0 * * * /home/ubuntu/check-disk.sh >> ~/disk.log

每小時定時通知

0 * * * * /home/ubuntu/check-disk.sh >> ~/disk.log

這邊建議設定一下時區


sudo timedatectl set-timezone "Asia/Taipei"

crontab 設定的啟動時間才會準確

現在可以另用 crontab -e 新增排程了

排程設定好了
記得執行


sudo service cron restart


重置一下 crontab

備份網址

2019年7月23日 星期二

Blazor for .Net core 3.0.100-preview6-012264 無法用 Visual Studio 2019 偵錯問題解決方法


在 Chrome 中收到 ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY 錯誤
在 Firefox 中收到 NS_ERROR_NET_INADEQUATE_SECURITY 錯誤

請執行下列命令來更新開發憑證:

dotnet dev-certs https --clean
dotnet dev-certs https --trust

2019年7月18日 星期四

Ubuntu 中刪除指定目錄下的檔案與子目錄 -

假設指定 dotnet 目錄
輸入下列指令:

find dotnet/* -print0  | xargs -0  rm -rv

就能刪除 dotnet 目錄的檔案與子目錄

2019年7月17日 星期三

安裝 Dropbox 造成 TortoiseGit 的圖示消失的解決方法

安裝了 Dropbox 後
發現 Git 的圖示都不見了
查了一下資料
順便記錄一下設定過程
































































在 Tortoise 前面加上「空白與數字」
如果只加數字
還是一樣有問題
其目的是要讓 Git 排序在前面


































最後
重啟檔案總管就正常了
基本少就是重啟電腦

















安裝 .NET Core 3.0 Preview 7 的 Blazor 專案 -

先安裝 .NET Core 3.0 Preview 7
https://dotnet.microsoft.com/download/dotnet-core/3.0

再安裝 Visual Studio 2019 Preview
https://visualstudio.microsoft.com/zh-hant/vs/preview/?rr=https%3A%2F%2Fwww.cnblogs.com%2F

最後安裝 Blazor 延伸模組
https://marketplace.visualstudio.com/items?itemName=aspnet.blazor

就可以在開新專案時選擇 Blazor 類型的專案了





























































































































2019年7月15日 星期一

利用 mklink 設定目錄連結 -

mklink 的功能簡單的說,就是建立連結指向某個目錄
一般實務上,通常是運用在 C 槽容量不足
我們把檔案搬移到 D 槽
並在原本的 C 槽建立目錄連結
連結到搬移目的地 D 槽
例如:mklink /J "C:\Files" "D:\Files"
C:\Files 是連結,而 D:\Files 是搬移的檔案實體
建立連結後
對 C:\Files 的任何操作會直接對應到 D:\Files
雖然實體在 D:\Files
但是使用上就如同檔案在 C:\Files
藉由此技術來提升 C 槽的容量
要斷除連結
直接刪除 C:\Files 目錄即可
D:\Files 內的檔案不會受影響
切記不要刪除 C:\Files 內的檔案
這樣會造成刪除 D:\Files 內的檔案

2019年7月14日 星期日

利用 Chocolatey 快速安裝 VSCodium

簡單的介紹一下 VSCodium
VSCodium 是微軟 Visual Studio Code 的一個分支
強調訴求的是完全不追蹤你的使用數據

安裝方式:
在 CMD 上輸入

choco install vscodium

即可安裝

想瞭解 Chocolatey 請參考:
安裝 Chocolatey 簡單的用 Command Line 安裝軟體

想瞭解  請參考:
VSCodium GitHub

2019年7月11日 星期四

Ubuntu 清除垃圾檔案語法 -

建立一個 .sh 檔案,內容如下:

#!/bin/bash

echo "== Ubuntu == autoclean =="

sudo apt-get autoclean
sudo apt-get autoremove
sudo apt-get clean

存成 autoclean.sh 檔案

在 Ubuntu 輸入:
bash autoclean.sh

執行就能幫你清理 Ubuntu 裡的垃圾檔案了

Ubuntu 上無法執行 shell script 的解決方法 -

本來寫了一個 shell scrip 想在 Ubuntu 上執行
結果報錯
E: Invalid operation XXX

為了驗證指令是否有錯誤
於是單行執行上面的指令
結果是正確的

這樣的結果令人費解
查了一下資料
發現好像是 Windows 的換行符號造成的

於是在 Ubuntu 上安裝了 dos2unix
sudo apt install dos2unix

安裝完畢後,輸入:
dos2unix 『要轉換的 sh 檔案』

再執行一次就正常了

PS. NotePad++ 的「編輯」→「轉行號格式」也可以轉成 Unix 格式,在 Ubuntu 也可以正常執行。


2019年7月9日 星期二

Windows Server 2016 與 Windows 10 安裝 OpenSSH

先在 https://github.com/PowerShell/Win32-OpenSSH/releases
下載對應版本的 OpenSSH

在 PowerShell 的「以系統管理員開啟」輸入下列指令:
powershell.exe -ExecutionPolicy Bypass -File X:\OpenSSH\install-sshd.ps1

記得把 OpenSSH 安裝目錄加到環境變數裡

開啟「電腦管理」的「服務」的「OpenSSH SSH Server」並設定為「自動」


















利用 netstat -aon | findstr “22” 檢查一下是否被佔用







看起來 4852 正佔用著 Port 22

利用 tasklist | findstr “4852” 檢查一下那個程式佔用







發現是 sshd.exe 所以 OpenSSH 已經開啟了

萬一是其他程式
你也可以利用
taskkill /pid 4852 /F
將 4852 給砍了

記得到防火牆 firewall.cpl 公用網路新增輸入規則開通 Port 22


利用 ssh 指令,如下:
ssh 使用者名稱@IP
IP 可以利用 ipconfig /all 查詢
應該就能連上 Windows Server 2016
例如:
ssh Administrator@2x.2xx.2xx.2xx

連上輸入密碼,就能連上了。

不想輸入密碼
可以建立 authorized_keys 檔案並複製貼上加入公鑰
儲存在 C:\Users\Administrator\.ssh 目錄裡

修改 C:\ProgramData\ssh\sshd_config
註解最後兩行
#Match Group administrators
#       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
即可免輸入密碼登入

C:\Users\Administrator\.ssh 目錄裡的 id_rsa 私鑰不能直接使用
需要透過 PuTTYgen 轉成 Windows 可使用的格式
才能正常使用




























Windows 10 下安裝 WSL 2 的注意事項

輸入指令
wsl --set-version 2
可以用 wsl -l 查詢到資訊






所以 就是 Ubuntu-18.04
指令要修改為 wsl --set-version Ubuntu-18.04 2

再指定預設 WSL
wsl --set-default-version 2
這樣開啟就是 WSL 2 了

驗證的方式是輸入
wsl -l -v







就可以知道目前是不是 WSL 2 的版本 了

2019年7月8日 星期一

Windows 10 與 Windows Server 2016 關閉 Windows Defender

CMD 輸入 gpedit.msc
「電腦設定」→ 「系統管理範本」→「Windows 元件」→「Windows Defender」
「已啟用」

Ubuntu 18.04 安裝 RabbitMQ

由於 RabbitMQ 是由 Erlang 開發的

安裝 erlang
sudo apt-get install erlang-nox

安裝 RabbitMQ
sudo apt-get update
sudo apt-get install rabbitmq-server

啟動、停止、重啟、狀態 RabbitMQ 命令
sudo rabbitmq-server start
sudo rabbitmq-server stop
sudo rabbitmq-server restart
sudo rabbitmqctl status

添加admin,並賦予 administrator 權限

PS.為了安全性的問題, admin 密碼可以修改成你要的密碼

添加admin用戶,密碼設置為admin
sudo rabbitmqctl add_user  admin  admin
賦予權限
sudo rabbitmqctl set_user_tags admin administrator
賦予virtual host中所有資源的配置、寫、讀權限以便管理其中的資源
sudo rabbitmqctl  set_permissions -p / admin '.*' '.*' '.*'

RabbitMQ GUID 使用
先到 RabbitMQ 安裝目錄
cd /etc/rabbitmq
sudo  rabbitmq-plugins enable rabbitmq_management

瀏覽器訪問
http://localhost:15672/

http://「你 VM 的 IP」:15672/

預設 Web 的 Port 是 15672
預設 MQ 的 Port 是 5672
不要搞混了















輸入剛剛的 admin  帳號與密碼登入

PS.為了安全性的問題,可以在 admin 新增 user 並刪除 guest 帳號,之後登入就用新帳號登入


2019年7月4日 星期四

Ubuntu 安装 Redis

sudo apt-get update
sudo apt-get install redis-server

啟動 Redis
redis-server

查看 redis 是否啟動?
redis-cli
以上命令將打開以下終端:

redis 127.0.0.1:6379>
輸入 PING 命令
會顯示 PONG
表示已經成功安裝了redis

要注意的是
外部無法連線
必須做一些設定
sudo vi /etc/redis/redis.conf
預設為
bind 127.0.0.1
要修改為
# 供外部 IP 連線
bind 0.0.0.0

加入以下設定,設定登入密碼
requirepass 你的密碼






































重啟 redis server
sudo /etc/init.d/redis-server restart

C# 可用 CSRedisCore 套件做操作

安裝 Windows Redis

1.Redis的下載地址:
https://github.com/MicrosoftArchive/redis/releases/download/win-3.2.100/Redis-x64-3.2.100.msi

2.Redis Desktop Manager 下載地址:
https://github.com/uglide/RedisDesktopManager/releases/download/0.9.3/redis-desktop-manager-0.9.3.817.exe

3.
開啟 CMD
輸入指令
cd C:\Program Files\Redis
redis-server redis.windows-service.conf
啟動服務

4.開啟 Redis Desktop Manager 輸入 localhost 點選連線即可






































C# 可用 CSRedisCore 套件做操作

Windows 10 下 安裝 RabbitMQ

由於 RabbitMQ 是由 Erlang 開發的

安裝 Erlang
https://www.erlang.org/
點選Download Erlang/OTP下載按鈕

安裝 RabbitMQ
https://www.RabbitMQ.com

安裝 RabbitMQ 後會有一個捷徑 RabbitMQ Command Prompt (sbin dir)
執行捷徑 RabbitMQ Command Prompt (sbin dir)
會出現 CMD 命令列






















輸入指令啟用外掛(有網頁介面):
RabbitMQ-plugins.bat enable RabbitMQ_management
輸入指令重啟伺服器:
net stop RabbitMQ && net start RabbitMQ

停止服務,必須手動關閉!
輸入指令關閉伺服器:
RabbitMQ-server stop

不關閉下次還會開啟 RabbitMQ

測試一下是否安裝成功
瀏覽 http://localhost:15672/#/

http://「你的 VM 的 IP」:15672/#/

















預設賬號:guest     
預設密碼:guest

PS.為了安全性的問題,可以在 admin 新增 user 並刪除 guest 帳號,之後登入就用新帳號登入

預設 Web 的 Port 是 15672
預設 MQ 的 Port 是 5672
不要搞混了




























RabbitMQ Command Prompt (sbin dir) 常用指令:

RabbitMQ-plugins enable RabbitMQ_management 開啟外掛
RabbitMQ-service remove 移除服務
RabbitMQ-service install 安裝服務
RabbitMQ-service start 或者 net start RabbitMQ 啟動服務
RabbitMQ-service stop 或者 net stop RabbitMQ 停止服務
RabbitMQctl status 檢視服務狀態
RabbitMQ-server restart 重啟服務

特別提一下在 Windows 10 下安裝 RabbitMQ ,如果使用者名稱是中文的,則會出現啟動失敗的情況。
網路上有教學,需要可以去查一下(我沒測試過,所以這邊不說明)。

2019年7月3日 星期三

安裝 Chocolatey 簡單的用 Command Line 安裝軟體


簡單的介紹一下 Chocolatey:
Chocolatey 是一個類似 Linux 的 apt-get or yum 的功能
讓你可以一個指令進行下載與安裝
過程可以做到不需要人為的操作
達到一鍵安裝應用程式

安裝方式:
用系統管理員執行 CMD
輸入
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

安裝完畢
輸入
choco
會出現目前的 Chocolatey 版本號
則代表安裝成功

輸入
choco install winrar
可以安裝 winrar
輸入
choco install winrar -y
則可以連按下同意 Y 都不用按
就安裝成功

Windows 10 用指令呼叫「控制台」等等系統常用服務

CMD 命令模式執行指令:

控制台
control






















電腦管理
compmgmt.msc



















使用者帳戶
control userpasswords
control nusrmgr.cpl























本機使用者與群組
lusrmgr.msc


















系統管理工具
control admintools



























工作排程器
control schedtasks


上傳私有 NuGet 到 Azure 發生 The specified source '你的 Nuget 名稱' is invalid. Please provide a valid source. 的解決方法

試了兩種上傳方式 nuget.exe push -Source "你的 Nuget 名稱" -ApiKey CArk "*.nupkg"

nuget.exe push -Source "你的 Nuget 名稱" -ApiKey CArk "%1/NuGet路徑.%2.nupkg"
後一直失敗







結果發現,問題是我在 Visual Studio 設定的 NuGet 名稱跟 Azure 不一樣



























所以才一直發生錯誤


讓 Hyper-V 與 VMware 共存在一台 Windows 10 機器上

以系統管理員開啟 CMD 並下指令
新增一個開機選項 『Windows 10 關閉 Hyper-V』:
bcdedit /copy {current} /d "Windows 10 關閉 Hyper-V"

Enter 後出現以下訊息並顯示一串機碼:
已順利將項目複製到 {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}

設定開機時選擇選項 『Windows 10 關閉 Hyper-V』 後會關閉 Hyper-V並開機:
bcdedit /set {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} hypervisorlaunchtype OFF

重新開機後就會多出一個 『Windows 10 關閉 Hyper-V』 的開機選項了


如果還原原來的狀態
可以刪除開機選項 『Windows 10 關閉 Hyper-V』:
bcdedit /delete {上一步驟複製的 identifier 機碼}

輸入 bcdedit 可以顯示所有開機選項的機碼
可以驗證一下
剛剛的開機選項是否被刪除了


Windows 10 可以設定預設開機選項

































解決win10 VirtualBox無法啟動 (VERR_NEM_VM_CREATE_FAILED)
bcdedit /set hypervisorlaunchtype off
重啟電腦就常了

2019年7月2日 星期二

Windows 10 在多個 .NET Core SDK 指定特定版本號

在目前工作目錄產生一個 global.json 文字檔案
新增內容如下:
{
  "sdk": {
    "version": "2.2.107"
  }
}

也可以用指令產生 global.json
指令內容如下:
dotnet new globaljson (要開檔改版本號)
dotnet new globaljson --sdk-version 2.2.107(直接開檔並指定版本號)

不知道版本號多少的,可以令用指令查詢
查詢目前所有安裝的 SDK 版本號指令如下:
dotnet --list-sdks


測試中意外刪除了一些快取,讓系統多出了快 10 GB


輸入 dotnet nuget locals --clear all

info : 正在清除 NuGet HTTP 快取: C:\Users\user\AppData\Local\NuGet\v3-cache
info : 正在清除 NuGet 全域套件資料夾: C:\Users\user\.nuget\packages\
info : 正在清除 NuGet 暫存快取: C:\Users\user\AppData\Local\Temp\NuGetScratch
info : 正在清除 NuGet 外掛程式快取: C:\Users\user\AppData\Local\NuGet\plugins-cache
info : 已清除本機資源。

執行的有點久,但是執行完,C 槽就增加了 10 GB左右。

類似 Visual Studio 的 「清除所有 NuGet 快取」

Visual Studio 2017/2019 推薦的擴充功能與更新

參考文章: 覺得 Google 的 Blogger 不太順手?透過 HTML 的 iframe 移花接木 HackMD