Quantcast
Channel: 簡睿隨筆
Viewing all 904 articles
Browse latest View live

DBeaver 顏色設定

$
0
0

平常在使用資料庫時,需要管理的資料庫會有正式環境、測試環境與開發環境等不同場景的資料庫,為了避免在正式環境執行了測試或開發的SQL敘述,最好為不同的場景設定不同的顏色,以達到提醒的功用。

1. 變更連接類型

DBeaver的連接種類目前有開發、測試與正式環境等三種,我們可以自行變更其顏色設定:

  1. 找到要設定的連線後按右鍵→【Edit Connection】
    gh|700

  2. 打開【一般】分頁→變更連接類型為需要的場景,例如變更為Production(正式環境)

  3. 【連接類型】下拉選單右側可點擊【編輯連接類型】以進入修改類型的對話窗
    gh|700

  4. SQL編輯器的頁籤與側邊皆以指定的連接類型色彩顯示
    gh|700

2. 編輯連接類型

在編輯連接類型對話窗裡可自行維護不同使用場合並自訂顏色。

gh|700

##

您可能也會有興趣的類似文章


DBeaver的SQL變數可節省輸入時間

$
0
0

多個SQL敘述需要使用到同一個值時,可以透過SQL變數來取用變數值。

  • 開啟變數面板,新增變數,或用@set新增
  • SQL敘述裡以${變數}:變數使用,建議使用${變數}格式

gh|700

##

您可能也會有興趣的類似文章

Obs155|程設師的編程好友:CodeBlock Customizer/Code Styler、Codeblock Tabs、Keyshots

$
0
0

介紹幾個和程式碼區塊相關的外掛:Code Customizer、Code Styler、Codeblock Tabs與Keyshots。

其中要特別一提的是Keyshots。

如果你以為Keyshots就是新增常用按鍵,功能與Code Editor Shortcuts類似,那可是猜錯了。Keyshots除了讓我們將按鍵設定成常用的IDE按鍵之外,它也新增了許多功能,例如:

  1. 插入表格的選擇視窗
  2. 插入Callout的選擇視窗
  3. 插入程式碼區塊的選擇視窗
  4. 正則運算式的搜尋與替代視窗
  5. 多個多重游標操作

1. 功能展示

  • CodeBlock Tabs只在閱讀模式生效

gh|700

<div class="flex">
  <div class="item">1</div>
  <div class="item flex-2">2</div>
  <div class="item">3</div>
</div>
.flex {
  display: flex;
  height: 300px;
  padding: 15px;
  background-color: #61a0f8;
  /* 修改以下值試試看 row|row-reverse|column|column-reverse;*/
  flex-direction: row;
}

.item {
  flex: 1;
  background-color: #f08bc3;
  margin: 5px;
  display: flex;
  justify-content: center;
  align-items: center;
  color: white;
  font-size: 2rem;
}

.flex-2 {
  flex-grow: 2;
  flex-shrink: 1;
  flex-basis: 0%;
  background-color: #f08bc3;
}
// ECMAScript/JavaScript 傳統函數定義語法
function(parameter_list) {
    return result;
}

// ES6 新語法,注意中間的箭頭 => ,口語可讀作將左邊的參數交給右邊的程式區塊處理。
(parameter_list) => {
    return result;
}

// 簡寫原則1: 只有一個參數時,可以省略表示參數清單的 () 。
(x) => {}
  // or
x => {}

// 簡寫原則1但書: 但沒有參數時,不可省略 () 。
() => {}

// 簡寫原則2: 函數本體只有一行敘述時,可以省略表示函數區塊的 {} 。
// 而且這時自動將該行執行結果作為函數回傳值,不能使用 return 。
(x, y) => {
    return x+y;
}
// or
(x, y) => x+y

2. Codeblock Customizer

Codeblock Customizer和Code Styler功能近似,擇一使用。以下以CodeBlock Customizer為例說明。

設定前操作:

  1. 選用要使用的預設主題:Obsidian或Solarized
  2. 在Create your theme輸入新的主題名稱,按+號
  3. 變更設定後按Theme右方的儲存圖示

2.1. Select settings page

gh|700

  • 點擊Header則折疊區塊
  • 未指定檔名且設定總是顯示Header則無折疊功能

3. CodeBlock Tabs Plugin

在程式碼區塊開頭以下列格式指定檔名:

[!SUCCESS]+ 標題格式
‘‘‘語言 {title:檔名(須有副檔名)}
實測時不必使用...🤷‍♂️

4. Keyshots Plugin

將快捷鍵設定成慣用的IDE按鍵,預設的IDE如下:

  • JetBrains IDEs: IntelliJ IDEA、WebStorm、PyCharm、...
  • VS Code
  • Visual Studio
  • Keyshots 預設

選用好後,可以開啟快捷鍵視窗搜尋 keyshots 查看按鍵。

4.1. JetBrains常用按鍵

按鍵 功能說明
連按兩次Ctrl 開啟命令面板
連按兩次Shift 開啟快速切換視窗(Quick Switcher)
Ctrl+W 區塊選取
Ctrl+D 複製區段或行

4.2. Keyshots按鍵

按鍵 功能說明
Alt+Shift+T 開啟插入表格 對話窗
自訂,如Ctrl+Shift+C 開啟插入Callout 對話窗
Ctrl+Shift+` 開啟插入程式碼區塊 對話窗
Ctrl+Alt+H 開啟正則運算式替代對話窗
Ctrl+Alt+S 開啟正則運算式搜尋對話窗
Ctrl+Alt+F 進入專心模式(Fullscreen Focus mode)
Ctrl+Alt+Shift+J select all word instances(標示文字後按鍵,筆記裡該文字處出現多重游標)
(表格內無效)
自訂,如Ctrl+Alt+Shift+K select multiple word instances(標示文字後按鍵多次,筆記裡該文字處出現多重游標)

測試: keyshots

5. 相關鏈接

✅ Obsidian-CodeBlock-Tabs: https://github.com/JeminMau/Obsidian-CodeBlock-Tabs
✅ Obsidian-Code-Styler: https://github.com/mayurankv/Obsidian-Code-Styler
✅ CodeblockCustomizer: https://github.com/mugiwara85/CodeblockCustomizer
✅ obsidian-keyshots: https://github.com/KrazyManJ/obsidian-keyshots

6. 教學影片

##

您可能也會有興趣的類似文章

Obsidian Windows批次檔與AutoHotkey 語法高亮的用法

$
0
0

在Obsidian裡撰寫某些程式語言時,語法高亮始終無法正確呈現。今天測試我常用的Windows Batch與AutoHotkey後,彙總如下:

  1. 實際預覽模式下無語法高亮
  2. 閱讀模式下可顯示語法高亮,語言必須使用 batch 與 AutoHotkey,bat和ahk無法識別

▼ 語言用 bat 無法在預覽與閱讀模式顯示語法高亮且無法辨識為語言

gh|700

▼ 語言用 bat 無法在預覽與閱讀模式顯示語法高亮且無法辨識為語言
gh|700

▼ 語言使用 AutoHotkey 在預覽模式可語法高亮
gh|700

gh|700

##

您可能也會有興趣的類似文章

解決查詢後執行時間消失的問題

$
0
0
  • SQL執行的時間有可能因為訊息較長而消失。其實是被折到下一行,但下一行未顯示出來
    gh|700

  • 拖拉左側的垂直分隔線,變動一下右側資料區的寬度,執行時間就會出現了
    gh|700

##

您可能也會有興趣的類似文章

Obs156|懶人式版本控制+差異式備份:diffzip-Differential ZIP Backup

$
0
0

筆記需要做版本控制嗎?我覺得凡是與創作、書寫相關的產出都需要版本控制,你永遠不會知道今天寫下的文字,會否有需要追溯內容演變的需要。

要對筆記做好版本控制最理想的是使用版本控制系統,例如Git,使用程式開發時用來管理程式版本的工具。但如果不熟悉Git,或想用更簡單的方式、更自動化的步驟來達,那麼 diffzip 外掛可以一試。

[!WARNING]+ 警告
使用diffzip後,偶爾有遇到Obsidian衝高CPU使用率的狀況,幾秒後恢復正常

1. diffzip功能

第一次執行diffzip時,它會將儲存庫裡所有筆記壓縮到切始ZIP檔,同時在備份資料夾裡產生一個backupinfo.md來記錄筆記的檔案異動時間,之後的筆記變動使會以差異式的方式再產生到新的ZIP檔裡。

[!danger] 警告
backupinfo.md 勿自行修改,以免影響備份操作。

亦即只有第一個ZIP檔會有備份時當時的所有筆記,第二次以後的只會備份新增與變動的筆記。這樣不會每次都產生大檔,能節省硬碟空間,也能快速還原某個需要的檔案。

由命令面板執行 Create Differential Backup 則會立即備份有變動的檔案。

2. 設定

  • 建議啟用執行Obsidian時自動備份的功能,讓所有的變動都能自動的被記錄到而不會遺漏。
  • Include hidden folder:建議不啟用以略過.obsidian、.git等資料夾

3. 備份歷程

查看 backupinfo.md 即可觀察某個筆記的備份歷程,還原時可過濾出有備份該檔的ZIP檔:

▼ 範例

test.md:
  digest: dee824d7f626a1fc3ead477aeccf724718192fac37943d4245d144287b447d03
  filename: test.md
  mtime: 1709991840889
  history:
    - zipName: 2024-3-8-42820.zip
      modified: 2024-03-07T14:00:00.000Z
    - zipName: 2024-3-8-43824.zip
      modified: 2024-03-08T04:08:31.193Z
    - zipName: 2024-3-9-78930.zip
      modified: 2024-03-09T13:44:00.889Z

4. 還原

由命令面板執行 Restore from backups 可以還原則備份檔案到指定資料夾。

  1. 先選擇要還原的筆記檔案檔名
  2. 選擇要使用那個ZIP檔
  3. 指定要還原的位置:
    1. 還原到設定好的 restored 資料夾
    2. 還原並覆蓋現有的筆記
    3. 還原到筆記原有位置,檔名附加ZIP檔的檔名(例如test.md還原為test-2024-3-8-42820.md)

gh|700

  1. 若還原到 restored 資料夾或帶ZIP日期檔名時,可使用Beyond Compare或WinMerge等工具比對與合併內容等操作

5. 🙋‍♂️有問題...

隨著備份檔越來越多,佔用的磁碟空間也越來越多,如果儲存庫是使用雲端硬碟同步,則需要思考如何減少佔用空間。

可用的方法是將backup資料設定成符號連結,雲端硬碟通常不會同步資料夾連結(Dropbox就不會同步)。

對於版控的需求:如果能使用Git的話,Git會是更完整的解決方法。

6. 相關鏈接

✅ diffzip: https://github.com/vrtmrz/diffzip

7. 教學影片

##

您可能也會有興趣的類似文章

Obs157|用Copilot外掛使用本地AI模型服務-使用Ollama與LM Studio

$
0
0

Copilot外掛提供了下列 11 種 LLMs(Large Language Model,大型語言模型)的整合:

  1. GPT-3.5
  2. GPT-3.5 16K
  3. GPT-4
  4. GPT-4 TURBO (預設)
  5. GPT-4 32K
  6. Azure OpenAI
  7. Claude 3
  8. Gemini Pro
  9. OpenRouter.AI
  10. OLLMA (Local)
  11. LM Studio (Local)

其中的OLLMA與LM Studio都是能安裝在本機的本地模型應用程式,很適合本地導向的Obsidian使用。

試想:具有機密性或個人隱私的筆記,存放在安全可靠、他人無法觸及的本地,但為了使用AI的彙總摘要、整理綜述或分析學習等功能,而必須上傳給雲端的AI模型,不是和本地優先的概念背道而馳嗎?

幸好Copilot整合了兩個開源、可免費使用的LLMs,讓我們可以在Obsidian裡透過OLLAMA或LM Studio能對筆記或整個儲存庫做Q&A的操作。

[!NOTE]+ 🔔注意
因為LLMs的環境和模型檔案都是安裝在本機,它們的執行效能受電腦硬體制約,因此建議你的電腦要有較好的執行功率,最好有多一點的記憶體和GPU。

1. Copilot設定

  • 預設的LM Studio Server URL是http://localhost:1234/v1,依安裝的Port變更,例如:http://localhost:51234/v1
  • 確認OLLAMA_ORIGINS有設定正確
  • Ollama預設使用模型是llam2,若Ollama啟動時載入別的模型,則必須變更,例如變更為llama2-chinese
  • Ollama預設網址是 http://localhost:11434,通常不用更改

[!TIP]+ 切記
設定修改後務必點擊最上方的【Save and Reload】!

2. Copilot操作簡述

Copilot的交互模式有下列3種:

  1. Chat
  2. Long Note QA
  3. Vault QA

後二者在切換模式時會自動索引,或點擊模式選單右側的按鈕亦可重做索引。

2.1. Chat模式

  1. 在筆記裡選取一段文字後按 Ctrl+P進入命令面板,輸入copilot再點擊要執行的命令,例如:Translate selection、Summarize selection等
  2. 在Copilot面板輸入任意文字後按【Send】以獲得解答
  3. 在Copilot面板輸入[[時會彈出筆記選單,接著即可針對選用的筆記做Q&A聊天

2.2. Long Note QA模式

以當前筆記為目標而進行的Q & A操作。

2.3. Vault QA模式

以整個儲存庫為目標而進行的Q & A操作。

3. LM Studio

  • 左側邊欄最一個資料夾圖示裡可以變更模型的存放位置,若你的C磁碟空間較少,記得先變更到其他磁碟機

3.1. 下載模型

  • 搜尋llama2llama2-chinese→【Go】,在右側選擇任一模型後點擊【Download】
    gh|700

3.2. Chat

gh|700

3.3. 啟動Local Server

  • 如果預設的1234 Port無法啟動(錯誤碼: -4092)時,變更為51234 Port
  • Cross Origin Resource Sharing(CORS) 跨來源資源共用: 必須啟動,否則外部無法調用API

gh|700

測試:

curl http://localhost:51234/v1/chat/completions ^
-H "Content-Type: application/json" -d^
"{^
  \"messages\": [ ^
    { \"role\": \"system\", \"content\": \"Always answer in rhymes.\" },^
    { \"role\": \"user\", \"content\": \"Introduce yourself.\" }^
  ], ^
  \"temperature\": 0.7, ^
  \"max_tokens\": -1,^
  \"stream\": false^
}"

4. OLLAMA

4.1. 安裝

  • 先設定環境變數:設定→系統→系統資訊→進階系統設定→環境變數→下方的系統變數→新增下列三個環境變數
    • 用OLLAMA_MODELS變更預設的模型存放資料夾
    • OLLAMA_ORGINS設定可以允許跨來源資源共用的外部來源
      • 如果用預設的app://obsidian.md* ollama serve無法連接,則改成app://obsidian.md*
        set OLLAMA_HOST=127.0.0.1
        set OLLAMA_MODELS=d:\ollama\models
        rem set OLLAMA_ORIGINS=app://obsidian.md* ollama serve
        set OLLAMA_ORIGINS=app://obsidian.md*

gh|500

  • 預設的執行檔:C:\Users\帳號\AppData\Local\Programs\Ollama\
    gh|500

  • 點擊後會啟動PowerShell並執行ollama run llma2

  • 若沒有彈出PowerShell,可以自行開啟Terminal,自行執行下列指令:

    ollama pull llama2
    ollama run llma2
  • llama2模型亦可改用針對中文調整過的 llama2-chinese

gh|500

  • 自動下載llama2模型
    gh|700

  • /?顯示可使用的指令
    gh|700

4.2. CORS錯誤

  • OLLAMA_ORIGINS未設定正確,在Chat時會出錯CORS錯誤
    gh|700

在Terminal裡用/bye脫離命令行的Ollama,但系統匣裡仍有運行的Ollama App.exe,記得一併停止其運行。

5. 💡 相關鏈接

💡 解說文章:
✅ Download Ollama: https://ollama.com/download
✅ Ollama GitHub : https://github.com/ollama/ollama
✅ Ollama FAQ: https://github.com/ollama/ollama/blob/main/docs/faq.md#faq
✅ LM Studio: https://lmstudio.ai/
✅ 教學分享 【LM Studio】執行語言模型的最好程式介面 無需特別設定便可以使用語言模型|方便管理與使用多種模型 可快速架設與OpenAI相容的伺服器

6. 教學影片

##

您可能也會有興趣的類似文章

Redmine升級5.x

$
0
0

2014年時安裝並開始使用Redmine當做公司的問題追蹤系統,當時是Redmine 2.6,最近因為主機反應較慢且版本老舊,因此興起升級Redmine的念頭。

原本使用的是Bitnami 的Windows安裝檔,但目前Bitnami已經不提供安裝檔,而是提供了Docker、VM檔等方法替代。

最終在Redmine中文站找到了最後一個Windows安裝檔:

[!INFO]+ Bitnami官方資訊
2022 年 11 月 9 日发文:

Bitnami 将在 2022 年 11 月 30 日之前停止对所有本机原生安装程序的支持(包含 Windows、Linux、Mac),详细内容见官方博客…

注:最后一个发布的 Windows 版本是 bitnami-redmine-5.0.3。

而Linux的最後一個安裝檔在此
(來源: https://github.com/bitnami/vms/issues/644)

##

您可能也會有興趣的類似文章


Obs158|Copilot for Obsidian自訂提示詞與命令

$
0
0

先前介紹了Copilot for Obsidian外掛的三種查詢模式與簡單的操作介紹,這次更進一步的來介紹它的其他功能。

1. 自訂提示詞

我們可以把自訂提示詞視為提示詞模板,透過它即可將重複使用的提示詞設定為模式,而能多次使用。

Copilot提供了Add custom promptEdit custom promptDelete custom prompt三個命令來執行新增、修改與刪除自訂提示詞的操作。製作好的提示字以Apply custom prompt來送出提示詞給大語言模型。

1.1. 新增提示詞

  • 自訂提示詞對話窗只有名稱和內容兩個欄位,輸入完成後按【Save】
    gh|700

提示詞內容有下列幾個特殊關鍵字可提供動態資訊:

  • {}是選取的文字
  • {[[筆記檔名]]}指定特定的筆記
  • {資料夾路徑}是筆記的資料夾
  • {#tag1,#tag2}是標籤 tag1 或 標籤 tag2

例如我設定的 Daily Note 提示詞內容是:

讀取{[[template-daily-AI]]}的內容,並依下列規則替換,再輸出替換後的內容:
1. 今天的日期、時間與天氣是{}
2. %今天日期%替換為今天日期,格式是YYYY-MM-DD,YYYY是西元年,MM是月份,DD是日數,月份與日數皆為兩位數
3. %今天時間%替換為目前時間,格式是HH:mm:ss,HH是小時,mm是分鐘,ss是秒數
4. %今天天氣%替換為目前的天氣
5. %昨天日期%替換為昨天日期,格式是YYYY-MM-DD
6. %明天日期%替換為明天日期,格式是YYYY-MM-DD
7. 若今天是星期五則輸出%星期五BEGIN%到%星期五END%之間的內容,若不是則不產生%星期五BEGIN%到%星期五END%之間的內容
8. 若今天是星期一則輸出%星期一BEGIN%到%星期一END%之間的內容,若不是則不產生%星期一BEGIN%到%星期一END%之間的內容

1.2. 動態筆記檔名

另一個自訂提示詞:

讀取 [[{}]] 的內容,並產生出 3 個中文的問題與答案,必須使用Markdown格式,且每個問題第一行使用 h3 標記,以有序編號開頭。

原來希望內能依選取的文字當做筆記檔名,但測試結果傳送出去的是[[SelectedText]],無法達到動態檔名的需求。

修改後提示詞:

處理內容是: {}
根據處理內容產生出 3 個中文的問題與答案,必須使用Markdown格式,且每個問題第一行使用 h3 標記,以有序編號開頭。

2. Copilot提供的命令

Copilot有下列幾個命令,能在命令面板裡使用:

命令 功能
Add custom prompt 新增自訂提示詞模板
Edit custom prompt 修改自訂提示詞模板
Delete custom prompt 刪除自訂提示詞模板
Apply custom prompt 送出自訂提示詞
Apply ad-hoc custom prompt 送出一次性提示詞
Change tone of selection 變更選取文字的調性,例如專業的或隨意的
Toggle Copilot Chat Window 顯示/隱藏Copilot面板
Toggle Copilot Chat Window in Note Area 顯示/隱藏編輯區的Copilot面板
Clear local vector store 清除本地向量儲存
Count words and tokens in selection 計算選取內容的字數
Count total tokens in your vault 儲存庫的Token數
Explain selection like I'm 5 對5歲孩童解釋選取文字的含義
Emojify selection 表情符號化選取文字
Fix grammar and spelling of selection 修改文法與拚法
Force re-index vault for QA 強制重建儲存庫QA的索引
Garbage collect vector store (remove files that no longer exist in vault) 垃圾收集向量儲存(移除儲存庫中已不存在的檔案)
Generate glossary for selection 為所選內容生成詞彙表
Generate table of contents for selection 為所選內容生成目錄
Index (refresh) vault for QA 為 QA 重建(重新索引)儲存庫
Make selection longer 使選擇範圍變長
Make selection shorter 使選擇範圍變短
Rewrite selection to a press release 將選取文字重寫為新聞稿
Remove URLs from selection 從選取文字中移除網址
Rewrite selection to a tweet 將選取文字重寫為推文
Rewrite selection to a tweet thread 將選取文字重寫為推文串
Set note context for Chat mode 為聊天模式設置筆記上下文
Set exclusion for Vault QA mode 為儲存庫QA模式設置排除項
Simplify selection 簡化選取文字
Summarize selection 對選取文字做摘要
Translate selection 翻譯選取文字

3. 相關鏈接

✅ Cobilot for Obsidian作者的YouTube頻道: https://www.youtube.com/@loganhallucinates/videos
✅ logancyang/obsidian-copilot: A ChatGPT Copilot in Obsidian

4. 教學影片

##

您可能也會有興趣的類似文章

開啟舊版Windows工作管理員的方法

$
0
0

按下Ctrl+Shift+Esc可以開啟工作管理員,沒想到還可以用下列指令開啟舊版的工作管理員,如果用不慣新版,就可用指令執行舊的版本了:

taskmgr -d

▼ 新版工作管理員,明顯多了搜尋欄位
gh|700

▼ 舊版工作管理員,直接忽視Dark主題的設定
gh|700

##

您可能也會有興趣的類似文章

Redmine開啟事項鏈接到新分頁

$
0
0

點擊Redmine的Issue清單的鏈接時,會依據瀏覽器的預設作法開啟在當前分頁,而形前後頁的歷程關係。

但經常我們會希望將多個Issue開啟在多個分頁裡,以方便比對、觀察等,此時可使用下列方法,在不修改系統Ruby程式碼的狀況下,將鏈接開啟成新分頁:

  1. 修改 \Redmine安裝資料夾\apps\redmine\htdocs\public\javascripts\application.js
  2. 在檔案後面加上列程式碼,將<a 標籤加上target='_blank'屬性:
function addTargetExternalLinks() {
  $('.subject > a').each(function() {
    $(this).attr('target','_blank');
  });
  $('.id > a').each(function() {
    $(this).attr('target','_blank');
  });
  $('.assigned_to > a').each(function() {
    $(this).attr('target','_blank');
  });
}

$(document).ready(addTargetExternalLinks);

##

您可能也會有興趣的類似文章

Obsidian裡產生YouTube影片iframe的作法:使用Dataviewjs

$
0
0

因為使用了Obsidian Soundscapes在Obsidian裡透過YouTube聽音樂,但有些影片無法被嵌入筆記裡,為了簡化偵測可嵌入的測試,在網頁裡加入下列Dataviewjs來快速測試:

  1. 輸入影片代碼
  2. 點擊Create Video
  3. 若出現影片封面表示可也都內嵌

gh|700

```dataviewjs
let eleHTML = dv.el("hidden", "");

dv.span("YouTube ID: ");
let eleID = dv.el("input");
const button = dv.el("button", "Create Video");

eleID.style.width = "200px";

eleID.onfocus = function() {
  eleID.value = "";
}

eleID.onblur = function() {
  let _sID = this.value;
  if (_sID.length != 11) {
    new Notice("YouTube ID wrong!");
    return;
  }
  let _sHTML = '<iframe id="IFRAME" width="650" height="315" src="https://www.youtube.com/embed/%ID%" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>';

  eleHTML.value = _sHTML;

  eleHTML.value = eleHTML.value.replace(/%ID%/, _sID);

  new Notice("onblur " + eleHTML.value);
}

button.onclick = function() {
  const ele = document.getElementById("IFRAME");
  if (ele) ele.remove(ele);

  dv.paragraph(eleHTML.value);
}


##

您可能也會有興趣的類似文章

AHK63|AutoHotkey V2 語言概述#1-字串、熱字串與變數

$
0
0

gh|700

先介紹AutoHotkey v2語言的基本組成:

  • v1是命令式的語法,v2則是表達式的語言,基本上使用函數調用的方法運行;函數調用時可省略括號
  • 關鍵字大小寫不區分。檔案編碼建議使用 UTF-8帶BOM
  • v1寫法:

    ; MsgBox, Text
    ; MsgBox [, Options, Title, Text, Timeout]
    MsgBox, 64, Message title, Hello!,  ;; v1. 64=Information icon
    • v2寫法:
      ; MsgBox [Text, Title, Options]
      ; Result := MsgBox([Text, Title, Options])
      MsgBox "Hello!",,64
      MsgBox("Hello!",,64)

[!COMMENT]+ 建議
盡量使用函數式的寫法

1. 註解

  • 行內註解用分號,左邊至少一個空白(在行首則不用空白)
  • 多行註解用單行 /**/ 夾住的區塊

2. 字串與變數

2.1. 字串

  • 字串用雙引號單引號夾住
  • 字串裡有雙引號則外層使用單引號,字串裡有單引號則外層使用雙引號
    • 也可使用跳脫字元(Escape sequence):倒引號 (`)
  • 特殊字元
    • `t: Tab字元
    • `n: Linefeed字元 (new line)
    • `r: Carriage return字元
    • `f: Formfeed字元
    • `{: 大括號字元
  • 字串連接用空白或 . (半形的點)
sToday := A_YYYY . "年" . A_MM . "月" . A_DD "日"
MsgBox("今天是 " sToday "`n時間:" A_Hour "時" A_Min "分" A_Sec "秒")

sMsg := Format("今天是 {1}年{2}月{3}日`n時間:{4}時{5}分{6}秒", A_YYYY, A_MM, A_DD, A_Hour, A_Min, A_Sec)
MsgBox(sMsg)
  • 上述程式碼中的 sToday 是變數,用來存放指派給它的特定資料
  • := 是指派、賦值的運算子。x := y 運算式將變數 y 的值賦予給變數 x
  • 拚接字串與變數可使用Format()

2.2. 多行字串

sFormat := "
(
今天是 {1}年{2}月{3}日
時間:{4}時{5}分{6}秒
)"

MsgBox "多行字串範例`n" . Format(sFormat, A_YYYY, A_MM, A_DD, A_Hour, A_Min, A_Sec)

2.3. 變數

  • AutoHotkey的名稱(包含變數名稱、函數名稱等)不區分大小寫,最長253個字元
  • 名稱可使用任意的文字、數字、底線(Underscore),且不能以數字開頭
  • 變數沒有型別,因此一個變數的值可以是字串或數值,可以任意指派各種類型的值給變數
  • 保留字不能用做名稱(例如 if、while等)
  • 內建變數以 A_開頭,如A_YYYY、A_MM、A_DD等

[!TIP]+ 匈牙利命名法 (Hungarian notation)
AutoHotkey的變數沒有型別,為方便區分變數存放的資料類型,建議使用匈牙利命名法來命名變數,以開頭的幾個小寫字母當做變數的型別

例如:字串變數以 s 開頭,表示String,整數變數以 i 開頭,表示Integer,...

3. 熱字串 (Hotstring)

  • 熱字串用來輸入後擴展成指派內容的表示式

[!REF]+ 熱字串簡單格式
::熱字串::擴展後內容 [觸發字元]
觸發字元預設是空白Tab Enter

::ma::mymail@gmail.com
::,ma::mymail@gmail.com  ; 逗點被保留了, why?
::,m1::mymail@gmail.com
::,ah::AutoHotkey

[!TIP]+ 技巧

  • 熱字串以特殊符號開頭以確保不會與常用文字結合而錯誤擴展
  • 例如熱字串為 ma 時,輸入mail時可能會被擴展
  • 選用方便輸入的特殊符號,例如 ,;/

3.1. 選項

[!REF]+ 熱字串選項
:選項:熱字串::擴展後內容 [觸發字元]

sFormat := "{1}年{2}月{3}日 {4}時{5}分{6}秒"
:X:,da::MsgBox Format(sFormat, A_YYYY, A_MM, A_DD, A_Hour, A_Min, A_Sec)
:X:,da2::Send Format(sFormat, A_YYYY, A_MM, A_DD, A_Hour, A_Min, A_Sec)
:O:,m2::mymail@gmail.com
  • 選項X:執行擴展文字
  • 選項O:Omit,省略輸出觸發字元

3.2. 練習

  • 建立一個新的腳本檔 ahk63.ahk2
    • 添加熱字串 ,addr 輸出家裡或公司地址
    • 添加熱字串 ,dd 輸出今天的簡短日期(有分隔線),,tt輸出當前的簡短時間(有分隔線)
    • 添加熱字串 ,d 輸出今天的簡短日期(無分隔線),,t輸出當前的簡短時間(無分隔字元)

4. 💡 相關鏈接

✅ VS Code下載:https://code.visualstudio.com/download
✅ AutoHotkey下載:https://www.autohotkey.com/download/
✅ VSCode擴充 Action Buttons Ext: https://marketplace.visualstudio.com/items?itemName=jkearins.action-buttons-ext
✅ Easy-Auto-GUI-for-AHK-v2: https://github.com/samfisherirl/Easy-Auto-GUI-for-AHK-v2
✅ 如果你覺得我的VS Code樣式有點吸睛的話,請參考我的影片:Peacock:五彩繽紛的vs-code擴充

5. 教學影片

https://youtu.be/0MlaHrC0_QU

##

您可能也會有興趣的類似文章

掌握硬碟空間:免費工具DiskUsage與TreeSize教你輕鬆管理!

$
0
0

彙總幾個在Windows裡查詢硬碟空間大小的方法,最後介紹的DiskUsage與du則是Windows、MacOS、Linux都能使用的工具。

1. TreeSizeFree

TeeeSizeFree應該是最多人使用的工具,有圖形介面又能免費使用,自然變成是大眾首選。
專業版9.1.3的介面和Free版差異很大,提供了許多更專業的分析與工具。
TreeSize Free的好處是只需要一個TreeSizeFree.exe就能執行了。

▼ 專業版9.1.3版
gh|700

▼ TreeSizeFree 2.2.1版
gh|700

▼ TreeSizeFree 4.7版
gh|700

2. MultiCommander雙面板檔案管理工具

雙面板檔案管理工具應該都具備查看資夾大小的功能,我使用的Multi Commander也有;【工具】→【計算資料夾大小】就能運算並顯示 ,點擊標題則能排序。

gh|700

3. Linux du

源自UNIX/Linux的du是另一個查看磁碟大小的工具,Windows自然也有,如果有安裝Git client的話,在Git安裝資料夾\usr\bin裡就能找到du.exe

4. DiskUsage

DiskUsage是在GitHub上的免費、開源工具,能在Windows、MacOS、Linux上使用。
DiskUsage能以更快速、更美觀的方式來呈現資料夾與檔案的大小。因為它的執行去效率更好,因此我把它改成du.exe來使用。

gh|700

  • 其他範例
    rem 只查看某些副檔名的檔案
    diskusage -t HLP,txt -r |more
    rem 可以用正則運算式來查詢特定檔名的doc與docx檔案
    diskusage -f ".+\.(doc|docx)$"
    rem 只查看資料夾,總是顯示顏色
    diskusage -D -c always | more

5. 相關鏈接

✅ TreeSize Free: https://www.jam-software.com/treesize_free
✅ DiskUsage - A tool for showing disk usage(Linux, MacOS and Windows): https://github.com/chenquan/diskusage
✅ MultiCommander - FileManager for professionals: https://multicommander.com/

6. 教學影片

https://youtu.be/cuw6WrQqYOE

##

您可能也會有興趣的類似文章

捕捉每次點擊:用Keyviz展示你的按鍵操作,讓教學影片更生動

$
0
0

gh|700

在錄製影片時,有時需要將使用的鍵盤按鍵也一起顯示在螢幕上,以方便功能展示時讓觀眾能一目瞭然,這時鍵盤視覺化(可视化)工具就派上用場了。

以下彙總了我使用過的類似工具,最後再介紹Keyviz的使用重點:

  1. KeyCastOW
  2. MouseInc
  3. MouseTrack
  4. Keyviz: Windows、MacOS、Linux適用

1. KeyCastOW

2015年的程式,可由Winsows Store購買。

2. MouseInc滑鼠手勢工具

MouseInc也提供了按鍵重顯示的功能。MouseInc請參考我的影片:終極滑鼠手勢工具MouseInc出世,老前輩StrokeXX全部退位!

  • 作者因個人因素不再支援,但仍可搜尋到其他軟體網站上的程式。
  • 設定改用離線界面包

gh|700

3. MouseTrack

MouseTrack是我用來產生游標高亮的工具,它也有按鍵顯示功能。

gh|700

gh|700

4. Keyviz

2022年的1.0.6是穩定版,2023年有更新v2.0.0-alpha版,2.0版除了鍵盤視覺化外,也提供了滑鼠視覺化及更多的設定。想要嚐鮮的可試試2.0版,但目前2.0版設定後無法儲存,造成再次執行時恢復到原始設定。

經過我的測試,設定的操作是:

  1. 設定產生的style.json與config.json會寫到 C:\Users\使用者\OneDrive\文件\C:\Users\使用者\Documents
  2. 進入設定後做個變動,即會重新讀回設定

4.1. 執行

  • 系統匣左鍵:啟用切換
  • 系統匣右鍵:開啟功能表

4.2. 設定

由系統匣右鍵→【Settings】即可開啟設定視窗。按住頂端中央才能拖動視窗的位置。

Keyviz有4大類設定:

  1. General: 可忽略顯示特定的修飾鍵, Shift預設會被忽略
  2. Mouse: 設定顯示滑鼠點擊,顯示位置在固定位置,此功能目前應不使用
  3. Keycap(鍵帽): 設定鍵盤顯示樣式,變更設定時可按複合鍵以觀察設定狀態
  4. Appearance: 鍵盤顯示位置、動畫、顯示秒數等外觀設定

gh|500

4.3. Keycap(鍵帽)

4.3.1. Preset

Preset可提定要使用的4種鍵帽:

Minimal
gh|200

Flat
gh|200

Elavated
gh|200

Plastic
gh|200

Mechanical
gh|200

4.3.2. Typography 鍵帽字體

gh|500

  • 字體大小 (px)

  • 字體顏色

  • 大小寫

  • 修飾鍵顯示形式:全名(Control),短名稱(Ctrl),圖示(^)

    4.3.3. Layout 鍵帽佈局

    gh|500

  • 垂直方式:頂端、中央或底部

  • 水平方式: 靠左、中央或靠右

  • 是否顯示圖示

  • 是否顯示符號(3的符號是#)

  • 是否使用+分隔按鍵

4.3.4. Color 鍵帽顏色

gh|500

  • 填充類型:實心、漸層

  • 一般按鈕 區分 修飾鍵:點擊區分則可設定修飾鍵,預設二者相同

    4.3.5. Border 鍵帽邊框

    gh|700

  • 啟用後鍵帽顯示邊框線條,設定邊框的顏色與寬度等

4.3.6. Background

gh|700

啟用後按鈕顯示區會有背景底框。

5. 相關鏈接

✅ KeyCastOW: https://github.com/brookhong/KeyCastOW/issues
✅ 購買(HK$31): https://apps.microsoft.com/detail/9nwztztb05pg?hl=en-hk&gl=HK
✅ MouseTrack: https://www.swordsoft.idv.tw/mousetrack/
✅ 購買(US$6.99): https://apps.microsoft.com/detail/9pnk50trz0qb?rtc=1&hl=zh-tw&gl=TW
✅ Keyviz GitHub: https://github.com/mulaRahul/keyviz
✅ Keyviz官方網站: https://mularahul.github.io/keyviz/

6. 教學影片

##

您可能也會有興趣的類似文章


打破Windows與UNIX的藩籬:nyagos-介於UNIX跟DOS之間的混血的CommandLine Shell

$
0
0

經常透過Windows命令提示字元(cmd.exe)操作Windows命令時,可以安裝clink來擴充命令編輯功能以達到與Linux BASH相同的操作方法,但因為clink是採用「注入cmd.exe」的方法來達到擴充目的,會安裝一些DLL到系統裡,並且會變更登錄(Registry),因此我不是太喜歡使用它。

最近發現了來自日本的nyagos,不僅功能類似、不需要安裝DLL也不會動到登錄,也能使用Lua來擴充自訂功能,使用起來非常簡便,而且原有的內部命令、批次檔也都能繼續使用。如果你也習慣命令行操作的話,強力推薦試試nyagos。

[!tip] What is nyagos?

  • nyagos是 Nihongo Yet Another GOing Shell 的縮寫
  • "NYAGOS - The hybrid Commandline Shell between UNIX & DOS"
  • 最早的Release日期是2014/09/27,目前版本是4.4.15_0
  • 1.0到3.x以C++撰寫(NAYOS,「にゃおす」と発音する),4.0開始用Go語言撰寫(NYAGOS,多了一個G)

1. 安裝

  • https://github.com/nyaosorg/nyagos/releases 下載.zip檔後解壓縮
  • 執行 安裝資料夾\makeicon.cmd,會以PowerShell在桌面新增圖示並設定啟動熱鍵Ctrl+Alt+N
  • 預設設定檔:C:\Users\使用者\.nyagos,是Lua語言的腳本檔
  • 建議移除C:\Users\使用者\.nyagos而直接使用安裝資料夾裡的.nyagos檔案,修改前先備份(可攜性考量)

1.1. 啟動執行順序

  1. nyagos安裝資料夾\.nyagos (lua-script)
  2. nyagos安裝資料夾\nyagos.d\*.lua (lua-script)
  3. %USERPROFILE%\.nyagos (lua-script)
  4. %APPDATA%\NYAOS_ORG\nyagos.d\*.lua (lua-script)

2. 用法示範

2.1. ls (list)

  • 參考:ls--option-files

    ls test*
    ls -a -ltr
    c:\util\npp\notepad++ $(ls test*)
    c:\util\npp\notepad++ `ls test*`
    emeditor $(ls test* | fzf -m)
    cd `ls -d | box`
  • lsll定義在 安裝資料夾\nyagos\nyagos.d\aliases.lua

  • 如果沒寫過Lua的話,可閱讀安裝資料夾\nyagos\nyagos.d\*.lua體驗一下

  • box是nyagos的內建命令,可建立選單

2.2. 自訂代名

  • 建立腳本檔 安裝資料夾\nyagos\nyagos.d\my_aliases.lua,內容如下:
nyagos.alias.cat="type"
nyagos.alias["cd.."]="cd .."
nyagos.alias["cd..."]="cd ../.."
nyagos.alias["cd2"]="cd ../.."
nyagos.alias["cd3"]="cd ../../.."
nyagos.alias["cd?"]="cd ?"

if nyagos.env.OS == "Windows_NT" then
  -- 由舊到新排序
  nyagos.alias.ll="__ls__ -olFh -ltr $*"
end

2.3. 變更提示字串

  • 建立腳本檔 安裝資料夾\nyagos\nyagos.d\my_prompt.lua,內容如下
  • 若為Git工作目錄則再輸出分支名稱

gh|700

-- Source: https://qiita.com/suisui/items/b6469ce91f01a83b599b
-- Reference: [【NYAGOS】プロンプトで使える特殊文字と ANSI エスケープシーケンスを Lua でラップする - Tumbling Dice](https://outofmem.hatenablog.com/entry/2016/01/27/014920)
share.org_prompter = nyagos.prompt
nyagos.prompt = function(this)
  local oPrompt = share.prompt
  local oEsc = share.escape_sequence

  -- add dir name (with drive letter)
  -- bg.default (=49) だけでいい気もしますが、追加で bg.trans (=60) も足してます
  local sEscStart = oEsc.create_sequence(oEsc.bg.default, oEsc.bg.trans)
  local sEscEnd = oEsc.create_sequence(oEsc.fg.white, oEsc.bg.trans)
  --print("sEscStart=" .. sEscStart)
  --print("sEscEnd=" .. sEscEnd)
  local prompt_message = string.format('%s[%s]%s', sEscStart, oPrompt.path, sEscEnd)

  -- check git branch
  local sGitBranchName = nyagos.eval('git rev-parse --abbrev-ref HEAD 2>nul')
  --print("branch=" .. sGitBranchName)

  if (sGitBranchName ~= '') then
    -- add git branch name
    sEscStart = oEsc.create_sequence(oEsc.fg.red, oEsc.bg.trans)
    sEscEnd = oEsc.create_sequence(oEsc.fg.default, oEsc.bg.trans)
    --print("sEscStart=" .. sEscStart)
    --print("sEscEnd=" .. sEscEnd)

    prompt_message = string.format(prompt_message .. ' [%s%s%s]', sEscStart, sGitBranchName, sEscEnd)
  end

  -- add line break
  prompt_message = prompt_message .. " "  -- oPrompt.crlf

  -- add dollar
  prompt_message = prompt_message .. oPrompt.dollar .. ' '

  return share.org_prompter(prompt_message)
end

share.prompt = {
  eq = '$q', -- equal '='
  dollar = '$$', -- dollar '$'
  time = '$t', -- current time
  date = '$d', -- current date
  path = '$p', -- current path (with drive letter)
  ver = '$v', -- windows version
  drive = '$n', -- current drive letter
  gt = '$g', -- greater than '>'
  lt = '$l', -- less than '<'
  pipe = '$b', -- pipe '|'
  crlf = '$_', -- line break
  esc = '$e', -- escape
  bs = '$h', -- backspace
  amp = '$a', -- ampersand '&'
  l_par = '$c', -- left parenthesis '('
  r_par = '$f', -- right parenthesis ')'
  space = '$s' -- space
}

share.escape_sequence = {
  -- attribute
  attr = {
    off = '0',
    bold = '1',
    bold_off = '21',
    underline = '4',
    underline_off = '24',
    blink = '5',
    blink_off = '25'
  },

  -- foreground
  fg = {
    black = '30',
    red = '31',
    green = '32',
    yellow = '33',
    blue = '34',
    magenta = '35',
    cyan = '36',
    white = '37',
    default = '39',
    -- prefix 'l' is 'Light'
    l_gray = '90',
    l_red = '91',
    l_green = '92',
    l_yellow = '93',
    l_blue = '94',
    l_magenta = '95',
    l_cyan = '96',
    l_white = '97'
  },

  -- background
  bg = {
    black = '40',
    red = '41',
    green = '42',
    yellow = '43',
    blue = '44',
    magenta = '45',
    cyan = '46',
    white = '47',
    default = '49',
    trans = '60',
    -- prefix 'l' is 'Light'
    l_gray = '100',
    l_red = '101',
    l_green = '102',
    l_yellow = '103',
    l_blue = '104',
    l_magenta = '105',
    l_cyan = '106',
    l_white = '107'
  },

  -- create_sequence(fg, bg, attr) 參數順序不必固定
  create_sequence = function(...)
    local prompt = share.prompt
    local attrs = {...}
    local joined_attrs = ''

    for n, v in pairs(attrs) do
      local val = tostring(v)
      if val ~= nil then
        joined_attrs = joined_attrs ~= '' and joined_attrs .. ';' .. val or val
      end
    end
    return string.format('%s[%sm', prompt.esc, joined_attrs)
  end
}

2.4. 快速切換目錄

  • z 資料夾部份字串快速切換目錄(jump)
  • 安裝 zoxide
  • 變更目錄的歷程在cd命令執行時以nyagos.postexechook()調用 zoxide 寫入,再新增 z 代名查詢後快速切換
  • 建立腳本檔 安裝資料夾\nyagos\nyagos.d\my_z.lua,內容如下
-- source: [nyagos增加zoxide的支持 – wentao's blog](https://wentao.org/post/2023-04-27-zoxide-with-nyagos/)
-- 2024/04/09 Jerry modified no args handling.
-- [ajeetdsouza/zoxide: A smarter cd command. Supports all major shells.](https://github.com/ajeetdsouza/zoxide)
nyagos.alias.z = function (args)
  local path
  if (#args >= 1) then
    local rest = args[1]
    path = rest
    path = nyagos.eval("zoxide query --exclude '".. (nyagos.getwd()) .."' -- " .. rest)
  else
    path = nyagos.eval("zoxide query -i")
  end
  nyagos.chdir(path)
end
nyagos.alias.zi=function(args)
  if (#args == 0) then
    print("zi need a path.")
    return
  end

  local rest = args[1]
  path = nyagos.eval("zoxide query -- " .. rest .. "| fzf" )
  nyagos.chdir(path)
end

-- 利用 postexechook 功能,实现了自动更新 zoxide 数据.
-- 另有 nyagos.preexechook
nyagos.postexechook = function(args)
  if "cd" == args[1] then
      nyagos.eval("zoxide add -- " .. nyagos.getwd())
  end
end

▼ 使用 z 範例

rem z 顯示目錄歷程選單,可用上下鍵移動,也可輸入過濾文字
z
z test

gh|700

2.5. 執行命令歷史

rem 預設顯示最後10個命令
history
rem 再執行第123個命令
!123

修改腳本檔 安裝資料夾\nyagos\nyagos.d\my_aliases.lua加入自訂代名hist,不傳參數預設顯示20筆資料:

nyagos.alias.hist=function(args)
  if (#args <= 0) then 
    iCount = 20
  else
    -- print("args=" .. args[1])
    iCount = args[1]
  end
  nyagos.exec("history " .. iCount)
end

2.6. 自動補全

  • 安裝資料夾\nyagos\nyagos.d\catalog\git.lua複製到安裝資料夾\nyagos\nyagos.d\
  • 安裝資料夾\nyagos\nyagos.d\catalog\subcomplete.lua複製到安裝資料夾\nyagos\
  • 在命令行輸入 git re Tab即會出現Git re開頭的命令

2.7. 選單熱鍵

  • 安裝資料夾\nyagos\nyagos.d\box.lua提供下列熱鍵:
按鍵 功能
Ctrl+O 當前資料夾檔案選單
Ctrl+X r: 命令歷史選單
h: cd歷史選單
g: Git log選單
Alt+R 命令歷史選單。命令含有空白會加雙引號
Alt+H cd歷史選單
Alt+G Git log選單
Alt+O 取回.lnk捷徑的原有路徑
  • 建立捷徑
    lnk 目錄或含路徑檔名 存放的.lnk檔
    lnk c:/util/nyagos\nyagos.d j:/test/nyad.lnk
    cd j:/test/nyad.lnk

2.8. foreach

cd /d j:/test/nyagos
foreach f *.txt ; echo move %f% %f:txt=ttt% ; end

gh|700

3. 問題

3.1. bindkey

想將 Ctrl+End設定成刪除游標右側文字(如Ctrl+K ),但似乎無法達成。

3.2. 控制台檔案

例如main.cplncpa.cpl等控制台檔案皆無法以openstart開啟,最後以批次檔解決:

@echo off
if "%1"=="net" ncpa.cpl
if "%1"=="fire" Firewall.cpl
if not "%1"=="" %1.cpl
if "%1"=="" dir /w c:\windows\system32\*.cpl

3.3. Microsoft Configuration (.msc)

services.msc之類的.msc檔案無法直接啟動,必須以open services.mscstart services.msc才能執行。
.msc其實是Windows的可執行檔,不加.msc的話可以直接執行,但加了.msc時nyagos無法啟動。

新增下列代名以比照cmd.exe的執行方式:

nyagos.alias.svc="start services.msc"
nyagos.alias["appwiz.cpl"]="cpl appwiz"
nyagos.alias["services.msc"]="start services.msc"

也可修改安裝資料夾\nyagos\nyagos.d\suffix.lua讓nyagos知道如何執行.msc檔案:

for key,val in pairs{
    awk={"gawk","-f"},
    js={"cscript","//nologo"},
    lua={"nyagos.exe","--norc","--lua-file"},
    pl={"perl"},
    ps1={"powershell","-ExecutionPolicy","RemoteSigned","-file"},
    rb={"ruby"},
    vbs={"cscript","//nologo"},
    wsf={"cscript","//nologo"},
    py={"python"},
    msc={"open"},
} do
    share._setsuffix( key , val )
end

4. 💡 相關鏈接

✅ nyaosorg/nyagos: NYAGOS - The hybrid Commandline Shell between UNIX & DOS
✅ zoxide手冊: zoxide man | Linux Command Library
✅參考 clink:擴充cmd.exe成為Bash readline命令行的強大編輯功能 – 簡睿隨筆
✅參考 【NYAGOS】プロンプトで使える特殊文字と ANSI エスケープシーケンスを Lua でラップする - Tumbling Dice
✅ 參考:nyagos增加zoxide的支持 – wentao's blog

5. 教學影片

##

您可能也會有興趣的類似文章

YouTube播放清單影片排序的選擇

$
0
0

有網友要求變更我的YouTube播放清單的排序方法,原本我是使用發佈日期(最新),最新的影片會排在最上面,但這個排序會讓觀眾在觀看時無法依照由舊到新的方式自動續播下一期的影片。

從善如流修改排序為發佈日期(最舊),這樣就能讓影片由舊到新的續播了。

變更排序步驟

  1. 到頻道後台
  2. 內容→播放清單,
  3. 找到任意一個清單後→編輯
  4. 變更排序方法

gh

gh

##

您可能也會有興趣的類似文章

用Nyagos學習Lua:以cfonts產生MOTD標語

$
0
0

MOTD就是開啟Shell後出現的本日訊息(Message of the day),這次這個顯示本日訊息的功能是使用cfonts來達成的。

自從Rust程式語言推出後,有大量的命令行命令使用Rust撰寫,cfonts也是使用Rust開發的,因為它在GitHub上只有釋出原始碼,因此我們自行安裝Rust環境以透過其cargo.exe來安裝cfonts。

1. 安裝Rust環境

Rust開發環境下載rust-init.exe並安裝,執行時選擇安裝 Visual Studio Community installer。安裝完成後重啟Windows Terminal。

安裝後確認PATH環境變數有指到rust的執行檔資料夾(C:\Users\使用者\.cargo\bin\)。

以命令行指令驗證安裝狀態,用rustup update更新Rust開發環境:

rustup update

2. 安裝cfonts

cargo install cfonts
rem 測試
cfonts "Hello" --colors red,green
cfonts "World" --gradient red,blue
cfonts "World" --gradient red,blue --font block,shade

3. Lua測試程式

以下列步驟建立測試程式my_test.lua,來挑選一個好看的cfonts樣式:

  1. Nyagos安裝資料夾/nyagos.d/ 建立my_test.lua
  2. 產生測試程式:

3.1. 在nyagos裡測試

在程式所在資料夾用lua_f載入,再用定義好的代名執行。

cd c:/util/nyagos/nyagos.d
lua_f my_test.lua
test1

3.2. Lua語法重點

  • 字串可以用單引號或雙引號,連接用兩個點 (..)
  • 變數沒有型別,用local宣告
  • 沒有陣列,但可以用table組成,#table變數 即能取出個數
  • string.format() 可完成printf()的操作

4. 相關鏈接

✅ GitHub cfonts: Sexy fonts for the console : https://github.com/dominikwilkowski/cfonts
✅ Rust開發環境: https://www.rust-lang.org/zh-TW/tools/install
✅ 腳本原始碼: https://gist.github.com/emisjerry/10939510183c145d4729dd1432f62c4d

5. 教學影片

https://youtu.be/aw6vQOfpbn0

##

您可能也會有興趣的類似文章

SE005|Subtitle Edit 由.srt匯出自訂格式

$
0
0

1. 需求

由.srt匯出特定格式:開始時間 一行字幕。

2. 解決方法

Siubtitle Edit就有匯出自訂格式的功能,功能表 【File】→【Export】→【Export custom text format...】,點擊【New】,輸入需要的格式。

gh|700

Text line可使用下列欄位:

  1. {number}: 第幾個字幕
  2. {start}: 字幕開始時間
  3. {end}: 字幕終止時間
  4. {text}: 字幕內容

3. 結果

gh|700

4. 相關鏈接

💡 解說文章:https://jdev.tw/blog//
✅ Subtitle Edit: https://github.com/SubtitleEdit/subtitleedit/releases

5. 教學影片

https://youtu.be/T5o3jJmCkp4

##

您可能也會有興趣的類似文章

Obsidian:變更Soundscapes的按鈕樣式

$
0
0

如果你跟我一樣覺得Obsidian外掛的Soundscapes拉Bar按鈕太大的話,可以複製下列CSS變更。

  • 修改前
    gh

  • 修改後
    gh

/* Soundscapes BEGIN 拉桿圓圈 */
input[type="range"]::-webkit-slider-thumb{
  -webkit-appearance: none;
  position: relative;    /* 設為相對位置,為了前後區塊的絕對位置而設定 */
  width:10px;
  height:10px;
  top: -2px;
  background:grey;
  border-radius:50%;
  transition:.2s;        /* 點選放大時候的漸變時間 */
}
/* Soundscapes END */

您可能也會有興趣的類似文章

Viewing all 904 articles
Browse latest View live