From e9633c212725e125a86143ba8f3fff048e0638c0 Mon Sep 17 00:00:00 2001 From: wastu01 Date: Tue, 1 Oct 2024 10:26:32 +0000 Subject: [PATCH] =?UTF-8?q?Deploy=20from=20wastu01/blog-file@5f34f023b5c83?= =?UTF-8?q?a8fe98b22606aba102ed9db967d=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 404.html | 4 +- archives/index.html | 6 +- article/2024-09-19-.zh/index.html | 60 +- .../adobe-firefly-text-to-image/index.html | 4 +- .../aerial-photography-hsinchucity/index.html | 4 +- article/ai-text-prompts-all-in-one/index.html | 4 +- article/canva-magic/index.html | 4 +- .../chatgpt-dalle3-text-to-image/index.html | 4 +- article/html-css-style-template/index.html | 4 +- .../hugo-build-deploy-error-.zh/index.html | 28 +- .../my-digital-works-in-youtube/index.html | 4 +- .../openai-custom-gpts-collection/index.html | 4 +- article/openstreetmap-leaflet-map/index.html | 28 +- article/python-pm25-aqi-opendata/index.html | 6 +- article/python-tesseract-ocr/index.html | 6 +- article/python-wordcloud-word/index.html | 34 + .../index.html | 4 +- article/special-mobile-game-app/index.html | 52 +- .../index.html" | 28 +- .../Jingshan-street-map.png" | Bin 0 -> 868067 bytes ...shan-street-map_hu5071829790574946726.png" | Bin 0 -> 18392 bytes ...shan-street-map_hu7722130474830148275.png" | Bin 0 -> 786135 bytes ...shan-street-map_hu7808420036128804250.png" | Bin 0 -> 315336 bytes ...7\351\235\242\345\244\226\350\247\200.JPG" | Bin 0 -> 910946 bytes ...26\350\247\200_hu16608240604749321088.JPG" | Bin 0 -> 63142 bytes ...226\350\247\200_hu6026348076854366334.JPG" | Bin 0 -> 234203 bytes ...7\351\235\242\346\213\233\347\211\214.JPG" | Bin 0 -> 659415 bytes ...233\347\211\214_hu3301362582382983279.JPG" | Bin 0 -> 167417 bytes ...233\347\211\214_hu6705408677086367230.JPG" | Bin 0 -> 45345 bytes .../index.html" | 28 + categories/aigc/index.html | 15 +- categories/blog/index.html | 15 +- categories/index.html | 15 +- categories/index.xml | 2 +- categories/javascript/index.html | 15 +- categories/page/2/index.html | 112 +-- categories/python/index.html | 15 +- categories/python/index.xml | 47 +- categories/youtube/index.html | 15 +- .../index.html" | 15 +- .../\346\255\245\351\201\223/index.html" | 15 +- .../\347\266\262\351\240\201/index.html" | 15 +- .../\351\201\212\346\210\262/index.html" | 112 +-- .../\351\201\212\346\210\262/index.xml" | 24 +- index.html | 28 +- index.xml | 273 ++++++- page/2/index.html | 22 +- page/index.html | 15 +- post/index.html | 15 +- post/index.xml | 273 ++++++- post/page/2/index.html | 15 +- ...34ab0a13e4f53466a847df46f5df8b8c3fa27a.css | 10 + ...fa24fc4d88466b321291d24b3afe5c40ec9604.css | 10 + ...9ef1a5d7ebbd935edc6fff258c07cd8beef293.css | 10 + ...4801991de717c3bd7300088e053ed30e8d11e5.css | 10 + ...6c35d1ea3df2b785850a6cf5437755b584db53.css | 10 + ...98e03ff677eda71c08181abf5df2010f969c05.css | 10 + ...1e808032292516a8d068206a477a38a850094e.css | 10 + ...d00b279033b8d5a82aca4e8228c01903e4bdf7.css | 10 + ...aa0ba056e5fc6e8b5f50149e0fb9c2f1b38903.css | 10 + ...ed8f4e5704344676ef05a72e81c2534375afec.css | 10 + search/index.html | 4 +- search/index.json | 2 +- sitemap.xml | 2 +- tags/adobe/index.html | 15 +- tags/ai/index.html | 15 +- tags/aqi/index.html | 15 +- tags/canva/index.html | 15 +- tags/chatgpt/index.html | 15 +- tags/css/index.html | 15 +- tags/dalle/index.html | 15 +- tags/firefly/index.html | 15 +- tags/gen2/index.html | 15 +- .../index.html" | 668 +----------------- .../google\346\226\260\350\201\236/index.xml" | 150 ++-- .../page/1/index.html" | 12 +- tags/hugo/index.html | 112 +-- tags/index.html | 15 +- tags/index.xml | 2 +- .../jieba\346\226\267\350\251\236/index.html" | 668 +----------------- .../jieba\346\226\267\350\251\236/index.xml" | 150 ++-- .../page/1/index.html" | 12 +- tags/json/index.html | 15 +- tags/leaflet/index.html | 112 +-- tags/midjourney/index.html | 15 +- tags/ntcu/index.html | 15 +- tags/ocr/index.html | 15 +- tags/openstreetmap/index.html | 112 +-- tags/page/2/index.html | 15 +- tags/page/3/index.html | 15 +- tags/page/4/index.html | 15 +- tags/pm25/index.html | 15 +- tags/python/index.html | 15 +- tags/runwayml/index.html | 15 +- tags/stablediffusion/index.html | 15 +- tags/tesseract/index.html | 15 +- .../index.html" | 668 +----------------- .../index.xml" | 150 ++-- .../page/1/index.html" | 12 +- tags/youtube/index.html | 15 +- "tags/\345\222\226\345\225\241/index.html" | 15 +- .../index.html" | 15 +- .../index.xml" | 47 +- .../index.html" | 15 +- "tags/\346\226\260\347\253\271/index.html" | 15 +- "tags/\346\250\241\346\235\277/index.html" | 15 +- "tags/\347\251\271\346\236\227/index.html" | 15 +- "tags/\347\251\272\346\213\215/index.html" | 15 +- wa.01/index.html | 4 +- .../index.html" | 4 +- 110 files changed, 1509 insertions(+), 3321 deletions(-) create mode 100644 article/python-wordcloud-word/index.html create mode 100644 "article/\346\226\260\347\253\271\351\207\221\345\261\261\350\241\227\346\226\260\346\211\213\346\235\221\351\232\250\346\211\213\350\250\230/Jingshan-street-map.png" create mode 100644 "article/\346\226\260\347\253\271\351\207\221\345\261\261\350\241\227\346\226\260\346\211\213\346\235\221\351\232\250\346\211\213\350\250\230/Jingshan-street-map_hu5071829790574946726.png" create mode 100644 "article/\346\226\260\347\253\271\351\207\221\345\261\261\350\241\227\346\226\260\346\211\213\346\235\221\351\232\250\346\211\213\350\250\230/Jingshan-street-map_hu7722130474830148275.png" create mode 100644 "article/\346\226\260\347\253\271\351\207\221\345\261\261\350\241\227\346\226\260\346\211\213\346\235\221\351\232\250\346\211\213\350\250\230/Jingshan-street-map_hu7808420036128804250.png" create mode 100644 "article/\346\226\260\347\253\271\351\207\221\345\261\261\350\241\227\346\226\260\346\211\213\346\235\221\351\232\250\346\211\213\350\250\230/img/\346\226\260\347\253\271\345\260\217\351\243\233\350\261\254-Flypig-\345\272\227\351\235\242\345\244\226\350\247\200.JPG" create mode 100644 "article/\346\226\260\347\253\271\351\207\221\345\261\261\350\241\227\346\226\260\346\211\213\346\235\221\351\232\250\346\211\213\350\250\230/img/\346\226\260\347\253\271\345\260\217\351\243\233\350\261\254-Flypig-\345\272\227\351\235\242\345\244\226\350\247\200_hu16608240604749321088.JPG" create mode 100644 "article/\346\226\260\347\253\271\351\207\221\345\261\261\350\241\227\346\226\260\346\211\213\346\235\221\351\232\250\346\211\213\350\250\230/img/\346\226\260\347\253\271\345\260\217\351\243\233\350\261\254-Flypig-\345\272\227\351\235\242\345\244\226\350\247\200_hu6026348076854366334.JPG" create mode 100644 "article/\346\226\260\347\253\271\351\207\221\345\261\261\350\241\227\346\226\260\346\211\213\346\235\221\351\232\250\346\211\213\350\250\230/img/\346\226\260\347\253\271\345\260\217\351\243\233\350\261\254-Flypig-\345\272\227\351\235\242\346\213\233\347\211\214.JPG" create mode 100644 "article/\346\226\260\347\253\271\351\207\221\345\261\261\350\241\227\346\226\260\346\211\213\346\235\221\351\232\250\346\211\213\350\250\230/img/\346\226\260\347\253\271\345\260\217\351\243\233\350\261\254-Flypig-\345\272\227\351\235\242\346\213\233\347\211\214_hu3301362582382983279.JPG" create mode 100644 "article/\346\226\260\347\253\271\351\207\221\345\261\261\350\241\227\346\226\260\346\211\213\346\235\221\351\232\250\346\211\213\350\250\230/img/\346\226\260\347\253\271\345\260\217\351\243\233\350\261\254-Flypig-\345\272\227\351\235\242\346\213\233\347\211\214_hu6705408677086367230.JPG" create mode 100644 "article/\346\226\260\347\253\271\351\207\221\345\261\261\350\241\227\346\226\260\346\211\213\346\235\221\351\232\250\346\211\213\350\250\230/index.html" create mode 100644 scss/style.min.01d3af0852fd7015d26885dfdc34ab0a13e4f53466a847df46f5df8b8c3fa27a.css create mode 100644 scss/style.min.05e68e3e4d6ec508993ce20a84fa24fc4d88466b321291d24b3afe5c40ec9604.css create mode 100644 scss/style.min.1bcbd90eb62f0b65a49b973b7d9ef1a5d7ebbd935edc6fff258c07cd8beef293.css create mode 100644 scss/style.min.65bd74d36b6b754aed29e0180f4801991de717c3bd7300088e053ed30e8d11e5.css create mode 100644 scss/style.min.6f67149696528969fa4770d1256c35d1ea3df2b785850a6cf5437755b584db53.css create mode 100644 scss/style.min.7ffaf41b9e193e58dc54ec81e998e03ff677eda71c08181abf5df2010f969c05.css create mode 100644 scss/style.min.8339095b182485ed09b77272071e808032292516a8d068206a477a38a850094e.css create mode 100644 scss/style.min.d0ae89ab8ae9da728fcae8cb3ad00b279033b8d5a82aca4e8228c01903e4bdf7.css create mode 100644 scss/style.min.d21ad7d4113a0172fb14edaff8aa0ba056e5fc6e8b5f50149e0fb9c2f1b38903.css create mode 100644 scss/style.min.e8603dcfdd23f4acfa64b58568ed8f4e5704344676ef05a72e81c2534375afec.css diff --git a/404.html b/404.html index b9b8c3a7..e38c8d8d 100644 --- a/404.html +++ b/404.html @@ -1,5 +1,5 @@ 404 Page not found -

哦不!404 錯誤 ⚠️

您來到了不存在的空間,向筆者回報錯誤

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git a/archives/index.html b/archives/index.html index 0fb1ee1b..d6d3d01b 100644 --- a/archives/index.html +++ b/archives/index.html @@ -1,10 +1,10 @@ 所有文章 -

Categories

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git a/article/2024-09-19-.zh/index.html b/article/2024-09-19-.zh/index.html index 8bdf819e..8b0e6b35 100644 --- a/article/2024-09-19-.zh/index.html +++ b/article/2024-09-19-.zh/index.html @@ -1,19 +1,19 @@ - + Python-WordCloud 文字雲視覺化應用 新聞關鍵字分析 - - + + - + - + @@ -35,9 +35,7 @@
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file diff --git a/categories/blog/index.html b/categories/blog/index.html index 41a61488..ff00d2c8 100644 --- a/categories/blog/index.html +++ b/categories/blog/index.html @@ -1,5 +1,5 @@ Category: 部落格 - Wang's Blog -

Categories

總共 0 篇文章

部落格

紀錄部署-Hugo部落格的搭建過程&踩坑。

Categories

總共 0 篇文章

部落格

紀錄部署-Hugo部落格的搭建過程&踩坑。

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git a/categories/index.html b/categories/index.html index 52a13c8a..877474b8 100644 --- a/categories/index.html +++ b/categories/index.html @@ -1,5 +1,5 @@ Categories -

段落

總共 8 篇文章

Categories

段落

總共 8 篇文章

Categories

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git a/categories/index.xml b/categories/index.xml index 9e9f932e..8e9046fd 100644 --- a/categories/index.xml +++ b/categories/index.xml @@ -1 +1 @@ -Categories on Wang's Bloghttps://wastu01.github.io/categories/Recent content in Categories on Wang's BlogHugo -- gohugo.iozh-tw版權 WangSun, 12 Nov 2023 03:33:42 +0800網頁https://wastu01.github.io/categories/%E7%B6%B2%E9%A0%81/Tue, 07 Nov 2023 08:04:28 +0800https://wastu01.github.io/categories/%E7%B6%B2%E9%A0%81/<img src="https://wastu01.github.io/categories/%E7%B6%B2%E9%A0%81/%E7%B6%B2%E9%A0%81-%E7%95%A5%E7%B8%AE%E5%9C%96.jpg" alt="Featured image of post 網頁" />咖啡廳https://wastu01.github.io/categories/%E5%92%96%E5%95%A1%E5%BB%B3/Sat, 21 Oct 2023 15:53:06 +0800https://wastu01.github.io/categories/%E5%92%96%E5%95%A1%E5%BB%B3/<img src="https://wastu01.github.io/categories/%E5%92%96%E5%95%A1%E5%BB%B3/coffee-restaurant.jpg" alt="Featured image of post 咖啡廳" /><p>偏好咖啡:卡布奇諾</p>步道https://wastu01.github.io/categories/%E6%AD%A5%E9%81%93/Fri, 06 Oct 2023 00:00:00 +0000https://wastu01.github.io/categories/%E6%AD%A5%E9%81%93/<img src="https://wastu01.github.io/categories/%E6%AD%A5%E9%81%93/Hiking-trails.png" alt="Featured image of post 步道" /><p>走起!健走步道</p>AIGChttps://wastu01.github.io/categories/aigc/Mon, 01 Jan 0001 00:00:00 +0000https://wastu01.github.io/categories/aigc/<img src="https://wastu01.github.io/categories/aigc/AIGC.jpg" alt="Featured image of post AIGC" />Javascripthttps://wastu01.github.io/categories/javascript/Mon, 01 Jan 0001 00:00:00 +0000https://wastu01.github.io/categories/javascript/<img src="https://wastu01.github.io/categories/javascript/JavaScript-logo.png" alt="Featured image of post Javascript" />Pythonhttps://wastu01.github.io/categories/python/Mon, 01 Jan 0001 00:00:00 +0000https://wastu01.github.io/categories/python/<img src="https://wastu01.github.io/categories/python/Python-%E7%95%A5%E7%B8%AE%E5%9C%96.jpg" alt="Featured image of post Python" />Youtubehttps://wastu01.github.io/categories/youtube/Mon, 01 Jan 0001 00:00:00 +0000https://wastu01.github.io/categories/youtube/<img src="https://wastu01.github.io/categories/youtube/Youtube%E5%BD%B1%E9%9F%B3-%E7%95%A5%E7%B8%AE%E5%9C%96.jpg" alt="Featured image of post Youtube" />部落格https://wastu01.github.io/categories/blog/Mon, 01 Jan 0001 00:00:00 +0000https://wastu01.github.io/categories/blog/ \ No newline at end of file +Categories on Wang's Bloghttps://wastu01.github.io/categories/Recent content in Categories on Wang's BlogHugo -- gohugo.iozh-tw版權 WangSun, 29 Sep 2024 19:00:00 +0800網頁https://wastu01.github.io/categories/%E7%B6%B2%E9%A0%81/Tue, 07 Nov 2023 08:04:28 +0800https://wastu01.github.io/categories/%E7%B6%B2%E9%A0%81/<img src="https://wastu01.github.io/categories/%E7%B6%B2%E9%A0%81/%E7%B6%B2%E9%A0%81-%E7%95%A5%E7%B8%AE%E5%9C%96.jpg" alt="Featured image of post 網頁" />咖啡廳https://wastu01.github.io/categories/%E5%92%96%E5%95%A1%E5%BB%B3/Sat, 21 Oct 2023 15:53:06 +0800https://wastu01.github.io/categories/%E5%92%96%E5%95%A1%E5%BB%B3/<img src="https://wastu01.github.io/categories/%E5%92%96%E5%95%A1%E5%BB%B3/coffee-restaurant.jpg" alt="Featured image of post 咖啡廳" /><p>偏好咖啡:卡布奇諾</p>步道https://wastu01.github.io/categories/%E6%AD%A5%E9%81%93/Fri, 06 Oct 2023 00:00:00 +0000https://wastu01.github.io/categories/%E6%AD%A5%E9%81%93/<img src="https://wastu01.github.io/categories/%E6%AD%A5%E9%81%93/Hiking-trails.png" alt="Featured image of post 步道" /><p>走起!健走步道</p>AIGChttps://wastu01.github.io/categories/aigc/Mon, 01 Jan 0001 00:00:00 +0000https://wastu01.github.io/categories/aigc/<img src="https://wastu01.github.io/categories/aigc/AIGC.jpg" alt="Featured image of post AIGC" />Javascripthttps://wastu01.github.io/categories/javascript/Mon, 01 Jan 0001 00:00:00 +0000https://wastu01.github.io/categories/javascript/<img src="https://wastu01.github.io/categories/javascript/JavaScript-logo.png" alt="Featured image of post Javascript" />Pythonhttps://wastu01.github.io/categories/python/Mon, 01 Jan 0001 00:00:00 +0000https://wastu01.github.io/categories/python/<img src="https://wastu01.github.io/categories/python/Python-%E7%95%A5%E7%B8%AE%E5%9C%96.jpg" alt="Featured image of post Python" />Youtubehttps://wastu01.github.io/categories/youtube/Mon, 01 Jan 0001 00:00:00 +0000https://wastu01.github.io/categories/youtube/<img src="https://wastu01.github.io/categories/youtube/Youtube%E5%BD%B1%E9%9F%B3-%E7%95%A5%E7%B8%AE%E5%9C%96.jpg" alt="Featured image of post Youtube" />部落格https://wastu01.github.io/categories/blog/Mon, 01 Jan 0001 00:00:00 +0000https://wastu01.github.io/categories/blog/ \ No newline at end of file diff --git a/categories/javascript/index.html b/categories/javascript/index.html index e8555537..2f74988c 100644 --- a/categories/javascript/index.html +++ b/categories/javascript/index.html @@ -1,5 +1,5 @@ Category: Javascript - Wang's Blog -

Categories

總共 0 篇文章

Javascript

學習如何使用 Javascript 在網頁進行簡單應用

Categories

總共 0 篇文章

Javascript

學習如何使用 Javascript 在網頁進行簡單應用

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git a/categories/page/2/index.html b/categories/page/2/index.html index 58105258..561dbf2d 100644 --- a/categories/page/2/index.html +++ b/categories/page/2/index.html @@ -6,7 +6,7 @@ - + @@ -33,9 +33,7 @@

Categories

總共 2 篇文章

Python

學習如何使用 Python 進行生活應用

Categories

總共 3 篇文章

Python

學習如何使用 Python 進行生活應用

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git a/categories/python/index.xml b/categories/python/index.xml index 3cca9277..88557479 100644 --- a/categories/python/index.xml +++ b/categories/python/index.xml @@ -1,4 +1,49 @@ -Python on Wang's Bloghttps://wastu01.github.io/categories/python/Recent content in Python on Wang's BlogHugo -- gohugo.iozh-tw版權 WangTesseract 使用 安裝 訓練https://wastu01.github.io/article/python-tesseract-ocr/Fri, 27 Oct 2023 10:37:31 +0800https://wastu01.github.io/article/python-tesseract-ocr/<img src="https://i.imgur.com/ORSlEI8.png" alt="Featured image of post Tesseract 使用 安裝 訓練" /><p><kbd>python</kbd> <kbd>tessract</kbd> <kbd>ocr</kbd> <kbd>辨識文字</kbd></p> +Python on Wang's Bloghttps://wastu01.github.io/categories/python/Recent content in Python on Wang's BlogHugo -- gohugo.iozh-tw版權 WangPython-WordCloud 文字雲視覺化應用 新聞關鍵字分析https://wastu01.github.io/article/python-wordcloud-word/Sun, 29 Sep 2024 19:00:00 +0800https://wastu01.github.io/article/python-wordcloud-word/<img src="https://picsum.photos/800/600.webp?random=60742c9d" alt="Featured image of post Python-WordCloud 文字雲視覺化應用 新聞關鍵字分析" /><p><kbd>小註記</kbd> + <mark>重點!</mark></p> +<p>此篇為之前人工智慧課程發想的 Python 應用專題,因最近於職訓課程再次接觸 Python Pandas, Numpy,比較深入了解如何將文字、圖片數據做處理跟轉換,搭配大型語言模型輔助開發,將專案重新 Review &amp; Rewrite。</p> +<p>1.Pandas 資料處理排序</p> +<p>2.Numpy 讀取圖片遮罩</p> +<p>3.新增自定義圖片遮罩</p> +<p>4.使用中研院的斷詞模型</p> +<p><strong>理想目標:擴大文本搜尋範圍,改善斷詞結果,在網頁前端直接生成文字雲,方便分享至社群平台。</strong></p> +<p>輸出結果:</p> +<p><img src="https://wastu01.github.io/img/%e7%96%ab%e6%83%85%e6%96%b0%e8%81%9e%e9%97%9c%e9%8d%b5%e5%ad%97%e6%96%87%e5%ad%97%e9%9b%b2.png" +loading="lazy" +alt="疫情關鍵字文字雲" +></p> +<p><img src="https://wastu01.github.io/img/%e6%9f%af%e6%96%87%e5%93%b2%e6%96%b0%e8%81%9e%e9%97%9c%e9%8d%b5%e5%ad%97%e6%96%87%e5%ad%97%e9%9b%b2.png" +loading="lazy" +alt="柯文哲關鍵字文字雲" +></p> +<p>中文文字斷詞模型初期筆者採用 Jieba 簡體中文為主開發的模型,現在改用中研院開源的中文斷詞模型:</p> +<ul> +<li><a class="link" href="https://pypi.org/project/jieba/" target="_blank" rel="noopener" +>jieba</a></li> +<li></li> +</ul> +<h2 id="匯入模組">匯入模組 +</h2><div class="highlight"><div class="chroma"> +<table class="lntable"><tr><td class="lntd"> +<pre tabindex="0" class="chroma"><code><span class="lnt">1 +</span><span class="lnt">2 +</span><span class="lnt">3 +</span><span class="lnt">4 +</span><span class="lnt">5 +</span><span class="lnt">6 +</span><span class="lnt">7 +</span></code></pre></td> +<td class="lntd"> +<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">pandas</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">GoogleNews</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">matplotlib</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">Pillow</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">numpy</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">scipy</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">wordcloud</span> +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="參考資料">參考資料 +</h2><h2 id="專案程式碼">專案程式碼 +</h2>Tesseract 使用 安裝 訓練https://wastu01.github.io/article/python-tesseract-ocr/Fri, 27 Oct 2023 10:37:31 +0800https://wastu01.github.io/article/python-tesseract-ocr/<img src="https://i.imgur.com/ORSlEI8.png" alt="Featured image of post Tesseract 使用 安裝 訓練" /><p><kbd>python</kbd> <kbd>tessract</kbd> <kbd>ocr</kbd> <kbd>辨識文字</kbd></p> <h1 id="tesseract-使用安裝訓練">Tesseract 使用&安裝&訓練 </h1><h2 id="簡單驗證碼去噪-灰度二值化">簡單驗證碼去噪 灰度二值化 </h2><p>無意間找到網址是固定的 教育部某平台之簡易驗證碼</p> diff --git a/categories/youtube/index.html b/categories/youtube/index.html index 6d2f291e..86e68ccb 100644 --- a/categories/youtube/index.html +++ b/categories/youtube/index.html @@ -1,5 +1,5 @@ Category: Youtube - Wang's Blog -

Categories

總共 1 篇文章

Youtube

多媒體影音創作區域

Categories

總共 1 篇文章

Youtube

多媒體影音創作區域

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git "a/categories/\345\222\226\345\225\241\345\273\263/index.html" "b/categories/\345\222\226\345\225\241\345\273\263/index.html" index b1478ac6..2246f8ae 100644 --- "a/categories/\345\222\226\345\225\241\345\273\263/index.html" +++ "b/categories/\345\222\226\345\225\241\345\273\263/index.html" @@ -1,5 +1,5 @@ Category: 咖啡廳 - Wang's Blog -

Categories

總共 1 篇文章

咖啡廳

紀錄曾經去過的咖啡廳,主要以新竹為主。

Categories

總共 1 篇文章

咖啡廳

紀錄曾經去過的咖啡廳,主要以新竹為主。

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git "a/categories/\346\255\245\351\201\223/index.html" "b/categories/\346\255\245\351\201\223/index.html" index 98faad1c..da903ce2 100644 --- "a/categories/\346\255\245\351\201\223/index.html" +++ "b/categories/\346\255\245\351\201\223/index.html" @@ -1,5 +1,5 @@ Category: 步道 - Wang's Blog -

Categories

總共 1 篇文章

步道

紀錄曾經旅行過的健走步道

Categories

總共 1 篇文章

步道

紀錄曾經旅行過的健走步道

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git "a/categories/\347\266\262\351\240\201/index.html" "b/categories/\347\266\262\351\240\201/index.html" index e7cf59c9..73c2cc60 100644 --- "a/categories/\347\266\262\351\240\201/index.html" +++ "b/categories/\347\266\262\351\240\201/index.html" @@ -1,5 +1,5 @@ Category: 網頁 - Wang's Blog -

Categories

總共 2 篇文章

網頁

有關於網頁製作的學習筆記

Categories

總共 2 篇文章

網頁

有關於網頁製作的學習筆記

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git "a/categories/\351\201\212\346\210\262/index.html" "b/categories/\351\201\212\346\210\262/index.html" index c2e9e7b0..f234fe14 100644 --- "a/categories/\351\201\212\346\210\262/index.html" +++ "b/categories/\351\201\212\346\210\262/index.html" @@ -6,7 +6,7 @@ - + @@ -33,9 +33,7 @@

👋 +DALLE

👋 Welcome To Wang.01 -Blog

Featured image of post OpenAI ChatGPT 客製化聊天機器人 GPTs

OpenAI ChatGPT 客製化聊天機器人 GPTs

OpenAI 新功能 GPTs,允許用戶客製化 GPT 模型,此篇蒐集網路上製作好的各種主題 GPTs。

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git a/index.xml b/index.xml index b90dac84..f4654fbd 100644 --- a/index.xml +++ b/index.xml @@ -1,4 +1,275 @@ -Wang's Bloghttps://wastu01.github.io/Recent content on Wang's BlogHugo -- gohugo.iozh-tw版權 WangOpenAI ChatGPT 客製化聊天機器人 GPTshttps://wastu01.github.io/article/openai-custom-gpts-collection/Sun, 12 Nov 2023 03:33:42 +0800https://wastu01.github.io/article/openai-custom-gpts-collection/<img src="https://wastu01.github.io/article/openai-custom-gpts-collection/custome-chatgpt-gpts.png" alt="Featured image of post OpenAI ChatGPT 客製化聊天機器人 GPTs" /><p><kbd>openai</kbd> + <kbd>chatgpt</kbd> + <kbd>gpts</kbd></p> +Wang's Bloghttps://wastu01.github.io/Recent content on Wang's BlogHugo -- gohugo.iozh-tw版權 WangPython-WordCloud 文字雲視覺化應用 新聞關鍵字分析https://wastu01.github.io/article/python-wordcloud-word/Sun, 29 Sep 2024 19:00:00 +0800https://wastu01.github.io/article/python-wordcloud-word/<img src="https://picsum.photos/800/600.webp?random=60742c9d" alt="Featured image of post Python-WordCloud 文字雲視覺化應用 新聞關鍵字分析" /><p><kbd>小註記</kbd> + <mark>重點!</mark></p> +<p>此篇為之前人工智慧課程發想的 Python 應用專題,因最近於職訓課程再次接觸 Python Pandas, Numpy,比較深入了解如何將文字、圖片數據做處理跟轉換,搭配大型語言模型輔助開發,將專案重新 Review &amp; Rewrite。</p> +<p>1.Pandas 資料處理排序</p> +<p>2.Numpy 讀取圖片遮罩</p> +<p>3.新增自定義圖片遮罩</p> +<p>4.使用中研院的斷詞模型</p> +<p><strong>理想目標:擴大文本搜尋範圍,改善斷詞結果,在網頁前端直接生成文字雲,方便分享至社群平台。</strong></p> +<p>輸出結果:</p> +<p><img src="https://wastu01.github.io/img/%e7%96%ab%e6%83%85%e6%96%b0%e8%81%9e%e9%97%9c%e9%8d%b5%e5%ad%97%e6%96%87%e5%ad%97%e9%9b%b2.png" +loading="lazy" +alt="疫情關鍵字文字雲" +></p> +<p><img src="https://wastu01.github.io/img/%e6%9f%af%e6%96%87%e5%93%b2%e6%96%b0%e8%81%9e%e9%97%9c%e9%8d%b5%e5%ad%97%e6%96%87%e5%ad%97%e9%9b%b2.png" +loading="lazy" +alt="柯文哲關鍵字文字雲" +></p> +<p>中文文字斷詞模型初期筆者採用 Jieba 簡體中文為主開發的模型,現在改用中研院開源的中文斷詞模型:</p> +<ul> +<li><a class="link" href="https://pypi.org/project/jieba/" target="_blank" rel="noopener" +>jieba</a></li> +<li></li> +</ul> +<h2 id="匯入模組">匯入模組 +</h2><div class="highlight"><div class="chroma"> +<table class="lntable"><tr><td class="lntd"> +<pre tabindex="0" class="chroma"><code><span class="lnt">1 +</span><span class="lnt">2 +</span><span class="lnt">3 +</span><span class="lnt">4 +</span><span class="lnt">5 +</span><span class="lnt">6 +</span><span class="lnt">7 +</span></code></pre></td> +<td class="lntd"> +<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">pandas</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">GoogleNews</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">matplotlib</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">Pillow</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">numpy</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">scipy</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">wordcloud</span> +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="參考資料">參考資料 +</h2><h2 id="專案程式碼">專案程式碼 +</h2>新竹金山街新手村隨手記https://wastu01.github.io/article/%E6%96%B0%E7%AB%B9%E9%87%91%E5%B1%B1%E8%A1%97%E6%96%B0%E6%89%8B%E6%9D%91%E9%9A%A8%E6%89%8B%E8%A8%98/Fri, 24 Nov 2023 15:25:17 +0800https://wastu01.github.io/article/%E6%96%B0%E7%AB%B9%E9%87%91%E5%B1%B1%E8%A1%97%E6%96%B0%E6%89%8B%E6%9D%91%E9%9A%A8%E6%89%8B%E8%A8%98/<img src="https://wastu01.github.io/article/%E6%96%B0%E7%AB%B9%E9%87%91%E5%B1%B1%E8%A1%97%E6%96%B0%E6%89%8B%E6%9D%91%E9%9A%A8%E6%89%8B%E8%A8%98/Jingshan-street-map.png" alt="Featured image of post 新竹金山街新手村隨手記" /><p>金山街,坐落於新竹科學園區的旁邊,這條街道因其獨特的地理位置和特殊的客群,被稱為「新手村」。在這裡,餐廳輪轉率相當高,幾乎一個月就會有新店家,也許是因爲店面租金以及假日沒什麼人產生的特殊現象。</p> +<p>金山街便利商店地圖:</p> +<iframe src="https://www.google.com/maps/d/embed?mid=1nlZt3bds_JSx-qaaXqhFSF2JXxc&hl=zh_TW&ehbc=2E312F" width="640" height="480"></iframe> +<p>底下紀錄一些筆者覺得有趣/值得紀錄的店家</p> +<h2 id="金山一街">金山一街 +</h2><p><a class="link" href="https://maps.app.goo.gl/BFUiJ8y7EXMz2taUA" target="_blank" rel="noopener" +>金山一街 Google Map</a></p> +<h3 id="決鬥學院卡片專賣店">決鬥學院卡片專賣店 +</h3><p><a class="link" href="https://maps.app.goo.gl/FgDFd2H7YF1T9G7s6" target="_blank" rel="noopener" +>https://maps.app.goo.gl/FgDFd2H7YF1T9G7s6</a></p> +<h2 id="金山二街">金山二街 +</h2><p><a class="link" href="https://maps.app.goo.gl/RUz5XBcgXkfVfKYEA" target="_blank" rel="noopener" +>金山二街 Google Map</a></p> +<h2 id="金山三街">金山三街 +</h2><p><a class="link" href="https://maps.app.goo.gl/W2dXtxDyfQh9mtzr7" target="_blank" rel="noopener" +>金山三街 Google Map</a></p> +<h3 id="新竹小飛豬空拍機">新竹小飛豬空拍機 +</h3><p>只有路過尚未進門參觀,店門口小小的招牌</p> +<p><img src="https://wastu01.github.io/article/%E6%96%B0%E7%AB%B9%E9%87%91%E5%B1%B1%E8%A1%97%E6%96%B0%E6%89%8B%E6%9D%91%E9%9A%A8%E6%89%8B%E8%A8%98/img/%E6%96%B0%E7%AB%B9%E5%B0%8F%E9%A3%9B%E8%B1%AC-Flypig-%E5%BA%97%E9%9D%A2%E5%A4%96%E8%A7%80.JPG" +width="3024" +height="3494" +srcset="https://wastu01.github.io/article/%E6%96%B0%E7%AB%B9%E9%87%91%E5%B1%B1%E8%A1%97%E6%96%B0%E6%89%8B%E6%9D%91%E9%9A%A8%E6%89%8B%E8%A8%98/img/%E6%96%B0%E7%AB%B9%E5%B0%8F%E9%A3%9B%E8%B1%AC-Flypig-%E5%BA%97%E9%9D%A2%E5%A4%96%E8%A7%80_hu16608240604749321088.JPG 480w, https://wastu01.github.io/article/%E6%96%B0%E7%AB%B9%E9%87%91%E5%B1%B1%E8%A1%97%E6%96%B0%E6%89%8B%E6%9D%91%E9%9A%A8%E6%89%8B%E8%A8%98/img/%E6%96%B0%E7%AB%B9%E5%B0%8F%E9%A3%9B%E8%B1%AC-Flypig-%E5%BA%97%E9%9D%A2%E5%A4%96%E8%A7%80_hu6026348076854366334.JPG 1024w" +loading="lazy" +alt="新竹小飛豬店面外觀" +class="gallery-image" +data-flex-grow="86" +data-flex-basis="207px" +></p> +<p><img src="https://wastu01.github.io/article/%E6%96%B0%E7%AB%B9%E9%87%91%E5%B1%B1%E8%A1%97%E6%96%B0%E6%89%8B%E6%9D%91%E9%9A%A8%E6%89%8B%E8%A8%98/img/%E6%96%B0%E7%AB%B9%E5%B0%8F%E9%A3%9B%E8%B1%AC-Flypig-%E5%BA%97%E9%9D%A2%E6%8B%9B%E7%89%8C.JPG" +width="3002" +height="2612" +srcset="https://wastu01.github.io/article/%E6%96%B0%E7%AB%B9%E9%87%91%E5%B1%B1%E8%A1%97%E6%96%B0%E6%89%8B%E6%9D%91%E9%9A%A8%E6%89%8B%E8%A8%98/img/%E6%96%B0%E7%AB%B9%E5%B0%8F%E9%A3%9B%E8%B1%AC-Flypig-%E5%BA%97%E9%9D%A2%E6%8B%9B%E7%89%8C_hu6705408677086367230.JPG 480w, https://wastu01.github.io/article/%E6%96%B0%E7%AB%B9%E9%87%91%E5%B1%B1%E8%A1%97%E6%96%B0%E6%89%8B%E6%9D%91%E9%9A%A8%E6%89%8B%E8%A8%98/img/%E6%96%B0%E7%AB%B9%E5%B0%8F%E9%A3%9B%E8%B1%AC-Flypig-%E5%BA%97%E9%9D%A2%E6%8B%9B%E7%89%8C_hu3301362582382983279.JPG 1024w" +loading="lazy" +alt="新竹小飛豬Logo招牌" +class="gallery-image" +data-flex-grow="114" +data-flex-basis="275px" +></p> +<p>網站:<a class="link" href="https://flypig.cyberbiz.co/" target="_blank" rel="noopener" +>https://flypig.cyberbiz.co/</a></p> +<p>位置:<a class="link" href="https://maps.app.goo.gl/GgtsDE3CQmLVRnDr5" target="_blank" rel="noopener" +>新竹市東區金山三街6號</a></p> +<h2 id="金山五街">金山五街 +</h2><p><a class="link" href="https://maps.app.goo.gl/X1mYyzinDNdFs7y69" target="_blank" rel="noopener" +>金山五街 Google Map</a></p> +<h3 id="book11-寵物友善餐廳已歇業">book11 寵物友善餐廳(已歇業) +</h3><p>位置不在主街,跟著老弟好奇進去 +結果看了菜單:手邊的錢只夠喝一杯菊花茶 +根據評論所述,目前並無營業。</p> +<h3 id="玩具人生">玩具人生 +</h3><p>似乎是賣一番賞的店家,尚未進去參觀</p> +<p>位置:<a class="link" href="https://maps.app.goo.gl/gKSiZdH1BGRkn17KA" target="_blank" rel="noopener" +>新竹市東區金山五街12號</a></p> +<h2 id="金山六街">金山六街 +</h2><p><a class="link" href="https://maps.app.goo.gl/sTddo7qJDCV1JPou7" target="_blank" rel="noopener" +>金山六街 Google Map</a></p> +<h3 id="小鮮肉湯包">小鮮肉湯包 +</h3><p>販賣湯包、蒸餃,傳統台式料理</p> +<p>自己付錢找錢,青菜種類多元:A菜 地瓜葉 胡瓜&hellip;</p> +<p>推薦餐點:蕃茄蛋花湯</p> +<p>位置:<a class="link" href="https://maps.app.goo.gl/UhDSibFwMvz7DatL8" target="_blank" rel="noopener" +>新竹市東區金山六街28號</a></p> +<h3 id="福榮麵坊">福榮麵坊 +</h3><p>清大退休教授經營的店面</p> +<p>以前位置在金山另外一條街</p> +<p>提供工作機會給需要幫助的孩子</p> +<p>餐點沒有說到特別好吃</p> +<p>但環境乾淨,下午兩點過後還沒吃午餐的選項之一</p> +<p>位置:<a class="link" href="https://maps.app.goo.gl/Vi8neZk1hCnBndXFA" target="_blank" rel="noopener" +>新竹市東區金山六街48號</a></p> +<h2 id="金山七街">金山七街 +</h2><p><a class="link" href="https://maps.app.goo.gl/szFjxEZTsfehFFyq8" target="_blank" rel="noopener" +>金山七街 Google Map</a></p> +<p><code>北側:</code></p> +<h3 id="朵安可dorank-金山總店">朵安可DORANK-金山總店: +</h3><p>飲料滿特別的,推薦水果風味 +有到台中一級戰區展店</p> +<p>位置:<a class="link" href="https://maps.app.goo.gl/mkA2tFuCEdX5oDS16" target="_blank" rel="noopener" +>新竹市東區金山七街16號</a></p> +<!-- +### 廣閤燒肉火鍋: +位置:[新竹市東區金山七街12號](https://maps.app.goo.gl/g92TLvwQ6qviJk8aA) +前身是一家精緻燒烤料理 義燒肉 +--> +<h3 id="香港大來燒臘-金山二代店">香港大來燒臘-金山二代店: +</h3><p>販賣港式燒臘,總店位於南大路,初期用餐體驗還不錯,但配菜鮮少更換</p> +<p><a class="link" href="https://maps.app.goo.gl/1AQ3LAWiErJgEzdK6" target="_blank" rel="noopener" +>https://maps.app.goo.gl/1AQ3LAWiErJgEzdK6</a></p> +<p><code>南側:</code></p> +<h3 id="曉芳泰式">曉芳泰式: +</h3><p>稀有老店,綠咖喱是偏水的那種</p> +<p><a class="link" href="https://maps.app.goo.gl/MEB4t7eDbQA9M7hS7" target="_blank" rel="noopener" +>https://maps.app.goo.gl/MEB4t7eDbQA9M7hS7</a></p> +<h3 id="素食園">素食園: +</h3><p>提供單點以及自助餐形式、內用附湯,口味清淡</p> +<p>推薦餐點:藥膳麵線</p> +<p><a class="link" href="https://maps.app.goo.gl/j8Vs7J17zKcMfVUA9" target="_blank" rel="noopener" +>https://maps.app.goo.gl/j8Vs7J17zKcMfVUA9</a></p> +<h2 id="金山八街">金山八街 +</h2><h3 id="feed-burger-20-美式雜貨店">Feed Burger 2.0 美式雜貨店 +</h3><p><a class="link" href="https://maps.app.goo.gl/VqePoq5zkhchCgzi7" target="_blank" rel="noopener" +>Feed Burger 2.0 美式雜貨店</a></p> +<p>金山街特色餐廳,專賣美式漢堡</p> +<p>環境比原來 1.0 的店面好很多</p> +<p>人潮眾多時要等~~~等一下</p> +<p>點了花生醬碎堅果 &amp; 焦糖洋蔥 &amp; 牛魔丸</p> +<p>(漢堡皮/焦糖/漢堡肉/洋蔥/漢堡皮)</p> +<p>雖然忙中有錯 但肉煎的不錯吃</p> +<p>價格稍貴 但竹科人應該吃得起</p> +<p>歷史:前身為八街麵食館</p> +<h3 id="可不可熟成紅茶-新竹金山店">可不可熟成紅茶 新竹金山店 +</h3><p>(前身為 Bubble Tea 前前身為 日出茶太 ) +<a class="link" href="https://maps.app.goo.gl/tPtVnwg7dZ3V21XRA" target="_blank" rel="noopener" +>https://maps.app.goo.gl/tPtVnwg7dZ3V21XRA</a></p> +<!-- ### 派克脆皮雞排 竹科雞廠: +https://maps.app.goo.gl/hGxKntqCRu3iWDTv9 --> +<h3 id="蟬吃茶-天然茶飲-竹科店">蟬吃茶 天然茶飲-竹科店: +</h3><p>茶味十足,健康取向(類似曾經的水韻堂 <a class="link" href="https://ppt.cc/wJxO" target="_blank" rel="noopener" +>https://ppt.cc/wJxO</a> )</p> +<p>2024 合約到期即將結束營業,另外在台北吳興街有展店</p> +<p><a class="link" href="https://maps.app.goo.gl/xjK3Nf9jvRXNSmrMA" target="_blank" rel="noopener" +>https://maps.app.goo.gl/xjK3Nf9jvRXNSmrMA</a></p> +<h2 id="金山九街">金山九街 +</h2><p><a class="link" href="https://maps.app.goo.gl/HCQmNHvySwfPyBGe8" target="_blank" rel="noopener" +>金山九街 Google Map</a></p> +<p><code>北側:</code></p> +<h3 id="發發新竹金山牧場">發發新竹金山牧場 +</h3><p><a class="link" href="https://maps.app.goo.gl/Ck8nfW1jGiAh8p299" target="_blank" rel="noopener" +>發發 新竹金山牧場</a></p> +<p>官方網站:<a class="link" href="https://www.thefarfarfarm.com/" target="_blank" rel="noopener" +>發發牧場</a></p> +<p>2024/05/24 現在為一家以優格作為特色飲品的飲料店 發發牧場</p> +<p>有內用空間 可電子支付 +店員介紹詳細服務很好👍</p> +<p>裝潢風格飲料包裝適合打卡拍照 +價格偏貴 但竹科人應該可接受</p> +<p>歷史軌跡:</p> +<p>前身為圈圈微森</p> +<p>前前身是某家賣焗烤的</p> +<p>外面有鋼琴椅子可坐著等候</p> +<p><code>南側:</code></p> +<h3 id="滿嘴拉麵">滿嘴拉麵 +</h3><p>前身為大海拉麵(已搬去隔壁巷子轉角)</p> +<p>整體裝潢沒有變動,多了自助飲料區,品項多了醬油口味</p> +<h3 id="京冠美食館">京冠美食館 +</h3><p>專賣鴨肉,便宜大碗,內用座位很多</p> +<h3 id="糰糰-早餐店">糰糰 早餐店 +</h3><p>兩個女生經營的早餐店,有賣清粥瘦肉粥,紫米飯糰</p> +<p><a class="link" href="https://maps.app.goo.gl/GQPHKLtqhzvhEfoG7" target="_blank" rel="noopener" +>https://maps.app.goo.gl/GQPHKLtqhzvhEfoG7</a></p> +<h2 id="金山十街">金山十街 +</h2><h3 id="蒸餃無雙">蒸餃無雙 +</h3><p><a class="link" href="https://maps.app.goo.gl/Z4F92kNn9vE4yVzHA" target="_blank" rel="noopener" +>https://maps.app.goo.gl/Z4F92kNn9vE4yVzHA</a></p> +<p>便宜大碗</p> +<h3 id="敲好食">敲好食 +</h3><p><a class="link" href="https://maps.app.goo.gl/LumEc4GHQpkHUHrMA" target="_blank" rel="noopener" +>https://maps.app.goo.gl/LumEc4GHQpkHUHrMA</a></p> +<p>精緻料理,想象中此價格應該會配套餐</p> +<p>店門口有賣地瓜球</p> +<h3 id="大海拉麵">大海拉麵 +</h3><p>麵條可以選粗細</p> +<p>湯頭可以選濃淡</p> +<p>原本店家在隔壁巷子的滿嘴拉麵,後來搬到轉角處</p> +<p>(去過台中吃過拉麵,就覺得大海還好)</p> +<h3 id="粵萊叉燒舖">粵萊叉燒舖 +</h3><p>販售單人形式的叉燒,搭配美乃滋,份量適中,價格適中。</p> +<p>位置:<a class="link" href="https://maps.app.goo.gl/6g1Kt8sqnaHAfSYa9" target="_blank" rel="noopener" +>新竹市東區金山十街100號</a></p> +<h2 id="金山十一街">金山十一街 +</h2><p>異國料理街</p> +<p>此街道有大馬料理,韓式料理,泰式料理,文青料理,傳統台式</p> +<h3 id="金街傳統料理">金街傳統料理 +</h3><p>炒飯/湯品 都還不錯</p> +<p>七里川滾麵 很養生</p> +<p>價格適中,竹科人可接受</p> +<h3 id="daima-大馬南洋料理">Daima 大馬南洋料理 +</h3><p>較為道地的馬來西亞料理,販售肉骨茶、海南雞飯、娘惹糕</p> +<p>口味用料跟初期有差異,但還是挺道地的,五顆星推薦</p> +<p>位置:<a class="link" href="https://maps.app.goo.gl/6hFwQrbdGsFqprCP6" target="_blank" rel="noopener" +>新竹市東區金山十一街37號</a></p> +<h3 id="泰速泰式料理-竹科店">泰速泰式料理 竹科店 +</h3><p>相比其他異國街為新開的異國料理</p> +<p>口味偏台式,價格平價,推薦綠咖哩</p> +<h2 id="金山十二街">金山十二街 +</h2><h3 id="金城蘭州牛肉拉麵">金城蘭州牛肉拉麵 +</h3><p>年輕師傅手打現桿拉麵,麵體有嚼勁</p> +<p>淡淡的麵體味道,肉偏薄,份量小</p> +<p>新開的店家 多多支持</p> +<!-- ### 金山街中段 --> +<h2 id="金山十三街">金山十三街 +</h2><h3 id="德記川味精緻麵典">德記川味精緻麵典 +</h3><p>價格中上,餐點份量偏小 +推薦餐點:紹子皮蛋麵、牛肉麵、口水雞、小菜</p> +<h2 id="金山十五街">金山十五街 +</h2><h2 id="金山十六街">金山十六街 +</h2><h2 id="金山十七街">金山十七街 +</h2><h2 id="金山十八街">金山十八街 +</h2><h2 id="金山十九街">金山十九街 +</h2><h2 id="金山二十街">金山二十街 +</h2><h2 id="金山二十一街">金山二十一街 +</h2><h2 id="金山二十二街">金山二十二街 +</h2><h2 id="金山二十三街">金山二十三街 +</h2><h2 id="金山二十五街">金山二十五街 +</h2><h2 id="金山二十六街">金山二十六街 +</h2><h2 id="金山二十七街">金山二十七街 +</h2><h2 id="金山北一街">金山北一街 +</h2><h2 id="金山北二街">金山北二街 +</h2><h2 id="金山北三街">金山北三街 +</h2><h2 id="金山東一街">金山東一街 +</h2><h2 id="金山東二街">金山東二街 +</h2><h2 id="金山東三街">金山東三街 +</h2><h2 id="金山東街">金山東街 +</h2><h2 id="其他">其他 +</h2><p>用漫畫講述理科工程師領域知識的創作者: +<a class="link" href="https://www.facebook.com/JinShanSt?locale=zh_TW" target="_blank" rel="noopener" +>金山街文學社</a></p> +<p>在地提供藝術創作空間的店家: +<a class="link" href="https://www.facebook.com/1516artstudio/?locale=zh_TW" target="_blank" rel="noopener" +>一五一六才藝創作工作坊</a></p> +<p>金山街人文美食地圖: +<a class="link" href="https://www.1516artstudio.com/2022/10/blog-post.html?lr=1" target="_blank" rel="noopener" +>https://www.1516artstudio.com/2022/10/blog-post.html?lr=1</a></p> +<p>金山街籃球場空拍紀錄:</p> +<iframe width="100%" height="315" src="https://www.youtube.com/embed/ptQoigbotKQ?si=_XGHC2JykIEevbgc" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> +<iframe width="100%" height="315" src="https://www.youtube.com/embed/s4y7FbwjM5g?si=NPrxy3dyk2XWBWGb" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> +<p>有許多店家尚未記載,不定期更新~</p>OpenAI ChatGPT 客製化聊天機器人 GPTshttps://wastu01.github.io/article/openai-custom-gpts-collection/Sun, 12 Nov 2023 03:33:42 +0800https://wastu01.github.io/article/openai-custom-gpts-collection/<img src="https://wastu01.github.io/article/openai-custom-gpts-collection/custome-chatgpt-gpts.png" alt="Featured image of post OpenAI ChatGPT 客製化聊天機器人 GPTs" /><p><kbd>openai</kbd> + <kbd>chatgpt</kbd> + <kbd>gpts</kbd></p> <p><code>GPT = Good Personal Tool</code></p> <p>前情提要:</p> <p>OpenAI 最近推出了一項新功能 GPTs</p> diff --git a/page/2/index.html b/page/2/index.html index 4eb2fea9..433b6a8d 100644 --- a/page/2/index.html +++ b/page/2/index.html @@ -1,5 +1,5 @@ Wang's Blog -

👋 +DALLE

👋 Welcome To Wang.01 -Blog

Featured image of post 2023-10-06-新竹湖口後山祕境-茶香步道

2023-10-06-新竹湖口後山祕境-茶香步道

茶-空拍

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git a/page/index.html b/page/index.html index e7eac6b4..a8a960c2 100644 --- a/page/index.html +++ b/page/index.html @@ -1,5 +1,5 @@ Pages -

段落

總共 4 篇文章

Pages

段落

總共 4 篇文章

Pages

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git a/post/index.html b/post/index.html index 1e2e6523..979bfc3e 100644 --- a/post/index.html +++ b/post/index.html @@ -1,5 +1,5 @@ Posts -

段落

總共 11 篇文章

Posts

段落

總共 13 篇文章

Posts

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git a/post/index.xml b/post/index.xml index baf98bb5..cb18a473 100644 --- a/post/index.xml +++ b/post/index.xml @@ -1,4 +1,275 @@ -Posts on Wang's Bloghttps://wastu01.github.io/post/Recent content in Posts on Wang's BlogHugo -- gohugo.iozh-tw版權 WangThu, 19 Sep 2024 11:19:10 +0800OpenAI ChatGPT 客製化聊天機器人 GPTshttps://wastu01.github.io/article/openai-custom-gpts-collection/Sun, 12 Nov 2023 03:33:42 +0800https://wastu01.github.io/article/openai-custom-gpts-collection/<img src="https://wastu01.github.io/article/openai-custom-gpts-collection/custome-chatgpt-gpts.png" alt="Featured image of post OpenAI ChatGPT 客製化聊天機器人 GPTs" /><p><kbd>openai</kbd> + <kbd>chatgpt</kbd> + <kbd>gpts</kbd></p> +Posts on Wang's Bloghttps://wastu01.github.io/post/Recent content in Posts on Wang's BlogHugo -- gohugo.iozh-tw版權 WangTue, 01 Oct 2024 18:25:08 +0800Python-WordCloud 文字雲視覺化應用 新聞關鍵字分析https://wastu01.github.io/article/python-wordcloud-word/Sun, 29 Sep 2024 19:00:00 +0800https://wastu01.github.io/article/python-wordcloud-word/<img src="https://picsum.photos/800/600.webp?random=60742c9d" alt="Featured image of post Python-WordCloud 文字雲視覺化應用 新聞關鍵字分析" /><p><kbd>小註記</kbd> + <mark>重點!</mark></p> +<p>此篇為之前人工智慧課程發想的 Python 應用專題,因最近於職訓課程再次接觸 Python Pandas, Numpy,比較深入了解如何將文字、圖片數據做處理跟轉換,搭配大型語言模型輔助開發,將專案重新 Review &amp; Rewrite。</p> +<p>1.Pandas 資料處理排序</p> +<p>2.Numpy 讀取圖片遮罩</p> +<p>3.新增自定義圖片遮罩</p> +<p>4.使用中研院的斷詞模型</p> +<p><strong>理想目標:擴大文本搜尋範圍,改善斷詞結果,在網頁前端直接生成文字雲,方便分享至社群平台。</strong></p> +<p>輸出結果:</p> +<p><img src="https://wastu01.github.io/img/%e7%96%ab%e6%83%85%e6%96%b0%e8%81%9e%e9%97%9c%e9%8d%b5%e5%ad%97%e6%96%87%e5%ad%97%e9%9b%b2.png" +loading="lazy" +alt="疫情關鍵字文字雲" +></p> +<p><img src="https://wastu01.github.io/img/%e6%9f%af%e6%96%87%e5%93%b2%e6%96%b0%e8%81%9e%e9%97%9c%e9%8d%b5%e5%ad%97%e6%96%87%e5%ad%97%e9%9b%b2.png" +loading="lazy" +alt="柯文哲關鍵字文字雲" +></p> +<p>中文文字斷詞模型初期筆者採用 Jieba 簡體中文為主開發的模型,現在改用中研院開源的中文斷詞模型:</p> +<ul> +<li><a class="link" href="https://pypi.org/project/jieba/" target="_blank" rel="noopener" +>jieba</a></li> +<li></li> +</ul> +<h2 id="匯入模組">匯入模組 +</h2><div class="highlight"><div class="chroma"> +<table class="lntable"><tr><td class="lntd"> +<pre tabindex="0" class="chroma"><code><span class="lnt">1 +</span><span class="lnt">2 +</span><span class="lnt">3 +</span><span class="lnt">4 +</span><span class="lnt">5 +</span><span class="lnt">6 +</span><span class="lnt">7 +</span></code></pre></td> +<td class="lntd"> +<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">pandas</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">GoogleNews</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">matplotlib</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">Pillow</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">numpy</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">scipy</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">wordcloud</span> +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="參考資料">參考資料 +</h2><h2 id="專案程式碼">專案程式碼 +</h2>新竹金山街新手村隨手記https://wastu01.github.io/article/%E6%96%B0%E7%AB%B9%E9%87%91%E5%B1%B1%E8%A1%97%E6%96%B0%E6%89%8B%E6%9D%91%E9%9A%A8%E6%89%8B%E8%A8%98/Fri, 24 Nov 2023 15:25:17 +0800https://wastu01.github.io/article/%E6%96%B0%E7%AB%B9%E9%87%91%E5%B1%B1%E8%A1%97%E6%96%B0%E6%89%8B%E6%9D%91%E9%9A%A8%E6%89%8B%E8%A8%98/<img src="https://wastu01.github.io/article/%E6%96%B0%E7%AB%B9%E9%87%91%E5%B1%B1%E8%A1%97%E6%96%B0%E6%89%8B%E6%9D%91%E9%9A%A8%E6%89%8B%E8%A8%98/Jingshan-street-map.png" alt="Featured image of post 新竹金山街新手村隨手記" /><p>金山街,坐落於新竹科學園區的旁邊,這條街道因其獨特的地理位置和特殊的客群,被稱為「新手村」。在這裡,餐廳輪轉率相當高,幾乎一個月就會有新店家,也許是因爲店面租金以及假日沒什麼人產生的特殊現象。</p> +<p>金山街便利商店地圖:</p> +<iframe src="https://www.google.com/maps/d/embed?mid=1nlZt3bds_JSx-qaaXqhFSF2JXxc&hl=zh_TW&ehbc=2E312F" width="640" height="480"></iframe> +<p>底下紀錄一些筆者覺得有趣/值得紀錄的店家</p> +<h2 id="金山一街">金山一街 +</h2><p><a class="link" href="https://maps.app.goo.gl/BFUiJ8y7EXMz2taUA" target="_blank" rel="noopener" +>金山一街 Google Map</a></p> +<h3 id="決鬥學院卡片專賣店">決鬥學院卡片專賣店 +</h3><p><a class="link" href="https://maps.app.goo.gl/FgDFd2H7YF1T9G7s6" target="_blank" rel="noopener" +>https://maps.app.goo.gl/FgDFd2H7YF1T9G7s6</a></p> +<h2 id="金山二街">金山二街 +</h2><p><a class="link" href="https://maps.app.goo.gl/RUz5XBcgXkfVfKYEA" target="_blank" rel="noopener" +>金山二街 Google Map</a></p> +<h2 id="金山三街">金山三街 +</h2><p><a class="link" href="https://maps.app.goo.gl/W2dXtxDyfQh9mtzr7" target="_blank" rel="noopener" +>金山三街 Google Map</a></p> +<h3 id="新竹小飛豬空拍機">新竹小飛豬空拍機 +</h3><p>只有路過尚未進門參觀,店門口小小的招牌</p> +<p><img src="https://wastu01.github.io/article/%E6%96%B0%E7%AB%B9%E9%87%91%E5%B1%B1%E8%A1%97%E6%96%B0%E6%89%8B%E6%9D%91%E9%9A%A8%E6%89%8B%E8%A8%98/img/%E6%96%B0%E7%AB%B9%E5%B0%8F%E9%A3%9B%E8%B1%AC-Flypig-%E5%BA%97%E9%9D%A2%E5%A4%96%E8%A7%80.JPG" +width="3024" +height="3494" +srcset="https://wastu01.github.io/article/%E6%96%B0%E7%AB%B9%E9%87%91%E5%B1%B1%E8%A1%97%E6%96%B0%E6%89%8B%E6%9D%91%E9%9A%A8%E6%89%8B%E8%A8%98/img/%E6%96%B0%E7%AB%B9%E5%B0%8F%E9%A3%9B%E8%B1%AC-Flypig-%E5%BA%97%E9%9D%A2%E5%A4%96%E8%A7%80_hu16608240604749321088.JPG 480w, https://wastu01.github.io/article/%E6%96%B0%E7%AB%B9%E9%87%91%E5%B1%B1%E8%A1%97%E6%96%B0%E6%89%8B%E6%9D%91%E9%9A%A8%E6%89%8B%E8%A8%98/img/%E6%96%B0%E7%AB%B9%E5%B0%8F%E9%A3%9B%E8%B1%AC-Flypig-%E5%BA%97%E9%9D%A2%E5%A4%96%E8%A7%80_hu6026348076854366334.JPG 1024w" +loading="lazy" +alt="新竹小飛豬店面外觀" +class="gallery-image" +data-flex-grow="86" +data-flex-basis="207px" +></p> +<p><img src="https://wastu01.github.io/article/%E6%96%B0%E7%AB%B9%E9%87%91%E5%B1%B1%E8%A1%97%E6%96%B0%E6%89%8B%E6%9D%91%E9%9A%A8%E6%89%8B%E8%A8%98/img/%E6%96%B0%E7%AB%B9%E5%B0%8F%E9%A3%9B%E8%B1%AC-Flypig-%E5%BA%97%E9%9D%A2%E6%8B%9B%E7%89%8C.JPG" +width="3002" +height="2612" +srcset="https://wastu01.github.io/article/%E6%96%B0%E7%AB%B9%E9%87%91%E5%B1%B1%E8%A1%97%E6%96%B0%E6%89%8B%E6%9D%91%E9%9A%A8%E6%89%8B%E8%A8%98/img/%E6%96%B0%E7%AB%B9%E5%B0%8F%E9%A3%9B%E8%B1%AC-Flypig-%E5%BA%97%E9%9D%A2%E6%8B%9B%E7%89%8C_hu6705408677086367230.JPG 480w, https://wastu01.github.io/article/%E6%96%B0%E7%AB%B9%E9%87%91%E5%B1%B1%E8%A1%97%E6%96%B0%E6%89%8B%E6%9D%91%E9%9A%A8%E6%89%8B%E8%A8%98/img/%E6%96%B0%E7%AB%B9%E5%B0%8F%E9%A3%9B%E8%B1%AC-Flypig-%E5%BA%97%E9%9D%A2%E6%8B%9B%E7%89%8C_hu3301362582382983279.JPG 1024w" +loading="lazy" +alt="新竹小飛豬Logo招牌" +class="gallery-image" +data-flex-grow="114" +data-flex-basis="275px" +></p> +<p>網站:<a class="link" href="https://flypig.cyberbiz.co/" target="_blank" rel="noopener" +>https://flypig.cyberbiz.co/</a></p> +<p>位置:<a class="link" href="https://maps.app.goo.gl/GgtsDE3CQmLVRnDr5" target="_blank" rel="noopener" +>新竹市東區金山三街6號</a></p> +<h2 id="金山五街">金山五街 +</h2><p><a class="link" href="https://maps.app.goo.gl/X1mYyzinDNdFs7y69" target="_blank" rel="noopener" +>金山五街 Google Map</a></p> +<h3 id="book11-寵物友善餐廳已歇業">book11 寵物友善餐廳(已歇業) +</h3><p>位置不在主街,跟著老弟好奇進去 +結果看了菜單:手邊的錢只夠喝一杯菊花茶 +根據評論所述,目前並無營業。</p> +<h3 id="玩具人生">玩具人生 +</h3><p>似乎是賣一番賞的店家,尚未進去參觀</p> +<p>位置:<a class="link" href="https://maps.app.goo.gl/gKSiZdH1BGRkn17KA" target="_blank" rel="noopener" +>新竹市東區金山五街12號</a></p> +<h2 id="金山六街">金山六街 +</h2><p><a class="link" href="https://maps.app.goo.gl/sTddo7qJDCV1JPou7" target="_blank" rel="noopener" +>金山六街 Google Map</a></p> +<h3 id="小鮮肉湯包">小鮮肉湯包 +</h3><p>販賣湯包、蒸餃,傳統台式料理</p> +<p>自己付錢找錢,青菜種類多元:A菜 地瓜葉 胡瓜&hellip;</p> +<p>推薦餐點:蕃茄蛋花湯</p> +<p>位置:<a class="link" href="https://maps.app.goo.gl/UhDSibFwMvz7DatL8" target="_blank" rel="noopener" +>新竹市東區金山六街28號</a></p> +<h3 id="福榮麵坊">福榮麵坊 +</h3><p>清大退休教授經營的店面</p> +<p>以前位置在金山另外一條街</p> +<p>提供工作機會給需要幫助的孩子</p> +<p>餐點沒有說到特別好吃</p> +<p>但環境乾淨,下午兩點過後還沒吃午餐的選項之一</p> +<p>位置:<a class="link" href="https://maps.app.goo.gl/Vi8neZk1hCnBndXFA" target="_blank" rel="noopener" +>新竹市東區金山六街48號</a></p> +<h2 id="金山七街">金山七街 +</h2><p><a class="link" href="https://maps.app.goo.gl/szFjxEZTsfehFFyq8" target="_blank" rel="noopener" +>金山七街 Google Map</a></p> +<p><code>北側:</code></p> +<h3 id="朵安可dorank-金山總店">朵安可DORANK-金山總店: +</h3><p>飲料滿特別的,推薦水果風味 +有到台中一級戰區展店</p> +<p>位置:<a class="link" href="https://maps.app.goo.gl/mkA2tFuCEdX5oDS16" target="_blank" rel="noopener" +>新竹市東區金山七街16號</a></p> +<!-- +### 廣閤燒肉火鍋: +位置:[新竹市東區金山七街12號](https://maps.app.goo.gl/g92TLvwQ6qviJk8aA) +前身是一家精緻燒烤料理 義燒肉 +--> +<h3 id="香港大來燒臘-金山二代店">香港大來燒臘-金山二代店: +</h3><p>販賣港式燒臘,總店位於南大路,初期用餐體驗還不錯,但配菜鮮少更換</p> +<p><a class="link" href="https://maps.app.goo.gl/1AQ3LAWiErJgEzdK6" target="_blank" rel="noopener" +>https://maps.app.goo.gl/1AQ3LAWiErJgEzdK6</a></p> +<p><code>南側:</code></p> +<h3 id="曉芳泰式">曉芳泰式: +</h3><p>稀有老店,綠咖喱是偏水的那種</p> +<p><a class="link" href="https://maps.app.goo.gl/MEB4t7eDbQA9M7hS7" target="_blank" rel="noopener" +>https://maps.app.goo.gl/MEB4t7eDbQA9M7hS7</a></p> +<h3 id="素食園">素食園: +</h3><p>提供單點以及自助餐形式、內用附湯,口味清淡</p> +<p>推薦餐點:藥膳麵線</p> +<p><a class="link" href="https://maps.app.goo.gl/j8Vs7J17zKcMfVUA9" target="_blank" rel="noopener" +>https://maps.app.goo.gl/j8Vs7J17zKcMfVUA9</a></p> +<h2 id="金山八街">金山八街 +</h2><h3 id="feed-burger-20-美式雜貨店">Feed Burger 2.0 美式雜貨店 +</h3><p><a class="link" href="https://maps.app.goo.gl/VqePoq5zkhchCgzi7" target="_blank" rel="noopener" +>Feed Burger 2.0 美式雜貨店</a></p> +<p>金山街特色餐廳,專賣美式漢堡</p> +<p>環境比原來 1.0 的店面好很多</p> +<p>人潮眾多時要等~~~等一下</p> +<p>點了花生醬碎堅果 &amp; 焦糖洋蔥 &amp; 牛魔丸</p> +<p>(漢堡皮/焦糖/漢堡肉/洋蔥/漢堡皮)</p> +<p>雖然忙中有錯 但肉煎的不錯吃</p> +<p>價格稍貴 但竹科人應該吃得起</p> +<p>歷史:前身為八街麵食館</p> +<h3 id="可不可熟成紅茶-新竹金山店">可不可熟成紅茶 新竹金山店 +</h3><p>(前身為 Bubble Tea 前前身為 日出茶太 ) +<a class="link" href="https://maps.app.goo.gl/tPtVnwg7dZ3V21XRA" target="_blank" rel="noopener" +>https://maps.app.goo.gl/tPtVnwg7dZ3V21XRA</a></p> +<!-- ### 派克脆皮雞排 竹科雞廠: +https://maps.app.goo.gl/hGxKntqCRu3iWDTv9 --> +<h3 id="蟬吃茶-天然茶飲-竹科店">蟬吃茶 天然茶飲-竹科店: +</h3><p>茶味十足,健康取向(類似曾經的水韻堂 <a class="link" href="https://ppt.cc/wJxO" target="_blank" rel="noopener" +>https://ppt.cc/wJxO</a> )</p> +<p>2024 合約到期即將結束營業,另外在台北吳興街有展店</p> +<p><a class="link" href="https://maps.app.goo.gl/xjK3Nf9jvRXNSmrMA" target="_blank" rel="noopener" +>https://maps.app.goo.gl/xjK3Nf9jvRXNSmrMA</a></p> +<h2 id="金山九街">金山九街 +</h2><p><a class="link" href="https://maps.app.goo.gl/HCQmNHvySwfPyBGe8" target="_blank" rel="noopener" +>金山九街 Google Map</a></p> +<p><code>北側:</code></p> +<h3 id="發發新竹金山牧場">發發新竹金山牧場 +</h3><p><a class="link" href="https://maps.app.goo.gl/Ck8nfW1jGiAh8p299" target="_blank" rel="noopener" +>發發 新竹金山牧場</a></p> +<p>官方網站:<a class="link" href="https://www.thefarfarfarm.com/" target="_blank" rel="noopener" +>發發牧場</a></p> +<p>2024/05/24 現在為一家以優格作為特色飲品的飲料店 發發牧場</p> +<p>有內用空間 可電子支付 +店員介紹詳細服務很好👍</p> +<p>裝潢風格飲料包裝適合打卡拍照 +價格偏貴 但竹科人應該可接受</p> +<p>歷史軌跡:</p> +<p>前身為圈圈微森</p> +<p>前前身是某家賣焗烤的</p> +<p>外面有鋼琴椅子可坐著等候</p> +<p><code>南側:</code></p> +<h3 id="滿嘴拉麵">滿嘴拉麵 +</h3><p>前身為大海拉麵(已搬去隔壁巷子轉角)</p> +<p>整體裝潢沒有變動,多了自助飲料區,品項多了醬油口味</p> +<h3 id="京冠美食館">京冠美食館 +</h3><p>專賣鴨肉,便宜大碗,內用座位很多</p> +<h3 id="糰糰-早餐店">糰糰 早餐店 +</h3><p>兩個女生經營的早餐店,有賣清粥瘦肉粥,紫米飯糰</p> +<p><a class="link" href="https://maps.app.goo.gl/GQPHKLtqhzvhEfoG7" target="_blank" rel="noopener" +>https://maps.app.goo.gl/GQPHKLtqhzvhEfoG7</a></p> +<h2 id="金山十街">金山十街 +</h2><h3 id="蒸餃無雙">蒸餃無雙 +</h3><p><a class="link" href="https://maps.app.goo.gl/Z4F92kNn9vE4yVzHA" target="_blank" rel="noopener" +>https://maps.app.goo.gl/Z4F92kNn9vE4yVzHA</a></p> +<p>便宜大碗</p> +<h3 id="敲好食">敲好食 +</h3><p><a class="link" href="https://maps.app.goo.gl/LumEc4GHQpkHUHrMA" target="_blank" rel="noopener" +>https://maps.app.goo.gl/LumEc4GHQpkHUHrMA</a></p> +<p>精緻料理,想象中此價格應該會配套餐</p> +<p>店門口有賣地瓜球</p> +<h3 id="大海拉麵">大海拉麵 +</h3><p>麵條可以選粗細</p> +<p>湯頭可以選濃淡</p> +<p>原本店家在隔壁巷子的滿嘴拉麵,後來搬到轉角處</p> +<p>(去過台中吃過拉麵,就覺得大海還好)</p> +<h3 id="粵萊叉燒舖">粵萊叉燒舖 +</h3><p>販售單人形式的叉燒,搭配美乃滋,份量適中,價格適中。</p> +<p>位置:<a class="link" href="https://maps.app.goo.gl/6g1Kt8sqnaHAfSYa9" target="_blank" rel="noopener" +>新竹市東區金山十街100號</a></p> +<h2 id="金山十一街">金山十一街 +</h2><p>異國料理街</p> +<p>此街道有大馬料理,韓式料理,泰式料理,文青料理,傳統台式</p> +<h3 id="金街傳統料理">金街傳統料理 +</h3><p>炒飯/湯品 都還不錯</p> +<p>七里川滾麵 很養生</p> +<p>價格適中,竹科人可接受</p> +<h3 id="daima-大馬南洋料理">Daima 大馬南洋料理 +</h3><p>較為道地的馬來西亞料理,販售肉骨茶、海南雞飯、娘惹糕</p> +<p>口味用料跟初期有差異,但還是挺道地的,五顆星推薦</p> +<p>位置:<a class="link" href="https://maps.app.goo.gl/6hFwQrbdGsFqprCP6" target="_blank" rel="noopener" +>新竹市東區金山十一街37號</a></p> +<h3 id="泰速泰式料理-竹科店">泰速泰式料理 竹科店 +</h3><p>相比其他異國街為新開的異國料理</p> +<p>口味偏台式,價格平價,推薦綠咖哩</p> +<h2 id="金山十二街">金山十二街 +</h2><h3 id="金城蘭州牛肉拉麵">金城蘭州牛肉拉麵 +</h3><p>年輕師傅手打現桿拉麵,麵體有嚼勁</p> +<p>淡淡的麵體味道,肉偏薄,份量小</p> +<p>新開的店家 多多支持</p> +<!-- ### 金山街中段 --> +<h2 id="金山十三街">金山十三街 +</h2><h3 id="德記川味精緻麵典">德記川味精緻麵典 +</h3><p>價格中上,餐點份量偏小 +推薦餐點:紹子皮蛋麵、牛肉麵、口水雞、小菜</p> +<h2 id="金山十五街">金山十五街 +</h2><h2 id="金山十六街">金山十六街 +</h2><h2 id="金山十七街">金山十七街 +</h2><h2 id="金山十八街">金山十八街 +</h2><h2 id="金山十九街">金山十九街 +</h2><h2 id="金山二十街">金山二十街 +</h2><h2 id="金山二十一街">金山二十一街 +</h2><h2 id="金山二十二街">金山二十二街 +</h2><h2 id="金山二十三街">金山二十三街 +</h2><h2 id="金山二十五街">金山二十五街 +</h2><h2 id="金山二十六街">金山二十六街 +</h2><h2 id="金山二十七街">金山二十七街 +</h2><h2 id="金山北一街">金山北一街 +</h2><h2 id="金山北二街">金山北二街 +</h2><h2 id="金山北三街">金山北三街 +</h2><h2 id="金山東一街">金山東一街 +</h2><h2 id="金山東二街">金山東二街 +</h2><h2 id="金山東三街">金山東三街 +</h2><h2 id="金山東街">金山東街 +</h2><h2 id="其他">其他 +</h2><p>用漫畫講述理科工程師領域知識的創作者: +<a class="link" href="https://www.facebook.com/JinShanSt?locale=zh_TW" target="_blank" rel="noopener" +>金山街文學社</a></p> +<p>在地提供藝術創作空間的店家: +<a class="link" href="https://www.facebook.com/1516artstudio/?locale=zh_TW" target="_blank" rel="noopener" +>一五一六才藝創作工作坊</a></p> +<p>金山街人文美食地圖: +<a class="link" href="https://www.1516artstudio.com/2022/10/blog-post.html?lr=1" target="_blank" rel="noopener" +>https://www.1516artstudio.com/2022/10/blog-post.html?lr=1</a></p> +<p>金山街籃球場空拍紀錄:</p> +<iframe width="100%" height="315" src="https://www.youtube.com/embed/ptQoigbotKQ?si=_XGHC2JykIEevbgc" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> +<iframe width="100%" height="315" src="https://www.youtube.com/embed/s4y7FbwjM5g?si=NPrxy3dyk2XWBWGb" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> +<p>有許多店家尚未記載,不定期更新~</p>OpenAI ChatGPT 客製化聊天機器人 GPTshttps://wastu01.github.io/article/openai-custom-gpts-collection/Sun, 12 Nov 2023 03:33:42 +0800https://wastu01.github.io/article/openai-custom-gpts-collection/<img src="https://wastu01.github.io/article/openai-custom-gpts-collection/custome-chatgpt-gpts.png" alt="Featured image of post OpenAI ChatGPT 客製化聊天機器人 GPTs" /><p><kbd>openai</kbd> + <kbd>chatgpt</kbd> + <kbd>gpts</kbd></p> <p><code>GPT = Good Personal Tool</code></p> <p>前情提要:</p> <p>OpenAI 最近推出了一項新功能 GPTs</p> diff --git a/post/page/2/index.html b/post/page/2/index.html index 1c29ec2c..06b5e74f 100644 --- a/post/page/2/index.html +++ b/post/page/2/index.html @@ -1,5 +1,5 @@ Posts -

段落

總共 11 篇文章

Posts

段落

總共 13 篇文章

Posts

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git a/scss/style.min.01d3af0852fd7015d26885dfdc34ab0a13e4f53466a847df46f5df8b8c3fa27a.css b/scss/style.min.01d3af0852fd7015d26885dfdc34ab0a13e4f53466a847df46f5df8b8c3fa27a.css new file mode 100644 index 00000000..cb9cf8ab --- /dev/null +++ b/scss/style.min.01d3af0852fd7015d26885dfdc34ab0a13e4f53466a847df46f5df8b8c3fa27a.css @@ -0,0 +1,10 @@ +@charset "UTF-8";/*!* Hugo Theme Stack +* +* @author: Jimmy Cai +* @website: https://jimmycai.com +* @link: https://github.com/CaiJimmy/hugo-theme-stack*/:root{--main-top-padding:35px;--body-background:#f5f5fa;--accent-color:#34495e;--accent-color-darker:#2c3e50;--accent-color-text:#fff;--body-text-color:#707070;--tag-border-radius:4px;--section-separation:40px;--scrollbar-thumb:hsl(0, 0%, 85%);--scrollbar-track:var(--body-background)}@media(min-width:1280px){:root{--main-top-padding:50px}}:root[data-scheme=dark]{--body-background:#303030;--accent-color:#ecf0f1;--accent-color-darker:#bdc3c7;--accent-color-text:#000;--body-text-color:rgba(255, 255, 255, 0.7);--scrollbar-thumb:hsl(0, 0%, 40%);--scrollbar-track:var(--body-background)}:root{--sys-font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", "Droid Sans", "Helvetica Neue";--zh-font-family:"PingFang SC", "Hiragino Sans GB", "Droid Sans Fallback", "Microsoft YaHei";--base-font-family:"Lato", var(--sys-font-family), var(--zh-font-family), sans-serif;--code-font-family:Menlo, Monaco, Consolas, "Courier New", var(--zh-font-family), monospace}:root{--card-background:#fff;--card-background-selected:#eaeaea;--card-text-color-main:#000;--card-text-color-secondary:#747474;--card-text-color-tertiary:#767676;--card-separator-color:rgba(218, 218, 218, 0.5);--card-border-radius:10px;--card-padding:20px;--small-card-padding:25px 20px}@media(min-width:768px){:root{--card-padding:25px}}@media(min-width:1280px){:root{--card-padding:30px}}@media(min-width:768px){:root{--small-card-padding:25px}}:root[data-scheme=dark]{--card-background:#424242;--card-background-selected:rgba(255, 255, 255, 0.16);--card-text-color-main:rgba(255, 255, 255, 0.9);--card-text-color-secondary:rgba(255, 255, 255, 0.7);--card-text-color-tertiary:rgba(255, 255, 255, 0.5);--card-separator-color:rgba(255, 255, 255, 0.12)}:root{--article-font-family:var(--base-font-family);--article-font-size:1.6rem;--article-line-height:1.85}@media(min-width:768px){:root{--article-font-size:1.7rem}}:root{--blockquote-border-size:4px;--blockquote-background-color:rgb(248 248 248);--heading-border-size:4px;--link-background-color:189, 195, 199;--link-background-opacity:0.5;--link-background-opacity-hover:0.7;--pre-background-color:#272822;--pre-text-color:#f8f8f2;--code-background-color:rgba(0, 0, 0, 0.12);--code-text-color:#808080;--table-border-color:#dadada;--tr-even-background-color:#efefee;--kbd-border-color:#dadada}:root[data-scheme=dark]{--code-background-color:#272822;--code-text-color:rgba(255, 255, 255, 0.9);--table-border-color:#717171;--tr-even-background-color:#545454;--blockquote-background-color:rgb(75 75 75)}:root{--shadow-l1:0px 4px 8px rgba(0, 0, 0, 0.04), 0px 0px 2px rgba(0, 0, 0, 0.06), 0px 0px 1px rgba(0, 0, 0, 0.04);--shadow-l2:0px 10px 20px rgba(0, 0, 0, 0.04), 0px 2px 6px rgba(0, 0, 0, 0.04), 0px 0px 1px rgba(0, 0, 0, 0.04);--shadow-l3:0px 10px 20px rgba(0, 0, 0, 0.04), 0px 2px 6px rgba(0, 0, 0, 0.04), 0px 0px 1px rgba(0, 0, 0, 0.04);--shadow-l4:0px 24px 32px rgba(0, 0, 0, 0.04), 0px 16px 24px rgba(0, 0, 0, 0.04), 0px 4px 8px rgba(0, 0, 0, 0.04), + 0px 0px 1px rgba(0, 0, 0, 0.04)}[data-scheme=light]{--pre-text-color:#272822;--pre-background-color:#fafafa}[data-scheme=light] .chroma{color:#272822;background-color:#fafafa}[data-scheme=light] .chroma .err{color:#960050}[data-scheme=light] .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}[data-scheme=light] .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0;width:100%;display:block}[data-scheme=light] .chroma .lntable>tbody{display:block;width:100%}[data-scheme=light] .chroma .lntable>tbody>tr{display:flex;width:100%}[data-scheme=light] .chroma .lntable>tbody>tr>td:last-child{overflow-x:auto}[data-scheme=light] .chroma .hl{display:block;width:100%;background-color:#ffc}[data-scheme=light] .chroma .lnt{margin-right:.4em;padding:0 .4em;color:#7f7f7f;display:block}[data-scheme=light] .chroma .ln{margin-right:.4em;padding:0 .4em;color:#7f7f7f}[data-scheme=light] .chroma .k{color:#00a8c8}[data-scheme=light] .chroma .kc{color:#00a8c8}[data-scheme=light] .chroma .kd{color:#00a8c8}[data-scheme=light] .chroma .kn{color:#f92672}[data-scheme=light] .chroma .kp{color:#00a8c8}[data-scheme=light] .chroma .kr{color:#00a8c8}[data-scheme=light] .chroma .kt{color:#00a8c8}[data-scheme=light] .chroma .n{color:#111}[data-scheme=light] .chroma .na{color:#75af00}[data-scheme=light] .chroma .nb{color:#111}[data-scheme=light] .chroma .bp{color:#111}[data-scheme=light] .chroma .nc{color:#75af00}[data-scheme=light] .chroma .no{color:#00a8c8}[data-scheme=light] .chroma .nd{color:#75af00}[data-scheme=light] .chroma .ni{color:#111}[data-scheme=light] .chroma .ne{color:#75af00}[data-scheme=light] .chroma .nf{color:#75af00}[data-scheme=light] .chroma .fm{color:#111}[data-scheme=light] .chroma .nl{color:#111}[data-scheme=light] .chroma .nn{color:#111}[data-scheme=light] .chroma .nx{color:#75af00}[data-scheme=light] .chroma .py{color:#111}[data-scheme=light] .chroma .nt{color:#f92672}[data-scheme=light] .chroma .nv{color:#111}[data-scheme=light] .chroma .vc{color:#111}[data-scheme=light] .chroma .vg{color:#111}[data-scheme=light] .chroma .vi{color:#111}[data-scheme=light] .chroma .vm{color:#111}[data-scheme=light] .chroma .l{color:#ae81ff}[data-scheme=light] .chroma .ld{color:#d88200}[data-scheme=light] .chroma .s{color:#d88200}[data-scheme=light] .chroma .sa{color:#d88200}[data-scheme=light] .chroma .sb{color:#d88200}[data-scheme=light] .chroma .sc{color:#d88200}[data-scheme=light] .chroma .dl{color:#d88200}[data-scheme=light] .chroma .sd{color:#d88200}[data-scheme=light] .chroma .s2{color:#d88200}[data-scheme=light] .chroma .se{color:#ae81ff}[data-scheme=light] .chroma .sh{color:#d88200}[data-scheme=light] .chroma .si{color:#d88200}[data-scheme=light] .chroma .sx{color:#d88200}[data-scheme=light] .chroma .sr{color:#d88200}[data-scheme=light] .chroma .s1{color:#d88200}[data-scheme=light] .chroma .ss{color:#d88200}[data-scheme=light] .chroma .m{color:#ae81ff}[data-scheme=light] .chroma .mb{color:#ae81ff}[data-scheme=light] .chroma .mf{color:#ae81ff}[data-scheme=light] .chroma .mh{color:#ae81ff}[data-scheme=light] .chroma .mi{color:#ae81ff}[data-scheme=light] .chroma .il{color:#ae81ff}[data-scheme=light] .chroma .mo{color:#ae81ff}[data-scheme=light] .chroma .o{color:#f92672}[data-scheme=light] .chroma .ow{color:#f92672}[data-scheme=light] .chroma .p{color:#111}[data-scheme=light] .chroma .c{color:#75715e}[data-scheme=light] .chroma .ch{color:#75715e}[data-scheme=light] .chroma .cm{color:#75715e}[data-scheme=light] .chroma .c1{color:#75715e}[data-scheme=light] .chroma .cs{color:#75715e}[data-scheme=light] .chroma .cp{color:#75715e}[data-scheme=light] .chroma .cpf{color:#75715e}[data-scheme=light] .chroma .gd{color:#f92672}[data-scheme=light] .chroma .ge{font-style:italic}[data-scheme=light] .chroma .gi{color:#75af00}[data-scheme=light] .chroma .gs{font-weight:700}[data-scheme=light] .chroma .gu{color:#75715e}[data-scheme=dark]{--pre-text-color:#f8f8f2;--pre-background-color:#272822}[data-scheme=dark] .chroma{color:#f8f8f2;background-color:#272822}[data-scheme=dark] .chroma .err{color:#bb0064}[data-scheme=dark] .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}[data-scheme=dark] .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0;width:100%;display:block}[data-scheme=dark] .chroma .lntable>tbody{display:block;width:100%}[data-scheme=dark] .chroma .lntable>tbody>tr{display:flex;width:100%}[data-scheme=dark] .chroma .lntable>tbody>tr>td:last-child{overflow-x:auto}[data-scheme=dark] .chroma .hl{display:block;width:100%;background-color:#ffc}[data-scheme=dark] .chroma .lnt{margin-right:.4em;padding:0 .4em;color:#7f7f7f;display:block}[data-scheme=dark] .chroma .ln{margin-right:.4em;padding:0 .4em;color:#7f7f7f}[data-scheme=dark] .chroma .k{color:#66d9ef}[data-scheme=dark] .chroma .kc{color:#66d9ef}[data-scheme=dark] .chroma .kd{color:#66d9ef}[data-scheme=dark] .chroma .kn{color:#f92672}[data-scheme=dark] .chroma .kp{color:#66d9ef}[data-scheme=dark] .chroma .kr{color:#66d9ef}[data-scheme=dark] .chroma .kt{color:#66d9ef}[data-scheme=dark] .chroma .n{color:#f8f8f2}[data-scheme=dark] .chroma .na{color:#a6e22e}[data-scheme=dark] .chroma .nb{color:#f8f8f2}[data-scheme=dark] .chroma .bp{color:#f8f8f2}[data-scheme=dark] .chroma .nc{color:#a6e22e}[data-scheme=dark] .chroma .no{color:#66d9ef}[data-scheme=dark] .chroma .nd{color:#a6e22e}[data-scheme=dark] .chroma .ni{color:#f8f8f2}[data-scheme=dark] .chroma .ne{color:#a6e22e}[data-scheme=dark] .chroma .nf{color:#a6e22e}[data-scheme=dark] .chroma .fm{color:#f8f8f2}[data-scheme=dark] .chroma .nl{color:#f8f8f2}[data-scheme=dark] .chroma .nn{color:#f8f8f2}[data-scheme=dark] .chroma .nx{color:#a6e22e}[data-scheme=dark] .chroma .py{color:#f8f8f2}[data-scheme=dark] .chroma .nt{color:#f92672}[data-scheme=dark] .chroma .nv{color:#f8f8f2}[data-scheme=dark] .chroma .vc{color:#f8f8f2}[data-scheme=dark] .chroma .vg{color:#f8f8f2}[data-scheme=dark] .chroma .vi{color:#f8f8f2}[data-scheme=dark] .chroma .vm{color:#f8f8f2}[data-scheme=dark] .chroma .l{color:#ae81ff}[data-scheme=dark] .chroma .ld{color:#e6db74}[data-scheme=dark] .chroma .s{color:#e6db74}[data-scheme=dark] .chroma .sa{color:#e6db74}[data-scheme=dark] .chroma .sb{color:#e6db74}[data-scheme=dark] .chroma .sc{color:#e6db74}[data-scheme=dark] .chroma .dl{color:#e6db74}[data-scheme=dark] .chroma .sd{color:#e6db74}[data-scheme=dark] .chroma .s2{color:#e6db74}[data-scheme=dark] .chroma .se{color:#ae81ff}[data-scheme=dark] .chroma .sh{color:#e6db74}[data-scheme=dark] .chroma .si{color:#e6db74}[data-scheme=dark] .chroma .sx{color:#e6db74}[data-scheme=dark] .chroma .sr{color:#e6db74}[data-scheme=dark] .chroma .s1{color:#e6db74}[data-scheme=dark] .chroma .ss{color:#e6db74}[data-scheme=dark] .chroma .m{color:#ae81ff}[data-scheme=dark] .chroma .mb{color:#ae81ff}[data-scheme=dark] .chroma .mf{color:#ae81ff}[data-scheme=dark] .chroma .mh{color:#ae81ff}[data-scheme=dark] .chroma .mi{color:#ae81ff}[data-scheme=dark] .chroma .il{color:#ae81ff}[data-scheme=dark] .chroma .mo{color:#ae81ff}[data-scheme=dark] .chroma .o{color:#f92672}[data-scheme=dark] .chroma .ow{color:#f92672}[data-scheme=dark] .chroma .p{color:#f8f8f2}[data-scheme=dark] .chroma .c{color:#75715e}[data-scheme=dark] .chroma .ch{color:#75715e}[data-scheme=dark] .chroma .cm{color:#75715e}[data-scheme=dark] .chroma .c1{color:#75715e}[data-scheme=dark] .chroma .cs{color:#75715e}[data-scheme=dark] .chroma .cp{color:#75715e}[data-scheme=dark] .chroma .cpf{color:#75715e}[data-scheme=dark] .chroma .gd{color:#f92672}[data-scheme=dark] .chroma .ge{font-style:italic}[data-scheme=dark] .chroma .gi{color:#a6e22e}[data-scheme=dark] .chroma .gs{font-weight:700}[data-scheme=dark] .chroma .gu{color:#75715e}:root{--menu-icon-separation:40px;--container-padding:15px;--widget-separation:var(--section-separation)}.container{margin-left:auto;margin-right:auto}.container .left-sidebar{order:-3;max-width:var(--left-sidebar-max-width)}.container .right-sidebar{order:-1;max-width:var(--right-sidebar-max-width)}@media(min-width:1024px){.container .right-sidebar{display:flex}}@media(min-width:768px){.container.extended{max-width:1024px;--left-sidebar-max-width:25%;--right-sidebar-max-width:30%}}@media(min-width:1024px){.container.extended{max-width:1280px;--left-sidebar-max-width:20%;--right-sidebar-max-width:30%}}@media(min-width:1280px){.container.extended{max-width:1536px;--left-sidebar-max-width:15%;--right-sidebar-max-width:25%}}@media(min-width:768px){.container.compact{--left-sidebar-max-width:25%;max-width:768px}}@media(min-width:1024px){.container.compact{max-width:1024px;--left-sidebar-max-width:20%}}@media(min-width:1280px){.container.compact{max-width:1280px}}.flex{display:flex;flex-direction:row}.flex.column{flex-direction:column}.flex.on-phone--column{flex-direction:column}@media(min-width:768px){.flex.on-phone--column{flex-direction:unset}}.flex .full-width{width:100%}main.main{order:-2;min-width:0;max-width:100%;flex-grow:1;display:flex;flex-direction:column;gap:var(--section-separation)}@media(min-width:768px){main.main{padding-top:var(--main-top-padding)}}.main-container{min-height:100vh;align-items:flex-start;padding:0 15px;gap:var(--section-separation);padding-top:var(--main-top-padding)}@media(min-width:768px){.main-container{padding:0 20px}}/*!normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css*/html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}/*!* Hamburgers +* @description Tasty CSS-animated hamburgers +* @author Jonathan Suh @jonsuh +* @site https://jonsuh.com/hamburgers +* @link https://github.com/jonsuh/hamburgers*/.hamburger{padding-top:10px;display:inline-block;cursor:pointer;transition-property:opacity,filter;transition-duration:.15s;transition-timing-function:linear;font:inherit;color:inherit;text-transform:none;background-color:transparent;border:0;margin:0;overflow:visible}.hamburger:hover{opacity:.7}.hamburger.is-active:hover{opacity:.7}.hamburger.is-active .hamburger-inner,.hamburger.is-active .hamburger-inner::before,.hamburger.is-active .hamburger-inner::after{background-color:#000}.hamburger-box{width:30px;height:24px;display:inline-block;position:relative}.hamburger-inner{display:block;top:50%;margin-top:-2px}.hamburger-inner,.hamburger-inner::before,.hamburger-inner::after{width:30px;height:2px;background-color:var(--card-text-color-main);border-radius:4px;position:absolute;transition-property:transform;transition-duration:.15s;transition-timing-function:ease}.hamburger-inner::before,.hamburger-inner::after{content:"";display:block}.hamburger-inner::before{top:-10px}.hamburger-inner::after{bottom:-10px}.hamburger--spin .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin .hamburger-inner::before{transition:top .1s .25s ease-in,opacity .1s ease-in}.hamburger--spin .hamburger-inner::after{transition:bottom .1s .25s ease-in,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin.is-active .hamburger-inner{transform:rotate(225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin.is-active .hamburger-inner::before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s .12s ease-out}.hamburger--spin.is-active .hamburger-inner::after{bottom:0;transform:rotate(-90deg);transition:bottom .1s ease-out,transform .22s .12s cubic-bezier(.215,.61,.355,1)}#toggle-menu{background:0 0;border:none;position:absolute;right:0;top:0;z-index:2;cursor:pointer;outline:none}[dir=rtl] #toggle-menu{left:0;right:auto}@media(min-width:768px){#toggle-menu{display:none}}#toggle-menu.is-active .hamburger-inner,#toggle-menu.is-active .hamburger-inner::before,#toggle-menu.is-active .hamburger-inner::after{background-color:var(--accent-color)}#main-menu{list-style:none;overflow-y:auto;flex-grow:1;font-size:1.4rem;background-color:var(--card-background);box-shadow:var(--shadow-l1);display:none;margin:0 calc(var(--container-padding) * -1);padding:30px}@media(min-width:1280px){#main-menu{padding:15px 0}}#main-menu,#main-menu .menu-bottom-section ol{flex-direction:column;gap:30px}@media(min-width:1280px){#main-menu,#main-menu .menu-bottom-section ol{gap:25px}}#main-menu.show{display:flex}@media(min-width:768px){#main-menu{align-items:flex-end;display:flex;background-color:transparent;padding:0;box-shadow:none;margin:0}}#main-menu li{position:relative;vertical-align:middle;padding:0}@media(min-width:768px){#main-menu li{width:100%}}#main-menu li svg{stroke:currentColor;stroke-width:1.33;width:20px;height:20px}#main-menu li a{height:100%;display:inline-flex;align-items:center;color:var(--body-text-color);gap:var(--menu-icon-separation)}#main-menu li span{flex:1}#main-menu li.current a{color:var(--accent-color);font-weight:700}#main-menu li.menu-bottom-section{margin-top:auto}#main-menu li.menu-bottom-section ol{display:flex;padding-left:0}.menu-social{list-style:none;padding:0;margin:0;display:flex;flex-direction:row;gap:10px}.menu-social svg{width:24px;height:24px;stroke:var(--body-text-color);stroke-width:1.33}.article-list{display:flex;flex-direction:column;gap:var(--section-separation)}.article-list article{display:flex;flex-direction:column;background-color:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--card-border-radius);overflow:hidden;transition:box-shadow .3s ease}.article-list article:hover{box-shadow:var(--shadow-l2)}.article-list article .article-image img{width:100%;height:150px;object-fit:cover}@media(min-width:768px){.article-list article .article-image img{height:200px}}@media(min-width:1280px){.article-list article .article-image img{height:250px}}.article-list article:nth-child(5n+1) .article-category a{background:#8ea885;color:#fff}.article-list article:nth-child(5n+2) .article-category a{background:#df7988;color:#fff}.article-list article:nth-child(5n+3) .article-category a{background:#0177b8;color:#fff}.article-list article:nth-child(5n+4) .article-category a{background:#ffb900;color:#fff}.article-list article:nth-child(5n+5) .article-category a{background:#6b69d6;color:#fff}.article-details{display:flex;flex-direction:column;justify-content:center;padding:var(--card-padding);gap:15px}.article-title{font-family:var(--article-font-family);font-weight:600;margin:0;color:var(--card-text-color-main);font-size:2.2rem}@media(min-width:1280px){.article-title{font-size:2.4rem}}.article-title a{color:var(--card-text-color-main)}.article-title a:hover{color:var(--card-text-color-main)}.article-subtitle{font-weight:400;color:var(--card-text-color-secondary);line-height:1.5;margin:0;font-size:1.75rem}@media(min-width:1280px){.article-subtitle{font-size:2rem}}.article-title-wrapper{display:flex;flex-direction:column;gap:8px}.article-time,.article-translations{display:flex;color:var(--card-text-color-tertiary);gap:15px}.article-time svg,.article-translations svg{vertical-align:middle;width:20px;height:20px;stroke-width:1.33;flex-shrink:0}.article-time time,.article-time a,.article-translations time,.article-translations a{font-size:1.4rem;color:var(--card-text-color-tertiary)}.article-time>div,.article-translations>div{display:inline-flex;align-items:center;gap:15px}.article-time{flex-wrap:wrap}.article-translations>div{flex-wrap:wrap}.article-category,.article-tags{display:flex;gap:10px;flex-wrap:wrap}.article-category a,.article-tags a{color:var(--accent-color-text);background-color:var(--accent-color);padding:8px 16px;border-radius:var(--tag-border-radius);display:inline-block;font-size:1.4rem;transition:background-color .5s ease}.article-category a:hover,.article-tags a:hover{color:var(--accent-color-text);background-color:var(--accent-color-darker)}.article-list--compact{border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);background-color:var(--card-background);--image-size:50px}@media(min-width:768px){.article-list--compact{--image-size:60px}}.article-list--compact article>a{display:flex;align-items:center;padding:var(--small-card-padding);gap:15px}.article-list--compact article:not(:last-of-type){border-bottom:1.5px solid var(--card-separator-color)}.article-list--compact article .article-details{flex-grow:1;padding:0;min-height:var(--image-size);gap:10px}.article-list--compact article .article-title{margin:0;font-size:1.6rem}@media(min-width:768px){.article-list--compact article .article-title{font-size:1.8rem}}.article-list--compact article .article-image img{width:var(--image-size);height:var(--image-size);object-fit:cover}.article-list--compact article .article-time{font-size:1.4rem}.article-list--compact article .article-preview{font-size:1.4rem;color:var(--card-text-color-tertiary);margin-top:10px;line-height:1.5}.article-list--tile article{border-radius:var(--card-border-radius);overflow:hidden;position:relative;height:350px;width:250px;box-shadow:var(--shadow-l1);transition:box-shadow .3s ease;background-color:var(--card-background)}.article-list--tile article:hover{box-shadow:var(--shadow-l2)}.article-list--tile article.has-image .article-details{background-color:rgba(0,0,0,.25)}.article-list--tile article.has-image .article-title{color:#fff}.article-list--tile article .article-image{position:absolute;top:0;left:0;width:100%;height:100%}.article-list--tile article .article-image img{width:100%;height:100%;object-fit:cover}.article-list--tile article .article-details{border-radius:var(--card-border-radius);position:relative;height:100%;width:100%;display:flex;flex-direction:column;justify-content:flex-end;z-index:2;padding:15px}@media(min-width:640px){.article-list--tile article .article-details{padding:20px}}.article-list--tile article .article-title{font-size:2rem;font-weight:500;color:var(--card-text-color-main)}@media(min-width:640px){.article-list--tile article .article-title{font-size:2.2rem}}.widget{display:flex;flex-direction:column}.widget .widget-icon svg{width:32px;height:32px;stroke-width:1.6;color:var(--body-text-color)}.tagCloud .tagCloud-tags{display:flex;flex-wrap:wrap;gap:10px}.tagCloud .tagCloud-tags a{background:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--tag-border-radius);padding:8px 20px;color:var(--card-text-color-main);font-size:1.4rem;transition:box-shadow .3s ease}.tagCloud .tagCloud-tags a:hover{box-shadow:var(--shadow-l2)}.widget.archives .widget-archive--list{border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);background-color:var(--card-background)}.widget.archives .archives-year:not(:last-of-type){border-bottom:1.5px solid var(--card-separator-color)}.widget.archives .archives-year a{font-size:1.4rem;padding:18px 25px;display:flex}.widget.archives .archives-year a span.year{flex:1;color:var(--card-text-color-main);font-weight:700}.widget.archives .archives-year a span.count{color:var(--card-text-color-tertiary)}footer.site-footer{padding:20px 0 var(--section-separation);font-size:1.4rem;line-height:1.75}footer.site-footer:before{content:"";display:block;height:3px;width:50px;background:var(--body-text-color);margin-bottom:20px}footer.site-footer .copyright{color:var(--accent-color);font-weight:700;margin-bottom:5px}footer.site-footer .powerby{color:var(--body-text-color);font-weight:400;font-size:1.2rem}footer.site-footer .powerby a{color:var(--body-text-color)}.pagination{display:flex;background-color:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--card-border-radius);overflow:hidden;flex-wrap:wrap}.pagination .page-link{padding:16px 32px;display:inline-flex;color:var(--card-text-color-secondary)}.pagination .page-link.current{font-weight:700;background-color:var(--card-background-selected);color:var(--card-text-color-main)}@media(min-width:768px){.sidebar.sticky{position:sticky}}.left-sidebar{display:flex;flex-direction:column;flex-shrink:0;align-self:stretch;gap:var(--sidebar-element-separation);max-width:none;width:100%;position:relative;--sidebar-avatar-size:100px;--sidebar-element-separation:20px;--emoji-size:40px;--emoji-font-size:20px}@media(min-width:768px){.left-sidebar{width:auto;padding-top:var(--main-top-padding);padding-bottom:var(--main-top-padding);max-height:100vh}}@media(min-width:1536px){.left-sidebar{--sidebar-avatar-size:120px;--sidebar-element-separation:25px;--emoji-size:40px}}.left-sidebar.sticky{top:0}.left-sidebar.compact{--sidebar-avatar-size:80px;--emoji-size:30px;--emoji-font-size:15px}@media(min-width:1024px){.left-sidebar.compact header{flex-direction:row}}.left-sidebar.compact header .site-meta{gap:5px}.left-sidebar.compact header .site-name{font-size:1.4rem}@media(min-width:1536px){.left-sidebar.compact header .site-name{font-size:1.75rem}}.left-sidebar.compact header .site-description{font-size:1.4rem}.right-sidebar{width:100%;display:none;flex-direction:column;gap:var(--widget-separation)}.right-sidebar.sticky{top:0}@media(min-width:1024px){.right-sidebar{padding-top:var(--main-top-padding);padding-bottom:var(--main-top-padding)}}.sidebar header{z-index:1;transition:box-shadow .5s ease;display:flex;flex-direction:column;gap:var(--sidebar-element-separation)}@media(min-width:768px){.sidebar header{padding:0}}.sidebar header .site-avatar{position:relative;margin:0;width:var(--sidebar-avatar-size);height:var(--sidebar-avatar-size);flex-shrink:0}.sidebar header .site-avatar .site-logo{width:100%;height:100%;border-radius:100%;box-shadow:var(--shadow-l1)}.sidebar header .site-avatar .emoji{position:absolute;width:var(--emoji-size);height:var(--emoji-size);line-height:var(--emoji-size);border-radius:100%;bottom:0;right:0;text-align:center;font-size:var(--emoji-font-size);background-color:var(--card-background);box-shadow:var(--shadow-l2)}.sidebar header .site-meta{display:flex;flex-direction:column;gap:10px;justify-content:center}.sidebar header .site-name{color:var(--accent-color);margin:0;font-size:1.6rem}@media(min-width:1536px){.sidebar header .site-name{font-size:1.8rem}}.sidebar header .site-description{color:var(--body-text-color);font-weight:400;margin:0;font-size:1.4rem}@media(min-width:1536px){.sidebar header .site-description{font-size:1.6rem}}[data-scheme=dark] #dark-mode-toggle{color:var(--accent-color);font-weight:700}[data-scheme=dark] #dark-mode-toggle .icon-tabler-toggle-left{display:none}[data-scheme=dark] #dark-mode-toggle .icon-tabler-toggle-right{display:unset}#dark-mode-toggle{margin-top:auto;color:var(--body-text-color);display:flex;align-items:center;cursor:pointer;gap:var(--menu-icon-separation)}#dark-mode-toggle .icon-tabler-toggle-right{display:none}#i18n-switch{color:var(--body-text-color);display:inline-flex;align-content:center;gap:var(--menu-icon-separation)}#i18n-switch select{border:0;background-color:transparent;color:var(--body-text-color)}#i18n-switch select option{color:var(--card-text-color-main);background-color:var(--card-background)}html{font-size:62.5%;overflow-y:scroll}*{box-sizing:border-box}body{background:var(--body-background);margin:0;font-family:var(--base-font-family);font-size:1.6rem;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{scrollbar-width:auto;scrollbar-color:var(--scrollbar-thumb)transparent}::-webkit-scrollbar{height:auto}::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb)}::-webkit-scrollbar-track{background-color:transparent}.article-page.hide-sidebar-sm .left-sidebar{display:none}@media(min-width:768px){.article-page.hide-sidebar-sm .left-sidebar{display:inherit}}.article-page .main-article{background:var(--card-background);border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);overflow:hidden}.article-page .main-article .article-header .article-image img{height:auto;width:100%;max-height:45vh;object-fit:cover}.article-page .main-article .article-header .article-details{padding:var(--card-padding);padding-bottom:0}.article-page .main-article .article-header .article-subtitle{font-weight:300;color:var(--card-text-color-secondary);line-height:1.3;margin:0;font-size:1.95rem}.article-page .main-article .article-content{margin:var(--card-padding)0;color:var(--card-text-color-main)}.article-page .main-article .article-content .footnotes{font-family:var(--base-font-family)}.article-page .main-article .article-content img{max-width:100%;height:auto}.article-page .main-article .article-footer{margin:var(--card-padding);margin-top:0}.article-page .main-article .article-footer section:not(:first-child){margin-top:var(--card-padding)}.article-page .main-article .article-footer section{color:var(--card-text-color-tertiary);text-transform:uppercase;display:flex;align-items:center;font-size:1.4rem;gap:15px}.article-page .main-article .article-footer section svg{width:20px;height:20px;stroke-width:1.33}.article-page .main-article .article-footer .article-tags{flex-wrap:wrap;text-transform:unset}.article-page .main-article .article-footer .article-copyright a,.article-page .main-article .article-footer .article-lastmod a{color:var(--body-text-color)}.article-page .main-article .article-footer .article-copyright a.link,.article-page .main-article .article-footer .article-lastmod a.link{box-shadow:unset}.widget--toc{background-color:var(--card-background);border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);display:flex;flex-direction:column;color:var(--card-text-color-main);overflow:hidden}.widget--toc ::-webkit-scrollbar-thumb{background-color:var(--card-separator-color)}.widget--toc #TableOfContents{overflow-x:auto;max-height:75vh}.widget--toc #TableOfContents ol,.widget--toc #TableOfContents ul{margin:0;padding:0}.widget--toc #TableOfContents ol{list-style-type:none;counter-reset:item}.widget--toc #TableOfContents ol li a:first-of-type::before{counter-increment:item;content:counters(item,".")". ";font-weight:700;margin-right:5px}.widget--toc #TableOfContents>ul{padding:0 1em}.widget--toc #TableOfContents li{margin:15px 0 15px 25px;padding:5px}.widget--toc #TableOfContents li>ol,.widget--toc #TableOfContents li>ul{margin-top:10px;padding-left:10px;margin-bottom:-5px}.widget--toc #TableOfContents li>ol>li:last-child,.widget--toc #TableOfContents li>ul>li:last-child{margin-bottom:0}.widget--toc #TableOfContents li.active-class>a{border-left:var(--heading-border-size)solid var(--accent-color);font-weight:700}.widget--toc #TableOfContents ul li.active-class>a{display:block}.widget--toc #TableOfContents>ul>li.active-class>a{margin-left:calc(-25px - 1em);padding-left:calc(25px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li.active-class>a{margin-left:calc(-9px - 1em);padding-left:calc(9px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li.active-class>a{margin-left:calc(-60px - 1em);padding-left:calc(60px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li.active-class>a{margin-left:calc(-44px - 1em);padding-left:calc(44px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li>ul>li.active-class>a{margin-left:calc(-95px - 1em);padding-left:calc(95px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li>ol>li.active-class>a{margin-left:calc(-79px - 1em);padding-left:calc(79px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li>ul>li>ul>li.active-class>a{margin-left:calc(-130px - 1em);padding-left:calc(130px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li>ol>li>ol>li.active-class>a{margin-left:calc(-114px - 1em);padding-left:calc(114px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li>ul>li>ul>li>ul>li.active-class>a{margin-left:calc(-165px - 1em);padding-left:calc(165px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li>ol>li>ol>li>ol>li.active-class>a{margin-left:calc(-149px - 1em);padding-left:calc(149px + 1em - var(--heading-border-size));display:block}.related-content{overflow-x:auto;padding-bottom:15px}.related-content>.flex{float:left}.related-content article{margin-right:15px;flex-shrink:0;overflow:hidden;width:250px;height:150px}.related-content article .article-title{font-size:1.4rem;margin:0}.related-content article.has-image .article-details{padding:20px}.article-content{font-family:var(--article-font-family);font-size:var(--article-font-size);padding:0 var(--card-padding);line-height:var(--article-line-height)}.article-content>p{margin:1.5em 0}.article-content h1,.article-content h2,.article-content h3,.article-content h4,.article-content h5,.article-content h6{margin-inline-start:calc((var(--card-padding)) * -1);padding-inline-start:calc(var(--card-padding) - var(--heading-border-size));border-inline-start:var(--heading-border-size)solid var(--accent-color)}.article-content figure{text-align:center}.article-content figure figcaption{font-size:1.4rem;color:var(--card-text-color-secondary)}.article-content blockquote{position:relative;margin:1.5em 0;border-inline-start:var(--blockquote-border-size)solid var(--card-separator-color);padding:15px calc(var(--card-padding) - var(--blockquote-border-size));background-color:var(--blockquote-background-color)}.article-content blockquote .cite{display:block;text-align:right;font-size:.75em}.article-content blockquote .cite a{text-decoration:underline}.article-content hr{width:100px;margin:40px auto;background:var(--card-text-color-tertiary);height:2px;border:0;opacity:.55}.article-content code{color:var(--code-text-color);background-color:var(--code-background-color);padding:2px 4px;border-radius:var(--tag-border-radius);font-family:var(--code-font-family)}.article-content a,.article-content code{word-break:break-word}.article-content .gallery{position:relative;display:flex;flex-direction:row;justify-content:center;margin:1.5em 0;gap:10px}.article-content .gallery figure{margin:0}.article-content pre{overflow-x:auto;display:block;background-color:var(--pre-background-color);color:var(--pre-text-color);font-family:var(--code-font-family);line-height:1.428571429;word-break:break-all;padding:var(--card-padding)}[dir=rtl] .article-content pre{direction:ltr}.article-content pre code{color:unset;border:none;background:0 0;padding:0}.article-content .highlight{background-color:var(--pre-background-color);padding:var(--card-padding);position:relative}.article-content .highlight:hover .copyCodeButton{opacity:1}[dir=rtl] .article-content .highlight{direction:ltr}.article-content .highlight pre{margin:initial;padding:0;margin:0;width:auto}.article-content .copyCodeButton{position:absolute;top:calc(var(--card-padding));right:calc(var(--card-padding));background:var(--card-background);border:none;box-shadow:var(--shadow-l2);border-radius:var(--tag-border-radius);padding:8px 16px;color:var(--card-text-color-main);cursor:pointer;font-size:14px;opacity:0;transition:opacity .3s ease}.article-content .table-wrapper{padding:0 var(--card-padding);overflow-x:auto;display:block}.article-content table{width:100%;border-collapse:collapse;border-spacing:0;margin-bottom:1.5em;font-size:.96em}.article-content th,.article-content td{text-align:left;padding:4px 8px 4px 10px;border:1px solid var(--table-border-color)}.article-content td{vertical-align:top}.article-content tr:nth-child(even){background-color:var(--tr-even-background-color)}.article-content .twitter-tweet{color:var(--card-text-color-main)}.article-content .video-wrapper{position:relative;width:100%;height:0;padding-bottom:56.25%;overflow:hidden}.article-content .video-wrapper>iframe,.article-content .video-wrapper>video{position:absolute;width:100%;height:100%;left:0;top:0;border:0}.article-content .gitlab-embed-snippets{margin:0!important}.article-content .gitlab-embed-snippets .file-holder.snippet-file-content{margin-block-end:0!important;margin-block-start:0!important;margin-left:calc((var(--card-padding)) * -1)!important;margin-right:calc((var(--card-padding)) * -1)!important;padding:0 var(--card-padding)!important}.article-content blockquote,.article-content figure,.article-content .highlight,.article-content pre,.article-content .gallery,.article-content .video-wrapper,.article-content .table-wrapper,.article-content .s_video_simple{margin-left:calc((var(--card-padding)) * -1);margin-right:calc((var(--card-padding)) * -1);width:calc(100% + var(--card-padding) * 2)}.article-content .katex-display>.katex{overflow-x:auto;overflow-y:hidden}.article-content kbd{border:1px solid var(--kbd-border-color);font-weight:700;font-size:.9em;line-height:1;padding:2px 4px;border-radius:4px;display:inline-block}.section-card{border-radius:var(--card-border-radius);background-color:var(--card-background);padding:var(--small-card-padding);box-shadow:var(--shadow-l1);display:flex;align-items:center;gap:20px;--separation:15px}.section-card .section-term{font-size:2.2rem;margin:0;color:var(--card-text-color-main)}.section-card .section-description{font-weight:400;color:var(--card-text-color-secondary);font-size:1.6rem;margin:0}.section-card .section-details{flex-grow:1;display:flex;flex-direction:column;gap:8px}.section-card .section-image img{width:60px;height:60px}.section-card .section-count{color:var(--card-text-color-tertiary);font-size:1.4rem;margin:0;font-weight:700;text-transform:uppercase}.subsection-list{overflow-x:auto}.subsection-list .article-list--tile{display:flex;padding-bottom:15px}.subsection-list .article-list--tile article{width:250px;height:150px;margin-right:20px;flex-shrink:0}.subsection-list .article-list--tile article .article-title{margin:0;font-size:1.8rem}.subsection-list .article-list--tile article .article-details{padding:20px}.not-found-card{background-color:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--card-border-radius);padding:var(--card-padding)}.search-form{position:relative;--button-size:80px}.search-form.widget{--button-size:60px}.search-form.widget label{font-size:1.3rem;top:10px}.search-form.widget input{font-size:1.5rem;padding:30px 20px 15px}.search-form p{position:relative;margin:0}.search-form label{position:absolute;top:15px;inset-inline-start:20px;font-size:1.4rem;color:var(--card-text-color-tertiary)}.search-form input{padding:40px 20px 20px;border-radius:var(--card-border-radius);background-color:var(--card-background);box-shadow:var(--shadow-l1);color:var(--card-text-color-main);width:100%;border:0;-webkit-appearance:none;transition:box-shadow .3s ease;font-size:1.8rem}.search-form input:focus{outline:0;box-shadow:var(--shadow-l2)}.search-form button{position:absolute;inset-inline-end:0;top:0;height:100%;width:var(--button-size);cursor:pointer;background-color:transparent;border:0;padding:0 10px}.search-form button:focus{outline:0}.search-form button:focus svg{stroke-width:2;color:var(--accent-color)}.search-form button svg{color:var(--card-text-color-secondary);stroke-width:1.33;transition:all .3s ease;width:20px;height:20px}a{text-decoration:none;color:var(--accent-color)}a:hover{color:var(--accent-color-darker)}a.link{box-shadow:0 -2px rgba(var(--link-background-color),var(--link-background-opacity))inset;transition:all .3s ease}a.link:hover{box-shadow:0 calc(-1rem * var(--article-line-height))rgba(var(--link-background-color),var(--link-background-opacity-hover))inset}.section-title{text-transform:uppercase;margin-top:0;margin-bottom:10px;display:block;font-size:1.6rem;font-weight:700;color:var(--body-text-color)}.section-title a{color:var(--body-text-color)}:root{--main-top-padding:30px;--card-border-radius:25px;--tag-border-radius:8px;--section-separation:40px;--code-background-color:#f2f1b0e3;--code-text-color:#5c3400e0;--article-line-height:1.5;--pre-background-color:#f0f0f0;--card-padding:10px}:root[data-scheme=dark]{--code-background-color:#00000075;--code-text-color:#e9d88c}a{word-break:break-all}code{word-break:break-all}.article-page .main-article .article-content img{max-width:96%!important;height:auto!important;border-radius:8px}.article-content blockquote{border-left:2px solid #b6820096!important;background:#ffdd1fb9}[data-scheme=dark] blockquote{border-left:5px solid #c56600de!important;background:#3b2d0127}.highlight{max-width:102%!important;background-color:var(--pre-background-color);padding:var(--card-padding);position:relative;border-radius:20px;margin-left:-7px!important;margin-right:-12px;box-shadow:var(--shadow-l1)!important}.highlight:hover .copyCodeButton{opacity:1}[dir=rtl] .highlight{direction:ltr}.highlight pre{margin:initial;padding:0;margin:0;width:auto}[data-scheme=light] .article-content .highlight{background-color:rgba(255,225,107,.635)}[data-scheme=light] .chroma{color:#38230dd6;background-color:rgba(255,247,209,.244)}[data-scheme=dark] .article-content .highlight{background-color:rgba(33,21,3,.741)}[data-scheme=dark] .chroma{color:#f4f0c0;background-color:rgba(38,20,3,.752)}.article-content .highlight:before{content:"";display:block;background:url(../img/code-header.svg);height:18px;width:100%;background-size:57px;background-repeat:no-repeat;margin-bottom:5px;background-position:-1px 2px}[data-scheme=dark] ::selection{color:#fff;background:#444}[data-scheme=dark] ::-moz-selection{color:#fff;background:#444}[data-scheme=light] ::selection{color:#fff;background:#444}[data-scheme=light] ::-moz-selection{color:#fff;background:#444}a{text-decoration:none;color:var(--accent-color)}a:hover{color:var(--accent-color-darker)}a.link{color:#994311;font-weight:500;padding:0 2px;text-decoration:none;cursor:pointer}a.link:hover{text-decoration:none}[data-scheme=dark] a{text-decoration:none}[data-scheme=dark] a:hover{color:var(--accent-color-darker)}[data-scheme=dark] a.link{color:#fff193e0;font-weight:500;padding:0 2px;text-decoration:none;cursor:pointer}[data-scheme=dark] a.link:hover{text-decoration:none}.article-list article .article-image img{width:100%;height:195px;object-fit:cover}@media(min-width:768px){.article-list article .article-image img{height:300px}}@media(min-width:1280px){.article-list article .article-image img{height:355px}}.main-container{min-height:100vh;align-items:flex-start;padding:10px;gap:var(--section-separation);padding-top:var(--main-top-padding)}@media(min-width:768px){.main-container{padding:0 35px}}.container{margin-left:auto;margin-right:auto}.container .left-sidebar{order:-3;max-width:var(--left-sidebar-max-width)}.container .right-sidebar{padding:0 10;order:-1;max-width:var(--right-sidebar-max-width)}@media(min-width:1024px){.container .right-sidebar{display:flex;flex-direction:column}}@media(min-width:768px){.container.extended{max-width:1024px;--left-sidebar-max-width:20%;--right-sidebar-max-width:20%}}@media(min-width:1024px){.container.extended{max-width:1280px;--left-sidebar-max-width:21%;--right-sidebar-max-width:19%}}@media(min-width:1280px){.container.extended{max-width:1536px;--left-sidebar-max-width:21%;--right-sidebar-max-width:18%}}@media(min-width:768px){.container.compact{--left-sidebar-max-width:25%;max-width:768px}}@media(min-width:1024px){.container.compact{max-width:1024px;--left-sidebar-max-width:20%}}@media(min-width:1280px){.container.compact{max-width:1280px}}.article-list--compact article .article-image img{width:var(--image-size);height:var(--image-size);object-fit:cover;border-radius:17%}.menu{padding-left:0;list-style:none;line-height:1.2;flex-direction:column;overflow-x:hidden;overflow-y:scroll;flex-grow:1;background-color:var(--card-background);box-shadow:var(--shadow-l2);display:none;margin:0;border-radius:10px;padding:30px}@media(min-width:1280px){.menu{padding:15px 0}}.menu,.menu .menu-bottom-section{gap:30px}@media(min-width:1280px){.menu,.menu .menu-bottom-section{gap:25px}}.menu.show{display:flex}@media(min-width:768px){.menu{align-items:flex-end;display:flex;background-color:transparent;padding:0;box-shadow:none;margin:0}}.menu li{position:relative;vertical-align:middle;padding:0}@media(min-width:768px){.menu li{width:100%}}.menu li svg{stroke-width:1.53;width:20px;height:20px}.menu li a{height:100%;display:inline-flex;align-items:center;color:var(--body-text-color);gap:var(--menu-icon-separation)}.menu li span{flex:1}.menu li.current a{color:var(--accent-color);font-weight:700}.menu::-webkit-scrollbar{display:none}html ::-webkit-scrollbar{width:20px}html ::-webkit-scrollbar-track{background-color:transparent}html ::-webkit-scrollbar-thumb{background-color:#d6dee1;border-radius:20px;border:6px solid transparent;background-clip:content-box}html ::-webkit-scrollbar-thumb:hover{background-color:#a8bbbf}@media(min-width:1024px){.article-list--compact{display:grid;grid-template-columns:1fr 1fr;background:0 0;box-shadow:none;gap:1rem}.article-list--compact article{background:var(--card-background);border:none;box-shadow:var(--shadow-l2);margin-bottom:8px;border-radius:16px}}@media(min-width:1024px){.article-list--compact.links{display:grid;grid-template-columns:1fr 1fr 1fr;background:0 0;box-shadow:none;gap:1rem}.article-list--compact.links article{background:var(--card-background);border:none;box-shadow:var(--shadow-l2);margin-bottom:8px;border-radius:var(--card-border-radius)}.article-list--compact.links article:nth-child(odd){margin-right:8px}}.welcome{color:var(--card-text-color-main);background:var(--card-background);box-shadow:var(--shadow-l2);border-radius:30px;display:inline-block}.shake{display:inline-block;animation:shake 1s;animation-duration:1s;animation-timing-function:ease;animation-delay:0s;animation-iteration-count:1;animation-direction:normal;animation-fill-mode:none;animation-play-state:running;animation-name:shake;animation-timeline:auto;animation-range-start:normal;animation-range-end:normal;animation-delay:2s}@keyframes shake{0%{transform:rotate(0)}25%{transform:rotate(45deg)scale(1.2)}50%{transform:rotate(0)scale(1.2)}75%{transform:rotate(45deg)scale(1.2)}100%{transform:rotate(0)}}.jump-text1{display:inline-block;animation:jump .5s 1}.jump-text2{display:inline-block;animation:jump .5s 1;animation-delay:.1s}.jump-text3{display:inline-block;animation:jump .5s 1;animation-delay:.2s}.jump-text4{display:inline-block;animation:jump .5s 1;animation-delay:.3s}.jump-text5{display:inline-block;animation:jump .5s 1;animation-delay:.4s}.jump-text6{display:inline-block;animation:jump .5s 1;animation-delay:.5s}.jump-text7{display:inline-block;animation:jump .5s 1;animation-delay:.6s}.jump-text8{display:inline-block;animation:jump .5s 1;animation-delay:.7s}.jump-text9{display:inline-block;animation:jump .5s 1;animation-delay:.9s}@keyframes jump{0%{transform:translateY(0)}50%{transform:translateY(-20px)}100%{transform:translateY(0)}}.back-home{background:var(--card-background);border-radius:var(--tag-border-radius);color:var(--card-text-color-tertiary);margin-right:.1rem;margin-top:24px;display:inline-flex;align-items:center;font-size:1.4rem;text-transform:uppercase;padding:10px 20px 10px 15px;transition:box-shadow .3s ease;box-shadow:var(--shadow-l3)}.back-home:hover{box-shadow:var(--shadow-l2)}.back-home svg{margin-right:5px;width:20px;height:20px}.back-home span{font-weight:500;white-space:nowrap}.main-container .right-sidebar{order:2;max-width:var(--right-sidebar-max-width)}@media(min-width:1024px){.main-container .right-sidebar{display:flex}}main.main{order:1;min-width:0;max-width:100%;flex-grow:1;display:flex;flex-direction:column;gap:var(--section-separation)}@media(min-width:768px){main.main{padding-top:var(--main-top-padding)}} \ No newline at end of file diff --git a/scss/style.min.05e68e3e4d6ec508993ce20a84fa24fc4d88466b321291d24b3afe5c40ec9604.css b/scss/style.min.05e68e3e4d6ec508993ce20a84fa24fc4d88466b321291d24b3afe5c40ec9604.css new file mode 100644 index 00000000..4308e8a7 --- /dev/null +++ b/scss/style.min.05e68e3e4d6ec508993ce20a84fa24fc4d88466b321291d24b3afe5c40ec9604.css @@ -0,0 +1,10 @@ +@charset "UTF-8";/*!* Hugo Theme Stack +* +* @author: Jimmy Cai +* @website: https://jimmycai.com +* @link: https://github.com/CaiJimmy/hugo-theme-stack*/:root{--main-top-padding:35px;--body-background:#f5f5fa;--accent-color:#34495e;--accent-color-darker:#2c3e50;--accent-color-text:#fff;--body-text-color:#707070;--tag-border-radius:4px;--section-separation:40px;--scrollbar-thumb:hsl(0, 0%, 85%);--scrollbar-track:var(--body-background)}@media(min-width:1280px){:root{--main-top-padding:50px}}:root[data-scheme=dark]{--body-background:#303030;--accent-color:#ecf0f1;--accent-color-darker:#bdc3c7;--accent-color-text:#000;--body-text-color:rgba(255, 255, 255, 0.7);--scrollbar-thumb:hsl(0, 0%, 40%);--scrollbar-track:var(--body-background)}:root{--sys-font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", "Droid Sans", "Helvetica Neue";--zh-font-family:"PingFang SC", "Hiragino Sans GB", "Droid Sans Fallback", "Microsoft YaHei";--base-font-family:"Lato", var(--sys-font-family), var(--zh-font-family), sans-serif;--code-font-family:Menlo, Monaco, Consolas, "Courier New", var(--zh-font-family), monospace}:root{--card-background:#fff;--card-background-selected:#eaeaea;--card-text-color-main:#000;--card-text-color-secondary:#747474;--card-text-color-tertiary:#767676;--card-separator-color:rgba(218, 218, 218, 0.5);--card-border-radius:10px;--card-padding:20px;--small-card-padding:25px 20px}@media(min-width:768px){:root{--card-padding:25px}}@media(min-width:1280px){:root{--card-padding:30px}}@media(min-width:768px){:root{--small-card-padding:25px}}:root[data-scheme=dark]{--card-background:#424242;--card-background-selected:rgba(255, 255, 255, 0.16);--card-text-color-main:rgba(255, 255, 255, 0.9);--card-text-color-secondary:rgba(255, 255, 255, 0.7);--card-text-color-tertiary:rgba(255, 255, 255, 0.5);--card-separator-color:rgba(255, 255, 255, 0.12)}:root{--article-font-family:var(--base-font-family);--article-font-size:1.6rem;--article-line-height:1.85}@media(min-width:768px){:root{--article-font-size:1.7rem}}:root{--blockquote-border-size:4px;--blockquote-background-color:rgb(248 248 248);--heading-border-size:4px;--link-background-color:189, 195, 199;--link-background-opacity:0.5;--link-background-opacity-hover:0.7;--pre-background-color:#272822;--pre-text-color:#f8f8f2;--code-background-color:rgba(0, 0, 0, 0.12);--code-text-color:#808080;--table-border-color:#dadada;--tr-even-background-color:#efefee;--kbd-border-color:#dadada}:root[data-scheme=dark]{--code-background-color:#272822;--code-text-color:rgba(255, 255, 255, 0.9);--table-border-color:#717171;--tr-even-background-color:#545454;--blockquote-background-color:rgb(75 75 75)}:root{--shadow-l1:0px 4px 8px rgba(0, 0, 0, 0.04), 0px 0px 2px rgba(0, 0, 0, 0.06), 0px 0px 1px rgba(0, 0, 0, 0.04);--shadow-l2:0px 10px 20px rgba(0, 0, 0, 0.04), 0px 2px 6px rgba(0, 0, 0, 0.04), 0px 0px 1px rgba(0, 0, 0, 0.04);--shadow-l3:0px 10px 20px rgba(0, 0, 0, 0.04), 0px 2px 6px rgba(0, 0, 0, 0.04), 0px 0px 1px rgba(0, 0, 0, 0.04);--shadow-l4:0px 24px 32px rgba(0, 0, 0, 0.04), 0px 16px 24px rgba(0, 0, 0, 0.04), 0px 4px 8px rgba(0, 0, 0, 0.04), + 0px 0px 1px rgba(0, 0, 0, 0.04)}[data-scheme=light]{--pre-text-color:#272822;--pre-background-color:#fafafa}[data-scheme=light] .chroma{color:#272822;background-color:#fafafa}[data-scheme=light] .chroma .err{color:#960050}[data-scheme=light] .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}[data-scheme=light] .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0;width:100%;display:block}[data-scheme=light] .chroma .lntable>tbody{display:block;width:100%}[data-scheme=light] .chroma .lntable>tbody>tr{display:flex;width:100%}[data-scheme=light] .chroma .lntable>tbody>tr>td:last-child{overflow-x:auto}[data-scheme=light] .chroma .hl{display:block;width:100%;background-color:#ffc}[data-scheme=light] .chroma .lnt{margin-right:.4em;padding:0 .4em;color:#7f7f7f;display:block}[data-scheme=light] .chroma .ln{margin-right:.4em;padding:0 .4em;color:#7f7f7f}[data-scheme=light] .chroma .k{color:#00a8c8}[data-scheme=light] .chroma .kc{color:#00a8c8}[data-scheme=light] .chroma .kd{color:#00a8c8}[data-scheme=light] .chroma .kn{color:#f92672}[data-scheme=light] .chroma .kp{color:#00a8c8}[data-scheme=light] .chroma .kr{color:#00a8c8}[data-scheme=light] .chroma .kt{color:#00a8c8}[data-scheme=light] .chroma .n{color:#111}[data-scheme=light] .chroma .na{color:#75af00}[data-scheme=light] .chroma .nb{color:#111}[data-scheme=light] .chroma .bp{color:#111}[data-scheme=light] .chroma .nc{color:#75af00}[data-scheme=light] .chroma .no{color:#00a8c8}[data-scheme=light] .chroma .nd{color:#75af00}[data-scheme=light] .chroma .ni{color:#111}[data-scheme=light] .chroma .ne{color:#75af00}[data-scheme=light] .chroma .nf{color:#75af00}[data-scheme=light] .chroma .fm{color:#111}[data-scheme=light] .chroma .nl{color:#111}[data-scheme=light] .chroma .nn{color:#111}[data-scheme=light] .chroma .nx{color:#75af00}[data-scheme=light] .chroma .py{color:#111}[data-scheme=light] .chroma .nt{color:#f92672}[data-scheme=light] .chroma .nv{color:#111}[data-scheme=light] .chroma .vc{color:#111}[data-scheme=light] .chroma .vg{color:#111}[data-scheme=light] .chroma .vi{color:#111}[data-scheme=light] .chroma .vm{color:#111}[data-scheme=light] .chroma .l{color:#ae81ff}[data-scheme=light] .chroma .ld{color:#d88200}[data-scheme=light] .chroma .s{color:#d88200}[data-scheme=light] .chroma .sa{color:#d88200}[data-scheme=light] .chroma .sb{color:#d88200}[data-scheme=light] .chroma .sc{color:#d88200}[data-scheme=light] .chroma .dl{color:#d88200}[data-scheme=light] .chroma .sd{color:#d88200}[data-scheme=light] .chroma .s2{color:#d88200}[data-scheme=light] .chroma .se{color:#ae81ff}[data-scheme=light] .chroma .sh{color:#d88200}[data-scheme=light] .chroma .si{color:#d88200}[data-scheme=light] .chroma .sx{color:#d88200}[data-scheme=light] .chroma .sr{color:#d88200}[data-scheme=light] .chroma .s1{color:#d88200}[data-scheme=light] .chroma .ss{color:#d88200}[data-scheme=light] .chroma .m{color:#ae81ff}[data-scheme=light] .chroma .mb{color:#ae81ff}[data-scheme=light] .chroma .mf{color:#ae81ff}[data-scheme=light] .chroma .mh{color:#ae81ff}[data-scheme=light] .chroma .mi{color:#ae81ff}[data-scheme=light] .chroma .il{color:#ae81ff}[data-scheme=light] .chroma .mo{color:#ae81ff}[data-scheme=light] .chroma .o{color:#f92672}[data-scheme=light] .chroma .ow{color:#f92672}[data-scheme=light] .chroma .p{color:#111}[data-scheme=light] .chroma .c{color:#75715e}[data-scheme=light] .chroma .ch{color:#75715e}[data-scheme=light] .chroma .cm{color:#75715e}[data-scheme=light] .chroma .c1{color:#75715e}[data-scheme=light] .chroma .cs{color:#75715e}[data-scheme=light] .chroma .cp{color:#75715e}[data-scheme=light] .chroma .cpf{color:#75715e}[data-scheme=light] .chroma .gd{color:#f92672}[data-scheme=light] .chroma .ge{font-style:italic}[data-scheme=light] .chroma .gi{color:#75af00}[data-scheme=light] .chroma .gs{font-weight:700}[data-scheme=light] .chroma .gu{color:#75715e}[data-scheme=dark]{--pre-text-color:#f8f8f2;--pre-background-color:#272822}[data-scheme=dark] .chroma{color:#f8f8f2;background-color:#272822}[data-scheme=dark] .chroma .err{color:#bb0064}[data-scheme=dark] .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}[data-scheme=dark] .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0;width:100%;display:block}[data-scheme=dark] .chroma .lntable>tbody{display:block;width:100%}[data-scheme=dark] .chroma .lntable>tbody>tr{display:flex;width:100%}[data-scheme=dark] .chroma .lntable>tbody>tr>td:last-child{overflow-x:auto}[data-scheme=dark] .chroma .hl{display:block;width:100%;background-color:#ffc}[data-scheme=dark] .chroma .lnt{margin-right:.4em;padding:0 .4em;color:#7f7f7f;display:block}[data-scheme=dark] .chroma .ln{margin-right:.4em;padding:0 .4em;color:#7f7f7f}[data-scheme=dark] .chroma .k{color:#66d9ef}[data-scheme=dark] .chroma .kc{color:#66d9ef}[data-scheme=dark] .chroma .kd{color:#66d9ef}[data-scheme=dark] .chroma .kn{color:#f92672}[data-scheme=dark] .chroma .kp{color:#66d9ef}[data-scheme=dark] .chroma .kr{color:#66d9ef}[data-scheme=dark] .chroma .kt{color:#66d9ef}[data-scheme=dark] .chroma .n{color:#f8f8f2}[data-scheme=dark] .chroma .na{color:#a6e22e}[data-scheme=dark] .chroma .nb{color:#f8f8f2}[data-scheme=dark] .chroma .bp{color:#f8f8f2}[data-scheme=dark] .chroma .nc{color:#a6e22e}[data-scheme=dark] .chroma .no{color:#66d9ef}[data-scheme=dark] .chroma .nd{color:#a6e22e}[data-scheme=dark] .chroma .ni{color:#f8f8f2}[data-scheme=dark] .chroma .ne{color:#a6e22e}[data-scheme=dark] .chroma .nf{color:#a6e22e}[data-scheme=dark] .chroma .fm{color:#f8f8f2}[data-scheme=dark] .chroma .nl{color:#f8f8f2}[data-scheme=dark] .chroma .nn{color:#f8f8f2}[data-scheme=dark] .chroma .nx{color:#a6e22e}[data-scheme=dark] .chroma .py{color:#f8f8f2}[data-scheme=dark] .chroma .nt{color:#f92672}[data-scheme=dark] .chroma .nv{color:#f8f8f2}[data-scheme=dark] .chroma .vc{color:#f8f8f2}[data-scheme=dark] .chroma .vg{color:#f8f8f2}[data-scheme=dark] .chroma .vi{color:#f8f8f2}[data-scheme=dark] .chroma .vm{color:#f8f8f2}[data-scheme=dark] .chroma .l{color:#ae81ff}[data-scheme=dark] .chroma .ld{color:#e6db74}[data-scheme=dark] .chroma .s{color:#e6db74}[data-scheme=dark] .chroma .sa{color:#e6db74}[data-scheme=dark] .chroma .sb{color:#e6db74}[data-scheme=dark] .chroma .sc{color:#e6db74}[data-scheme=dark] .chroma .dl{color:#e6db74}[data-scheme=dark] .chroma .sd{color:#e6db74}[data-scheme=dark] .chroma .s2{color:#e6db74}[data-scheme=dark] .chroma .se{color:#ae81ff}[data-scheme=dark] .chroma .sh{color:#e6db74}[data-scheme=dark] .chroma .si{color:#e6db74}[data-scheme=dark] .chroma .sx{color:#e6db74}[data-scheme=dark] .chroma .sr{color:#e6db74}[data-scheme=dark] .chroma .s1{color:#e6db74}[data-scheme=dark] .chroma .ss{color:#e6db74}[data-scheme=dark] .chroma .m{color:#ae81ff}[data-scheme=dark] .chroma .mb{color:#ae81ff}[data-scheme=dark] .chroma .mf{color:#ae81ff}[data-scheme=dark] .chroma .mh{color:#ae81ff}[data-scheme=dark] .chroma .mi{color:#ae81ff}[data-scheme=dark] .chroma .il{color:#ae81ff}[data-scheme=dark] .chroma .mo{color:#ae81ff}[data-scheme=dark] .chroma .o{color:#f92672}[data-scheme=dark] .chroma .ow{color:#f92672}[data-scheme=dark] .chroma .p{color:#f8f8f2}[data-scheme=dark] .chroma .c{color:#75715e}[data-scheme=dark] .chroma .ch{color:#75715e}[data-scheme=dark] .chroma .cm{color:#75715e}[data-scheme=dark] .chroma .c1{color:#75715e}[data-scheme=dark] .chroma .cs{color:#75715e}[data-scheme=dark] .chroma .cp{color:#75715e}[data-scheme=dark] .chroma .cpf{color:#75715e}[data-scheme=dark] .chroma .gd{color:#f92672}[data-scheme=dark] .chroma .ge{font-style:italic}[data-scheme=dark] .chroma .gi{color:#a6e22e}[data-scheme=dark] .chroma .gs{font-weight:700}[data-scheme=dark] .chroma .gu{color:#75715e}:root{--menu-icon-separation:40px;--container-padding:15px;--widget-separation:var(--section-separation)}.container{margin-left:auto;margin-right:auto}.container .left-sidebar{order:-3;max-width:var(--left-sidebar-max-width)}.container .right-sidebar{order:-1;max-width:var(--right-sidebar-max-width)}@media(min-width:1024px){.container .right-sidebar{display:flex}}@media(min-width:768px){.container.extended{max-width:1024px;--left-sidebar-max-width:25%;--right-sidebar-max-width:30%}}@media(min-width:1024px){.container.extended{max-width:1280px;--left-sidebar-max-width:20%;--right-sidebar-max-width:30%}}@media(min-width:1280px){.container.extended{max-width:1536px;--left-sidebar-max-width:15%;--right-sidebar-max-width:25%}}@media(min-width:768px){.container.compact{--left-sidebar-max-width:25%;max-width:768px}}@media(min-width:1024px){.container.compact{max-width:1024px;--left-sidebar-max-width:20%}}@media(min-width:1280px){.container.compact{max-width:1280px}}.flex{display:flex;flex-direction:row}.flex.column{flex-direction:column}.flex.on-phone--column{flex-direction:column}@media(min-width:768px){.flex.on-phone--column{flex-direction:unset}}.flex .full-width{width:100%}main.main{order:-2;min-width:0;max-width:100%;flex-grow:1;display:flex;flex-direction:column;gap:var(--section-separation)}@media(min-width:768px){main.main{padding-top:var(--main-top-padding)}}.main-container{min-height:100vh;align-items:flex-start;padding:0 15px;gap:var(--section-separation);padding-top:var(--main-top-padding)}@media(min-width:768px){.main-container{padding:0 20px}}/*!normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css*/html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}/*!* Hamburgers +* @description Tasty CSS-animated hamburgers +* @author Jonathan Suh @jonsuh +* @site https://jonsuh.com/hamburgers +* @link https://github.com/jonsuh/hamburgers*/.hamburger{padding-top:10px;display:inline-block;cursor:pointer;transition-property:opacity,filter;transition-duration:.15s;transition-timing-function:linear;font:inherit;color:inherit;text-transform:none;background-color:transparent;border:0;margin:0;overflow:visible}.hamburger:hover{opacity:.7}.hamburger.is-active:hover{opacity:.7}.hamburger.is-active .hamburger-inner,.hamburger.is-active .hamburger-inner::before,.hamburger.is-active .hamburger-inner::after{background-color:#000}.hamburger-box{width:30px;height:24px;display:inline-block;position:relative}.hamburger-inner{display:block;top:50%;margin-top:-2px}.hamburger-inner,.hamburger-inner::before,.hamburger-inner::after{width:30px;height:2px;background-color:var(--card-text-color-main);border-radius:4px;position:absolute;transition-property:transform;transition-duration:.15s;transition-timing-function:ease}.hamburger-inner::before,.hamburger-inner::after{content:"";display:block}.hamburger-inner::before{top:-10px}.hamburger-inner::after{bottom:-10px}.hamburger--spin .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin .hamburger-inner::before{transition:top .1s .25s ease-in,opacity .1s ease-in}.hamburger--spin .hamburger-inner::after{transition:bottom .1s .25s ease-in,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin.is-active .hamburger-inner{transform:rotate(225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin.is-active .hamburger-inner::before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s .12s ease-out}.hamburger--spin.is-active .hamburger-inner::after{bottom:0;transform:rotate(-90deg);transition:bottom .1s ease-out,transform .22s .12s cubic-bezier(.215,.61,.355,1)}#toggle-menu{background:0 0;border:none;position:absolute;right:0;top:0;z-index:2;cursor:pointer;outline:none}[dir=rtl] #toggle-menu{left:0;right:auto}@media(min-width:768px){#toggle-menu{display:none}}#toggle-menu.is-active .hamburger-inner,#toggle-menu.is-active .hamburger-inner::before,#toggle-menu.is-active .hamburger-inner::after{background-color:var(--accent-color)}#main-menu{list-style:none;overflow-y:auto;flex-grow:1;font-size:1.4rem;background-color:var(--card-background);box-shadow:var(--shadow-l1);display:none;margin:0 calc(var(--container-padding) * -1);padding:30px}@media(min-width:1280px){#main-menu{padding:15px 0}}#main-menu,#main-menu .menu-bottom-section ol{flex-direction:column;gap:30px}@media(min-width:1280px){#main-menu,#main-menu .menu-bottom-section ol{gap:25px}}#main-menu.show{display:flex}@media(min-width:768px){#main-menu{align-items:flex-end;display:flex;background-color:transparent;padding:0;box-shadow:none;margin:0}}#main-menu li{position:relative;vertical-align:middle;padding:0}@media(min-width:768px){#main-menu li{width:100%}}#main-menu li svg{stroke:currentColor;stroke-width:1.33;width:20px;height:20px}#main-menu li a{height:100%;display:inline-flex;align-items:center;color:var(--body-text-color);gap:var(--menu-icon-separation)}#main-menu li span{flex:1}#main-menu li.current a{color:var(--accent-color);font-weight:700}#main-menu li.menu-bottom-section{margin-top:auto}#main-menu li.menu-bottom-section ol{display:flex;padding-left:0}.menu-social{list-style:none;padding:0;margin:0;display:flex;flex-direction:row;gap:10px}.menu-social svg{width:24px;height:24px;stroke:var(--body-text-color);stroke-width:1.33}.article-list{display:flex;flex-direction:column;gap:var(--section-separation)}.article-list article{display:flex;flex-direction:column;background-color:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--card-border-radius);overflow:hidden;transition:box-shadow .3s ease}.article-list article:hover{box-shadow:var(--shadow-l2)}.article-list article .article-image img{width:100%;height:150px;object-fit:cover}@media(min-width:768px){.article-list article .article-image img{height:200px}}@media(min-width:1280px){.article-list article .article-image img{height:250px}}.article-list article:nth-child(5n+1) .article-category a{background:#8ea885;color:#fff}.article-list article:nth-child(5n+2) .article-category a{background:#df7988;color:#fff}.article-list article:nth-child(5n+3) .article-category a{background:#0177b8;color:#fff}.article-list article:nth-child(5n+4) .article-category a{background:#ffb900;color:#fff}.article-list article:nth-child(5n+5) .article-category a{background:#6b69d6;color:#fff}.article-details{display:flex;flex-direction:column;justify-content:center;padding:var(--card-padding);gap:15px}.article-title{font-family:var(--article-font-family);font-weight:600;margin:0;color:var(--card-text-color-main);font-size:2.2rem}@media(min-width:1280px){.article-title{font-size:2.4rem}}.article-title a{color:var(--card-text-color-main)}.article-title a:hover{color:var(--card-text-color-main)}.article-subtitle{font-weight:400;color:var(--card-text-color-secondary);line-height:1.5;margin:0;font-size:1.75rem}@media(min-width:1280px){.article-subtitle{font-size:2rem}}.article-title-wrapper{display:flex;flex-direction:column;gap:8px}.article-time,.article-translations{display:flex;color:var(--card-text-color-tertiary);gap:15px}.article-time svg,.article-translations svg{vertical-align:middle;width:20px;height:20px;stroke-width:1.33;flex-shrink:0}.article-time time,.article-time a,.article-translations time,.article-translations a{font-size:1.4rem;color:var(--card-text-color-tertiary)}.article-time>div,.article-translations>div{display:inline-flex;align-items:center;gap:15px}.article-time{flex-wrap:wrap}.article-translations>div{flex-wrap:wrap}.article-category,.article-tags{display:flex;gap:10px;flex-wrap:wrap}.article-category a,.article-tags a{color:var(--accent-color-text);background-color:var(--accent-color);padding:8px 16px;border-radius:var(--tag-border-radius);display:inline-block;font-size:1.4rem;transition:background-color .5s ease}.article-category a:hover,.article-tags a:hover{color:var(--accent-color-text);background-color:var(--accent-color-darker)}.article-list--compact{border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);background-color:var(--card-background);--image-size:50px}@media(min-width:768px){.article-list--compact{--image-size:60px}}.article-list--compact article>a{display:flex;align-items:center;padding:var(--small-card-padding);gap:15px}.article-list--compact article:not(:last-of-type){border-bottom:1.5px solid var(--card-separator-color)}.article-list--compact article .article-details{flex-grow:1;padding:0;min-height:var(--image-size);gap:10px}.article-list--compact article .article-title{margin:0;font-size:1.6rem}@media(min-width:768px){.article-list--compact article .article-title{font-size:1.8rem}}.article-list--compact article .article-image img{width:var(--image-size);height:var(--image-size);object-fit:cover}.article-list--compact article .article-time{font-size:1.4rem}.article-list--compact article .article-preview{font-size:1.4rem;color:var(--card-text-color-tertiary);margin-top:10px;line-height:1.5}.article-list--tile article{border-radius:var(--card-border-radius);overflow:hidden;position:relative;height:350px;width:250px;box-shadow:var(--shadow-l1);transition:box-shadow .3s ease;background-color:var(--card-background)}.article-list--tile article:hover{box-shadow:var(--shadow-l2)}.article-list--tile article.has-image .article-details{background-color:rgba(0,0,0,.25)}.article-list--tile article.has-image .article-title{color:#fff}.article-list--tile article .article-image{position:absolute;top:0;left:0;width:100%;height:100%}.article-list--tile article .article-image img{width:100%;height:100%;object-fit:cover}.article-list--tile article .article-details{border-radius:var(--card-border-radius);position:relative;height:100%;width:100%;display:flex;flex-direction:column;justify-content:flex-end;z-index:2;padding:15px}@media(min-width:640px){.article-list--tile article .article-details{padding:20px}}.article-list--tile article .article-title{font-size:2rem;font-weight:500;color:var(--card-text-color-main)}@media(min-width:640px){.article-list--tile article .article-title{font-size:2.2rem}}.widget{display:flex;flex-direction:column}.widget .widget-icon svg{width:32px;height:32px;stroke-width:1.6;color:var(--body-text-color)}.tagCloud .tagCloud-tags{display:flex;flex-wrap:wrap;gap:10px}.tagCloud .tagCloud-tags a{background:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--tag-border-radius);padding:8px 20px;color:var(--card-text-color-main);font-size:1.4rem;transition:box-shadow .3s ease}.tagCloud .tagCloud-tags a:hover{box-shadow:var(--shadow-l2)}.widget.archives .widget-archive--list{border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);background-color:var(--card-background)}.widget.archives .archives-year:not(:last-of-type){border-bottom:1.5px solid var(--card-separator-color)}.widget.archives .archives-year a{font-size:1.4rem;padding:18px 25px;display:flex}.widget.archives .archives-year a span.year{flex:1;color:var(--card-text-color-main);font-weight:700}.widget.archives .archives-year a span.count{color:var(--card-text-color-tertiary)}footer.site-footer{padding:20px 0 var(--section-separation);font-size:1.4rem;line-height:1.75}footer.site-footer:before{content:"";display:block;height:3px;width:50px;background:var(--body-text-color);margin-bottom:20px}footer.site-footer .copyright{color:var(--accent-color);font-weight:700;margin-bottom:5px}footer.site-footer .powerby{color:var(--body-text-color);font-weight:400;font-size:1.2rem}footer.site-footer .powerby a{color:var(--body-text-color)}.pagination{display:flex;background-color:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--card-border-radius);overflow:hidden;flex-wrap:wrap}.pagination .page-link{padding:16px 32px;display:inline-flex;color:var(--card-text-color-secondary)}.pagination .page-link.current{font-weight:700;background-color:var(--card-background-selected);color:var(--card-text-color-main)}@media(min-width:768px){.sidebar.sticky{position:sticky}}.left-sidebar{display:flex;flex-direction:column;flex-shrink:0;align-self:stretch;gap:var(--sidebar-element-separation);max-width:none;width:100%;position:relative;--sidebar-avatar-size:100px;--sidebar-element-separation:20px;--emoji-size:40px;--emoji-font-size:20px}@media(min-width:768px){.left-sidebar{width:auto;padding-top:var(--main-top-padding);padding-bottom:var(--main-top-padding);max-height:100vh}}@media(min-width:1536px){.left-sidebar{--sidebar-avatar-size:120px;--sidebar-element-separation:25px;--emoji-size:40px}}.left-sidebar.sticky{top:0}.left-sidebar.compact{--sidebar-avatar-size:80px;--emoji-size:30px;--emoji-font-size:15px}@media(min-width:1024px){.left-sidebar.compact header{flex-direction:row}}.left-sidebar.compact header .site-meta{gap:5px}.left-sidebar.compact header .site-name{font-size:1.4rem}@media(min-width:1536px){.left-sidebar.compact header .site-name{font-size:1.75rem}}.left-sidebar.compact header .site-description{font-size:1.4rem}.right-sidebar{width:100%;display:none;flex-direction:column;gap:var(--widget-separation)}.right-sidebar.sticky{top:0}@media(min-width:1024px){.right-sidebar{padding-top:var(--main-top-padding);padding-bottom:var(--main-top-padding)}}.sidebar header{z-index:1;transition:box-shadow .5s ease;display:flex;flex-direction:column;gap:var(--sidebar-element-separation)}@media(min-width:768px){.sidebar header{padding:0}}.sidebar header .site-avatar{position:relative;margin:0;width:var(--sidebar-avatar-size);height:var(--sidebar-avatar-size);flex-shrink:0}.sidebar header .site-avatar .site-logo{width:100%;height:100%;border-radius:100%;box-shadow:var(--shadow-l1)}.sidebar header .site-avatar .emoji{position:absolute;width:var(--emoji-size);height:var(--emoji-size);line-height:var(--emoji-size);border-radius:100%;bottom:0;right:0;text-align:center;font-size:var(--emoji-font-size);background-color:var(--card-background);box-shadow:var(--shadow-l2)}.sidebar header .site-meta{display:flex;flex-direction:column;gap:10px;justify-content:center}.sidebar header .site-name{color:var(--accent-color);margin:0;font-size:1.6rem}@media(min-width:1536px){.sidebar header .site-name{font-size:1.8rem}}.sidebar header .site-description{color:var(--body-text-color);font-weight:400;margin:0;font-size:1.4rem}@media(min-width:1536px){.sidebar header .site-description{font-size:1.6rem}}[data-scheme=dark] #dark-mode-toggle{color:var(--accent-color);font-weight:700}[data-scheme=dark] #dark-mode-toggle .icon-tabler-toggle-left{display:none}[data-scheme=dark] #dark-mode-toggle .icon-tabler-toggle-right{display:unset}#dark-mode-toggle{margin-top:auto;color:var(--body-text-color);display:flex;align-items:center;cursor:pointer;gap:var(--menu-icon-separation)}#dark-mode-toggle .icon-tabler-toggle-right{display:none}#i18n-switch{color:var(--body-text-color);display:inline-flex;align-content:center;gap:var(--menu-icon-separation)}#i18n-switch select{border:0;background-color:transparent;color:var(--body-text-color)}#i18n-switch select option{color:var(--card-text-color-main);background-color:var(--card-background)}html{font-size:62.5%;overflow-y:scroll}*{box-sizing:border-box}body{background:var(--body-background);margin:0;font-family:var(--base-font-family);font-size:1.6rem;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{scrollbar-width:auto;scrollbar-color:var(--scrollbar-thumb)transparent}::-webkit-scrollbar{height:auto}::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb)}::-webkit-scrollbar-track{background-color:transparent}.article-page.hide-sidebar-sm .left-sidebar{display:none}@media(min-width:768px){.article-page.hide-sidebar-sm .left-sidebar{display:inherit}}.article-page .main-article{background:var(--card-background);border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);overflow:hidden}.article-page .main-article .article-header .article-image img{height:auto;width:100%;max-height:45vh;object-fit:cover}.article-page .main-article .article-header .article-details{padding:var(--card-padding);padding-bottom:0}.article-page .main-article .article-header .article-subtitle{font-weight:300;color:var(--card-text-color-secondary);line-height:1.3;margin:0;font-size:1.95rem}.article-page .main-article .article-content{margin:var(--card-padding)0;color:var(--card-text-color-main)}.article-page .main-article .article-content .footnotes{font-family:var(--base-font-family)}.article-page .main-article .article-content img{max-width:100%;height:auto}.article-page .main-article .article-footer{margin:var(--card-padding);margin-top:0}.article-page .main-article .article-footer section:not(:first-child){margin-top:var(--card-padding)}.article-page .main-article .article-footer section{color:var(--card-text-color-tertiary);text-transform:uppercase;display:flex;align-items:center;font-size:1.4rem;gap:15px}.article-page .main-article .article-footer section svg{width:20px;height:20px;stroke-width:1.33}.article-page .main-article .article-footer .article-tags{flex-wrap:wrap;text-transform:unset}.article-page .main-article .article-footer .article-copyright a,.article-page .main-article .article-footer .article-lastmod a{color:var(--body-text-color)}.article-page .main-article .article-footer .article-copyright a.link,.article-page .main-article .article-footer .article-lastmod a.link{box-shadow:unset}.widget--toc{background-color:var(--card-background);border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);display:flex;flex-direction:column;color:var(--card-text-color-main);overflow:hidden}.widget--toc ::-webkit-scrollbar-thumb{background-color:var(--card-separator-color)}.widget--toc #TableOfContents{overflow-x:auto;max-height:75vh}.widget--toc #TableOfContents ol,.widget--toc #TableOfContents ul{margin:0;padding:0}.widget--toc #TableOfContents ol{list-style-type:none;counter-reset:item}.widget--toc #TableOfContents ol li a:first-of-type::before{counter-increment:item;content:counters(item,".")". ";font-weight:700;margin-right:5px}.widget--toc #TableOfContents>ul{padding:0 1em}.widget--toc #TableOfContents li{margin:15px 0 15px 25px;padding:5px}.widget--toc #TableOfContents li>ol,.widget--toc #TableOfContents li>ul{margin-top:10px;padding-left:10px;margin-bottom:-5px}.widget--toc #TableOfContents li>ol>li:last-child,.widget--toc #TableOfContents li>ul>li:last-child{margin-bottom:0}.widget--toc #TableOfContents li.active-class>a{border-left:var(--heading-border-size)solid var(--accent-color);font-weight:700}.widget--toc #TableOfContents ul li.active-class>a{display:block}.widget--toc #TableOfContents>ul>li.active-class>a{margin-left:calc(-25px - 1em);padding-left:calc(25px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li.active-class>a{margin-left:calc(-9px - 1em);padding-left:calc(9px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li.active-class>a{margin-left:calc(-60px - 1em);padding-left:calc(60px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li.active-class>a{margin-left:calc(-44px - 1em);padding-left:calc(44px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li>ul>li.active-class>a{margin-left:calc(-95px - 1em);padding-left:calc(95px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li>ol>li.active-class>a{margin-left:calc(-79px - 1em);padding-left:calc(79px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li>ul>li>ul>li.active-class>a{margin-left:calc(-130px - 1em);padding-left:calc(130px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li>ol>li>ol>li.active-class>a{margin-left:calc(-114px - 1em);padding-left:calc(114px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li>ul>li>ul>li>ul>li.active-class>a{margin-left:calc(-165px - 1em);padding-left:calc(165px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li>ol>li>ol>li>ol>li.active-class>a{margin-left:calc(-149px - 1em);padding-left:calc(149px + 1em - var(--heading-border-size));display:block}.related-content{overflow-x:auto;padding-bottom:15px}.related-content>.flex{float:left}.related-content article{margin-right:15px;flex-shrink:0;overflow:hidden;width:250px;height:150px}.related-content article .article-title{font-size:1.4rem;margin:0}.related-content article.has-image .article-details{padding:20px}.article-content{font-family:var(--article-font-family);font-size:var(--article-font-size);padding:0 var(--card-padding);line-height:var(--article-line-height)}.article-content>p{margin:1.5em 0}.article-content h1,.article-content h2,.article-content h3,.article-content h4,.article-content h5,.article-content h6{margin-inline-start:calc((var(--card-padding)) * -1);padding-inline-start:calc(var(--card-padding) - var(--heading-border-size));border-inline-start:var(--heading-border-size)solid var(--accent-color)}.article-content figure{text-align:center}.article-content figure figcaption{font-size:1.4rem;color:var(--card-text-color-secondary)}.article-content blockquote{position:relative;margin:1.5em 0;border-inline-start:var(--blockquote-border-size)solid var(--card-separator-color);padding:15px calc(var(--card-padding) - var(--blockquote-border-size));background-color:var(--blockquote-background-color)}.article-content blockquote .cite{display:block;text-align:right;font-size:.75em}.article-content blockquote .cite a{text-decoration:underline}.article-content hr{width:100px;margin:40px auto;background:var(--card-text-color-tertiary);height:2px;border:0;opacity:.55}.article-content code{color:var(--code-text-color);background-color:var(--code-background-color);padding:2px 4px;border-radius:var(--tag-border-radius);font-family:var(--code-font-family)}.article-content a,.article-content code{word-break:break-word}.article-content .gallery{position:relative;display:flex;flex-direction:row;justify-content:center;margin:1.5em 0;gap:10px}.article-content .gallery figure{margin:0}.article-content pre{overflow-x:auto;display:block;background-color:var(--pre-background-color);color:var(--pre-text-color);font-family:var(--code-font-family);line-height:1.428571429;word-break:break-all;padding:var(--card-padding)}[dir=rtl] .article-content pre{direction:ltr}.article-content pre code{color:unset;border:none;background:0 0;padding:0}.article-content .highlight{background-color:var(--pre-background-color);padding:var(--card-padding);position:relative}.article-content .highlight:hover .copyCodeButton{opacity:1}[dir=rtl] .article-content .highlight{direction:ltr}.article-content .highlight pre{margin:initial;padding:0;margin:0;width:auto}.article-content .copyCodeButton{position:absolute;top:calc(var(--card-padding));right:calc(var(--card-padding));background:var(--card-background);border:none;box-shadow:var(--shadow-l2);border-radius:var(--tag-border-radius);padding:8px 16px;color:var(--card-text-color-main);cursor:pointer;font-size:14px;opacity:0;transition:opacity .3s ease}.article-content .table-wrapper{padding:0 var(--card-padding);overflow-x:auto;display:block}.article-content table{width:100%;border-collapse:collapse;border-spacing:0;margin-bottom:1.5em;font-size:.96em}.article-content th,.article-content td{text-align:left;padding:4px 8px 4px 10px;border:1px solid var(--table-border-color)}.article-content td{vertical-align:top}.article-content tr:nth-child(even){background-color:var(--tr-even-background-color)}.article-content .twitter-tweet{color:var(--card-text-color-main)}.article-content .video-wrapper{position:relative;width:100%;height:0;padding-bottom:56.25%;overflow:hidden}.article-content .video-wrapper>iframe,.article-content .video-wrapper>video{position:absolute;width:100%;height:100%;left:0;top:0;border:0}.article-content .gitlab-embed-snippets{margin:0!important}.article-content .gitlab-embed-snippets .file-holder.snippet-file-content{margin-block-end:0!important;margin-block-start:0!important;margin-left:calc((var(--card-padding)) * -1)!important;margin-right:calc((var(--card-padding)) * -1)!important;padding:0 var(--card-padding)!important}.article-content blockquote,.article-content figure,.article-content .highlight,.article-content pre,.article-content .gallery,.article-content .video-wrapper,.article-content .table-wrapper,.article-content .s_video_simple{margin-left:calc((var(--card-padding)) * -1);margin-right:calc((var(--card-padding)) * -1);width:calc(100% + var(--card-padding) * 2)}.article-content .katex-display>.katex{overflow-x:auto;overflow-y:hidden}.article-content kbd{border:1px solid var(--kbd-border-color);font-weight:700;font-size:.9em;line-height:1;padding:2px 4px;border-radius:4px;display:inline-block}.section-card{border-radius:var(--card-border-radius);background-color:var(--card-background);padding:var(--small-card-padding);box-shadow:var(--shadow-l1);display:flex;align-items:center;gap:20px;--separation:15px}.section-card .section-term{font-size:2.2rem;margin:0;color:var(--card-text-color-main)}.section-card .section-description{font-weight:400;color:var(--card-text-color-secondary);font-size:1.6rem;margin:0}.section-card .section-details{flex-grow:1;display:flex;flex-direction:column;gap:8px}.section-card .section-image img{width:60px;height:60px}.section-card .section-count{color:var(--card-text-color-tertiary);font-size:1.4rem;margin:0;font-weight:700;text-transform:uppercase}.subsection-list{overflow-x:auto}.subsection-list .article-list--tile{display:flex;padding-bottom:15px}.subsection-list .article-list--tile article{width:250px;height:150px;margin-right:20px;flex-shrink:0}.subsection-list .article-list--tile article .article-title{margin:0;font-size:1.8rem}.subsection-list .article-list--tile article .article-details{padding:20px}.not-found-card{background-color:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--card-border-radius);padding:var(--card-padding)}.search-form{position:relative;--button-size:80px}.search-form.widget{--button-size:60px}.search-form.widget label{font-size:1.3rem;top:10px}.search-form.widget input{font-size:1.5rem;padding:30px 20px 15px}.search-form p{position:relative;margin:0}.search-form label{position:absolute;top:15px;inset-inline-start:20px;font-size:1.4rem;color:var(--card-text-color-tertiary)}.search-form input{padding:40px 20px 20px;border-radius:var(--card-border-radius);background-color:var(--card-background);box-shadow:var(--shadow-l1);color:var(--card-text-color-main);width:100%;border:0;-webkit-appearance:none;transition:box-shadow .3s ease;font-size:1.8rem}.search-form input:focus{outline:0;box-shadow:var(--shadow-l2)}.search-form button{position:absolute;inset-inline-end:0;top:0;height:100%;width:var(--button-size);cursor:pointer;background-color:transparent;border:0;padding:0 10px}.search-form button:focus{outline:0}.search-form button:focus svg{stroke-width:2;color:var(--accent-color)}.search-form button svg{color:var(--card-text-color-secondary);stroke-width:1.33;transition:all .3s ease;width:20px;height:20px}a{text-decoration:none;color:var(--accent-color)}a:hover{color:var(--accent-color-darker)}a.link{box-shadow:0 -2px rgba(var(--link-background-color),var(--link-background-opacity))inset;transition:all .3s ease}a.link:hover{box-shadow:0 calc(-1rem * var(--article-line-height))rgba(var(--link-background-color),var(--link-background-opacity-hover))inset}.section-title{text-transform:uppercase;margin-top:0;margin-bottom:10px;display:block;font-size:1.6rem;font-weight:700;color:var(--body-text-color)}.section-title a{color:var(--body-text-color)}:root{--main-top-padding:30px;--card-border-radius:25px;--tag-border-radius:8px;--section-separation:40px;--code-background-color:#f2f1b0e3;--code-text-color:#5c3400e0;--article-line-height:1.5;--pre-background-color:#f0f0f0;--card-padding:10px}:root[data-scheme=dark]{--code-background-color:#00000075;--code-text-color:#e9d88c}a{word-break:break-all}code{word-break:break-all}.article-page .main-article .article-content img{max-width:96%!important;height:auto!important;border-radius:8px}.article-content blockquote{border-left:2px solid #b6820096!important;background:#ffdd1fb9}[data-scheme=dark] blockquote{border-left:5px solid #c56600de!important;background:#3b2d0127}.highlight{max-width:102%!important;background-color:var(--pre-background-color);padding:var(--card-padding);position:relative;border-radius:20px;margin-left:-7px!important;margin-right:-12px;box-shadow:var(--shadow-l1)!important}.highlight:hover .copyCodeButton{opacity:1}[dir=rtl] .highlight{direction:ltr}.highlight pre{margin:initial;padding:0;margin:0;width:auto}[data-scheme=light] .article-content .highlight{background-color:rgba(255,225,107,.635)}[data-scheme=light] .chroma{color:#38230dd6;background-color:rgba(255,247,209,.244)}[data-scheme=dark] .article-content .highlight{background-color:rgba(33,21,3,.741)}[data-scheme=dark] .chroma{color:#f4f0c0;background-color:rgba(38,20,3,.752)}.article-content .highlight:before{content:"";display:block;background:url(../img/code-header.svg);height:18px;width:100%;background-size:57px;background-repeat:no-repeat;margin-bottom:5px;background-position:-1px 2px}[data-scheme=dark] ::selection{color:#fff;background:#444}[data-scheme=dark] ::-moz-selection{color:#fff;background:#444}[data-scheme=light] ::selection{color:#fff;background:#444}[data-scheme=light] ::-moz-selection{color:#fff;background:#444}a{text-decoration:none;color:var(--accent-color)}a:hover{color:var(--accent-color-darker)}a.link{color:#994311;font-weight:500;padding:0 2px;text-decoration:none;cursor:pointer}a.link:hover{text-decoration:none}[data-scheme=dark] a{text-decoration:none}[data-scheme=dark] a:hover{color:var(--accent-color-darker)}[data-scheme=dark] a.link{color:#fff193e0;font-weight:500;padding:0 2px;text-decoration:none;cursor:pointer}[data-scheme=dark] a.link:hover{text-decoration:none}.article-list article .article-image img{width:100%;height:195px;object-fit:cover}@media(min-width:768px){.article-list article .article-image img{height:300px}}@media(min-width:1280px){.article-list article .article-image img{height:355px}}.main-container{min-height:100vh;align-items:flex-start;padding:10px;gap:var(--section-separation);padding-top:var(--main-top-padding)}@media(min-width:768px){.main-container{padding:0 35px}}.container{margin-left:auto;margin-right:auto}.container .left-sidebar{order:-3;max-width:var(--left-sidebar-max-width)}.container .right-sidebar{padding-left:15px;order:-1;max-width:var(--right-sidebar-max-width)}@media(min-width:1024px){.container .right-sidebar{display:flex;flex-direction:column}}@media(min-width:768px){.container.extended{max-width:1024px;--left-sidebar-max-width:20%;--right-sidebar-max-width:20%}}@media(min-width:1024px){.container.extended{max-width:1280px;--left-sidebar-max-width:21%;--right-sidebar-max-width:19%}}@media(min-width:1280px){.container.extended{max-width:1536px;--left-sidebar-max-width:21%;--right-sidebar-max-width:18%}}@media(min-width:768px){.container.compact{--left-sidebar-max-width:25%;max-width:768px}}@media(min-width:1024px){.container.compact{max-width:1024px;--left-sidebar-max-width:20%}}@media(min-width:1280px){.container.compact{max-width:1280px}}.article-list--compact article .article-image img{width:var(--image-size);height:var(--image-size);object-fit:cover;border-radius:17%}.menu{padding-left:0;list-style:none;line-height:1.2;flex-direction:column;overflow-x:hidden;overflow-y:scroll;flex-grow:1;background-color:var(--card-background);box-shadow:var(--shadow-l2);display:none;margin:0;border-radius:10px;padding:30px}@media(min-width:1280px){.menu{padding:15px 0}}.menu,.menu .menu-bottom-section{gap:30px}@media(min-width:1280px){.menu,.menu .menu-bottom-section{gap:25px}}.menu.show{display:flex}@media(min-width:768px){.menu{align-items:flex-end;display:flex;background-color:transparent;padding:0;box-shadow:none;margin:0}}.menu li{position:relative;vertical-align:middle;padding:0}@media(min-width:768px){.menu li{width:100%}}.menu li svg{stroke-width:1.53;width:20px;height:20px}.menu li a{height:100%;display:inline-flex;align-items:center;color:var(--body-text-color);gap:var(--menu-icon-separation)}.menu li span{flex:1}.menu li.current a{color:var(--accent-color);font-weight:700}.menu::-webkit-scrollbar{display:none}html ::-webkit-scrollbar{width:20px}html ::-webkit-scrollbar-track{background-color:transparent}html ::-webkit-scrollbar-thumb{background-color:#d6dee1;border-radius:20px;border:6px solid transparent;background-clip:content-box}html ::-webkit-scrollbar-thumb:hover{background-color:#a8bbbf}@media(min-width:1024px){.article-list--compact{display:grid;grid-template-columns:1fr 1fr;background:0 0;box-shadow:none;gap:1rem}.article-list--compact article{background:var(--card-background);border:none;box-shadow:var(--shadow-l2);margin-bottom:8px;border-radius:16px}}@media(min-width:1024px){.article-list--compact.links{display:grid;grid-template-columns:1fr 1fr 1fr;background:0 0;box-shadow:none;gap:1rem}.article-list--compact.links article{background:var(--card-background);border:none;box-shadow:var(--shadow-l2);margin-bottom:8px;border-radius:var(--card-border-radius)}.article-list--compact.links article:nth-child(odd){margin-right:8px}}.welcome{color:var(--card-text-color-main);background:var(--card-background);box-shadow:var(--shadow-l2);border-radius:30px;display:inline-block}.shake{display:inline-block;animation:shake 1s;animation-duration:1s;animation-timing-function:ease;animation-delay:0s;animation-iteration-count:1;animation-direction:normal;animation-fill-mode:none;animation-play-state:running;animation-name:shake;animation-timeline:auto;animation-range-start:normal;animation-range-end:normal;animation-delay:2s}@keyframes shake{0%{transform:rotate(0)}25%{transform:rotate(45deg)scale(1.2)}50%{transform:rotate(0)scale(1.2)}75%{transform:rotate(45deg)scale(1.2)}100%{transform:rotate(0)}}.jump-text1{display:inline-block;animation:jump .5s 1}.jump-text2{display:inline-block;animation:jump .5s 1;animation-delay:.1s}.jump-text3{display:inline-block;animation:jump .5s 1;animation-delay:.2s}.jump-text4{display:inline-block;animation:jump .5s 1;animation-delay:.3s}.jump-text5{display:inline-block;animation:jump .5s 1;animation-delay:.4s}.jump-text6{display:inline-block;animation:jump .5s 1;animation-delay:.5s}.jump-text7{display:inline-block;animation:jump .5s 1;animation-delay:.6s}.jump-text8{display:inline-block;animation:jump .5s 1;animation-delay:.7s}.jump-text9{display:inline-block;animation:jump .5s 1;animation-delay:.9s}@keyframes jump{0%{transform:translateY(0)}50%{transform:translateY(-20px)}100%{transform:translateY(0)}}.back-home{background:var(--card-background);border-radius:var(--tag-border-radius);color:var(--card-text-color-tertiary);margin-right:.1rem;margin-top:24px;display:inline-flex;align-items:center;font-size:1.4rem;text-transform:uppercase;padding:10px 20px 10px 15px;transition:box-shadow .3s ease;box-shadow:var(--shadow-l3)}.back-home:hover{box-shadow:var(--shadow-l2)}.back-home svg{margin-right:5px;width:20px;height:20px}.back-home span{font-weight:500;white-space:nowrap}.main-container .right-sidebar{order:2;max-width:var(--right-sidebar-max-width)}@media(min-width:1024px){.main-container .right-sidebar{display:flex}}main.main{order:1;min-width:0;max-width:100%;flex-grow:1;display:flex;flex-direction:column;gap:var(--section-separation)}@media(min-width:768px){main.main{padding-top:var(--main-top-padding)}} \ No newline at end of file diff --git a/scss/style.min.1bcbd90eb62f0b65a49b973b7d9ef1a5d7ebbd935edc6fff258c07cd8beef293.css b/scss/style.min.1bcbd90eb62f0b65a49b973b7d9ef1a5d7ebbd935edc6fff258c07cd8beef293.css new file mode 100644 index 00000000..7453803e --- /dev/null +++ b/scss/style.min.1bcbd90eb62f0b65a49b973b7d9ef1a5d7ebbd935edc6fff258c07cd8beef293.css @@ -0,0 +1,10 @@ +@charset "UTF-8";/*!* Hugo Theme Stack +* +* @author: Jimmy Cai +* @website: https://jimmycai.com +* @link: https://github.com/CaiJimmy/hugo-theme-stack*/:root{--main-top-padding:35px;--body-background:#f5f5fa;--accent-color:#34495e;--accent-color-darker:#2c3e50;--accent-color-text:#fff;--body-text-color:#707070;--tag-border-radius:4px;--section-separation:40px;--scrollbar-thumb:hsl(0, 0%, 85%);--scrollbar-track:var(--body-background)}@media(min-width:1280px){:root{--main-top-padding:50px}}:root[data-scheme=dark]{--body-background:#303030;--accent-color:#ecf0f1;--accent-color-darker:#bdc3c7;--accent-color-text:#000;--body-text-color:rgba(255, 255, 255, 0.7);--scrollbar-thumb:hsl(0, 0%, 40%);--scrollbar-track:var(--body-background)}:root{--sys-font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", "Droid Sans", "Helvetica Neue";--zh-font-family:"PingFang SC", "Hiragino Sans GB", "Droid Sans Fallback", "Microsoft YaHei";--base-font-family:"Lato", var(--sys-font-family), var(--zh-font-family), sans-serif;--code-font-family:Menlo, Monaco, Consolas, "Courier New", var(--zh-font-family), monospace}:root{--card-background:#fff;--card-background-selected:#eaeaea;--card-text-color-main:#000;--card-text-color-secondary:#747474;--card-text-color-tertiary:#767676;--card-separator-color:rgba(218, 218, 218, 0.5);--card-border-radius:10px;--card-padding:20px;--small-card-padding:25px 20px}@media(min-width:768px){:root{--card-padding:25px}}@media(min-width:1280px){:root{--card-padding:30px}}@media(min-width:768px){:root{--small-card-padding:25px}}:root[data-scheme=dark]{--card-background:#424242;--card-background-selected:rgba(255, 255, 255, 0.16);--card-text-color-main:rgba(255, 255, 255, 0.9);--card-text-color-secondary:rgba(255, 255, 255, 0.7);--card-text-color-tertiary:rgba(255, 255, 255, 0.5);--card-separator-color:rgba(255, 255, 255, 0.12)}:root{--article-font-family:var(--base-font-family);--article-font-size:1.6rem;--article-line-height:1.85}@media(min-width:768px){:root{--article-font-size:1.7rem}}:root{--blockquote-border-size:4px;--blockquote-background-color:rgb(248 248 248);--heading-border-size:4px;--link-background-color:189, 195, 199;--link-background-opacity:0.5;--link-background-opacity-hover:0.7;--pre-background-color:#272822;--pre-text-color:#f8f8f2;--code-background-color:rgba(0, 0, 0, 0.12);--code-text-color:#808080;--table-border-color:#dadada;--tr-even-background-color:#efefee;--kbd-border-color:#dadada}:root[data-scheme=dark]{--code-background-color:#272822;--code-text-color:rgba(255, 255, 255, 0.9);--table-border-color:#717171;--tr-even-background-color:#545454;--blockquote-background-color:rgb(75 75 75)}:root{--shadow-l1:0px 4px 8px rgba(0, 0, 0, 0.04), 0px 0px 2px rgba(0, 0, 0, 0.06), 0px 0px 1px rgba(0, 0, 0, 0.04);--shadow-l2:0px 10px 20px rgba(0, 0, 0, 0.04), 0px 2px 6px rgba(0, 0, 0, 0.04), 0px 0px 1px rgba(0, 0, 0, 0.04);--shadow-l3:0px 10px 20px rgba(0, 0, 0, 0.04), 0px 2px 6px rgba(0, 0, 0, 0.04), 0px 0px 1px rgba(0, 0, 0, 0.04);--shadow-l4:0px 24px 32px rgba(0, 0, 0, 0.04), 0px 16px 24px rgba(0, 0, 0, 0.04), 0px 4px 8px rgba(0, 0, 0, 0.04), + 0px 0px 1px rgba(0, 0, 0, 0.04)}[data-scheme=light]{--pre-text-color:#272822;--pre-background-color:#fafafa}[data-scheme=light] .chroma{color:#272822;background-color:#fafafa}[data-scheme=light] .chroma .err{color:#960050}[data-scheme=light] .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}[data-scheme=light] .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0;width:100%;display:block}[data-scheme=light] .chroma .lntable>tbody{display:block;width:100%}[data-scheme=light] .chroma .lntable>tbody>tr{display:flex;width:100%}[data-scheme=light] .chroma .lntable>tbody>tr>td:last-child{overflow-x:auto}[data-scheme=light] .chroma .hl{display:block;width:100%;background-color:#ffc}[data-scheme=light] .chroma .lnt{margin-right:.4em;padding:0 .4em;color:#7f7f7f;display:block}[data-scheme=light] .chroma .ln{margin-right:.4em;padding:0 .4em;color:#7f7f7f}[data-scheme=light] .chroma .k{color:#00a8c8}[data-scheme=light] .chroma .kc{color:#00a8c8}[data-scheme=light] .chroma .kd{color:#00a8c8}[data-scheme=light] .chroma .kn{color:#f92672}[data-scheme=light] .chroma .kp{color:#00a8c8}[data-scheme=light] .chroma .kr{color:#00a8c8}[data-scheme=light] .chroma .kt{color:#00a8c8}[data-scheme=light] .chroma .n{color:#111}[data-scheme=light] .chroma .na{color:#75af00}[data-scheme=light] .chroma .nb{color:#111}[data-scheme=light] .chroma .bp{color:#111}[data-scheme=light] .chroma .nc{color:#75af00}[data-scheme=light] .chroma .no{color:#00a8c8}[data-scheme=light] .chroma .nd{color:#75af00}[data-scheme=light] .chroma .ni{color:#111}[data-scheme=light] .chroma .ne{color:#75af00}[data-scheme=light] .chroma .nf{color:#75af00}[data-scheme=light] .chroma .fm{color:#111}[data-scheme=light] .chroma .nl{color:#111}[data-scheme=light] .chroma .nn{color:#111}[data-scheme=light] .chroma .nx{color:#75af00}[data-scheme=light] .chroma .py{color:#111}[data-scheme=light] .chroma .nt{color:#f92672}[data-scheme=light] .chroma .nv{color:#111}[data-scheme=light] .chroma .vc{color:#111}[data-scheme=light] .chroma .vg{color:#111}[data-scheme=light] .chroma .vi{color:#111}[data-scheme=light] .chroma .vm{color:#111}[data-scheme=light] .chroma .l{color:#ae81ff}[data-scheme=light] .chroma .ld{color:#d88200}[data-scheme=light] .chroma .s{color:#d88200}[data-scheme=light] .chroma .sa{color:#d88200}[data-scheme=light] .chroma .sb{color:#d88200}[data-scheme=light] .chroma .sc{color:#d88200}[data-scheme=light] .chroma .dl{color:#d88200}[data-scheme=light] .chroma .sd{color:#d88200}[data-scheme=light] .chroma .s2{color:#d88200}[data-scheme=light] .chroma .se{color:#ae81ff}[data-scheme=light] .chroma .sh{color:#d88200}[data-scheme=light] .chroma .si{color:#d88200}[data-scheme=light] .chroma .sx{color:#d88200}[data-scheme=light] .chroma .sr{color:#d88200}[data-scheme=light] .chroma .s1{color:#d88200}[data-scheme=light] .chroma .ss{color:#d88200}[data-scheme=light] .chroma .m{color:#ae81ff}[data-scheme=light] .chroma .mb{color:#ae81ff}[data-scheme=light] .chroma .mf{color:#ae81ff}[data-scheme=light] .chroma .mh{color:#ae81ff}[data-scheme=light] .chroma .mi{color:#ae81ff}[data-scheme=light] .chroma .il{color:#ae81ff}[data-scheme=light] .chroma .mo{color:#ae81ff}[data-scheme=light] .chroma .o{color:#f92672}[data-scheme=light] .chroma .ow{color:#f92672}[data-scheme=light] .chroma .p{color:#111}[data-scheme=light] .chroma .c{color:#75715e}[data-scheme=light] .chroma .ch{color:#75715e}[data-scheme=light] .chroma .cm{color:#75715e}[data-scheme=light] .chroma .c1{color:#75715e}[data-scheme=light] .chroma .cs{color:#75715e}[data-scheme=light] .chroma .cp{color:#75715e}[data-scheme=light] .chroma .cpf{color:#75715e}[data-scheme=light] .chroma .gd{color:#f92672}[data-scheme=light] .chroma .ge{font-style:italic}[data-scheme=light] .chroma .gi{color:#75af00}[data-scheme=light] .chroma .gs{font-weight:700}[data-scheme=light] .chroma .gu{color:#75715e}[data-scheme=dark]{--pre-text-color:#f8f8f2;--pre-background-color:#272822}[data-scheme=dark] .chroma{color:#f8f8f2;background-color:#272822}[data-scheme=dark] .chroma .err{color:#bb0064}[data-scheme=dark] .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}[data-scheme=dark] .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0;width:100%;display:block}[data-scheme=dark] .chroma .lntable>tbody{display:block;width:100%}[data-scheme=dark] .chroma .lntable>tbody>tr{display:flex;width:100%}[data-scheme=dark] .chroma .lntable>tbody>tr>td:last-child{overflow-x:auto}[data-scheme=dark] .chroma .hl{display:block;width:100%;background-color:#ffc}[data-scheme=dark] .chroma .lnt{margin-right:.4em;padding:0 .4em;color:#7f7f7f;display:block}[data-scheme=dark] .chroma .ln{margin-right:.4em;padding:0 .4em;color:#7f7f7f}[data-scheme=dark] .chroma .k{color:#66d9ef}[data-scheme=dark] .chroma .kc{color:#66d9ef}[data-scheme=dark] .chroma .kd{color:#66d9ef}[data-scheme=dark] .chroma .kn{color:#f92672}[data-scheme=dark] .chroma .kp{color:#66d9ef}[data-scheme=dark] .chroma .kr{color:#66d9ef}[data-scheme=dark] .chroma .kt{color:#66d9ef}[data-scheme=dark] .chroma .n{color:#f8f8f2}[data-scheme=dark] .chroma .na{color:#a6e22e}[data-scheme=dark] .chroma .nb{color:#f8f8f2}[data-scheme=dark] .chroma .bp{color:#f8f8f2}[data-scheme=dark] .chroma .nc{color:#a6e22e}[data-scheme=dark] .chroma .no{color:#66d9ef}[data-scheme=dark] .chroma .nd{color:#a6e22e}[data-scheme=dark] .chroma .ni{color:#f8f8f2}[data-scheme=dark] .chroma .ne{color:#a6e22e}[data-scheme=dark] .chroma .nf{color:#a6e22e}[data-scheme=dark] .chroma .fm{color:#f8f8f2}[data-scheme=dark] .chroma .nl{color:#f8f8f2}[data-scheme=dark] .chroma .nn{color:#f8f8f2}[data-scheme=dark] .chroma .nx{color:#a6e22e}[data-scheme=dark] .chroma .py{color:#f8f8f2}[data-scheme=dark] .chroma .nt{color:#f92672}[data-scheme=dark] .chroma .nv{color:#f8f8f2}[data-scheme=dark] .chroma .vc{color:#f8f8f2}[data-scheme=dark] .chroma .vg{color:#f8f8f2}[data-scheme=dark] .chroma .vi{color:#f8f8f2}[data-scheme=dark] .chroma .vm{color:#f8f8f2}[data-scheme=dark] .chroma .l{color:#ae81ff}[data-scheme=dark] .chroma .ld{color:#e6db74}[data-scheme=dark] .chroma .s{color:#e6db74}[data-scheme=dark] .chroma .sa{color:#e6db74}[data-scheme=dark] .chroma .sb{color:#e6db74}[data-scheme=dark] .chroma .sc{color:#e6db74}[data-scheme=dark] .chroma .dl{color:#e6db74}[data-scheme=dark] .chroma .sd{color:#e6db74}[data-scheme=dark] .chroma .s2{color:#e6db74}[data-scheme=dark] .chroma .se{color:#ae81ff}[data-scheme=dark] .chroma .sh{color:#e6db74}[data-scheme=dark] .chroma .si{color:#e6db74}[data-scheme=dark] .chroma .sx{color:#e6db74}[data-scheme=dark] .chroma .sr{color:#e6db74}[data-scheme=dark] .chroma .s1{color:#e6db74}[data-scheme=dark] .chroma .ss{color:#e6db74}[data-scheme=dark] .chroma .m{color:#ae81ff}[data-scheme=dark] .chroma .mb{color:#ae81ff}[data-scheme=dark] .chroma .mf{color:#ae81ff}[data-scheme=dark] .chroma .mh{color:#ae81ff}[data-scheme=dark] .chroma .mi{color:#ae81ff}[data-scheme=dark] .chroma .il{color:#ae81ff}[data-scheme=dark] .chroma .mo{color:#ae81ff}[data-scheme=dark] .chroma .o{color:#f92672}[data-scheme=dark] .chroma .ow{color:#f92672}[data-scheme=dark] .chroma .p{color:#f8f8f2}[data-scheme=dark] .chroma .c{color:#75715e}[data-scheme=dark] .chroma .ch{color:#75715e}[data-scheme=dark] .chroma .cm{color:#75715e}[data-scheme=dark] .chroma .c1{color:#75715e}[data-scheme=dark] .chroma .cs{color:#75715e}[data-scheme=dark] .chroma .cp{color:#75715e}[data-scheme=dark] .chroma .cpf{color:#75715e}[data-scheme=dark] .chroma .gd{color:#f92672}[data-scheme=dark] .chroma .ge{font-style:italic}[data-scheme=dark] .chroma .gi{color:#a6e22e}[data-scheme=dark] .chroma .gs{font-weight:700}[data-scheme=dark] .chroma .gu{color:#75715e}:root{--menu-icon-separation:40px;--container-padding:15px;--widget-separation:var(--section-separation)}.container{margin-left:auto;margin-right:auto}.container .left-sidebar{order:-3;max-width:var(--left-sidebar-max-width)}.container .right-sidebar{order:-1;max-width:var(--right-sidebar-max-width)}@media(min-width:1024px){.container .right-sidebar{display:flex}}@media(min-width:768px){.container.extended{max-width:1024px;--left-sidebar-max-width:25%;--right-sidebar-max-width:30%}}@media(min-width:1024px){.container.extended{max-width:1280px;--left-sidebar-max-width:20%;--right-sidebar-max-width:30%}}@media(min-width:1280px){.container.extended{max-width:1536px;--left-sidebar-max-width:15%;--right-sidebar-max-width:25%}}@media(min-width:768px){.container.compact{--left-sidebar-max-width:25%;max-width:768px}}@media(min-width:1024px){.container.compact{max-width:1024px;--left-sidebar-max-width:20%}}@media(min-width:1280px){.container.compact{max-width:1280px}}.flex{display:flex;flex-direction:row}.flex.column{flex-direction:column}.flex.on-phone--column{flex-direction:column}@media(min-width:768px){.flex.on-phone--column{flex-direction:unset}}.flex .full-width{width:100%}main.main{order:-2;min-width:0;max-width:100%;flex-grow:1;display:flex;flex-direction:column;gap:var(--section-separation)}@media(min-width:768px){main.main{padding-top:var(--main-top-padding)}}.main-container{min-height:100vh;align-items:flex-start;padding:0 15px;gap:var(--section-separation);padding-top:var(--main-top-padding)}@media(min-width:768px){.main-container{padding:0 20px}}/*!normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css*/html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}/*!* Hamburgers +* @description Tasty CSS-animated hamburgers +* @author Jonathan Suh @jonsuh +* @site https://jonsuh.com/hamburgers +* @link https://github.com/jonsuh/hamburgers*/.hamburger{padding-top:10px;display:inline-block;cursor:pointer;transition-property:opacity,filter;transition-duration:.15s;transition-timing-function:linear;font:inherit;color:inherit;text-transform:none;background-color:transparent;border:0;margin:0;overflow:visible}.hamburger:hover{opacity:.7}.hamburger.is-active:hover{opacity:.7}.hamburger.is-active .hamburger-inner,.hamburger.is-active .hamburger-inner::before,.hamburger.is-active .hamburger-inner::after{background-color:#000}.hamburger-box{width:30px;height:24px;display:inline-block;position:relative}.hamburger-inner{display:block;top:50%;margin-top:-2px}.hamburger-inner,.hamburger-inner::before,.hamburger-inner::after{width:30px;height:2px;background-color:var(--card-text-color-main);border-radius:4px;position:absolute;transition-property:transform;transition-duration:.15s;transition-timing-function:ease}.hamburger-inner::before,.hamburger-inner::after{content:"";display:block}.hamburger-inner::before{top:-10px}.hamburger-inner::after{bottom:-10px}.hamburger--spin .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin .hamburger-inner::before{transition:top .1s .25s ease-in,opacity .1s ease-in}.hamburger--spin .hamburger-inner::after{transition:bottom .1s .25s ease-in,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin.is-active .hamburger-inner{transform:rotate(225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin.is-active .hamburger-inner::before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s .12s ease-out}.hamburger--spin.is-active .hamburger-inner::after{bottom:0;transform:rotate(-90deg);transition:bottom .1s ease-out,transform .22s .12s cubic-bezier(.215,.61,.355,1)}#toggle-menu{background:0 0;border:none;position:absolute;right:0;top:0;z-index:2;cursor:pointer;outline:none}[dir=rtl] #toggle-menu{left:0;right:auto}@media(min-width:768px){#toggle-menu{display:none}}#toggle-menu.is-active .hamburger-inner,#toggle-menu.is-active .hamburger-inner::before,#toggle-menu.is-active .hamburger-inner::after{background-color:var(--accent-color)}#main-menu{list-style:none;overflow-y:auto;flex-grow:1;font-size:1.4rem;background-color:var(--card-background);box-shadow:var(--shadow-l1);display:none;margin:0 calc(var(--container-padding) * -1);padding:30px}@media(min-width:1280px){#main-menu{padding:15px 0}}#main-menu,#main-menu .menu-bottom-section ol{flex-direction:column;gap:30px}@media(min-width:1280px){#main-menu,#main-menu .menu-bottom-section ol{gap:25px}}#main-menu.show{display:flex}@media(min-width:768px){#main-menu{align-items:flex-end;display:flex;background-color:transparent;padding:0;box-shadow:none;margin:0}}#main-menu li{position:relative;vertical-align:middle;padding:0}@media(min-width:768px){#main-menu li{width:100%}}#main-menu li svg{stroke:currentColor;stroke-width:1.33;width:20px;height:20px}#main-menu li a{height:100%;display:inline-flex;align-items:center;color:var(--body-text-color);gap:var(--menu-icon-separation)}#main-menu li span{flex:1}#main-menu li.current a{color:var(--accent-color);font-weight:700}#main-menu li.menu-bottom-section{margin-top:auto}#main-menu li.menu-bottom-section ol{display:flex;padding-left:0}.menu-social{list-style:none;padding:0;margin:0;display:flex;flex-direction:row;gap:10px}.menu-social svg{width:24px;height:24px;stroke:var(--body-text-color);stroke-width:1.33}.article-list{display:flex;flex-direction:column;gap:var(--section-separation)}.article-list article{display:flex;flex-direction:column;background-color:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--card-border-radius);overflow:hidden;transition:box-shadow .3s ease}.article-list article:hover{box-shadow:var(--shadow-l2)}.article-list article .article-image img{width:100%;height:150px;object-fit:cover}@media(min-width:768px){.article-list article .article-image img{height:200px}}@media(min-width:1280px){.article-list article .article-image img{height:250px}}.article-list article:nth-child(5n+1) .article-category a{background:#8ea885;color:#fff}.article-list article:nth-child(5n+2) .article-category a{background:#df7988;color:#fff}.article-list article:nth-child(5n+3) .article-category a{background:#0177b8;color:#fff}.article-list article:nth-child(5n+4) .article-category a{background:#ffb900;color:#fff}.article-list article:nth-child(5n+5) .article-category a{background:#6b69d6;color:#fff}.article-details{display:flex;flex-direction:column;justify-content:center;padding:var(--card-padding);gap:15px}.article-title{font-family:var(--article-font-family);font-weight:600;margin:0;color:var(--card-text-color-main);font-size:2.2rem}@media(min-width:1280px){.article-title{font-size:2.4rem}}.article-title a{color:var(--card-text-color-main)}.article-title a:hover{color:var(--card-text-color-main)}.article-subtitle{font-weight:400;color:var(--card-text-color-secondary);line-height:1.5;margin:0;font-size:1.75rem}@media(min-width:1280px){.article-subtitle{font-size:2rem}}.article-title-wrapper{display:flex;flex-direction:column;gap:8px}.article-time,.article-translations{display:flex;color:var(--card-text-color-tertiary);gap:15px}.article-time svg,.article-translations svg{vertical-align:middle;width:20px;height:20px;stroke-width:1.33;flex-shrink:0}.article-time time,.article-time a,.article-translations time,.article-translations a{font-size:1.4rem;color:var(--card-text-color-tertiary)}.article-time>div,.article-translations>div{display:inline-flex;align-items:center;gap:15px}.article-time{flex-wrap:wrap}.article-translations>div{flex-wrap:wrap}.article-category,.article-tags{display:flex;gap:10px;flex-wrap:wrap}.article-category a,.article-tags a{color:var(--accent-color-text);background-color:var(--accent-color);padding:8px 16px;border-radius:var(--tag-border-radius);display:inline-block;font-size:1.4rem;transition:background-color .5s ease}.article-category a:hover,.article-tags a:hover{color:var(--accent-color-text);background-color:var(--accent-color-darker)}.article-list--compact{border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);background-color:var(--card-background);--image-size:50px}@media(min-width:768px){.article-list--compact{--image-size:60px}}.article-list--compact article>a{display:flex;align-items:center;padding:var(--small-card-padding);gap:15px}.article-list--compact article:not(:last-of-type){border-bottom:1.5px solid var(--card-separator-color)}.article-list--compact article .article-details{flex-grow:1;padding:0;min-height:var(--image-size);gap:10px}.article-list--compact article .article-title{margin:0;font-size:1.6rem}@media(min-width:768px){.article-list--compact article .article-title{font-size:1.8rem}}.article-list--compact article .article-image img{width:var(--image-size);height:var(--image-size);object-fit:cover}.article-list--compact article .article-time{font-size:1.4rem}.article-list--compact article .article-preview{font-size:1.4rem;color:var(--card-text-color-tertiary);margin-top:10px;line-height:1.5}.article-list--tile article{border-radius:var(--card-border-radius);overflow:hidden;position:relative;height:350px;width:250px;box-shadow:var(--shadow-l1);transition:box-shadow .3s ease;background-color:var(--card-background)}.article-list--tile article:hover{box-shadow:var(--shadow-l2)}.article-list--tile article.has-image .article-details{background-color:rgba(0,0,0,.25)}.article-list--tile article.has-image .article-title{color:#fff}.article-list--tile article .article-image{position:absolute;top:0;left:0;width:100%;height:100%}.article-list--tile article .article-image img{width:100%;height:100%;object-fit:cover}.article-list--tile article .article-details{border-radius:var(--card-border-radius);position:relative;height:100%;width:100%;display:flex;flex-direction:column;justify-content:flex-end;z-index:2;padding:15px}@media(min-width:640px){.article-list--tile article .article-details{padding:20px}}.article-list--tile article .article-title{font-size:2rem;font-weight:500;color:var(--card-text-color-main)}@media(min-width:640px){.article-list--tile article .article-title{font-size:2.2rem}}.widget{display:flex;flex-direction:column}.widget .widget-icon svg{width:32px;height:32px;stroke-width:1.6;color:var(--body-text-color)}.tagCloud .tagCloud-tags{display:flex;flex-wrap:wrap;gap:10px}.tagCloud .tagCloud-tags a{background:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--tag-border-radius);padding:8px 20px;color:var(--card-text-color-main);font-size:1.4rem;transition:box-shadow .3s ease}.tagCloud .tagCloud-tags a:hover{box-shadow:var(--shadow-l2)}.widget.archives .widget-archive--list{border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);background-color:var(--card-background)}.widget.archives .archives-year:not(:last-of-type){border-bottom:1.5px solid var(--card-separator-color)}.widget.archives .archives-year a{font-size:1.4rem;padding:18px 25px;display:flex}.widget.archives .archives-year a span.year{flex:1;color:var(--card-text-color-main);font-weight:700}.widget.archives .archives-year a span.count{color:var(--card-text-color-tertiary)}footer.site-footer{padding:20px 0 var(--section-separation);font-size:1.4rem;line-height:1.75}footer.site-footer:before{content:"";display:block;height:3px;width:50px;background:var(--body-text-color);margin-bottom:20px}footer.site-footer .copyright{color:var(--accent-color);font-weight:700;margin-bottom:5px}footer.site-footer .powerby{color:var(--body-text-color);font-weight:400;font-size:1.2rem}footer.site-footer .powerby a{color:var(--body-text-color)}.pagination{display:flex;background-color:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--card-border-radius);overflow:hidden;flex-wrap:wrap}.pagination .page-link{padding:16px 32px;display:inline-flex;color:var(--card-text-color-secondary)}.pagination .page-link.current{font-weight:700;background-color:var(--card-background-selected);color:var(--card-text-color-main)}@media(min-width:768px){.sidebar.sticky{position:sticky}}.left-sidebar{display:flex;flex-direction:column;flex-shrink:0;align-self:stretch;gap:var(--sidebar-element-separation);max-width:none;width:100%;position:relative;--sidebar-avatar-size:100px;--sidebar-element-separation:20px;--emoji-size:40px;--emoji-font-size:20px}@media(min-width:768px){.left-sidebar{width:auto;padding-top:var(--main-top-padding);padding-bottom:var(--main-top-padding);max-height:100vh}}@media(min-width:1536px){.left-sidebar{--sidebar-avatar-size:120px;--sidebar-element-separation:25px;--emoji-size:40px}}.left-sidebar.sticky{top:0}.left-sidebar.compact{--sidebar-avatar-size:80px;--emoji-size:30px;--emoji-font-size:15px}@media(min-width:1024px){.left-sidebar.compact header{flex-direction:row}}.left-sidebar.compact header .site-meta{gap:5px}.left-sidebar.compact header .site-name{font-size:1.4rem}@media(min-width:1536px){.left-sidebar.compact header .site-name{font-size:1.75rem}}.left-sidebar.compact header .site-description{font-size:1.4rem}.right-sidebar{width:100%;display:none;flex-direction:column;gap:var(--widget-separation)}.right-sidebar.sticky{top:0}@media(min-width:1024px){.right-sidebar{padding-top:var(--main-top-padding);padding-bottom:var(--main-top-padding)}}.sidebar header{z-index:1;transition:box-shadow .5s ease;display:flex;flex-direction:column;gap:var(--sidebar-element-separation)}@media(min-width:768px){.sidebar header{padding:0}}.sidebar header .site-avatar{position:relative;margin:0;width:var(--sidebar-avatar-size);height:var(--sidebar-avatar-size);flex-shrink:0}.sidebar header .site-avatar .site-logo{width:100%;height:100%;border-radius:100%;box-shadow:var(--shadow-l1)}.sidebar header .site-avatar .emoji{position:absolute;width:var(--emoji-size);height:var(--emoji-size);line-height:var(--emoji-size);border-radius:100%;bottom:0;right:0;text-align:center;font-size:var(--emoji-font-size);background-color:var(--card-background);box-shadow:var(--shadow-l2)}.sidebar header .site-meta{display:flex;flex-direction:column;gap:10px;justify-content:center}.sidebar header .site-name{color:var(--accent-color);margin:0;font-size:1.6rem}@media(min-width:1536px){.sidebar header .site-name{font-size:1.8rem}}.sidebar header .site-description{color:var(--body-text-color);font-weight:400;margin:0;font-size:1.4rem}@media(min-width:1536px){.sidebar header .site-description{font-size:1.6rem}}[data-scheme=dark] #dark-mode-toggle{color:var(--accent-color);font-weight:700}[data-scheme=dark] #dark-mode-toggle .icon-tabler-toggle-left{display:none}[data-scheme=dark] #dark-mode-toggle .icon-tabler-toggle-right{display:unset}#dark-mode-toggle{margin-top:auto;color:var(--body-text-color);display:flex;align-items:center;cursor:pointer;gap:var(--menu-icon-separation)}#dark-mode-toggle .icon-tabler-toggle-right{display:none}#i18n-switch{color:var(--body-text-color);display:inline-flex;align-content:center;gap:var(--menu-icon-separation)}#i18n-switch select{border:0;background-color:transparent;color:var(--body-text-color)}#i18n-switch select option{color:var(--card-text-color-main);background-color:var(--card-background)}html{font-size:62.5%;overflow-y:scroll}*{box-sizing:border-box}body{background:var(--body-background);margin:0;font-family:var(--base-font-family);font-size:1.6rem;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{scrollbar-width:auto;scrollbar-color:var(--scrollbar-thumb)transparent}::-webkit-scrollbar{height:auto}::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb)}::-webkit-scrollbar-track{background-color:transparent}.article-page.hide-sidebar-sm .left-sidebar{display:none}@media(min-width:768px){.article-page.hide-sidebar-sm .left-sidebar{display:inherit}}.article-page .main-article{background:var(--card-background);border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);overflow:hidden}.article-page .main-article .article-header .article-image img{height:auto;width:100%;max-height:45vh;object-fit:cover}.article-page .main-article .article-header .article-details{padding:var(--card-padding);padding-bottom:0}.article-page .main-article .article-header .article-subtitle{font-weight:300;color:var(--card-text-color-secondary);line-height:1.3;margin:0;font-size:1.95rem}.article-page .main-article .article-content{margin:var(--card-padding)0;color:var(--card-text-color-main)}.article-page .main-article .article-content .footnotes{font-family:var(--base-font-family)}.article-page .main-article .article-content img{max-width:100%;height:auto}.article-page .main-article .article-footer{margin:var(--card-padding);margin-top:0}.article-page .main-article .article-footer section:not(:first-child){margin-top:var(--card-padding)}.article-page .main-article .article-footer section{color:var(--card-text-color-tertiary);text-transform:uppercase;display:flex;align-items:center;font-size:1.4rem;gap:15px}.article-page .main-article .article-footer section svg{width:20px;height:20px;stroke-width:1.33}.article-page .main-article .article-footer .article-tags{flex-wrap:wrap;text-transform:unset}.article-page .main-article .article-footer .article-copyright a,.article-page .main-article .article-footer .article-lastmod a{color:var(--body-text-color)}.article-page .main-article .article-footer .article-copyright a.link,.article-page .main-article .article-footer .article-lastmod a.link{box-shadow:unset}.widget--toc{background-color:var(--card-background);border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);display:flex;flex-direction:column;color:var(--card-text-color-main);overflow:hidden}.widget--toc ::-webkit-scrollbar-thumb{background-color:var(--card-separator-color)}.widget--toc #TableOfContents{overflow-x:auto;max-height:75vh}.widget--toc #TableOfContents ol,.widget--toc #TableOfContents ul{margin:0;padding:0}.widget--toc #TableOfContents ol{list-style-type:none;counter-reset:item}.widget--toc #TableOfContents ol li a:first-of-type::before{counter-increment:item;content:counters(item,".")". ";font-weight:700;margin-right:5px}.widget--toc #TableOfContents>ul{padding:0 1em}.widget--toc #TableOfContents li{margin:15px 0 15px 25px;padding:5px}.widget--toc #TableOfContents li>ol,.widget--toc #TableOfContents li>ul{margin-top:10px;padding-left:10px;margin-bottom:-5px}.widget--toc #TableOfContents li>ol>li:last-child,.widget--toc #TableOfContents li>ul>li:last-child{margin-bottom:0}.widget--toc #TableOfContents li.active-class>a{border-left:var(--heading-border-size)solid var(--accent-color);font-weight:700}.widget--toc #TableOfContents ul li.active-class>a{display:block}.widget--toc #TableOfContents>ul>li.active-class>a{margin-left:calc(-25px - 1em);padding-left:calc(25px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li.active-class>a{margin-left:calc(-9px - 1em);padding-left:calc(9px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li.active-class>a{margin-left:calc(-60px - 1em);padding-left:calc(60px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li.active-class>a{margin-left:calc(-44px - 1em);padding-left:calc(44px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li>ul>li.active-class>a{margin-left:calc(-95px - 1em);padding-left:calc(95px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li>ol>li.active-class>a{margin-left:calc(-79px - 1em);padding-left:calc(79px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li>ul>li>ul>li.active-class>a{margin-left:calc(-130px - 1em);padding-left:calc(130px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li>ol>li>ol>li.active-class>a{margin-left:calc(-114px - 1em);padding-left:calc(114px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li>ul>li>ul>li>ul>li.active-class>a{margin-left:calc(-165px - 1em);padding-left:calc(165px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li>ol>li>ol>li>ol>li.active-class>a{margin-left:calc(-149px - 1em);padding-left:calc(149px + 1em - var(--heading-border-size));display:block}.related-content{overflow-x:auto;padding-bottom:15px}.related-content>.flex{float:left}.related-content article{margin-right:15px;flex-shrink:0;overflow:hidden;width:250px;height:150px}.related-content article .article-title{font-size:1.4rem;margin:0}.related-content article.has-image .article-details{padding:20px}.article-content{font-family:var(--article-font-family);font-size:var(--article-font-size);padding:0 var(--card-padding);line-height:var(--article-line-height)}.article-content>p{margin:1.5em 0}.article-content h1,.article-content h2,.article-content h3,.article-content h4,.article-content h5,.article-content h6{margin-inline-start:calc((var(--card-padding)) * -1);padding-inline-start:calc(var(--card-padding) - var(--heading-border-size));border-inline-start:var(--heading-border-size)solid var(--accent-color)}.article-content figure{text-align:center}.article-content figure figcaption{font-size:1.4rem;color:var(--card-text-color-secondary)}.article-content blockquote{position:relative;margin:1.5em 0;border-inline-start:var(--blockquote-border-size)solid var(--card-separator-color);padding:15px calc(var(--card-padding) - var(--blockquote-border-size));background-color:var(--blockquote-background-color)}.article-content blockquote .cite{display:block;text-align:right;font-size:.75em}.article-content blockquote .cite a{text-decoration:underline}.article-content hr{width:100px;margin:40px auto;background:var(--card-text-color-tertiary);height:2px;border:0;opacity:.55}.article-content code{color:var(--code-text-color);background-color:var(--code-background-color);padding:2px 4px;border-radius:var(--tag-border-radius);font-family:var(--code-font-family)}.article-content a,.article-content code{word-break:break-word}.article-content .gallery{position:relative;display:flex;flex-direction:row;justify-content:center;margin:1.5em 0;gap:10px}.article-content .gallery figure{margin:0}.article-content pre{overflow-x:auto;display:block;background-color:var(--pre-background-color);color:var(--pre-text-color);font-family:var(--code-font-family);line-height:1.428571429;word-break:break-all;padding:var(--card-padding)}[dir=rtl] .article-content pre{direction:ltr}.article-content pre code{color:unset;border:none;background:0 0;padding:0}.article-content .highlight{background-color:var(--pre-background-color);padding:var(--card-padding);position:relative}.article-content .highlight:hover .copyCodeButton{opacity:1}[dir=rtl] .article-content .highlight{direction:ltr}.article-content .highlight pre{margin:initial;padding:0;margin:0;width:auto}.article-content .copyCodeButton{position:absolute;top:calc(var(--card-padding));right:calc(var(--card-padding));background:var(--card-background);border:none;box-shadow:var(--shadow-l2);border-radius:var(--tag-border-radius);padding:8px 16px;color:var(--card-text-color-main);cursor:pointer;font-size:14px;opacity:0;transition:opacity .3s ease}.article-content .table-wrapper{padding:0 var(--card-padding);overflow-x:auto;display:block}.article-content table{width:100%;border-collapse:collapse;border-spacing:0;margin-bottom:1.5em;font-size:.96em}.article-content th,.article-content td{text-align:left;padding:4px 8px 4px 10px;border:1px solid var(--table-border-color)}.article-content td{vertical-align:top}.article-content tr:nth-child(even){background-color:var(--tr-even-background-color)}.article-content .twitter-tweet{color:var(--card-text-color-main)}.article-content .video-wrapper{position:relative;width:100%;height:0;padding-bottom:56.25%;overflow:hidden}.article-content .video-wrapper>iframe,.article-content .video-wrapper>video{position:absolute;width:100%;height:100%;left:0;top:0;border:0}.article-content .gitlab-embed-snippets{margin:0!important}.article-content .gitlab-embed-snippets .file-holder.snippet-file-content{margin-block-end:0!important;margin-block-start:0!important;margin-left:calc((var(--card-padding)) * -1)!important;margin-right:calc((var(--card-padding)) * -1)!important;padding:0 var(--card-padding)!important}.article-content blockquote,.article-content figure,.article-content .highlight,.article-content pre,.article-content .gallery,.article-content .video-wrapper,.article-content .table-wrapper,.article-content .s_video_simple{margin-left:calc((var(--card-padding)) * -1);margin-right:calc((var(--card-padding)) * -1);width:calc(100% + var(--card-padding) * 2)}.article-content .katex-display>.katex{overflow-x:auto;overflow-y:hidden}.article-content kbd{border:1px solid var(--kbd-border-color);font-weight:700;font-size:.9em;line-height:1;padding:2px 4px;border-radius:4px;display:inline-block}.section-card{border-radius:var(--card-border-radius);background-color:var(--card-background);padding:var(--small-card-padding);box-shadow:var(--shadow-l1);display:flex;align-items:center;gap:20px;--separation:15px}.section-card .section-term{font-size:2.2rem;margin:0;color:var(--card-text-color-main)}.section-card .section-description{font-weight:400;color:var(--card-text-color-secondary);font-size:1.6rem;margin:0}.section-card .section-details{flex-grow:1;display:flex;flex-direction:column;gap:8px}.section-card .section-image img{width:60px;height:60px}.section-card .section-count{color:var(--card-text-color-tertiary);font-size:1.4rem;margin:0;font-weight:700;text-transform:uppercase}.subsection-list{overflow-x:auto}.subsection-list .article-list--tile{display:flex;padding-bottom:15px}.subsection-list .article-list--tile article{width:250px;height:150px;margin-right:20px;flex-shrink:0}.subsection-list .article-list--tile article .article-title{margin:0;font-size:1.8rem}.subsection-list .article-list--tile article .article-details{padding:20px}.not-found-card{background-color:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--card-border-radius);padding:var(--card-padding)}.search-form{position:relative;--button-size:80px}.search-form.widget{--button-size:60px}.search-form.widget label{font-size:1.3rem;top:10px}.search-form.widget input{font-size:1.5rem;padding:30px 20px 15px}.search-form p{position:relative;margin:0}.search-form label{position:absolute;top:15px;inset-inline-start:20px;font-size:1.4rem;color:var(--card-text-color-tertiary)}.search-form input{padding:40px 20px 20px;border-radius:var(--card-border-radius);background-color:var(--card-background);box-shadow:var(--shadow-l1);color:var(--card-text-color-main);width:100%;border:0;-webkit-appearance:none;transition:box-shadow .3s ease;font-size:1.8rem}.search-form input:focus{outline:0;box-shadow:var(--shadow-l2)}.search-form button{position:absolute;inset-inline-end:0;top:0;height:100%;width:var(--button-size);cursor:pointer;background-color:transparent;border:0;padding:0 10px}.search-form button:focus{outline:0}.search-form button:focus svg{stroke-width:2;color:var(--accent-color)}.search-form button svg{color:var(--card-text-color-secondary);stroke-width:1.33;transition:all .3s ease;width:20px;height:20px}a{text-decoration:none;color:var(--accent-color)}a:hover{color:var(--accent-color-darker)}a.link{box-shadow:0 -2px rgba(var(--link-background-color),var(--link-background-opacity))inset;transition:all .3s ease}a.link:hover{box-shadow:0 calc(-1rem * var(--article-line-height))rgba(var(--link-background-color),var(--link-background-opacity-hover))inset}.section-title{text-transform:uppercase;margin-top:0;margin-bottom:10px;display:block;font-size:1.6rem;font-weight:700;color:var(--body-text-color)}.section-title a{color:var(--body-text-color)}:root{--main-top-padding:30px;--card-border-radius:25px;--tag-border-radius:8px;--section-separation:40px;--code-background-color:#f2f1b0e3;--code-text-color:#5c3400e0;--article-line-height:1.5;--pre-background-color:#f0f0f0;--card-padding:10px}:root[data-scheme=dark]{--code-background-color:#00000075;--code-text-color:#e9d88c}a{word-break:break-all}code{word-break:break-all}.article-page .main-article .article-content img{max-width:96%!important;height:auto!important;border-radius:8px}.article-content blockquote{border-left:2px solid #b6820096!important;background:#ffdd1fb9}[data-scheme=dark] blockquote{border-left:5px solid #c56600de!important;background:#3b2d0127}.highlight{max-width:102%!important;background-color:var(--pre-background-color);padding:var(--card-padding);position:relative;border-radius:20px;margin-left:-7px!important;margin-right:-12px;box-shadow:var(--shadow-l1)!important}.highlight:hover .copyCodeButton{opacity:1}[dir=rtl] .highlight{direction:ltr}.highlight pre{margin:initial;padding:0;margin:0;width:auto}[data-scheme=light] .article-content .highlight{background-color:rgba(255,225,107,.635)}[data-scheme=light] .chroma{color:#38230dd6;background-color:rgba(255,247,209,.244)}[data-scheme=dark] .article-content .highlight{background-color:rgba(33,21,3,.741)}[data-scheme=dark] .chroma{color:#f4f0c0;background-color:rgba(38,20,3,.752)}.article-content .highlight:before{content:"";display:block;background:url(../img/code-header.svg);height:18px;width:100%;background-size:57px;background-repeat:no-repeat;margin-bottom:5px;background-position:-1px 2px}[data-scheme=dark] ::selection{color:#fff;background:#444}[data-scheme=dark] ::-moz-selection{color:#fff;background:#444}[data-scheme=light] ::selection{color:#fff;background:#444}[data-scheme=light] ::-moz-selection{color:#fff;background:#444}a{text-decoration:none;color:var(--accent-color)}a:hover{color:var(--accent-color-darker)}a.link{color:#994311;font-weight:500;padding:0 2px;text-decoration:none;cursor:pointer}a.link:hover{text-decoration:none}[data-scheme=dark] a{text-decoration:none}[data-scheme=dark] a:hover{color:var(--accent-color-darker)}[data-scheme=dark] a.link{color:#fff193e0;font-weight:500;padding:0 2px;text-decoration:none;cursor:pointer}[data-scheme=dark] a.link:hover{text-decoration:none}.article-list article .article-image img{width:100%;height:195px;object-fit:cover}@media(min-width:768px){.article-list article .article-image img{height:300px}}@media(min-width:1280px){.article-list article .article-image img{height:355px}}.main-container{min-height:100vh;align-items:flex-start;padding:10px;gap:var(--section-separation);padding-top:var(--main-top-padding)}@media(min-width:768px){.main-container{padding:0 35px}}.container{margin-left:auto;margin-right:auto}.container .left-sidebar{order:-3;max-width:var(--left-sidebar-max-width)}.container .right-sidebar{padding:0 1;order:-1;max-width:var(--right-sidebar-max-width)}@media(min-width:1024px){.container .right-sidebar{display:flex;flex-direction:column}}@media(min-width:768px){.container.extended{max-width:1024px;--left-sidebar-max-width:20%;--right-sidebar-max-width:20%}}@media(min-width:1024px){.container.extended{max-width:1280px;--left-sidebar-max-width:21%;--right-sidebar-max-width:19%}}@media(min-width:1280px){.container.extended{max-width:1536px;--left-sidebar-max-width:21%;--right-sidebar-max-width:18%}}@media(min-width:768px){.container.compact{--left-sidebar-max-width:25%;max-width:768px}}@media(min-width:1024px){.container.compact{max-width:1024px;--left-sidebar-max-width:20%}}@media(min-width:1280px){.container.compact{max-width:1280px}}.article-list--compact article .article-image img{width:var(--image-size);height:var(--image-size);object-fit:cover;border-radius:17%}.menu{padding-left:0;list-style:none;line-height:1.2;flex-direction:column;overflow-x:hidden;overflow-y:scroll;flex-grow:1;background-color:var(--card-background);box-shadow:var(--shadow-l2);display:none;margin:0;border-radius:10px;padding:30px}@media(min-width:1280px){.menu{padding:15px 0}}.menu,.menu .menu-bottom-section{gap:30px}@media(min-width:1280px){.menu,.menu .menu-bottom-section{gap:25px}}.menu.show{display:flex}@media(min-width:768px){.menu{align-items:flex-end;display:flex;background-color:transparent;padding:0;box-shadow:none;margin:0}}.menu li{position:relative;vertical-align:middle;padding:0}@media(min-width:768px){.menu li{width:100%}}.menu li svg{stroke-width:1.53;width:20px;height:20px}.menu li a{height:100%;display:inline-flex;align-items:center;color:var(--body-text-color);gap:var(--menu-icon-separation)}.menu li span{flex:1}.menu li.current a{color:var(--accent-color);font-weight:700}.menu::-webkit-scrollbar{display:none}html ::-webkit-scrollbar{width:20px}html ::-webkit-scrollbar-track{background-color:transparent}html ::-webkit-scrollbar-thumb{background-color:#d6dee1;border-radius:20px;border:6px solid transparent;background-clip:content-box}html ::-webkit-scrollbar-thumb:hover{background-color:#a8bbbf}@media(min-width:1024px){.article-list--compact{display:grid;grid-template-columns:1fr 1fr;background:0 0;box-shadow:none;gap:1rem}.article-list--compact article{background:var(--card-background);border:none;box-shadow:var(--shadow-l2);margin-bottom:8px;border-radius:16px}}@media(min-width:1024px){.article-list--compact.links{display:grid;grid-template-columns:1fr 1fr 1fr;background:0 0;box-shadow:none;gap:1rem}.article-list--compact.links article{background:var(--card-background);border:none;box-shadow:var(--shadow-l2);margin-bottom:8px;border-radius:var(--card-border-radius)}.article-list--compact.links article:nth-child(odd){margin-right:8px}}.welcome{color:var(--card-text-color-main);background:var(--card-background);box-shadow:var(--shadow-l2);border-radius:30px;display:inline-block}.shake{display:inline-block;animation:shake 1s;animation-duration:1s;animation-timing-function:ease;animation-delay:0s;animation-iteration-count:1;animation-direction:normal;animation-fill-mode:none;animation-play-state:running;animation-name:shake;animation-timeline:auto;animation-range-start:normal;animation-range-end:normal;animation-delay:2s}@keyframes shake{0%{transform:rotate(0)}25%{transform:rotate(45deg)scale(1.2)}50%{transform:rotate(0)scale(1.2)}75%{transform:rotate(45deg)scale(1.2)}100%{transform:rotate(0)}}.jump-text1{display:inline-block;animation:jump .5s 1}.jump-text2{display:inline-block;animation:jump .5s 1;animation-delay:.1s}.jump-text3{display:inline-block;animation:jump .5s 1;animation-delay:.2s}.jump-text4{display:inline-block;animation:jump .5s 1;animation-delay:.3s}.jump-text5{display:inline-block;animation:jump .5s 1;animation-delay:.4s}.jump-text6{display:inline-block;animation:jump .5s 1;animation-delay:.5s}.jump-text7{display:inline-block;animation:jump .5s 1;animation-delay:.6s}.jump-text8{display:inline-block;animation:jump .5s 1;animation-delay:.7s}.jump-text9{display:inline-block;animation:jump .5s 1;animation-delay:.9s}@keyframes jump{0%{transform:translateY(0)}50%{transform:translateY(-20px)}100%{transform:translateY(0)}}.back-home{background:var(--card-background);border-radius:var(--tag-border-radius);color:var(--card-text-color-tertiary);margin-right:.1rem;margin-top:24px;display:inline-flex;align-items:center;font-size:1.4rem;text-transform:uppercase;padding:10px 20px 10px 15px;transition:box-shadow .3s ease;box-shadow:var(--shadow-l3)}.back-home:hover{box-shadow:var(--shadow-l2)}.back-home svg{margin-right:5px;width:20px;height:20px}.back-home span{font-weight:500;white-space:nowrap}.main-container .right-sidebar{order:2;max-width:var(--right-sidebar-max-width)}@media(min-width:1024px){.main-container .right-sidebar{display:flex}}main.main{order:1;min-width:0;max-width:100%;flex-grow:1;display:flex;flex-direction:column;gap:var(--section-separation)}@media(min-width:768px){main.main{padding-top:var(--main-top-padding)}} \ No newline at end of file diff --git a/scss/style.min.65bd74d36b6b754aed29e0180f4801991de717c3bd7300088e053ed30e8d11e5.css b/scss/style.min.65bd74d36b6b754aed29e0180f4801991de717c3bd7300088e053ed30e8d11e5.css new file mode 100644 index 00000000..700eef77 --- /dev/null +++ b/scss/style.min.65bd74d36b6b754aed29e0180f4801991de717c3bd7300088e053ed30e8d11e5.css @@ -0,0 +1,10 @@ +@charset "UTF-8";/*!* Hugo Theme Stack +* +* @author: Jimmy Cai +* @website: https://jimmycai.com +* @link: https://github.com/CaiJimmy/hugo-theme-stack*/:root{--main-top-padding:35px;--body-background:#f5f5fa;--accent-color:#34495e;--accent-color-darker:#2c3e50;--accent-color-text:#fff;--body-text-color:#707070;--tag-border-radius:4px;--section-separation:40px;--scrollbar-thumb:hsl(0, 0%, 85%);--scrollbar-track:var(--body-background)}@media(min-width:1280px){:root{--main-top-padding:50px}}:root[data-scheme=dark]{--body-background:#303030;--accent-color:#ecf0f1;--accent-color-darker:#bdc3c7;--accent-color-text:#000;--body-text-color:rgba(255, 255, 255, 0.7);--scrollbar-thumb:hsl(0, 0%, 40%);--scrollbar-track:var(--body-background)}:root{--sys-font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", "Droid Sans", "Helvetica Neue";--zh-font-family:"PingFang SC", "Hiragino Sans GB", "Droid Sans Fallback", "Microsoft YaHei";--base-font-family:"Lato", var(--sys-font-family), var(--zh-font-family), sans-serif;--code-font-family:Menlo, Monaco, Consolas, "Courier New", var(--zh-font-family), monospace}:root{--card-background:#fff;--card-background-selected:#eaeaea;--card-text-color-main:#000;--card-text-color-secondary:#747474;--card-text-color-tertiary:#767676;--card-separator-color:rgba(218, 218, 218, 0.5);--card-border-radius:10px;--card-padding:20px;--small-card-padding:25px 20px}@media(min-width:768px){:root{--card-padding:25px}}@media(min-width:1280px){:root{--card-padding:30px}}@media(min-width:768px){:root{--small-card-padding:25px}}:root[data-scheme=dark]{--card-background:#424242;--card-background-selected:rgba(255, 255, 255, 0.16);--card-text-color-main:rgba(255, 255, 255, 0.9);--card-text-color-secondary:rgba(255, 255, 255, 0.7);--card-text-color-tertiary:rgba(255, 255, 255, 0.5);--card-separator-color:rgba(255, 255, 255, 0.12)}:root{--article-font-family:var(--base-font-family);--article-font-size:1.6rem;--article-line-height:1.85}@media(min-width:768px){:root{--article-font-size:1.7rem}}:root{--blockquote-border-size:4px;--blockquote-background-color:rgb(248 248 248);--heading-border-size:4px;--link-background-color:189, 195, 199;--link-background-opacity:0.5;--link-background-opacity-hover:0.7;--pre-background-color:#272822;--pre-text-color:#f8f8f2;--code-background-color:rgba(0, 0, 0, 0.12);--code-text-color:#808080;--table-border-color:#dadada;--tr-even-background-color:#efefee;--kbd-border-color:#dadada}:root[data-scheme=dark]{--code-background-color:#272822;--code-text-color:rgba(255, 255, 255, 0.9);--table-border-color:#717171;--tr-even-background-color:#545454;--blockquote-background-color:rgb(75 75 75)}:root{--shadow-l1:0px 4px 8px rgba(0, 0, 0, 0.04), 0px 0px 2px rgba(0, 0, 0, 0.06), 0px 0px 1px rgba(0, 0, 0, 0.04);--shadow-l2:0px 10px 20px rgba(0, 0, 0, 0.04), 0px 2px 6px rgba(0, 0, 0, 0.04), 0px 0px 1px rgba(0, 0, 0, 0.04);--shadow-l3:0px 10px 20px rgba(0, 0, 0, 0.04), 0px 2px 6px rgba(0, 0, 0, 0.04), 0px 0px 1px rgba(0, 0, 0, 0.04);--shadow-l4:0px 24px 32px rgba(0, 0, 0, 0.04), 0px 16px 24px rgba(0, 0, 0, 0.04), 0px 4px 8px rgba(0, 0, 0, 0.04), + 0px 0px 1px rgba(0, 0, 0, 0.04)}[data-scheme=light]{--pre-text-color:#272822;--pre-background-color:#fafafa}[data-scheme=light] .chroma{color:#272822;background-color:#fafafa}[data-scheme=light] .chroma .err{color:#960050}[data-scheme=light] .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}[data-scheme=light] .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0;width:100%;display:block}[data-scheme=light] .chroma .lntable>tbody{display:block;width:100%}[data-scheme=light] .chroma .lntable>tbody>tr{display:flex;width:100%}[data-scheme=light] .chroma .lntable>tbody>tr>td:last-child{overflow-x:auto}[data-scheme=light] .chroma .hl{display:block;width:100%;background-color:#ffc}[data-scheme=light] .chroma .lnt{margin-right:.4em;padding:0 .4em;color:#7f7f7f;display:block}[data-scheme=light] .chroma .ln{margin-right:.4em;padding:0 .4em;color:#7f7f7f}[data-scheme=light] .chroma .k{color:#00a8c8}[data-scheme=light] .chroma .kc{color:#00a8c8}[data-scheme=light] .chroma .kd{color:#00a8c8}[data-scheme=light] .chroma .kn{color:#f92672}[data-scheme=light] .chroma .kp{color:#00a8c8}[data-scheme=light] .chroma .kr{color:#00a8c8}[data-scheme=light] .chroma .kt{color:#00a8c8}[data-scheme=light] .chroma .n{color:#111}[data-scheme=light] .chroma .na{color:#75af00}[data-scheme=light] .chroma .nb{color:#111}[data-scheme=light] .chroma .bp{color:#111}[data-scheme=light] .chroma .nc{color:#75af00}[data-scheme=light] .chroma .no{color:#00a8c8}[data-scheme=light] .chroma .nd{color:#75af00}[data-scheme=light] .chroma .ni{color:#111}[data-scheme=light] .chroma .ne{color:#75af00}[data-scheme=light] .chroma .nf{color:#75af00}[data-scheme=light] .chroma .fm{color:#111}[data-scheme=light] .chroma .nl{color:#111}[data-scheme=light] .chroma .nn{color:#111}[data-scheme=light] .chroma .nx{color:#75af00}[data-scheme=light] .chroma .py{color:#111}[data-scheme=light] .chroma .nt{color:#f92672}[data-scheme=light] .chroma .nv{color:#111}[data-scheme=light] .chroma .vc{color:#111}[data-scheme=light] .chroma .vg{color:#111}[data-scheme=light] .chroma .vi{color:#111}[data-scheme=light] .chroma .vm{color:#111}[data-scheme=light] .chroma .l{color:#ae81ff}[data-scheme=light] .chroma .ld{color:#d88200}[data-scheme=light] .chroma .s{color:#d88200}[data-scheme=light] .chroma .sa{color:#d88200}[data-scheme=light] .chroma .sb{color:#d88200}[data-scheme=light] .chroma .sc{color:#d88200}[data-scheme=light] .chroma .dl{color:#d88200}[data-scheme=light] .chroma .sd{color:#d88200}[data-scheme=light] .chroma .s2{color:#d88200}[data-scheme=light] .chroma .se{color:#ae81ff}[data-scheme=light] .chroma .sh{color:#d88200}[data-scheme=light] .chroma .si{color:#d88200}[data-scheme=light] .chroma .sx{color:#d88200}[data-scheme=light] .chroma .sr{color:#d88200}[data-scheme=light] .chroma .s1{color:#d88200}[data-scheme=light] .chroma .ss{color:#d88200}[data-scheme=light] .chroma .m{color:#ae81ff}[data-scheme=light] .chroma .mb{color:#ae81ff}[data-scheme=light] .chroma .mf{color:#ae81ff}[data-scheme=light] .chroma .mh{color:#ae81ff}[data-scheme=light] .chroma .mi{color:#ae81ff}[data-scheme=light] .chroma .il{color:#ae81ff}[data-scheme=light] .chroma .mo{color:#ae81ff}[data-scheme=light] .chroma .o{color:#f92672}[data-scheme=light] .chroma .ow{color:#f92672}[data-scheme=light] .chroma .p{color:#111}[data-scheme=light] .chroma .c{color:#75715e}[data-scheme=light] .chroma .ch{color:#75715e}[data-scheme=light] .chroma .cm{color:#75715e}[data-scheme=light] .chroma .c1{color:#75715e}[data-scheme=light] .chroma .cs{color:#75715e}[data-scheme=light] .chroma .cp{color:#75715e}[data-scheme=light] .chroma .cpf{color:#75715e}[data-scheme=light] .chroma .gd{color:#f92672}[data-scheme=light] .chroma .ge{font-style:italic}[data-scheme=light] .chroma .gi{color:#75af00}[data-scheme=light] .chroma .gs{font-weight:700}[data-scheme=light] .chroma .gu{color:#75715e}[data-scheme=dark]{--pre-text-color:#f8f8f2;--pre-background-color:#272822}[data-scheme=dark] .chroma{color:#f8f8f2;background-color:#272822}[data-scheme=dark] .chroma .err{color:#bb0064}[data-scheme=dark] .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}[data-scheme=dark] .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0;width:100%;display:block}[data-scheme=dark] .chroma .lntable>tbody{display:block;width:100%}[data-scheme=dark] .chroma .lntable>tbody>tr{display:flex;width:100%}[data-scheme=dark] .chroma .lntable>tbody>tr>td:last-child{overflow-x:auto}[data-scheme=dark] .chroma .hl{display:block;width:100%;background-color:#ffc}[data-scheme=dark] .chroma .lnt{margin-right:.4em;padding:0 .4em;color:#7f7f7f;display:block}[data-scheme=dark] .chroma .ln{margin-right:.4em;padding:0 .4em;color:#7f7f7f}[data-scheme=dark] .chroma .k{color:#66d9ef}[data-scheme=dark] .chroma .kc{color:#66d9ef}[data-scheme=dark] .chroma .kd{color:#66d9ef}[data-scheme=dark] .chroma .kn{color:#f92672}[data-scheme=dark] .chroma .kp{color:#66d9ef}[data-scheme=dark] .chroma .kr{color:#66d9ef}[data-scheme=dark] .chroma .kt{color:#66d9ef}[data-scheme=dark] .chroma .n{color:#f8f8f2}[data-scheme=dark] .chroma .na{color:#a6e22e}[data-scheme=dark] .chroma .nb{color:#f8f8f2}[data-scheme=dark] .chroma .bp{color:#f8f8f2}[data-scheme=dark] .chroma .nc{color:#a6e22e}[data-scheme=dark] .chroma .no{color:#66d9ef}[data-scheme=dark] .chroma .nd{color:#a6e22e}[data-scheme=dark] .chroma .ni{color:#f8f8f2}[data-scheme=dark] .chroma .ne{color:#a6e22e}[data-scheme=dark] .chroma .nf{color:#a6e22e}[data-scheme=dark] .chroma .fm{color:#f8f8f2}[data-scheme=dark] .chroma .nl{color:#f8f8f2}[data-scheme=dark] .chroma .nn{color:#f8f8f2}[data-scheme=dark] .chroma .nx{color:#a6e22e}[data-scheme=dark] .chroma .py{color:#f8f8f2}[data-scheme=dark] .chroma .nt{color:#f92672}[data-scheme=dark] .chroma .nv{color:#f8f8f2}[data-scheme=dark] .chroma .vc{color:#f8f8f2}[data-scheme=dark] .chroma .vg{color:#f8f8f2}[data-scheme=dark] .chroma .vi{color:#f8f8f2}[data-scheme=dark] .chroma .vm{color:#f8f8f2}[data-scheme=dark] .chroma .l{color:#ae81ff}[data-scheme=dark] .chroma .ld{color:#e6db74}[data-scheme=dark] .chroma .s{color:#e6db74}[data-scheme=dark] .chroma .sa{color:#e6db74}[data-scheme=dark] .chroma .sb{color:#e6db74}[data-scheme=dark] .chroma .sc{color:#e6db74}[data-scheme=dark] .chroma .dl{color:#e6db74}[data-scheme=dark] .chroma .sd{color:#e6db74}[data-scheme=dark] .chroma .s2{color:#e6db74}[data-scheme=dark] .chroma .se{color:#ae81ff}[data-scheme=dark] .chroma .sh{color:#e6db74}[data-scheme=dark] .chroma .si{color:#e6db74}[data-scheme=dark] .chroma .sx{color:#e6db74}[data-scheme=dark] .chroma .sr{color:#e6db74}[data-scheme=dark] .chroma .s1{color:#e6db74}[data-scheme=dark] .chroma .ss{color:#e6db74}[data-scheme=dark] .chroma .m{color:#ae81ff}[data-scheme=dark] .chroma .mb{color:#ae81ff}[data-scheme=dark] .chroma .mf{color:#ae81ff}[data-scheme=dark] .chroma .mh{color:#ae81ff}[data-scheme=dark] .chroma .mi{color:#ae81ff}[data-scheme=dark] .chroma .il{color:#ae81ff}[data-scheme=dark] .chroma .mo{color:#ae81ff}[data-scheme=dark] .chroma .o{color:#f92672}[data-scheme=dark] .chroma .ow{color:#f92672}[data-scheme=dark] .chroma .p{color:#f8f8f2}[data-scheme=dark] .chroma .c{color:#75715e}[data-scheme=dark] .chroma .ch{color:#75715e}[data-scheme=dark] .chroma .cm{color:#75715e}[data-scheme=dark] .chroma .c1{color:#75715e}[data-scheme=dark] .chroma .cs{color:#75715e}[data-scheme=dark] .chroma .cp{color:#75715e}[data-scheme=dark] .chroma .cpf{color:#75715e}[data-scheme=dark] .chroma .gd{color:#f92672}[data-scheme=dark] .chroma .ge{font-style:italic}[data-scheme=dark] .chroma .gi{color:#a6e22e}[data-scheme=dark] .chroma .gs{font-weight:700}[data-scheme=dark] .chroma .gu{color:#75715e}:root{--menu-icon-separation:40px;--container-padding:15px;--widget-separation:var(--section-separation)}.container{margin-left:auto;margin-right:auto}.container .left-sidebar{order:-3;max-width:var(--left-sidebar-max-width)}.container .right-sidebar{order:-1;max-width:var(--right-sidebar-max-width)}@media(min-width:1024px){.container .right-sidebar{display:flex}}@media(min-width:768px){.container.extended{max-width:1024px;--left-sidebar-max-width:25%;--right-sidebar-max-width:30%}}@media(min-width:1024px){.container.extended{max-width:1280px;--left-sidebar-max-width:20%;--right-sidebar-max-width:30%}}@media(min-width:1280px){.container.extended{max-width:1536px;--left-sidebar-max-width:15%;--right-sidebar-max-width:25%}}@media(min-width:768px){.container.compact{--left-sidebar-max-width:25%;max-width:768px}}@media(min-width:1024px){.container.compact{max-width:1024px;--left-sidebar-max-width:20%}}@media(min-width:1280px){.container.compact{max-width:1280px}}.flex{display:flex;flex-direction:row}.flex.column{flex-direction:column}.flex.on-phone--column{flex-direction:column}@media(min-width:768px){.flex.on-phone--column{flex-direction:unset}}.flex .full-width{width:100%}main.main{order:-2;min-width:0;max-width:100%;flex-grow:1;display:flex;flex-direction:column;gap:var(--section-separation)}@media(min-width:768px){main.main{padding-top:var(--main-top-padding)}}.main-container{min-height:100vh;align-items:flex-start;padding:0 15px;gap:var(--section-separation);padding-top:var(--main-top-padding)}@media(min-width:768px){.main-container{padding:0 20px}}/*!normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css*/html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}/*!* Hamburgers +* @description Tasty CSS-animated hamburgers +* @author Jonathan Suh @jonsuh +* @site https://jonsuh.com/hamburgers +* @link https://github.com/jonsuh/hamburgers*/.hamburger{padding-top:10px;display:inline-block;cursor:pointer;transition-property:opacity,filter;transition-duration:.15s;transition-timing-function:linear;font:inherit;color:inherit;text-transform:none;background-color:transparent;border:0;margin:0;overflow:visible}.hamburger:hover{opacity:.7}.hamburger.is-active:hover{opacity:.7}.hamburger.is-active .hamburger-inner,.hamburger.is-active .hamburger-inner::before,.hamburger.is-active .hamburger-inner::after{background-color:#000}.hamburger-box{width:30px;height:24px;display:inline-block;position:relative}.hamburger-inner{display:block;top:50%;margin-top:-2px}.hamburger-inner,.hamburger-inner::before,.hamburger-inner::after{width:30px;height:2px;background-color:var(--card-text-color-main);border-radius:4px;position:absolute;transition-property:transform;transition-duration:.15s;transition-timing-function:ease}.hamburger-inner::before,.hamburger-inner::after{content:"";display:block}.hamburger-inner::before{top:-10px}.hamburger-inner::after{bottom:-10px}.hamburger--spin .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin .hamburger-inner::before{transition:top .1s .25s ease-in,opacity .1s ease-in}.hamburger--spin .hamburger-inner::after{transition:bottom .1s .25s ease-in,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin.is-active .hamburger-inner{transform:rotate(225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin.is-active .hamburger-inner::before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s .12s ease-out}.hamburger--spin.is-active .hamburger-inner::after{bottom:0;transform:rotate(-90deg);transition:bottom .1s ease-out,transform .22s .12s cubic-bezier(.215,.61,.355,1)}#toggle-menu{background:0 0;border:none;position:absolute;right:0;top:0;z-index:2;cursor:pointer;outline:none}[dir=rtl] #toggle-menu{left:0;right:auto}@media(min-width:768px){#toggle-menu{display:none}}#toggle-menu.is-active .hamburger-inner,#toggle-menu.is-active .hamburger-inner::before,#toggle-menu.is-active .hamburger-inner::after{background-color:var(--accent-color)}#main-menu{list-style:none;overflow-y:auto;flex-grow:1;font-size:1.4rem;background-color:var(--card-background);box-shadow:var(--shadow-l1);display:none;margin:0 calc(var(--container-padding) * -1);padding:30px}@media(min-width:1280px){#main-menu{padding:15px 0}}#main-menu,#main-menu .menu-bottom-section ol{flex-direction:column;gap:30px}@media(min-width:1280px){#main-menu,#main-menu .menu-bottom-section ol{gap:25px}}#main-menu.show{display:flex}@media(min-width:768px){#main-menu{align-items:flex-end;display:flex;background-color:transparent;padding:0;box-shadow:none;margin:0}}#main-menu li{position:relative;vertical-align:middle;padding:0}@media(min-width:768px){#main-menu li{width:100%}}#main-menu li svg{stroke:currentColor;stroke-width:1.33;width:20px;height:20px}#main-menu li a{height:100%;display:inline-flex;align-items:center;color:var(--body-text-color);gap:var(--menu-icon-separation)}#main-menu li span{flex:1}#main-menu li.current a{color:var(--accent-color);font-weight:700}#main-menu li.menu-bottom-section{margin-top:auto}#main-menu li.menu-bottom-section ol{display:flex;padding-left:0}.menu-social{list-style:none;padding:0;margin:0;display:flex;flex-direction:row;gap:10px}.menu-social svg{width:24px;height:24px;stroke:var(--body-text-color);stroke-width:1.33}.article-list{display:flex;flex-direction:column;gap:var(--section-separation)}.article-list article{display:flex;flex-direction:column;background-color:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--card-border-radius);overflow:hidden;transition:box-shadow .3s ease}.article-list article:hover{box-shadow:var(--shadow-l2)}.article-list article .article-image img{width:100%;height:150px;object-fit:cover}@media(min-width:768px){.article-list article .article-image img{height:200px}}@media(min-width:1280px){.article-list article .article-image img{height:250px}}.article-list article:nth-child(5n+1) .article-category a{background:#8ea885;color:#fff}.article-list article:nth-child(5n+2) .article-category a{background:#df7988;color:#fff}.article-list article:nth-child(5n+3) .article-category a{background:#0177b8;color:#fff}.article-list article:nth-child(5n+4) .article-category a{background:#ffb900;color:#fff}.article-list article:nth-child(5n+5) .article-category a{background:#6b69d6;color:#fff}.article-details{display:flex;flex-direction:column;justify-content:center;padding:var(--card-padding);gap:15px}.article-title{font-family:var(--article-font-family);font-weight:600;margin:0;color:var(--card-text-color-main);font-size:2.2rem}@media(min-width:1280px){.article-title{font-size:2.4rem}}.article-title a{color:var(--card-text-color-main)}.article-title a:hover{color:var(--card-text-color-main)}.article-subtitle{font-weight:400;color:var(--card-text-color-secondary);line-height:1.5;margin:0;font-size:1.75rem}@media(min-width:1280px){.article-subtitle{font-size:2rem}}.article-title-wrapper{display:flex;flex-direction:column;gap:8px}.article-time,.article-translations{display:flex;color:var(--card-text-color-tertiary);gap:15px}.article-time svg,.article-translations svg{vertical-align:middle;width:20px;height:20px;stroke-width:1.33;flex-shrink:0}.article-time time,.article-time a,.article-translations time,.article-translations a{font-size:1.4rem;color:var(--card-text-color-tertiary)}.article-time>div,.article-translations>div{display:inline-flex;align-items:center;gap:15px}.article-time{flex-wrap:wrap}.article-translations>div{flex-wrap:wrap}.article-category,.article-tags{display:flex;gap:10px;flex-wrap:wrap}.article-category a,.article-tags a{color:var(--accent-color-text);background-color:var(--accent-color);padding:8px 16px;border-radius:var(--tag-border-radius);display:inline-block;font-size:1.4rem;transition:background-color .5s ease}.article-category a:hover,.article-tags a:hover{color:var(--accent-color-text);background-color:var(--accent-color-darker)}.article-list--compact{border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);background-color:var(--card-background);--image-size:50px}@media(min-width:768px){.article-list--compact{--image-size:60px}}.article-list--compact article>a{display:flex;align-items:center;padding:var(--small-card-padding);gap:15px}.article-list--compact article:not(:last-of-type){border-bottom:1.5px solid var(--card-separator-color)}.article-list--compact article .article-details{flex-grow:1;padding:0;min-height:var(--image-size);gap:10px}.article-list--compact article .article-title{margin:0;font-size:1.6rem}@media(min-width:768px){.article-list--compact article .article-title{font-size:1.8rem}}.article-list--compact article .article-image img{width:var(--image-size);height:var(--image-size);object-fit:cover}.article-list--compact article .article-time{font-size:1.4rem}.article-list--compact article .article-preview{font-size:1.4rem;color:var(--card-text-color-tertiary);margin-top:10px;line-height:1.5}.article-list--tile article{border-radius:var(--card-border-radius);overflow:hidden;position:relative;height:350px;width:250px;box-shadow:var(--shadow-l1);transition:box-shadow .3s ease;background-color:var(--card-background)}.article-list--tile article:hover{box-shadow:var(--shadow-l2)}.article-list--tile article.has-image .article-details{background-color:rgba(0,0,0,.25)}.article-list--tile article.has-image .article-title{color:#fff}.article-list--tile article .article-image{position:absolute;top:0;left:0;width:100%;height:100%}.article-list--tile article .article-image img{width:100%;height:100%;object-fit:cover}.article-list--tile article .article-details{border-radius:var(--card-border-radius);position:relative;height:100%;width:100%;display:flex;flex-direction:column;justify-content:flex-end;z-index:2;padding:15px}@media(min-width:640px){.article-list--tile article .article-details{padding:20px}}.article-list--tile article .article-title{font-size:2rem;font-weight:500;color:var(--card-text-color-main)}@media(min-width:640px){.article-list--tile article .article-title{font-size:2.2rem}}.widget{display:flex;flex-direction:column}.widget .widget-icon svg{width:32px;height:32px;stroke-width:1.6;color:var(--body-text-color)}.tagCloud .tagCloud-tags{display:flex;flex-wrap:wrap;gap:10px}.tagCloud .tagCloud-tags a{background:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--tag-border-radius);padding:8px 20px;color:var(--card-text-color-main);font-size:1.4rem;transition:box-shadow .3s ease}.tagCloud .tagCloud-tags a:hover{box-shadow:var(--shadow-l2)}.widget.archives .widget-archive--list{border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);background-color:var(--card-background)}.widget.archives .archives-year:not(:last-of-type){border-bottom:1.5px solid var(--card-separator-color)}.widget.archives .archives-year a{font-size:1.4rem;padding:18px 25px;display:flex}.widget.archives .archives-year a span.year{flex:1;color:var(--card-text-color-main);font-weight:700}.widget.archives .archives-year a span.count{color:var(--card-text-color-tertiary)}footer.site-footer{padding:20px 0 var(--section-separation);font-size:1.4rem;line-height:1.75}footer.site-footer:before{content:"";display:block;height:3px;width:50px;background:var(--body-text-color);margin-bottom:20px}footer.site-footer .copyright{color:var(--accent-color);font-weight:700;margin-bottom:5px}footer.site-footer .powerby{color:var(--body-text-color);font-weight:400;font-size:1.2rem}footer.site-footer .powerby a{color:var(--body-text-color)}.pagination{display:flex;background-color:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--card-border-radius);overflow:hidden;flex-wrap:wrap}.pagination .page-link{padding:16px 32px;display:inline-flex;color:var(--card-text-color-secondary)}.pagination .page-link.current{font-weight:700;background-color:var(--card-background-selected);color:var(--card-text-color-main)}@media(min-width:768px){.sidebar.sticky{position:sticky}}.left-sidebar{display:flex;flex-direction:column;flex-shrink:0;align-self:stretch;gap:var(--sidebar-element-separation);max-width:none;width:100%;position:relative;--sidebar-avatar-size:100px;--sidebar-element-separation:20px;--emoji-size:40px;--emoji-font-size:20px}@media(min-width:768px){.left-sidebar{width:auto;padding-top:var(--main-top-padding);padding-bottom:var(--main-top-padding);max-height:100vh}}@media(min-width:1536px){.left-sidebar{--sidebar-avatar-size:120px;--sidebar-element-separation:25px;--emoji-size:40px}}.left-sidebar.sticky{top:0}.left-sidebar.compact{--sidebar-avatar-size:80px;--emoji-size:30px;--emoji-font-size:15px}@media(min-width:1024px){.left-sidebar.compact header{flex-direction:row}}.left-sidebar.compact header .site-meta{gap:5px}.left-sidebar.compact header .site-name{font-size:1.4rem}@media(min-width:1536px){.left-sidebar.compact header .site-name{font-size:1.75rem}}.left-sidebar.compact header .site-description{font-size:1.4rem}.right-sidebar{width:100%;display:none;flex-direction:column;gap:var(--widget-separation)}.right-sidebar.sticky{top:0}@media(min-width:1024px){.right-sidebar{padding-top:var(--main-top-padding);padding-bottom:var(--main-top-padding)}}.sidebar header{z-index:1;transition:box-shadow .5s ease;display:flex;flex-direction:column;gap:var(--sidebar-element-separation)}@media(min-width:768px){.sidebar header{padding:0}}.sidebar header .site-avatar{position:relative;margin:0;width:var(--sidebar-avatar-size);height:var(--sidebar-avatar-size);flex-shrink:0}.sidebar header .site-avatar .site-logo{width:100%;height:100%;border-radius:100%;box-shadow:var(--shadow-l1)}.sidebar header .site-avatar .emoji{position:absolute;width:var(--emoji-size);height:var(--emoji-size);line-height:var(--emoji-size);border-radius:100%;bottom:0;right:0;text-align:center;font-size:var(--emoji-font-size);background-color:var(--card-background);box-shadow:var(--shadow-l2)}.sidebar header .site-meta{display:flex;flex-direction:column;gap:10px;justify-content:center}.sidebar header .site-name{color:var(--accent-color);margin:0;font-size:1.6rem}@media(min-width:1536px){.sidebar header .site-name{font-size:1.8rem}}.sidebar header .site-description{color:var(--body-text-color);font-weight:400;margin:0;font-size:1.4rem}@media(min-width:1536px){.sidebar header .site-description{font-size:1.6rem}}[data-scheme=dark] #dark-mode-toggle{color:var(--accent-color);font-weight:700}[data-scheme=dark] #dark-mode-toggle .icon-tabler-toggle-left{display:none}[data-scheme=dark] #dark-mode-toggle .icon-tabler-toggle-right{display:unset}#dark-mode-toggle{margin-top:auto;color:var(--body-text-color);display:flex;align-items:center;cursor:pointer;gap:var(--menu-icon-separation)}#dark-mode-toggle .icon-tabler-toggle-right{display:none}#i18n-switch{color:var(--body-text-color);display:inline-flex;align-content:center;gap:var(--menu-icon-separation)}#i18n-switch select{border:0;background-color:transparent;color:var(--body-text-color)}#i18n-switch select option{color:var(--card-text-color-main);background-color:var(--card-background)}html{font-size:62.5%;overflow-y:scroll}*{box-sizing:border-box}body{background:var(--body-background);margin:0;font-family:var(--base-font-family);font-size:1.6rem;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{scrollbar-width:auto;scrollbar-color:var(--scrollbar-thumb)transparent}::-webkit-scrollbar{height:auto}::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb)}::-webkit-scrollbar-track{background-color:transparent}.article-page.hide-sidebar-sm .left-sidebar{display:none}@media(min-width:768px){.article-page.hide-sidebar-sm .left-sidebar{display:inherit}}.article-page .main-article{background:var(--card-background);border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);overflow:hidden}.article-page .main-article .article-header .article-image img{height:auto;width:100%;max-height:45vh;object-fit:cover}.article-page .main-article .article-header .article-details{padding:var(--card-padding);padding-bottom:0}.article-page .main-article .article-header .article-subtitle{font-weight:300;color:var(--card-text-color-secondary);line-height:1.3;margin:0;font-size:1.95rem}.article-page .main-article .article-content{margin:var(--card-padding)0;color:var(--card-text-color-main)}.article-page .main-article .article-content .footnotes{font-family:var(--base-font-family)}.article-page .main-article .article-content img{max-width:100%;height:auto}.article-page .main-article .article-footer{margin:var(--card-padding);margin-top:0}.article-page .main-article .article-footer section:not(:first-child){margin-top:var(--card-padding)}.article-page .main-article .article-footer section{color:var(--card-text-color-tertiary);text-transform:uppercase;display:flex;align-items:center;font-size:1.4rem;gap:15px}.article-page .main-article .article-footer section svg{width:20px;height:20px;stroke-width:1.33}.article-page .main-article .article-footer .article-tags{flex-wrap:wrap;text-transform:unset}.article-page .main-article .article-footer .article-copyright a,.article-page .main-article .article-footer .article-lastmod a{color:var(--body-text-color)}.article-page .main-article .article-footer .article-copyright a.link,.article-page .main-article .article-footer .article-lastmod a.link{box-shadow:unset}.widget--toc{background-color:var(--card-background);border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);display:flex;flex-direction:column;color:var(--card-text-color-main);overflow:hidden}.widget--toc ::-webkit-scrollbar-thumb{background-color:var(--card-separator-color)}.widget--toc #TableOfContents{overflow-x:auto;max-height:75vh}.widget--toc #TableOfContents ol,.widget--toc #TableOfContents ul{margin:0;padding:0}.widget--toc #TableOfContents ol{list-style-type:none;counter-reset:item}.widget--toc #TableOfContents ol li a:first-of-type::before{counter-increment:item;content:counters(item,".")". ";font-weight:700;margin-right:5px}.widget--toc #TableOfContents>ul{padding:0 1em}.widget--toc #TableOfContents li{margin:15px 0 15px 25px;padding:5px}.widget--toc #TableOfContents li>ol,.widget--toc #TableOfContents li>ul{margin-top:10px;padding-left:10px;margin-bottom:-5px}.widget--toc #TableOfContents li>ol>li:last-child,.widget--toc #TableOfContents li>ul>li:last-child{margin-bottom:0}.widget--toc #TableOfContents li.active-class>a{border-left:var(--heading-border-size)solid var(--accent-color);font-weight:700}.widget--toc #TableOfContents ul li.active-class>a{display:block}.widget--toc #TableOfContents>ul>li.active-class>a{margin-left:calc(-25px - 1em);padding-left:calc(25px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li.active-class>a{margin-left:calc(-9px - 1em);padding-left:calc(9px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li.active-class>a{margin-left:calc(-60px - 1em);padding-left:calc(60px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li.active-class>a{margin-left:calc(-44px - 1em);padding-left:calc(44px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li>ul>li.active-class>a{margin-left:calc(-95px - 1em);padding-left:calc(95px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li>ol>li.active-class>a{margin-left:calc(-79px - 1em);padding-left:calc(79px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li>ul>li>ul>li.active-class>a{margin-left:calc(-130px - 1em);padding-left:calc(130px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li>ol>li>ol>li.active-class>a{margin-left:calc(-114px - 1em);padding-left:calc(114px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li>ul>li>ul>li>ul>li.active-class>a{margin-left:calc(-165px - 1em);padding-left:calc(165px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li>ol>li>ol>li>ol>li.active-class>a{margin-left:calc(-149px - 1em);padding-left:calc(149px + 1em - var(--heading-border-size));display:block}.related-content{overflow-x:auto;padding-bottom:15px}.related-content>.flex{float:left}.related-content article{margin-right:15px;flex-shrink:0;overflow:hidden;width:250px;height:150px}.related-content article .article-title{font-size:1.4rem;margin:0}.related-content article.has-image .article-details{padding:20px}.article-content{font-family:var(--article-font-family);font-size:var(--article-font-size);padding:0 var(--card-padding);line-height:var(--article-line-height)}.article-content>p{margin:1.5em 0}.article-content h1,.article-content h2,.article-content h3,.article-content h4,.article-content h5,.article-content h6{margin-inline-start:calc((var(--card-padding)) * -1);padding-inline-start:calc(var(--card-padding) - var(--heading-border-size));border-inline-start:var(--heading-border-size)solid var(--accent-color)}.article-content figure{text-align:center}.article-content figure figcaption{font-size:1.4rem;color:var(--card-text-color-secondary)}.article-content blockquote{position:relative;margin:1.5em 0;border-inline-start:var(--blockquote-border-size)solid var(--card-separator-color);padding:15px calc(var(--card-padding) - var(--blockquote-border-size));background-color:var(--blockquote-background-color)}.article-content blockquote .cite{display:block;text-align:right;font-size:.75em}.article-content blockquote .cite a{text-decoration:underline}.article-content hr{width:100px;margin:40px auto;background:var(--card-text-color-tertiary);height:2px;border:0;opacity:.55}.article-content code{color:var(--code-text-color);background-color:var(--code-background-color);padding:2px 4px;border-radius:var(--tag-border-radius);font-family:var(--code-font-family)}.article-content a,.article-content code{word-break:break-word}.article-content .gallery{position:relative;display:flex;flex-direction:row;justify-content:center;margin:1.5em 0;gap:10px}.article-content .gallery figure{margin:0}.article-content pre{overflow-x:auto;display:block;background-color:var(--pre-background-color);color:var(--pre-text-color);font-family:var(--code-font-family);line-height:1.428571429;word-break:break-all;padding:var(--card-padding)}[dir=rtl] .article-content pre{direction:ltr}.article-content pre code{color:unset;border:none;background:0 0;padding:0}.article-content .highlight{background-color:var(--pre-background-color);padding:var(--card-padding);position:relative}.article-content .highlight:hover .copyCodeButton{opacity:1}[dir=rtl] .article-content .highlight{direction:ltr}.article-content .highlight pre{margin:initial;padding:0;margin:0;width:auto}.article-content .copyCodeButton{position:absolute;top:calc(var(--card-padding));right:calc(var(--card-padding));background:var(--card-background);border:none;box-shadow:var(--shadow-l2);border-radius:var(--tag-border-radius);padding:8px 16px;color:var(--card-text-color-main);cursor:pointer;font-size:14px;opacity:0;transition:opacity .3s ease}.article-content .table-wrapper{padding:0 var(--card-padding);overflow-x:auto;display:block}.article-content table{width:100%;border-collapse:collapse;border-spacing:0;margin-bottom:1.5em;font-size:.96em}.article-content th,.article-content td{text-align:left;padding:4px 8px 4px 10px;border:1px solid var(--table-border-color)}.article-content td{vertical-align:top}.article-content tr:nth-child(even){background-color:var(--tr-even-background-color)}.article-content .twitter-tweet{color:var(--card-text-color-main)}.article-content .video-wrapper{position:relative;width:100%;height:0;padding-bottom:56.25%;overflow:hidden}.article-content .video-wrapper>iframe,.article-content .video-wrapper>video{position:absolute;width:100%;height:100%;left:0;top:0;border:0}.article-content .gitlab-embed-snippets{margin:0!important}.article-content .gitlab-embed-snippets .file-holder.snippet-file-content{margin-block-end:0!important;margin-block-start:0!important;margin-left:calc((var(--card-padding)) * -1)!important;margin-right:calc((var(--card-padding)) * -1)!important;padding:0 var(--card-padding)!important}.article-content blockquote,.article-content figure,.article-content .highlight,.article-content pre,.article-content .gallery,.article-content .video-wrapper,.article-content .table-wrapper,.article-content .s_video_simple{margin-left:calc((var(--card-padding)) * -1);margin-right:calc((var(--card-padding)) * -1);width:calc(100% + var(--card-padding) * 2)}.article-content .katex-display>.katex{overflow-x:auto;overflow-y:hidden}.article-content kbd{border:1px solid var(--kbd-border-color);font-weight:700;font-size:.9em;line-height:1;padding:2px 4px;border-radius:4px;display:inline-block}.section-card{border-radius:var(--card-border-radius);background-color:var(--card-background);padding:var(--small-card-padding);box-shadow:var(--shadow-l1);display:flex;align-items:center;gap:20px;--separation:15px}.section-card .section-term{font-size:2.2rem;margin:0;color:var(--card-text-color-main)}.section-card .section-description{font-weight:400;color:var(--card-text-color-secondary);font-size:1.6rem;margin:0}.section-card .section-details{flex-grow:1;display:flex;flex-direction:column;gap:8px}.section-card .section-image img{width:60px;height:60px}.section-card .section-count{color:var(--card-text-color-tertiary);font-size:1.4rem;margin:0;font-weight:700;text-transform:uppercase}.subsection-list{overflow-x:auto}.subsection-list .article-list--tile{display:flex;padding-bottom:15px}.subsection-list .article-list--tile article{width:250px;height:150px;margin-right:20px;flex-shrink:0}.subsection-list .article-list--tile article .article-title{margin:0;font-size:1.8rem}.subsection-list .article-list--tile article .article-details{padding:20px}.not-found-card{background-color:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--card-border-radius);padding:var(--card-padding)}.search-form{position:relative;--button-size:80px}.search-form.widget{--button-size:60px}.search-form.widget label{font-size:1.3rem;top:10px}.search-form.widget input{font-size:1.5rem;padding:30px 20px 15px}.search-form p{position:relative;margin:0}.search-form label{position:absolute;top:15px;inset-inline-start:20px;font-size:1.4rem;color:var(--card-text-color-tertiary)}.search-form input{padding:40px 20px 20px;border-radius:var(--card-border-radius);background-color:var(--card-background);box-shadow:var(--shadow-l1);color:var(--card-text-color-main);width:100%;border:0;-webkit-appearance:none;transition:box-shadow .3s ease;font-size:1.8rem}.search-form input:focus{outline:0;box-shadow:var(--shadow-l2)}.search-form button{position:absolute;inset-inline-end:0;top:0;height:100%;width:var(--button-size);cursor:pointer;background-color:transparent;border:0;padding:0 10px}.search-form button:focus{outline:0}.search-form button:focus svg{stroke-width:2;color:var(--accent-color)}.search-form button svg{color:var(--card-text-color-secondary);stroke-width:1.33;transition:all .3s ease;width:20px;height:20px}a{text-decoration:none;color:var(--accent-color)}a:hover{color:var(--accent-color-darker)}a.link{box-shadow:0 -2px rgba(var(--link-background-color),var(--link-background-opacity))inset;transition:all .3s ease}a.link:hover{box-shadow:0 calc(-1rem * var(--article-line-height))rgba(var(--link-background-color),var(--link-background-opacity-hover))inset}.section-title{text-transform:uppercase;margin-top:0;margin-bottom:10px;display:block;font-size:1.6rem;font-weight:700;color:var(--body-text-color)}.section-title a{color:var(--body-text-color)}:root{--main-top-padding:30px;--card-border-radius:25px;--tag-border-radius:8px;--section-separation:40px;--code-background-color:#f2f1b0e3;--code-text-color:#5c3400e0;--article-line-height:1.5;--pre-background-color:#f0f0f0;--card-padding:10px}:root[data-scheme=dark]{--code-background-color:#00000075;--code-text-color:#e9d88c}a{word-break:break-all}code{word-break:break-all}.article-page .main-article .article-content img{max-width:96%!important;height:auto!important;border-radius:8px}.article-content blockquote{border-left:2px solid #b6820096!important;background:#ffdd1fb9}[data-scheme=dark] blockquote{border-left:5px solid #c56600de!important;background:#3b2d0127}.highlight{max-width:102%!important;background-color:var(--pre-background-color);padding:var(--card-padding);position:relative;border-radius:20px;margin-left:-7px!important;margin-right:-12px;box-shadow:var(--shadow-l1)!important}.highlight:hover .copyCodeButton{opacity:1}[dir=rtl] .highlight{direction:ltr}.highlight pre{margin:initial;padding:0;margin:0;width:auto}[data-scheme=light] .article-content .highlight{background-color:rgba(255,225,107,.635)}[data-scheme=light] .chroma{color:#38230dd6;background-color:rgba(255,247,209,.244)}[data-scheme=dark] .article-content .highlight{background-color:rgba(33,21,3,.741)}[data-scheme=dark] .chroma{color:#f4f0c0;background-color:rgba(38,20,3,.752)}.article-content .highlight:before{content:"";display:block;background:url(../img/code-header.svg);height:18px;width:100%;background-size:57px;background-repeat:no-repeat;margin-bottom:5px;background-position:-1px 2px}[data-scheme=dark] ::selection{color:#fff;background:#444}[data-scheme=dark] ::-moz-selection{color:#fff;background:#444}[data-scheme=light] ::selection{color:#fff;background:#444}[data-scheme=light] ::-moz-selection{color:#fff;background:#444}a{text-decoration:none;color:var(--accent-color)}a:hover{color:var(--accent-color-darker)}a.link{color:#994311;font-weight:500;padding:0 2px;text-decoration:none;cursor:pointer}a.link:hover{text-decoration:none}[data-scheme=dark] a{text-decoration:none}[data-scheme=dark] a:hover{color:var(--accent-color-darker)}[data-scheme=dark] a.link{color:#fff193e0;font-weight:500;padding:0 2px;text-decoration:none;cursor:pointer}[data-scheme=dark] a.link:hover{text-decoration:none}.article-list article .article-image img{width:100%;height:195px;object-fit:cover}@media(min-width:768px){.article-list article .article-image img{height:300px}}@media(min-width:1280px){.article-list article .article-image img{height:355px}}.main-container{min-height:100vh;align-items:flex-start;padding:10px;gap:var(--section-separation);padding-top:var(--main-top-padding)}@media(min-width:768px){.main-container{padding:0 35px}}.container{margin-left:auto;margin-right:auto}.container .left-sidebar{order:-3;max-width:var(--left-sidebar-max-width)}.container .right-sidebar{order:-1;max-width:var(--right-sidebar-max-width)}@media(min-width:1024px){.container .right-sidebar{display:flex;flex-direction:column}}@media(min-width:768px){.container.extended{max-width:1024px;--left-sidebar-max-width:20%;--right-sidebar-max-width:20%}}@media(min-width:1024px){.container.extended{max-width:1280px;--left-sidebar-max-width:21%;--right-sidebar-max-width:19%}}@media(min-width:1280px){.container.extended{max-width:1536px;--left-sidebar-max-width:21%;--right-sidebar-max-width:18%}}@media(min-width:768px){.container.compact{--left-sidebar-max-width:25%;max-width:768px}}@media(min-width:1024px){.container.compact{max-width:1024px;--left-sidebar-max-width:20%}}@media(min-width:1280px){.container.compact{max-width:1280px}}.article-list--compact article .article-image img{width:var(--image-size);height:var(--image-size);object-fit:cover;border-radius:17%}.menu{padding-left:0;list-style:none;line-height:1.2;flex-direction:column;overflow-x:hidden;overflow-y:scroll;flex-grow:1;background-color:var(--card-background);box-shadow:var(--shadow-l2);display:none;margin:0;border-radius:10px;padding:30px}@media(min-width:1280px){.menu{padding:15px 0}}.menu,.menu .menu-bottom-section{gap:30px}@media(min-width:1280px){.menu,.menu .menu-bottom-section{gap:25px}}.menu.show{display:flex}@media(min-width:768px){.menu{align-items:flex-end;display:flex;background-color:transparent;padding:0;box-shadow:none;margin:0}}.menu li{position:relative;vertical-align:middle;padding:0}@media(min-width:768px){.menu li{width:100%}}.menu li svg{stroke-width:1.53;width:20px;height:20px}.menu li a{height:100%;display:inline-flex;align-items:center;color:var(--body-text-color);gap:var(--menu-icon-separation)}.menu li span{flex:1}.menu li.current a{color:var(--accent-color);font-weight:700}.menu::-webkit-scrollbar{display:none}html ::-webkit-scrollbar{width:20px}html ::-webkit-scrollbar-track{background-color:transparent}html ::-webkit-scrollbar-thumb{background-color:#d6dee1;border-radius:20px;border:6px solid transparent;background-clip:content-box}html ::-webkit-scrollbar-thumb:hover{background-color:#a8bbbf}@media(min-width:1024px){.article-list--compact{display:grid;grid-template-columns:1fr 1fr;background:0 0;box-shadow:none;gap:1rem}.article-list--compact article{background:var(--card-background);border:none;box-shadow:var(--shadow-l2);margin-bottom:8px;border-radius:16px}}@media(min-width:1024px){.article-list--compact.links{display:grid;grid-template-columns:1fr 1fr 1fr;background:0 0;box-shadow:none;gap:1rem}.article-list--compact.links article{background:var(--card-background);border:none;box-shadow:var(--shadow-l2);margin-bottom:8px;border-radius:var(--card-border-radius)}.article-list--compact.links article:nth-child(odd){margin-right:8px}}.welcome{color:var(--card-text-color-main);background:var(--card-background);box-shadow:var(--shadow-l2);border-radius:30px;display:inline-block}.shake{display:inline-block;animation:shake 1s;animation-duration:1s;animation-timing-function:ease;animation-delay:0s;animation-iteration-count:1;animation-direction:normal;animation-fill-mode:none;animation-play-state:running;animation-name:shake;animation-timeline:auto;animation-range-start:normal;animation-range-end:normal;animation-delay:2s}@keyframes shake{0%{transform:rotate(0)}25%{transform:rotate(45deg)scale(1.2)}50%{transform:rotate(0)scale(1.2)}75%{transform:rotate(45deg)scale(1.2)}100%{transform:rotate(0)}}.jump-text1{display:inline-block;animation:jump .5s 1}.jump-text2{display:inline-block;animation:jump .5s 1;animation-delay:.1s}.jump-text3{display:inline-block;animation:jump .5s 1;animation-delay:.2s}.jump-text4{display:inline-block;animation:jump .5s 1;animation-delay:.3s}.jump-text5{display:inline-block;animation:jump .5s 1;animation-delay:.4s}.jump-text6{display:inline-block;animation:jump .5s 1;animation-delay:.5s}.jump-text7{display:inline-block;animation:jump .5s 1;animation-delay:.6s}.jump-text8{display:inline-block;animation:jump .5s 1;animation-delay:.7s}.jump-text9{display:inline-block;animation:jump .5s 1;animation-delay:.9s}@keyframes jump{0%{transform:translateY(0)}50%{transform:translateY(-20px)}100%{transform:translateY(0)}}.back-home{background:var(--card-background);border-radius:var(--tag-border-radius);color:var(--card-text-color-tertiary);margin-right:.1rem;margin-top:24px;display:inline-flex;align-items:center;font-size:1.4rem;text-transform:uppercase;padding:10px 20px 10px 15px;transition:box-shadow .3s ease;box-shadow:var(--shadow-l3)}.back-home:hover{box-shadow:var(--shadow-l2)}.back-home svg{margin-right:5px;width:20px;height:20px}.back-home span{font-weight:500;white-space:nowrap}.main-container .right-sidebar{order:2;max-width:var(--right-sidebar-max-width)}@media(min-width:1024px){.main-container .right-sidebar{display:flex}}main.main{order:1;min-width:0;max-width:100%;flex-grow:1;display:flex;flex-direction:column;gap:var(--section-separation)}@media(min-width:768px){main.main{padding-top:var(--main-top-padding)}} \ No newline at end of file diff --git a/scss/style.min.6f67149696528969fa4770d1256c35d1ea3df2b785850a6cf5437755b584db53.css b/scss/style.min.6f67149696528969fa4770d1256c35d1ea3df2b785850a6cf5437755b584db53.css new file mode 100644 index 00000000..2e7d2d17 --- /dev/null +++ b/scss/style.min.6f67149696528969fa4770d1256c35d1ea3df2b785850a6cf5437755b584db53.css @@ -0,0 +1,10 @@ +@charset "UTF-8";/*!* Hugo Theme Stack +* +* @author: Jimmy Cai +* @website: https://jimmycai.com +* @link: https://github.com/CaiJimmy/hugo-theme-stack*/:root{--main-top-padding:35px;--body-background:#f5f5fa;--accent-color:#34495e;--accent-color-darker:#2c3e50;--accent-color-text:#fff;--body-text-color:#707070;--tag-border-radius:4px;--section-separation:40px;--scrollbar-thumb:hsl(0, 0%, 85%);--scrollbar-track:var(--body-background)}@media(min-width:1280px){:root{--main-top-padding:50px}}:root[data-scheme=dark]{--body-background:#303030;--accent-color:#ecf0f1;--accent-color-darker:#bdc3c7;--accent-color-text:#000;--body-text-color:rgba(255, 255, 255, 0.7);--scrollbar-thumb:hsl(0, 0%, 40%);--scrollbar-track:var(--body-background)}:root{--sys-font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", "Droid Sans", "Helvetica Neue";--zh-font-family:"PingFang SC", "Hiragino Sans GB", "Droid Sans Fallback", "Microsoft YaHei";--base-font-family:"Lato", var(--sys-font-family), var(--zh-font-family), sans-serif;--code-font-family:Menlo, Monaco, Consolas, "Courier New", var(--zh-font-family), monospace}:root{--card-background:#fff;--card-background-selected:#eaeaea;--card-text-color-main:#000;--card-text-color-secondary:#747474;--card-text-color-tertiary:#767676;--card-separator-color:rgba(218, 218, 218, 0.5);--card-border-radius:10px;--card-padding:20px;--small-card-padding:25px 20px}@media(min-width:768px){:root{--card-padding:25px}}@media(min-width:1280px){:root{--card-padding:30px}}@media(min-width:768px){:root{--small-card-padding:25px}}:root[data-scheme=dark]{--card-background:#424242;--card-background-selected:rgba(255, 255, 255, 0.16);--card-text-color-main:rgba(255, 255, 255, 0.9);--card-text-color-secondary:rgba(255, 255, 255, 0.7);--card-text-color-tertiary:rgba(255, 255, 255, 0.5);--card-separator-color:rgba(255, 255, 255, 0.12)}:root{--article-font-family:var(--base-font-family);--article-font-size:1.6rem;--article-line-height:1.85}@media(min-width:768px){:root{--article-font-size:1.7rem}}:root{--blockquote-border-size:4px;--blockquote-background-color:rgb(248 248 248);--heading-border-size:4px;--link-background-color:189, 195, 199;--link-background-opacity:0.5;--link-background-opacity-hover:0.7;--pre-background-color:#272822;--pre-text-color:#f8f8f2;--code-background-color:rgba(0, 0, 0, 0.12);--code-text-color:#808080;--table-border-color:#dadada;--tr-even-background-color:#efefee;--kbd-border-color:#dadada}:root[data-scheme=dark]{--code-background-color:#272822;--code-text-color:rgba(255, 255, 255, 0.9);--table-border-color:#717171;--tr-even-background-color:#545454;--blockquote-background-color:rgb(75 75 75)}:root{--shadow-l1:0px 4px 8px rgba(0, 0, 0, 0.04), 0px 0px 2px rgba(0, 0, 0, 0.06), 0px 0px 1px rgba(0, 0, 0, 0.04);--shadow-l2:0px 10px 20px rgba(0, 0, 0, 0.04), 0px 2px 6px rgba(0, 0, 0, 0.04), 0px 0px 1px rgba(0, 0, 0, 0.04);--shadow-l3:0px 10px 20px rgba(0, 0, 0, 0.04), 0px 2px 6px rgba(0, 0, 0, 0.04), 0px 0px 1px rgba(0, 0, 0, 0.04);--shadow-l4:0px 24px 32px rgba(0, 0, 0, 0.04), 0px 16px 24px rgba(0, 0, 0, 0.04), 0px 4px 8px rgba(0, 0, 0, 0.04), + 0px 0px 1px rgba(0, 0, 0, 0.04)}[data-scheme=light]{--pre-text-color:#272822;--pre-background-color:#fafafa}[data-scheme=light] .chroma{color:#272822;background-color:#fafafa}[data-scheme=light] .chroma .err{color:#960050}[data-scheme=light] .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}[data-scheme=light] .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0;width:100%;display:block}[data-scheme=light] .chroma .lntable>tbody{display:block;width:100%}[data-scheme=light] .chroma .lntable>tbody>tr{display:flex;width:100%}[data-scheme=light] .chroma .lntable>tbody>tr>td:last-child{overflow-x:auto}[data-scheme=light] .chroma .hl{display:block;width:100%;background-color:#ffc}[data-scheme=light] .chroma .lnt{margin-right:.4em;padding:0 .4em;color:#7f7f7f;display:block}[data-scheme=light] .chroma .ln{margin-right:.4em;padding:0 .4em;color:#7f7f7f}[data-scheme=light] .chroma .k{color:#00a8c8}[data-scheme=light] .chroma .kc{color:#00a8c8}[data-scheme=light] .chroma .kd{color:#00a8c8}[data-scheme=light] .chroma .kn{color:#f92672}[data-scheme=light] .chroma .kp{color:#00a8c8}[data-scheme=light] .chroma .kr{color:#00a8c8}[data-scheme=light] .chroma .kt{color:#00a8c8}[data-scheme=light] .chroma .n{color:#111}[data-scheme=light] .chroma .na{color:#75af00}[data-scheme=light] .chroma .nb{color:#111}[data-scheme=light] .chroma .bp{color:#111}[data-scheme=light] .chroma .nc{color:#75af00}[data-scheme=light] .chroma .no{color:#00a8c8}[data-scheme=light] .chroma .nd{color:#75af00}[data-scheme=light] .chroma .ni{color:#111}[data-scheme=light] .chroma .ne{color:#75af00}[data-scheme=light] .chroma .nf{color:#75af00}[data-scheme=light] .chroma .fm{color:#111}[data-scheme=light] .chroma .nl{color:#111}[data-scheme=light] .chroma .nn{color:#111}[data-scheme=light] .chroma .nx{color:#75af00}[data-scheme=light] .chroma .py{color:#111}[data-scheme=light] .chroma .nt{color:#f92672}[data-scheme=light] .chroma .nv{color:#111}[data-scheme=light] .chroma .vc{color:#111}[data-scheme=light] .chroma .vg{color:#111}[data-scheme=light] .chroma .vi{color:#111}[data-scheme=light] .chroma .vm{color:#111}[data-scheme=light] .chroma .l{color:#ae81ff}[data-scheme=light] .chroma .ld{color:#d88200}[data-scheme=light] .chroma .s{color:#d88200}[data-scheme=light] .chroma .sa{color:#d88200}[data-scheme=light] .chroma .sb{color:#d88200}[data-scheme=light] .chroma .sc{color:#d88200}[data-scheme=light] .chroma .dl{color:#d88200}[data-scheme=light] .chroma .sd{color:#d88200}[data-scheme=light] .chroma .s2{color:#d88200}[data-scheme=light] .chroma .se{color:#ae81ff}[data-scheme=light] .chroma .sh{color:#d88200}[data-scheme=light] .chroma .si{color:#d88200}[data-scheme=light] .chroma .sx{color:#d88200}[data-scheme=light] .chroma .sr{color:#d88200}[data-scheme=light] .chroma .s1{color:#d88200}[data-scheme=light] .chroma .ss{color:#d88200}[data-scheme=light] .chroma .m{color:#ae81ff}[data-scheme=light] .chroma .mb{color:#ae81ff}[data-scheme=light] .chroma .mf{color:#ae81ff}[data-scheme=light] .chroma .mh{color:#ae81ff}[data-scheme=light] .chroma .mi{color:#ae81ff}[data-scheme=light] .chroma .il{color:#ae81ff}[data-scheme=light] .chroma .mo{color:#ae81ff}[data-scheme=light] .chroma .o{color:#f92672}[data-scheme=light] .chroma .ow{color:#f92672}[data-scheme=light] .chroma .p{color:#111}[data-scheme=light] .chroma .c{color:#75715e}[data-scheme=light] .chroma .ch{color:#75715e}[data-scheme=light] .chroma .cm{color:#75715e}[data-scheme=light] .chroma .c1{color:#75715e}[data-scheme=light] .chroma .cs{color:#75715e}[data-scheme=light] .chroma .cp{color:#75715e}[data-scheme=light] .chroma .cpf{color:#75715e}[data-scheme=light] .chroma .gd{color:#f92672}[data-scheme=light] .chroma .ge{font-style:italic}[data-scheme=light] .chroma .gi{color:#75af00}[data-scheme=light] .chroma .gs{font-weight:700}[data-scheme=light] .chroma .gu{color:#75715e}[data-scheme=dark]{--pre-text-color:#f8f8f2;--pre-background-color:#272822}[data-scheme=dark] .chroma{color:#f8f8f2;background-color:#272822}[data-scheme=dark] .chroma .err{color:#bb0064}[data-scheme=dark] .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}[data-scheme=dark] .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0;width:100%;display:block}[data-scheme=dark] .chroma .lntable>tbody{display:block;width:100%}[data-scheme=dark] .chroma .lntable>tbody>tr{display:flex;width:100%}[data-scheme=dark] .chroma .lntable>tbody>tr>td:last-child{overflow-x:auto}[data-scheme=dark] .chroma .hl{display:block;width:100%;background-color:#ffc}[data-scheme=dark] .chroma .lnt{margin-right:.4em;padding:0 .4em;color:#7f7f7f;display:block}[data-scheme=dark] .chroma .ln{margin-right:.4em;padding:0 .4em;color:#7f7f7f}[data-scheme=dark] .chroma .k{color:#66d9ef}[data-scheme=dark] .chroma .kc{color:#66d9ef}[data-scheme=dark] .chroma .kd{color:#66d9ef}[data-scheme=dark] .chroma .kn{color:#f92672}[data-scheme=dark] .chroma .kp{color:#66d9ef}[data-scheme=dark] .chroma .kr{color:#66d9ef}[data-scheme=dark] .chroma .kt{color:#66d9ef}[data-scheme=dark] .chroma .n{color:#f8f8f2}[data-scheme=dark] .chroma .na{color:#a6e22e}[data-scheme=dark] .chroma .nb{color:#f8f8f2}[data-scheme=dark] .chroma .bp{color:#f8f8f2}[data-scheme=dark] .chroma .nc{color:#a6e22e}[data-scheme=dark] .chroma .no{color:#66d9ef}[data-scheme=dark] .chroma .nd{color:#a6e22e}[data-scheme=dark] .chroma .ni{color:#f8f8f2}[data-scheme=dark] .chroma .ne{color:#a6e22e}[data-scheme=dark] .chroma .nf{color:#a6e22e}[data-scheme=dark] .chroma .fm{color:#f8f8f2}[data-scheme=dark] .chroma .nl{color:#f8f8f2}[data-scheme=dark] .chroma .nn{color:#f8f8f2}[data-scheme=dark] .chroma .nx{color:#a6e22e}[data-scheme=dark] .chroma .py{color:#f8f8f2}[data-scheme=dark] .chroma .nt{color:#f92672}[data-scheme=dark] .chroma .nv{color:#f8f8f2}[data-scheme=dark] .chroma .vc{color:#f8f8f2}[data-scheme=dark] .chroma .vg{color:#f8f8f2}[data-scheme=dark] .chroma .vi{color:#f8f8f2}[data-scheme=dark] .chroma .vm{color:#f8f8f2}[data-scheme=dark] .chroma .l{color:#ae81ff}[data-scheme=dark] .chroma .ld{color:#e6db74}[data-scheme=dark] .chroma .s{color:#e6db74}[data-scheme=dark] .chroma .sa{color:#e6db74}[data-scheme=dark] .chroma .sb{color:#e6db74}[data-scheme=dark] .chroma .sc{color:#e6db74}[data-scheme=dark] .chroma .dl{color:#e6db74}[data-scheme=dark] .chroma .sd{color:#e6db74}[data-scheme=dark] .chroma .s2{color:#e6db74}[data-scheme=dark] .chroma .se{color:#ae81ff}[data-scheme=dark] .chroma .sh{color:#e6db74}[data-scheme=dark] .chroma .si{color:#e6db74}[data-scheme=dark] .chroma .sx{color:#e6db74}[data-scheme=dark] .chroma .sr{color:#e6db74}[data-scheme=dark] .chroma .s1{color:#e6db74}[data-scheme=dark] .chroma .ss{color:#e6db74}[data-scheme=dark] .chroma .m{color:#ae81ff}[data-scheme=dark] .chroma .mb{color:#ae81ff}[data-scheme=dark] .chroma .mf{color:#ae81ff}[data-scheme=dark] .chroma .mh{color:#ae81ff}[data-scheme=dark] .chroma .mi{color:#ae81ff}[data-scheme=dark] .chroma .il{color:#ae81ff}[data-scheme=dark] .chroma .mo{color:#ae81ff}[data-scheme=dark] .chroma .o{color:#f92672}[data-scheme=dark] .chroma .ow{color:#f92672}[data-scheme=dark] .chroma .p{color:#f8f8f2}[data-scheme=dark] .chroma .c{color:#75715e}[data-scheme=dark] .chroma .ch{color:#75715e}[data-scheme=dark] .chroma .cm{color:#75715e}[data-scheme=dark] .chroma .c1{color:#75715e}[data-scheme=dark] .chroma .cs{color:#75715e}[data-scheme=dark] .chroma .cp{color:#75715e}[data-scheme=dark] .chroma .cpf{color:#75715e}[data-scheme=dark] .chroma .gd{color:#f92672}[data-scheme=dark] .chroma .ge{font-style:italic}[data-scheme=dark] .chroma .gi{color:#a6e22e}[data-scheme=dark] .chroma .gs{font-weight:700}[data-scheme=dark] .chroma .gu{color:#75715e}:root{--menu-icon-separation:40px;--container-padding:15px;--widget-separation:var(--section-separation)}.container{margin-left:auto;margin-right:auto}.container .left-sidebar{order:-3;max-width:var(--left-sidebar-max-width)}.container .right-sidebar{order:-1;max-width:var(--right-sidebar-max-width)}@media(min-width:1024px){.container .right-sidebar{display:flex}}@media(min-width:768px){.container.extended{max-width:1024px;--left-sidebar-max-width:25%;--right-sidebar-max-width:30%}}@media(min-width:1024px){.container.extended{max-width:1280px;--left-sidebar-max-width:20%;--right-sidebar-max-width:30%}}@media(min-width:1280px){.container.extended{max-width:1536px;--left-sidebar-max-width:15%;--right-sidebar-max-width:25%}}@media(min-width:768px){.container.compact{--left-sidebar-max-width:25%;max-width:768px}}@media(min-width:1024px){.container.compact{max-width:1024px;--left-sidebar-max-width:20%}}@media(min-width:1280px){.container.compact{max-width:1280px}}.flex{display:flex;flex-direction:row}.flex.column{flex-direction:column}.flex.on-phone--column{flex-direction:column}@media(min-width:768px){.flex.on-phone--column{flex-direction:unset}}.flex .full-width{width:100%}main.main{order:-2;min-width:0;max-width:100%;flex-grow:1;display:flex;flex-direction:column;gap:var(--section-separation)}@media(min-width:768px){main.main{padding-top:var(--main-top-padding)}}.main-container{min-height:100vh;align-items:flex-start;padding:0 15px;gap:var(--section-separation);padding-top:var(--main-top-padding)}@media(min-width:768px){.main-container{padding:0 20px}}/*!normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css*/html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}/*!* Hamburgers +* @description Tasty CSS-animated hamburgers +* @author Jonathan Suh @jonsuh +* @site https://jonsuh.com/hamburgers +* @link https://github.com/jonsuh/hamburgers*/.hamburger{padding-top:10px;display:inline-block;cursor:pointer;transition-property:opacity,filter;transition-duration:.15s;transition-timing-function:linear;font:inherit;color:inherit;text-transform:none;background-color:transparent;border:0;margin:0;overflow:visible}.hamburger:hover{opacity:.7}.hamburger.is-active:hover{opacity:.7}.hamburger.is-active .hamburger-inner,.hamburger.is-active .hamburger-inner::before,.hamburger.is-active .hamburger-inner::after{background-color:#000}.hamburger-box{width:30px;height:24px;display:inline-block;position:relative}.hamburger-inner{display:block;top:50%;margin-top:-2px}.hamburger-inner,.hamburger-inner::before,.hamburger-inner::after{width:30px;height:2px;background-color:var(--card-text-color-main);border-radius:4px;position:absolute;transition-property:transform;transition-duration:.15s;transition-timing-function:ease}.hamburger-inner::before,.hamburger-inner::after{content:"";display:block}.hamburger-inner::before{top:-10px}.hamburger-inner::after{bottom:-10px}.hamburger--spin .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin .hamburger-inner::before{transition:top .1s .25s ease-in,opacity .1s ease-in}.hamburger--spin .hamburger-inner::after{transition:bottom .1s .25s ease-in,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin.is-active .hamburger-inner{transform:rotate(225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin.is-active .hamburger-inner::before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s .12s ease-out}.hamburger--spin.is-active .hamburger-inner::after{bottom:0;transform:rotate(-90deg);transition:bottom .1s ease-out,transform .22s .12s cubic-bezier(.215,.61,.355,1)}#toggle-menu{background:0 0;border:none;position:absolute;right:0;top:0;z-index:2;cursor:pointer;outline:none}[dir=rtl] #toggle-menu{left:0;right:auto}@media(min-width:768px){#toggle-menu{display:none}}#toggle-menu.is-active .hamburger-inner,#toggle-menu.is-active .hamburger-inner::before,#toggle-menu.is-active .hamburger-inner::after{background-color:var(--accent-color)}#main-menu{list-style:none;overflow-y:auto;flex-grow:1;font-size:1.4rem;background-color:var(--card-background);box-shadow:var(--shadow-l1);display:none;margin:0 calc(var(--container-padding) * -1);padding:30px}@media(min-width:1280px){#main-menu{padding:15px 0}}#main-menu,#main-menu .menu-bottom-section ol{flex-direction:column;gap:30px}@media(min-width:1280px){#main-menu,#main-menu .menu-bottom-section ol{gap:25px}}#main-menu.show{display:flex}@media(min-width:768px){#main-menu{align-items:flex-end;display:flex;background-color:transparent;padding:0;box-shadow:none;margin:0}}#main-menu li{position:relative;vertical-align:middle;padding:0}@media(min-width:768px){#main-menu li{width:100%}}#main-menu li svg{stroke:currentColor;stroke-width:1.33;width:20px;height:20px}#main-menu li a{height:100%;display:inline-flex;align-items:center;color:var(--body-text-color);gap:var(--menu-icon-separation)}#main-menu li span{flex:1}#main-menu li.current a{color:var(--accent-color);font-weight:700}#main-menu li.menu-bottom-section{margin-top:auto}#main-menu li.menu-bottom-section ol{display:flex;padding-left:0}.menu-social{list-style:none;padding:0;margin:0;display:flex;flex-direction:row;gap:10px}.menu-social svg{width:24px;height:24px;stroke:var(--body-text-color);stroke-width:1.33}.article-list{display:flex;flex-direction:column;gap:var(--section-separation)}.article-list article{display:flex;flex-direction:column;background-color:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--card-border-radius);overflow:hidden;transition:box-shadow .3s ease}.article-list article:hover{box-shadow:var(--shadow-l2)}.article-list article .article-image img{width:100%;height:150px;object-fit:cover}@media(min-width:768px){.article-list article .article-image img{height:200px}}@media(min-width:1280px){.article-list article .article-image img{height:250px}}.article-list article:nth-child(5n+1) .article-category a{background:#8ea885;color:#fff}.article-list article:nth-child(5n+2) .article-category a{background:#df7988;color:#fff}.article-list article:nth-child(5n+3) .article-category a{background:#0177b8;color:#fff}.article-list article:nth-child(5n+4) .article-category a{background:#ffb900;color:#fff}.article-list article:nth-child(5n+5) .article-category a{background:#6b69d6;color:#fff}.article-details{display:flex;flex-direction:column;justify-content:center;padding:var(--card-padding);gap:15px}.article-title{font-family:var(--article-font-family);font-weight:600;margin:0;color:var(--card-text-color-main);font-size:2.2rem}@media(min-width:1280px){.article-title{font-size:2.4rem}}.article-title a{color:var(--card-text-color-main)}.article-title a:hover{color:var(--card-text-color-main)}.article-subtitle{font-weight:400;color:var(--card-text-color-secondary);line-height:1.5;margin:0;font-size:1.75rem}@media(min-width:1280px){.article-subtitle{font-size:2rem}}.article-title-wrapper{display:flex;flex-direction:column;gap:8px}.article-time,.article-translations{display:flex;color:var(--card-text-color-tertiary);gap:15px}.article-time svg,.article-translations svg{vertical-align:middle;width:20px;height:20px;stroke-width:1.33;flex-shrink:0}.article-time time,.article-time a,.article-translations time,.article-translations a{font-size:1.4rem;color:var(--card-text-color-tertiary)}.article-time>div,.article-translations>div{display:inline-flex;align-items:center;gap:15px}.article-time{flex-wrap:wrap}.article-translations>div{flex-wrap:wrap}.article-category,.article-tags{display:flex;gap:10px;flex-wrap:wrap}.article-category a,.article-tags a{color:var(--accent-color-text);background-color:var(--accent-color);padding:8px 16px;border-radius:var(--tag-border-radius);display:inline-block;font-size:1.4rem;transition:background-color .5s ease}.article-category a:hover,.article-tags a:hover{color:var(--accent-color-text);background-color:var(--accent-color-darker)}.article-list--compact{border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);background-color:var(--card-background);--image-size:50px}@media(min-width:768px){.article-list--compact{--image-size:60px}}.article-list--compact article>a{display:flex;align-items:center;padding:var(--small-card-padding);gap:15px}.article-list--compact article:not(:last-of-type){border-bottom:1.5px solid var(--card-separator-color)}.article-list--compact article .article-details{flex-grow:1;padding:0;min-height:var(--image-size);gap:10px}.article-list--compact article .article-title{margin:0;font-size:1.6rem}@media(min-width:768px){.article-list--compact article .article-title{font-size:1.8rem}}.article-list--compact article .article-image img{width:var(--image-size);height:var(--image-size);object-fit:cover}.article-list--compact article .article-time{font-size:1.4rem}.article-list--compact article .article-preview{font-size:1.4rem;color:var(--card-text-color-tertiary);margin-top:10px;line-height:1.5}.article-list--tile article{border-radius:var(--card-border-radius);overflow:hidden;position:relative;height:350px;width:250px;box-shadow:var(--shadow-l1);transition:box-shadow .3s ease;background-color:var(--card-background)}.article-list--tile article:hover{box-shadow:var(--shadow-l2)}.article-list--tile article.has-image .article-details{background-color:rgba(0,0,0,.25)}.article-list--tile article.has-image .article-title{color:#fff}.article-list--tile article .article-image{position:absolute;top:0;left:0;width:100%;height:100%}.article-list--tile article .article-image img{width:100%;height:100%;object-fit:cover}.article-list--tile article .article-details{border-radius:var(--card-border-radius);position:relative;height:100%;width:100%;display:flex;flex-direction:column;justify-content:flex-end;z-index:2;padding:15px}@media(min-width:640px){.article-list--tile article .article-details{padding:20px}}.article-list--tile article .article-title{font-size:2rem;font-weight:500;color:var(--card-text-color-main)}@media(min-width:640px){.article-list--tile article .article-title{font-size:2.2rem}}.widget{display:flex;flex-direction:column}.widget .widget-icon svg{width:32px;height:32px;stroke-width:1.6;color:var(--body-text-color)}.tagCloud .tagCloud-tags{display:flex;flex-wrap:wrap;gap:10px}.tagCloud .tagCloud-tags a{background:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--tag-border-radius);padding:8px 20px;color:var(--card-text-color-main);font-size:1.4rem;transition:box-shadow .3s ease}.tagCloud .tagCloud-tags a:hover{box-shadow:var(--shadow-l2)}.widget.archives .widget-archive--list{border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);background-color:var(--card-background)}.widget.archives .archives-year:not(:last-of-type){border-bottom:1.5px solid var(--card-separator-color)}.widget.archives .archives-year a{font-size:1.4rem;padding:18px 25px;display:flex}.widget.archives .archives-year a span.year{flex:1;color:var(--card-text-color-main);font-weight:700}.widget.archives .archives-year a span.count{color:var(--card-text-color-tertiary)}footer.site-footer{padding:20px 0 var(--section-separation);font-size:1.4rem;line-height:1.75}footer.site-footer:before{content:"";display:block;height:3px;width:50px;background:var(--body-text-color);margin-bottom:20px}footer.site-footer .copyright{color:var(--accent-color);font-weight:700;margin-bottom:5px}footer.site-footer .powerby{color:var(--body-text-color);font-weight:400;font-size:1.2rem}footer.site-footer .powerby a{color:var(--body-text-color)}.pagination{display:flex;background-color:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--card-border-radius);overflow:hidden;flex-wrap:wrap}.pagination .page-link{padding:16px 32px;display:inline-flex;color:var(--card-text-color-secondary)}.pagination .page-link.current{font-weight:700;background-color:var(--card-background-selected);color:var(--card-text-color-main)}@media(min-width:768px){.sidebar.sticky{position:sticky}}.left-sidebar{display:flex;flex-direction:column;flex-shrink:0;align-self:stretch;gap:var(--sidebar-element-separation);max-width:none;width:100%;position:relative;--sidebar-avatar-size:100px;--sidebar-element-separation:20px;--emoji-size:40px;--emoji-font-size:20px}@media(min-width:768px){.left-sidebar{width:auto;padding-top:var(--main-top-padding);padding-bottom:var(--main-top-padding);max-height:100vh}}@media(min-width:1536px){.left-sidebar{--sidebar-avatar-size:120px;--sidebar-element-separation:25px;--emoji-size:40px}}.left-sidebar.sticky{top:0}.left-sidebar.compact{--sidebar-avatar-size:80px;--emoji-size:30px;--emoji-font-size:15px}@media(min-width:1024px){.left-sidebar.compact header{flex-direction:row}}.left-sidebar.compact header .site-meta{gap:5px}.left-sidebar.compact header .site-name{font-size:1.4rem}@media(min-width:1536px){.left-sidebar.compact header .site-name{font-size:1.75rem}}.left-sidebar.compact header .site-description{font-size:1.4rem}.right-sidebar{width:100%;display:none;flex-direction:column;gap:var(--widget-separation)}.right-sidebar.sticky{top:0}@media(min-width:1024px){.right-sidebar{padding-top:var(--main-top-padding);padding-bottom:var(--main-top-padding)}}.sidebar header{z-index:1;transition:box-shadow .5s ease;display:flex;flex-direction:column;gap:var(--sidebar-element-separation)}@media(min-width:768px){.sidebar header{padding:0}}.sidebar header .site-avatar{position:relative;margin:0;width:var(--sidebar-avatar-size);height:var(--sidebar-avatar-size);flex-shrink:0}.sidebar header .site-avatar .site-logo{width:100%;height:100%;border-radius:100%;box-shadow:var(--shadow-l1)}.sidebar header .site-avatar .emoji{position:absolute;width:var(--emoji-size);height:var(--emoji-size);line-height:var(--emoji-size);border-radius:100%;bottom:0;right:0;text-align:center;font-size:var(--emoji-font-size);background-color:var(--card-background);box-shadow:var(--shadow-l2)}.sidebar header .site-meta{display:flex;flex-direction:column;gap:10px;justify-content:center}.sidebar header .site-name{color:var(--accent-color);margin:0;font-size:1.6rem}@media(min-width:1536px){.sidebar header .site-name{font-size:1.8rem}}.sidebar header .site-description{color:var(--body-text-color);font-weight:400;margin:0;font-size:1.4rem}@media(min-width:1536px){.sidebar header .site-description{font-size:1.6rem}}[data-scheme=dark] #dark-mode-toggle{color:var(--accent-color);font-weight:700}[data-scheme=dark] #dark-mode-toggle .icon-tabler-toggle-left{display:none}[data-scheme=dark] #dark-mode-toggle .icon-tabler-toggle-right{display:unset}#dark-mode-toggle{margin-top:auto;color:var(--body-text-color);display:flex;align-items:center;cursor:pointer;gap:var(--menu-icon-separation)}#dark-mode-toggle .icon-tabler-toggle-right{display:none}#i18n-switch{color:var(--body-text-color);display:inline-flex;align-content:center;gap:var(--menu-icon-separation)}#i18n-switch select{border:0;background-color:transparent;color:var(--body-text-color)}#i18n-switch select option{color:var(--card-text-color-main);background-color:var(--card-background)}html{font-size:62.5%;overflow-y:scroll}*{box-sizing:border-box}body{background:var(--body-background);margin:0;font-family:var(--base-font-family);font-size:1.6rem;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{scrollbar-width:auto;scrollbar-color:var(--scrollbar-thumb)transparent}::-webkit-scrollbar{height:auto}::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb)}::-webkit-scrollbar-track{background-color:transparent}.article-page.hide-sidebar-sm .left-sidebar{display:none}@media(min-width:768px){.article-page.hide-sidebar-sm .left-sidebar{display:inherit}}.article-page .main-article{background:var(--card-background);border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);overflow:hidden}.article-page .main-article .article-header .article-image img{height:auto;width:100%;max-height:45vh;object-fit:cover}.article-page .main-article .article-header .article-details{padding:var(--card-padding);padding-bottom:0}.article-page .main-article .article-header .article-subtitle{font-weight:300;color:var(--card-text-color-secondary);line-height:1.3;margin:0;font-size:1.95rem}.article-page .main-article .article-content{margin:var(--card-padding)0;color:var(--card-text-color-main)}.article-page .main-article .article-content .footnotes{font-family:var(--base-font-family)}.article-page .main-article .article-content img{max-width:100%;height:auto}.article-page .main-article .article-footer{margin:var(--card-padding);margin-top:0}.article-page .main-article .article-footer section:not(:first-child){margin-top:var(--card-padding)}.article-page .main-article .article-footer section{color:var(--card-text-color-tertiary);text-transform:uppercase;display:flex;align-items:center;font-size:1.4rem;gap:15px}.article-page .main-article .article-footer section svg{width:20px;height:20px;stroke-width:1.33}.article-page .main-article .article-footer .article-tags{flex-wrap:wrap;text-transform:unset}.article-page .main-article .article-footer .article-copyright a,.article-page .main-article .article-footer .article-lastmod a{color:var(--body-text-color)}.article-page .main-article .article-footer .article-copyright a.link,.article-page .main-article .article-footer .article-lastmod a.link{box-shadow:unset}.widget--toc{background-color:var(--card-background);border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);display:flex;flex-direction:column;color:var(--card-text-color-main);overflow:hidden}.widget--toc ::-webkit-scrollbar-thumb{background-color:var(--card-separator-color)}.widget--toc #TableOfContents{overflow-x:auto;max-height:75vh}.widget--toc #TableOfContents ol,.widget--toc #TableOfContents ul{margin:0;padding:0}.widget--toc #TableOfContents ol{list-style-type:none;counter-reset:item}.widget--toc #TableOfContents ol li a:first-of-type::before{counter-increment:item;content:counters(item,".")". ";font-weight:700;margin-right:5px}.widget--toc #TableOfContents>ul{padding:0 1em}.widget--toc #TableOfContents li{margin:15px 0 15px 25px;padding:5px}.widget--toc #TableOfContents li>ol,.widget--toc #TableOfContents li>ul{margin-top:10px;padding-left:10px;margin-bottom:-5px}.widget--toc #TableOfContents li>ol>li:last-child,.widget--toc #TableOfContents li>ul>li:last-child{margin-bottom:0}.widget--toc #TableOfContents li.active-class>a{border-left:var(--heading-border-size)solid var(--accent-color);font-weight:700}.widget--toc #TableOfContents ul li.active-class>a{display:block}.widget--toc #TableOfContents>ul>li.active-class>a{margin-left:calc(-25px - 1em);padding-left:calc(25px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li.active-class>a{margin-left:calc(-9px - 1em);padding-left:calc(9px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li.active-class>a{margin-left:calc(-60px - 1em);padding-left:calc(60px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li.active-class>a{margin-left:calc(-44px - 1em);padding-left:calc(44px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li>ul>li.active-class>a{margin-left:calc(-95px - 1em);padding-left:calc(95px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li>ol>li.active-class>a{margin-left:calc(-79px - 1em);padding-left:calc(79px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li>ul>li>ul>li.active-class>a{margin-left:calc(-130px - 1em);padding-left:calc(130px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li>ol>li>ol>li.active-class>a{margin-left:calc(-114px - 1em);padding-left:calc(114px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li>ul>li>ul>li>ul>li.active-class>a{margin-left:calc(-165px - 1em);padding-left:calc(165px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li>ol>li>ol>li>ol>li.active-class>a{margin-left:calc(-149px - 1em);padding-left:calc(149px + 1em - var(--heading-border-size));display:block}.related-content{overflow-x:auto;padding-bottom:15px}.related-content>.flex{float:left}.related-content article{margin-right:15px;flex-shrink:0;overflow:hidden;width:250px;height:150px}.related-content article .article-title{font-size:1.4rem;margin:0}.related-content article.has-image .article-details{padding:20px}.article-content{font-family:var(--article-font-family);font-size:var(--article-font-size);padding:0 var(--card-padding);line-height:var(--article-line-height)}.article-content>p{margin:1.5em 0}.article-content h1,.article-content h2,.article-content h3,.article-content h4,.article-content h5,.article-content h6{margin-inline-start:calc((var(--card-padding)) * -1);padding-inline-start:calc(var(--card-padding) - var(--heading-border-size));border-inline-start:var(--heading-border-size)solid var(--accent-color)}.article-content figure{text-align:center}.article-content figure figcaption{font-size:1.4rem;color:var(--card-text-color-secondary)}.article-content blockquote{position:relative;margin:1.5em 0;border-inline-start:var(--blockquote-border-size)solid var(--card-separator-color);padding:15px calc(var(--card-padding) - var(--blockquote-border-size));background-color:var(--blockquote-background-color)}.article-content blockquote .cite{display:block;text-align:right;font-size:.75em}.article-content blockquote .cite a{text-decoration:underline}.article-content hr{width:100px;margin:40px auto;background:var(--card-text-color-tertiary);height:2px;border:0;opacity:.55}.article-content code{color:var(--code-text-color);background-color:var(--code-background-color);padding:2px 4px;border-radius:var(--tag-border-radius);font-family:var(--code-font-family)}.article-content a,.article-content code{word-break:break-word}.article-content .gallery{position:relative;display:flex;flex-direction:row;justify-content:center;margin:1.5em 0;gap:10px}.article-content .gallery figure{margin:0}.article-content pre{overflow-x:auto;display:block;background-color:var(--pre-background-color);color:var(--pre-text-color);font-family:var(--code-font-family);line-height:1.428571429;word-break:break-all;padding:var(--card-padding)}[dir=rtl] .article-content pre{direction:ltr}.article-content pre code{color:unset;border:none;background:0 0;padding:0}.article-content .highlight{background-color:var(--pre-background-color);padding:var(--card-padding);position:relative}.article-content .highlight:hover .copyCodeButton{opacity:1}[dir=rtl] .article-content .highlight{direction:ltr}.article-content .highlight pre{margin:initial;padding:0;margin:0;width:auto}.article-content .copyCodeButton{position:absolute;top:calc(var(--card-padding));right:calc(var(--card-padding));background:var(--card-background);border:none;box-shadow:var(--shadow-l2);border-radius:var(--tag-border-radius);padding:8px 16px;color:var(--card-text-color-main);cursor:pointer;font-size:14px;opacity:0;transition:opacity .3s ease}.article-content .table-wrapper{padding:0 var(--card-padding);overflow-x:auto;display:block}.article-content table{width:100%;border-collapse:collapse;border-spacing:0;margin-bottom:1.5em;font-size:.96em}.article-content th,.article-content td{text-align:left;padding:4px 8px 4px 10px;border:1px solid var(--table-border-color)}.article-content td{vertical-align:top}.article-content tr:nth-child(even){background-color:var(--tr-even-background-color)}.article-content .twitter-tweet{color:var(--card-text-color-main)}.article-content .video-wrapper{position:relative;width:100%;height:0;padding-bottom:56.25%;overflow:hidden}.article-content .video-wrapper>iframe,.article-content .video-wrapper>video{position:absolute;width:100%;height:100%;left:0;top:0;border:0}.article-content .gitlab-embed-snippets{margin:0!important}.article-content .gitlab-embed-snippets .file-holder.snippet-file-content{margin-block-end:0!important;margin-block-start:0!important;margin-left:calc((var(--card-padding)) * -1)!important;margin-right:calc((var(--card-padding)) * -1)!important;padding:0 var(--card-padding)!important}.article-content blockquote,.article-content figure,.article-content .highlight,.article-content pre,.article-content .gallery,.article-content .video-wrapper,.article-content .table-wrapper,.article-content .s_video_simple{margin-left:calc((var(--card-padding)) * -1);margin-right:calc((var(--card-padding)) * -1);width:calc(100% + var(--card-padding) * 2)}.article-content .katex-display>.katex{overflow-x:auto;overflow-y:hidden}.article-content kbd{border:1px solid var(--kbd-border-color);font-weight:700;font-size:.9em;line-height:1;padding:2px 4px;border-radius:4px;display:inline-block}.section-card{border-radius:var(--card-border-radius);background-color:var(--card-background);padding:var(--small-card-padding);box-shadow:var(--shadow-l1);display:flex;align-items:center;gap:20px;--separation:15px}.section-card .section-term{font-size:2.2rem;margin:0;color:var(--card-text-color-main)}.section-card .section-description{font-weight:400;color:var(--card-text-color-secondary);font-size:1.6rem;margin:0}.section-card .section-details{flex-grow:1;display:flex;flex-direction:column;gap:8px}.section-card .section-image img{width:60px;height:60px}.section-card .section-count{color:var(--card-text-color-tertiary);font-size:1.4rem;margin:0;font-weight:700;text-transform:uppercase}.subsection-list{overflow-x:auto}.subsection-list .article-list--tile{display:flex;padding-bottom:15px}.subsection-list .article-list--tile article{width:250px;height:150px;margin-right:20px;flex-shrink:0}.subsection-list .article-list--tile article .article-title{margin:0;font-size:1.8rem}.subsection-list .article-list--tile article .article-details{padding:20px}.not-found-card{background-color:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--card-border-radius);padding:var(--card-padding)}.search-form{position:relative;--button-size:80px}.search-form.widget{--button-size:60px}.search-form.widget label{font-size:1.3rem;top:10px}.search-form.widget input{font-size:1.5rem;padding:30px 20px 15px}.search-form p{position:relative;margin:0}.search-form label{position:absolute;top:15px;inset-inline-start:20px;font-size:1.4rem;color:var(--card-text-color-tertiary)}.search-form input{padding:40px 20px 20px;border-radius:var(--card-border-radius);background-color:var(--card-background);box-shadow:var(--shadow-l1);color:var(--card-text-color-main);width:100%;border:0;-webkit-appearance:none;transition:box-shadow .3s ease;font-size:1.8rem}.search-form input:focus{outline:0;box-shadow:var(--shadow-l2)}.search-form button{position:absolute;inset-inline-end:0;top:0;height:100%;width:var(--button-size);cursor:pointer;background-color:transparent;border:0;padding:0 10px}.search-form button:focus{outline:0}.search-form button:focus svg{stroke-width:2;color:var(--accent-color)}.search-form button svg{color:var(--card-text-color-secondary);stroke-width:1.33;transition:all .3s ease;width:20px;height:20px}a{text-decoration:none;color:var(--accent-color)}a:hover{color:var(--accent-color-darker)}a.link{box-shadow:0 -2px rgba(var(--link-background-color),var(--link-background-opacity))inset;transition:all .3s ease}a.link:hover{box-shadow:0 calc(-1rem * var(--article-line-height))rgba(var(--link-background-color),var(--link-background-opacity-hover))inset}.section-title{text-transform:uppercase;margin-top:0;margin-bottom:10px;display:block;font-size:1.6rem;font-weight:700;color:var(--body-text-color)}.section-title a{color:var(--body-text-color)}:root{--main-top-padding:30px;--card-border-radius:25px;--tag-border-radius:8px;--section-separation:40px;--code-background-color:#f2f1b0e3;--code-text-color:#5c3400e0;--article-line-height:1.5;--pre-background-color:#f0f0f0;--card-padding:10px}:root[data-scheme=dark]{--code-background-color:#00000075;--code-text-color:#e9d88c}a{word-break:break-all}code{word-break:break-all}.article-page .main-article .article-content img{max-width:96%!important;height:auto!important;border-radius:8px}.article-content blockquote{border-left:2px solid #b6820096!important;background:#ffdd1fb9}[data-scheme=dark] blockquote{border-left:5px solid #c56600de!important;background:#3b2d0127}.highlight{max-width:102%!important;background-color:var(--pre-background-color);padding:var(--card-padding);position:relative;border-radius:20px;margin-left:-7px!important;margin-right:-12px;box-shadow:var(--shadow-l1)!important}.highlight:hover .copyCodeButton{opacity:1}[dir=rtl] .highlight{direction:ltr}.highlight pre{margin:initial;padding:0;margin:0;width:auto}[data-scheme=light] .article-content .highlight{background-color:rgba(255,225,107,.635)}[data-scheme=light] .chroma{color:#38230dd6;background-color:rgba(255,247,209,.244)}[data-scheme=dark] .article-content .highlight{background-color:rgba(33,21,3,.741)}[data-scheme=dark] .chroma{color:#f4f0c0;background-color:rgba(38,20,3,.752)}.article-content .highlight:before{content:"";display:block;background:url(../img/code-header.svg);height:18px;width:100%;background-size:57px;background-repeat:no-repeat;margin-bottom:5px;background-position:-1px 2px}[data-scheme=dark] ::selection{color:#fff;background:#444}[data-scheme=dark] ::-moz-selection{color:#fff;background:#444}[data-scheme=light] ::selection{color:#fff;background:#444}[data-scheme=light] ::-moz-selection{color:#fff;background:#444}a{text-decoration:none;color:var(--accent-color)}a:hover{color:var(--accent-color-darker)}a.link{color:#994311;font-weight:500;padding:0 2px;text-decoration:none;cursor:pointer}a.link:hover{text-decoration:none}[data-scheme=dark] a{text-decoration:none}[data-scheme=dark] a:hover{color:var(--accent-color-darker)}[data-scheme=dark] a.link{color:#fff193e0;font-weight:500;padding:0 2px;text-decoration:none;cursor:pointer}[data-scheme=dark] a.link:hover{text-decoration:none}.article-list article .article-image img{width:100%;height:195px;object-fit:cover}@media(min-width:768px){.article-list article .article-image img{height:300px}}@media(min-width:1280px){.article-list article .article-image img{height:355px}}.main-container{min-height:100vh;align-items:flex-start;padding:10px;gap:var(--section-separation);padding-top:var(--main-top-padding)}@media(min-width:768px){.main-container{padding:0 35px}}.container{margin-left:auto;margin-right:auto}.container .left-sidebar{order:-3;max-width:var(--left-sidebar-max-width)}.container .right-sidebar{order:-1;max-width:var(--right-sidebar-max-width)}@media(min-width:1024px){.container .right-sidebar{display:flex;flex-direction:column}}@media(min-width:768px){.container.extended{max-width:1024px;--left-sidebar-max-width:20%;--right-sidebar-max-width:20%}}@media(min-width:1024px){.container.extended{max-width:1280px;--left-sidebar-max-width:21%;--right-sidebar-max-width:20%}}@media(min-width:1280px){.container.extended{max-width:1536px;--left-sidebar-max-width:21%;--right-sidebar-max-width:18%}}@media(min-width:768px){.container.compact{--left-sidebar-max-width:25%;max-width:768px}}@media(min-width:1024px){.container.compact{max-width:1024px;--left-sidebar-max-width:20%}}@media(min-width:1280px){.container.compact{max-width:1280px}}.article-list--compact article .article-image img{width:var(--image-size);height:var(--image-size);object-fit:cover;border-radius:17%}.menu{padding-left:0;list-style:none;line-height:1.2;flex-direction:column;overflow-x:hidden;overflow-y:scroll;flex-grow:1;background-color:var(--card-background);box-shadow:var(--shadow-l2);display:none;margin:0;border-radius:10px;padding:30px}@media(min-width:1280px){.menu{padding:15px 0}}.menu,.menu .menu-bottom-section{gap:30px}@media(min-width:1280px){.menu,.menu .menu-bottom-section{gap:25px}}.menu.show{display:flex}@media(min-width:768px){.menu{align-items:flex-end;display:flex;background-color:transparent;padding:0;box-shadow:none;margin:0}}.menu li{position:relative;vertical-align:middle;padding:0}@media(min-width:768px){.menu li{width:100%}}.menu li svg{stroke-width:1.53;width:20px;height:20px}.menu li a{height:100%;display:inline-flex;align-items:center;color:var(--body-text-color);gap:var(--menu-icon-separation)}.menu li span{flex:1}.menu li.current a{color:var(--accent-color);font-weight:700}.menu::-webkit-scrollbar{display:none}html ::-webkit-scrollbar{width:20px}html ::-webkit-scrollbar-track{background-color:transparent}html ::-webkit-scrollbar-thumb{background-color:#d6dee1;border-radius:20px;border:6px solid transparent;background-clip:content-box}html ::-webkit-scrollbar-thumb:hover{background-color:#a8bbbf}@media(min-width:1024px){.article-list--compact{display:grid;grid-template-columns:1fr 1fr;background:0 0;box-shadow:none;gap:1rem}.article-list--compact article{background:var(--card-background);border:none;box-shadow:var(--shadow-l2);margin-bottom:8px;border-radius:16px}}@media(min-width:1024px){.article-list--compact.links{display:grid;grid-template-columns:1fr 1fr 1fr;background:0 0;box-shadow:none;gap:1rem}.article-list--compact.links article{background:var(--card-background);border:none;box-shadow:var(--shadow-l2);margin-bottom:8px;border-radius:var(--card-border-radius)}.article-list--compact.links article:nth-child(odd){margin-right:8px}}.welcome{color:var(--card-text-color-main);background:var(--card-background);box-shadow:var(--shadow-l2);border-radius:30px;display:inline-block}.shake{display:inline-block;animation:shake 1s;animation-duration:1s;animation-timing-function:ease;animation-delay:0s;animation-iteration-count:1;animation-direction:normal;animation-fill-mode:none;animation-play-state:running;animation-name:shake;animation-timeline:auto;animation-range-start:normal;animation-range-end:normal;animation-delay:2s}@keyframes shake{0%{transform:rotate(0)}25%{transform:rotate(45deg)scale(1.2)}50%{transform:rotate(0)scale(1.2)}75%{transform:rotate(45deg)scale(1.2)}100%{transform:rotate(0)}}.jump-text1{display:inline-block;animation:jump .5s 1}.jump-text2{display:inline-block;animation:jump .5s 1;animation-delay:.1s}.jump-text3{display:inline-block;animation:jump .5s 1;animation-delay:.2s}.jump-text4{display:inline-block;animation:jump .5s 1;animation-delay:.3s}.jump-text5{display:inline-block;animation:jump .5s 1;animation-delay:.4s}.jump-text6{display:inline-block;animation:jump .5s 1;animation-delay:.5s}.jump-text7{display:inline-block;animation:jump .5s 1;animation-delay:.6s}.jump-text8{display:inline-block;animation:jump .5s 1;animation-delay:.7s}.jump-text9{display:inline-block;animation:jump .5s 1;animation-delay:.9s}@keyframes jump{0%{transform:translateY(0)}50%{transform:translateY(-20px)}100%{transform:translateY(0)}}.back-home{background:var(--card-background);border-radius:var(--tag-border-radius);color:var(--card-text-color-tertiary);margin-right:.1rem;margin-top:24px;display:inline-flex;align-items:center;font-size:1.4rem;text-transform:uppercase;padding:10px 20px 10px 15px;transition:box-shadow .3s ease;box-shadow:var(--shadow-l3)}.back-home:hover{box-shadow:var(--shadow-l2)}.back-home svg{margin-right:5px;width:20px;height:20px}.back-home span{font-weight:500;white-space:nowrap}.main-container .right-sidebar{order:2;max-width:var(--right-sidebar-max-width)}@media(min-width:1024px){.main-container .right-sidebar{display:flex}}main.main{order:1;min-width:0;max-width:100%;flex-grow:1;display:flex;flex-direction:column;gap:var(--section-separation)}@media(min-width:768px){main.main{padding-top:var(--main-top-padding)}} \ No newline at end of file diff --git a/scss/style.min.7ffaf41b9e193e58dc54ec81e998e03ff677eda71c08181abf5df2010f969c05.css b/scss/style.min.7ffaf41b9e193e58dc54ec81e998e03ff677eda71c08181abf5df2010f969c05.css new file mode 100644 index 00000000..34f39cd1 --- /dev/null +++ b/scss/style.min.7ffaf41b9e193e58dc54ec81e998e03ff677eda71c08181abf5df2010f969c05.css @@ -0,0 +1,10 @@ +@charset "UTF-8";/*!* Hugo Theme Stack +* +* @author: Jimmy Cai +* @website: https://jimmycai.com +* @link: https://github.com/CaiJimmy/hugo-theme-stack*/:root{--main-top-padding:35px;--body-background:#f5f5fa;--accent-color:#34495e;--accent-color-darker:#2c3e50;--accent-color-text:#fff;--body-text-color:#707070;--tag-border-radius:4px;--section-separation:40px;--scrollbar-thumb:hsl(0, 0%, 85%);--scrollbar-track:var(--body-background)}@media(min-width:1280px){:root{--main-top-padding:50px}}:root[data-scheme=dark]{--body-background:#303030;--accent-color:#ecf0f1;--accent-color-darker:#bdc3c7;--accent-color-text:#000;--body-text-color:rgba(255, 255, 255, 0.7);--scrollbar-thumb:hsl(0, 0%, 40%);--scrollbar-track:var(--body-background)}:root{--sys-font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", "Droid Sans", "Helvetica Neue";--zh-font-family:"PingFang SC", "Hiragino Sans GB", "Droid Sans Fallback", "Microsoft YaHei";--base-font-family:"Lato", var(--sys-font-family), var(--zh-font-family), sans-serif;--code-font-family:Menlo, Monaco, Consolas, "Courier New", var(--zh-font-family), monospace}:root{--card-background:#fff;--card-background-selected:#eaeaea;--card-text-color-main:#000;--card-text-color-secondary:#747474;--card-text-color-tertiary:#767676;--card-separator-color:rgba(218, 218, 218, 0.5);--card-border-radius:10px;--card-padding:20px;--small-card-padding:25px 20px}@media(min-width:768px){:root{--card-padding:25px}}@media(min-width:1280px){:root{--card-padding:30px}}@media(min-width:768px){:root{--small-card-padding:25px}}:root[data-scheme=dark]{--card-background:#424242;--card-background-selected:rgba(255, 255, 255, 0.16);--card-text-color-main:rgba(255, 255, 255, 0.9);--card-text-color-secondary:rgba(255, 255, 255, 0.7);--card-text-color-tertiary:rgba(255, 255, 255, 0.5);--card-separator-color:rgba(255, 255, 255, 0.12)}:root{--article-font-family:var(--base-font-family);--article-font-size:1.6rem;--article-line-height:1.85}@media(min-width:768px){:root{--article-font-size:1.7rem}}:root{--blockquote-border-size:4px;--blockquote-background-color:rgb(248 248 248);--heading-border-size:4px;--link-background-color:189, 195, 199;--link-background-opacity:0.5;--link-background-opacity-hover:0.7;--pre-background-color:#272822;--pre-text-color:#f8f8f2;--code-background-color:rgba(0, 0, 0, 0.12);--code-text-color:#808080;--table-border-color:#dadada;--tr-even-background-color:#efefee;--kbd-border-color:#dadada}:root[data-scheme=dark]{--code-background-color:#272822;--code-text-color:rgba(255, 255, 255, 0.9);--table-border-color:#717171;--tr-even-background-color:#545454;--blockquote-background-color:rgb(75 75 75)}:root{--shadow-l1:0px 4px 8px rgba(0, 0, 0, 0.04), 0px 0px 2px rgba(0, 0, 0, 0.06), 0px 0px 1px rgba(0, 0, 0, 0.04);--shadow-l2:0px 10px 20px rgba(0, 0, 0, 0.04), 0px 2px 6px rgba(0, 0, 0, 0.04), 0px 0px 1px rgba(0, 0, 0, 0.04);--shadow-l3:0px 10px 20px rgba(0, 0, 0, 0.04), 0px 2px 6px rgba(0, 0, 0, 0.04), 0px 0px 1px rgba(0, 0, 0, 0.04);--shadow-l4:0px 24px 32px rgba(0, 0, 0, 0.04), 0px 16px 24px rgba(0, 0, 0, 0.04), 0px 4px 8px rgba(0, 0, 0, 0.04), + 0px 0px 1px rgba(0, 0, 0, 0.04)}[data-scheme=light]{--pre-text-color:#272822;--pre-background-color:#fafafa}[data-scheme=light] .chroma{color:#272822;background-color:#fafafa}[data-scheme=light] .chroma .err{color:#960050}[data-scheme=light] .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}[data-scheme=light] .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0;width:100%;display:block}[data-scheme=light] .chroma .lntable>tbody{display:block;width:100%}[data-scheme=light] .chroma .lntable>tbody>tr{display:flex;width:100%}[data-scheme=light] .chroma .lntable>tbody>tr>td:last-child{overflow-x:auto}[data-scheme=light] .chroma .hl{display:block;width:100%;background-color:#ffc}[data-scheme=light] .chroma .lnt{margin-right:.4em;padding:0 .4em;color:#7f7f7f;display:block}[data-scheme=light] .chroma .ln{margin-right:.4em;padding:0 .4em;color:#7f7f7f}[data-scheme=light] .chroma .k{color:#00a8c8}[data-scheme=light] .chroma .kc{color:#00a8c8}[data-scheme=light] .chroma .kd{color:#00a8c8}[data-scheme=light] .chroma .kn{color:#f92672}[data-scheme=light] .chroma .kp{color:#00a8c8}[data-scheme=light] .chroma .kr{color:#00a8c8}[data-scheme=light] .chroma .kt{color:#00a8c8}[data-scheme=light] .chroma .n{color:#111}[data-scheme=light] .chroma .na{color:#75af00}[data-scheme=light] .chroma .nb{color:#111}[data-scheme=light] .chroma .bp{color:#111}[data-scheme=light] .chroma .nc{color:#75af00}[data-scheme=light] .chroma .no{color:#00a8c8}[data-scheme=light] .chroma .nd{color:#75af00}[data-scheme=light] .chroma .ni{color:#111}[data-scheme=light] .chroma .ne{color:#75af00}[data-scheme=light] .chroma .nf{color:#75af00}[data-scheme=light] .chroma .fm{color:#111}[data-scheme=light] .chroma .nl{color:#111}[data-scheme=light] .chroma .nn{color:#111}[data-scheme=light] .chroma .nx{color:#75af00}[data-scheme=light] .chroma .py{color:#111}[data-scheme=light] .chroma .nt{color:#f92672}[data-scheme=light] .chroma .nv{color:#111}[data-scheme=light] .chroma .vc{color:#111}[data-scheme=light] .chroma .vg{color:#111}[data-scheme=light] .chroma .vi{color:#111}[data-scheme=light] .chroma .vm{color:#111}[data-scheme=light] .chroma .l{color:#ae81ff}[data-scheme=light] .chroma .ld{color:#d88200}[data-scheme=light] .chroma .s{color:#d88200}[data-scheme=light] .chroma .sa{color:#d88200}[data-scheme=light] .chroma .sb{color:#d88200}[data-scheme=light] .chroma .sc{color:#d88200}[data-scheme=light] .chroma .dl{color:#d88200}[data-scheme=light] .chroma .sd{color:#d88200}[data-scheme=light] .chroma .s2{color:#d88200}[data-scheme=light] .chroma .se{color:#ae81ff}[data-scheme=light] .chroma .sh{color:#d88200}[data-scheme=light] .chroma .si{color:#d88200}[data-scheme=light] .chroma .sx{color:#d88200}[data-scheme=light] .chroma .sr{color:#d88200}[data-scheme=light] .chroma .s1{color:#d88200}[data-scheme=light] .chroma .ss{color:#d88200}[data-scheme=light] .chroma .m{color:#ae81ff}[data-scheme=light] .chroma .mb{color:#ae81ff}[data-scheme=light] .chroma .mf{color:#ae81ff}[data-scheme=light] .chroma .mh{color:#ae81ff}[data-scheme=light] .chroma .mi{color:#ae81ff}[data-scheme=light] .chroma .il{color:#ae81ff}[data-scheme=light] .chroma .mo{color:#ae81ff}[data-scheme=light] .chroma .o{color:#f92672}[data-scheme=light] .chroma .ow{color:#f92672}[data-scheme=light] .chroma .p{color:#111}[data-scheme=light] .chroma .c{color:#75715e}[data-scheme=light] .chroma .ch{color:#75715e}[data-scheme=light] .chroma .cm{color:#75715e}[data-scheme=light] .chroma .c1{color:#75715e}[data-scheme=light] .chroma .cs{color:#75715e}[data-scheme=light] .chroma .cp{color:#75715e}[data-scheme=light] .chroma .cpf{color:#75715e}[data-scheme=light] .chroma .gd{color:#f92672}[data-scheme=light] .chroma .ge{font-style:italic}[data-scheme=light] .chroma .gi{color:#75af00}[data-scheme=light] .chroma .gs{font-weight:700}[data-scheme=light] .chroma .gu{color:#75715e}[data-scheme=dark]{--pre-text-color:#f8f8f2;--pre-background-color:#272822}[data-scheme=dark] .chroma{color:#f8f8f2;background-color:#272822}[data-scheme=dark] .chroma .err{color:#bb0064}[data-scheme=dark] .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}[data-scheme=dark] .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0;width:100%;display:block}[data-scheme=dark] .chroma .lntable>tbody{display:block;width:100%}[data-scheme=dark] .chroma .lntable>tbody>tr{display:flex;width:100%}[data-scheme=dark] .chroma .lntable>tbody>tr>td:last-child{overflow-x:auto}[data-scheme=dark] .chroma .hl{display:block;width:100%;background-color:#ffc}[data-scheme=dark] .chroma .lnt{margin-right:.4em;padding:0 .4em;color:#7f7f7f;display:block}[data-scheme=dark] .chroma .ln{margin-right:.4em;padding:0 .4em;color:#7f7f7f}[data-scheme=dark] .chroma .k{color:#66d9ef}[data-scheme=dark] .chroma .kc{color:#66d9ef}[data-scheme=dark] .chroma .kd{color:#66d9ef}[data-scheme=dark] .chroma .kn{color:#f92672}[data-scheme=dark] .chroma .kp{color:#66d9ef}[data-scheme=dark] .chroma .kr{color:#66d9ef}[data-scheme=dark] .chroma .kt{color:#66d9ef}[data-scheme=dark] .chroma .n{color:#f8f8f2}[data-scheme=dark] .chroma .na{color:#a6e22e}[data-scheme=dark] .chroma .nb{color:#f8f8f2}[data-scheme=dark] .chroma .bp{color:#f8f8f2}[data-scheme=dark] .chroma .nc{color:#a6e22e}[data-scheme=dark] .chroma .no{color:#66d9ef}[data-scheme=dark] .chroma .nd{color:#a6e22e}[data-scheme=dark] .chroma .ni{color:#f8f8f2}[data-scheme=dark] .chroma .ne{color:#a6e22e}[data-scheme=dark] .chroma .nf{color:#a6e22e}[data-scheme=dark] .chroma .fm{color:#f8f8f2}[data-scheme=dark] .chroma .nl{color:#f8f8f2}[data-scheme=dark] .chroma .nn{color:#f8f8f2}[data-scheme=dark] .chroma .nx{color:#a6e22e}[data-scheme=dark] .chroma .py{color:#f8f8f2}[data-scheme=dark] .chroma .nt{color:#f92672}[data-scheme=dark] .chroma .nv{color:#f8f8f2}[data-scheme=dark] .chroma .vc{color:#f8f8f2}[data-scheme=dark] .chroma .vg{color:#f8f8f2}[data-scheme=dark] .chroma .vi{color:#f8f8f2}[data-scheme=dark] .chroma .vm{color:#f8f8f2}[data-scheme=dark] .chroma .l{color:#ae81ff}[data-scheme=dark] .chroma .ld{color:#e6db74}[data-scheme=dark] .chroma .s{color:#e6db74}[data-scheme=dark] .chroma .sa{color:#e6db74}[data-scheme=dark] .chroma .sb{color:#e6db74}[data-scheme=dark] .chroma .sc{color:#e6db74}[data-scheme=dark] .chroma .dl{color:#e6db74}[data-scheme=dark] .chroma .sd{color:#e6db74}[data-scheme=dark] .chroma .s2{color:#e6db74}[data-scheme=dark] .chroma .se{color:#ae81ff}[data-scheme=dark] .chroma .sh{color:#e6db74}[data-scheme=dark] .chroma .si{color:#e6db74}[data-scheme=dark] .chroma .sx{color:#e6db74}[data-scheme=dark] .chroma .sr{color:#e6db74}[data-scheme=dark] .chroma .s1{color:#e6db74}[data-scheme=dark] .chroma .ss{color:#e6db74}[data-scheme=dark] .chroma .m{color:#ae81ff}[data-scheme=dark] .chroma .mb{color:#ae81ff}[data-scheme=dark] .chroma .mf{color:#ae81ff}[data-scheme=dark] .chroma .mh{color:#ae81ff}[data-scheme=dark] .chroma .mi{color:#ae81ff}[data-scheme=dark] .chroma .il{color:#ae81ff}[data-scheme=dark] .chroma .mo{color:#ae81ff}[data-scheme=dark] .chroma .o{color:#f92672}[data-scheme=dark] .chroma .ow{color:#f92672}[data-scheme=dark] .chroma .p{color:#f8f8f2}[data-scheme=dark] .chroma .c{color:#75715e}[data-scheme=dark] .chroma .ch{color:#75715e}[data-scheme=dark] .chroma .cm{color:#75715e}[data-scheme=dark] .chroma .c1{color:#75715e}[data-scheme=dark] .chroma .cs{color:#75715e}[data-scheme=dark] .chroma .cp{color:#75715e}[data-scheme=dark] .chroma .cpf{color:#75715e}[data-scheme=dark] .chroma .gd{color:#f92672}[data-scheme=dark] .chroma .ge{font-style:italic}[data-scheme=dark] .chroma .gi{color:#a6e22e}[data-scheme=dark] .chroma .gs{font-weight:700}[data-scheme=dark] .chroma .gu{color:#75715e}:root{--menu-icon-separation:40px;--container-padding:15px;--widget-separation:var(--section-separation)}.container{margin-left:auto;margin-right:auto}.container .left-sidebar{order:-3;max-width:var(--left-sidebar-max-width)}.container .right-sidebar{order:-1;max-width:var(--right-sidebar-max-width)}@media(min-width:1024px){.container .right-sidebar{display:flex}}@media(min-width:768px){.container.extended{max-width:1024px;--left-sidebar-max-width:25%;--right-sidebar-max-width:30%}}@media(min-width:1024px){.container.extended{max-width:1280px;--left-sidebar-max-width:20%;--right-sidebar-max-width:30%}}@media(min-width:1280px){.container.extended{max-width:1536px;--left-sidebar-max-width:15%;--right-sidebar-max-width:25%}}@media(min-width:768px){.container.compact{--left-sidebar-max-width:25%;max-width:768px}}@media(min-width:1024px){.container.compact{max-width:1024px;--left-sidebar-max-width:20%}}@media(min-width:1280px){.container.compact{max-width:1280px}}.flex{display:flex;flex-direction:row}.flex.column{flex-direction:column}.flex.on-phone--column{flex-direction:column}@media(min-width:768px){.flex.on-phone--column{flex-direction:unset}}.flex .full-width{width:100%}main.main{order:-2;min-width:0;max-width:100%;flex-grow:1;display:flex;flex-direction:column;gap:var(--section-separation)}@media(min-width:768px){main.main{padding-top:var(--main-top-padding)}}.main-container{min-height:100vh;align-items:flex-start;padding:0 15px;gap:var(--section-separation);padding-top:var(--main-top-padding)}@media(min-width:768px){.main-container{padding:0 20px}}/*!normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css*/html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}/*!* Hamburgers +* @description Tasty CSS-animated hamburgers +* @author Jonathan Suh @jonsuh +* @site https://jonsuh.com/hamburgers +* @link https://github.com/jonsuh/hamburgers*/.hamburger{padding-top:10px;display:inline-block;cursor:pointer;transition-property:opacity,filter;transition-duration:.15s;transition-timing-function:linear;font:inherit;color:inherit;text-transform:none;background-color:transparent;border:0;margin:0;overflow:visible}.hamburger:hover{opacity:.7}.hamburger.is-active:hover{opacity:.7}.hamburger.is-active .hamburger-inner,.hamburger.is-active .hamburger-inner::before,.hamburger.is-active .hamburger-inner::after{background-color:#000}.hamburger-box{width:30px;height:24px;display:inline-block;position:relative}.hamburger-inner{display:block;top:50%;margin-top:-2px}.hamburger-inner,.hamburger-inner::before,.hamburger-inner::after{width:30px;height:2px;background-color:var(--card-text-color-main);border-radius:4px;position:absolute;transition-property:transform;transition-duration:.15s;transition-timing-function:ease}.hamburger-inner::before,.hamburger-inner::after{content:"";display:block}.hamburger-inner::before{top:-10px}.hamburger-inner::after{bottom:-10px}.hamburger--spin .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin .hamburger-inner::before{transition:top .1s .25s ease-in,opacity .1s ease-in}.hamburger--spin .hamburger-inner::after{transition:bottom .1s .25s ease-in,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin.is-active .hamburger-inner{transform:rotate(225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin.is-active .hamburger-inner::before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s .12s ease-out}.hamburger--spin.is-active .hamburger-inner::after{bottom:0;transform:rotate(-90deg);transition:bottom .1s ease-out,transform .22s .12s cubic-bezier(.215,.61,.355,1)}#toggle-menu{background:0 0;border:none;position:absolute;right:0;top:0;z-index:2;cursor:pointer;outline:none}[dir=rtl] #toggle-menu{left:0;right:auto}@media(min-width:768px){#toggle-menu{display:none}}#toggle-menu.is-active .hamburger-inner,#toggle-menu.is-active .hamburger-inner::before,#toggle-menu.is-active .hamburger-inner::after{background-color:var(--accent-color)}#main-menu{list-style:none;overflow-y:auto;flex-grow:1;font-size:1.4rem;background-color:var(--card-background);box-shadow:var(--shadow-l1);display:none;margin:0 calc(var(--container-padding) * -1);padding:30px}@media(min-width:1280px){#main-menu{padding:15px 0}}#main-menu,#main-menu .menu-bottom-section ol{flex-direction:column;gap:30px}@media(min-width:1280px){#main-menu,#main-menu .menu-bottom-section ol{gap:25px}}#main-menu.show{display:flex}@media(min-width:768px){#main-menu{align-items:flex-end;display:flex;background-color:transparent;padding:0;box-shadow:none;margin:0}}#main-menu li{position:relative;vertical-align:middle;padding:0}@media(min-width:768px){#main-menu li{width:100%}}#main-menu li svg{stroke:currentColor;stroke-width:1.33;width:20px;height:20px}#main-menu li a{height:100%;display:inline-flex;align-items:center;color:var(--body-text-color);gap:var(--menu-icon-separation)}#main-menu li span{flex:1}#main-menu li.current a{color:var(--accent-color);font-weight:700}#main-menu li.menu-bottom-section{margin-top:auto}#main-menu li.menu-bottom-section ol{display:flex;padding-left:0}.menu-social{list-style:none;padding:0;margin:0;display:flex;flex-direction:row;gap:10px}.menu-social svg{width:24px;height:24px;stroke:var(--body-text-color);stroke-width:1.33}.article-list{display:flex;flex-direction:column;gap:var(--section-separation)}.article-list article{display:flex;flex-direction:column;background-color:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--card-border-radius);overflow:hidden;transition:box-shadow .3s ease}.article-list article:hover{box-shadow:var(--shadow-l2)}.article-list article .article-image img{width:100%;height:150px;object-fit:cover}@media(min-width:768px){.article-list article .article-image img{height:200px}}@media(min-width:1280px){.article-list article .article-image img{height:250px}}.article-list article:nth-child(5n+1) .article-category a{background:#8ea885;color:#fff}.article-list article:nth-child(5n+2) .article-category a{background:#df7988;color:#fff}.article-list article:nth-child(5n+3) .article-category a{background:#0177b8;color:#fff}.article-list article:nth-child(5n+4) .article-category a{background:#ffb900;color:#fff}.article-list article:nth-child(5n+5) .article-category a{background:#6b69d6;color:#fff}.article-details{display:flex;flex-direction:column;justify-content:center;padding:var(--card-padding);gap:15px}.article-title{font-family:var(--article-font-family);font-weight:600;margin:0;color:var(--card-text-color-main);font-size:2.2rem}@media(min-width:1280px){.article-title{font-size:2.4rem}}.article-title a{color:var(--card-text-color-main)}.article-title a:hover{color:var(--card-text-color-main)}.article-subtitle{font-weight:400;color:var(--card-text-color-secondary);line-height:1.5;margin:0;font-size:1.75rem}@media(min-width:1280px){.article-subtitle{font-size:2rem}}.article-title-wrapper{display:flex;flex-direction:column;gap:8px}.article-time,.article-translations{display:flex;color:var(--card-text-color-tertiary);gap:15px}.article-time svg,.article-translations svg{vertical-align:middle;width:20px;height:20px;stroke-width:1.33;flex-shrink:0}.article-time time,.article-time a,.article-translations time,.article-translations a{font-size:1.4rem;color:var(--card-text-color-tertiary)}.article-time>div,.article-translations>div{display:inline-flex;align-items:center;gap:15px}.article-time{flex-wrap:wrap}.article-translations>div{flex-wrap:wrap}.article-category,.article-tags{display:flex;gap:10px;flex-wrap:wrap}.article-category a,.article-tags a{color:var(--accent-color-text);background-color:var(--accent-color);padding:8px 16px;border-radius:var(--tag-border-radius);display:inline-block;font-size:1.4rem;transition:background-color .5s ease}.article-category a:hover,.article-tags a:hover{color:var(--accent-color-text);background-color:var(--accent-color-darker)}.article-list--compact{border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);background-color:var(--card-background);--image-size:50px}@media(min-width:768px){.article-list--compact{--image-size:60px}}.article-list--compact article>a{display:flex;align-items:center;padding:var(--small-card-padding);gap:15px}.article-list--compact article:not(:last-of-type){border-bottom:1.5px solid var(--card-separator-color)}.article-list--compact article .article-details{flex-grow:1;padding:0;min-height:var(--image-size);gap:10px}.article-list--compact article .article-title{margin:0;font-size:1.6rem}@media(min-width:768px){.article-list--compact article .article-title{font-size:1.8rem}}.article-list--compact article .article-image img{width:var(--image-size);height:var(--image-size);object-fit:cover}.article-list--compact article .article-time{font-size:1.4rem}.article-list--compact article .article-preview{font-size:1.4rem;color:var(--card-text-color-tertiary);margin-top:10px;line-height:1.5}.article-list--tile article{border-radius:var(--card-border-radius);overflow:hidden;position:relative;height:350px;width:250px;box-shadow:var(--shadow-l1);transition:box-shadow .3s ease;background-color:var(--card-background)}.article-list--tile article:hover{box-shadow:var(--shadow-l2)}.article-list--tile article.has-image .article-details{background-color:rgba(0,0,0,.25)}.article-list--tile article.has-image .article-title{color:#fff}.article-list--tile article .article-image{position:absolute;top:0;left:0;width:100%;height:100%}.article-list--tile article .article-image img{width:100%;height:100%;object-fit:cover}.article-list--tile article .article-details{border-radius:var(--card-border-radius);position:relative;height:100%;width:100%;display:flex;flex-direction:column;justify-content:flex-end;z-index:2;padding:15px}@media(min-width:640px){.article-list--tile article .article-details{padding:20px}}.article-list--tile article .article-title{font-size:2rem;font-weight:500;color:var(--card-text-color-main)}@media(min-width:640px){.article-list--tile article .article-title{font-size:2.2rem}}.widget{display:flex;flex-direction:column}.widget .widget-icon svg{width:32px;height:32px;stroke-width:1.6;color:var(--body-text-color)}.tagCloud .tagCloud-tags{display:flex;flex-wrap:wrap;gap:10px}.tagCloud .tagCloud-tags a{background:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--tag-border-radius);padding:8px 20px;color:var(--card-text-color-main);font-size:1.4rem;transition:box-shadow .3s ease}.tagCloud .tagCloud-tags a:hover{box-shadow:var(--shadow-l2)}.widget.archives .widget-archive--list{border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);background-color:var(--card-background)}.widget.archives .archives-year:not(:last-of-type){border-bottom:1.5px solid var(--card-separator-color)}.widget.archives .archives-year a{font-size:1.4rem;padding:18px 25px;display:flex}.widget.archives .archives-year a span.year{flex:1;color:var(--card-text-color-main);font-weight:700}.widget.archives .archives-year a span.count{color:var(--card-text-color-tertiary)}footer.site-footer{padding:20px 0 var(--section-separation);font-size:1.4rem;line-height:1.75}footer.site-footer:before{content:"";display:block;height:3px;width:50px;background:var(--body-text-color);margin-bottom:20px}footer.site-footer .copyright{color:var(--accent-color);font-weight:700;margin-bottom:5px}footer.site-footer .powerby{color:var(--body-text-color);font-weight:400;font-size:1.2rem}footer.site-footer .powerby a{color:var(--body-text-color)}.pagination{display:flex;background-color:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--card-border-radius);overflow:hidden;flex-wrap:wrap}.pagination .page-link{padding:16px 32px;display:inline-flex;color:var(--card-text-color-secondary)}.pagination .page-link.current{font-weight:700;background-color:var(--card-background-selected);color:var(--card-text-color-main)}@media(min-width:768px){.sidebar.sticky{position:sticky}}.left-sidebar{display:flex;flex-direction:column;flex-shrink:0;align-self:stretch;gap:var(--sidebar-element-separation);max-width:none;width:100%;position:relative;--sidebar-avatar-size:100px;--sidebar-element-separation:20px;--emoji-size:40px;--emoji-font-size:20px}@media(min-width:768px){.left-sidebar{width:auto;padding-top:var(--main-top-padding);padding-bottom:var(--main-top-padding);max-height:100vh}}@media(min-width:1536px){.left-sidebar{--sidebar-avatar-size:120px;--sidebar-element-separation:25px;--emoji-size:40px}}.left-sidebar.sticky{top:0}.left-sidebar.compact{--sidebar-avatar-size:80px;--emoji-size:30px;--emoji-font-size:15px}@media(min-width:1024px){.left-sidebar.compact header{flex-direction:row}}.left-sidebar.compact header .site-meta{gap:5px}.left-sidebar.compact header .site-name{font-size:1.4rem}@media(min-width:1536px){.left-sidebar.compact header .site-name{font-size:1.75rem}}.left-sidebar.compact header .site-description{font-size:1.4rem}.right-sidebar{width:100%;display:none;flex-direction:column;gap:var(--widget-separation)}.right-sidebar.sticky{top:0}@media(min-width:1024px){.right-sidebar{padding-top:var(--main-top-padding);padding-bottom:var(--main-top-padding)}}.sidebar header{z-index:1;transition:box-shadow .5s ease;display:flex;flex-direction:column;gap:var(--sidebar-element-separation)}@media(min-width:768px){.sidebar header{padding:0}}.sidebar header .site-avatar{position:relative;margin:0;width:var(--sidebar-avatar-size);height:var(--sidebar-avatar-size);flex-shrink:0}.sidebar header .site-avatar .site-logo{width:100%;height:100%;border-radius:100%;box-shadow:var(--shadow-l1)}.sidebar header .site-avatar .emoji{position:absolute;width:var(--emoji-size);height:var(--emoji-size);line-height:var(--emoji-size);border-radius:100%;bottom:0;right:0;text-align:center;font-size:var(--emoji-font-size);background-color:var(--card-background);box-shadow:var(--shadow-l2)}.sidebar header .site-meta{display:flex;flex-direction:column;gap:10px;justify-content:center}.sidebar header .site-name{color:var(--accent-color);margin:0;font-size:1.6rem}@media(min-width:1536px){.sidebar header .site-name{font-size:1.8rem}}.sidebar header .site-description{color:var(--body-text-color);font-weight:400;margin:0;font-size:1.4rem}@media(min-width:1536px){.sidebar header .site-description{font-size:1.6rem}}[data-scheme=dark] #dark-mode-toggle{color:var(--accent-color);font-weight:700}[data-scheme=dark] #dark-mode-toggle .icon-tabler-toggle-left{display:none}[data-scheme=dark] #dark-mode-toggle .icon-tabler-toggle-right{display:unset}#dark-mode-toggle{margin-top:auto;color:var(--body-text-color);display:flex;align-items:center;cursor:pointer;gap:var(--menu-icon-separation)}#dark-mode-toggle .icon-tabler-toggle-right{display:none}#i18n-switch{color:var(--body-text-color);display:inline-flex;align-content:center;gap:var(--menu-icon-separation)}#i18n-switch select{border:0;background-color:transparent;color:var(--body-text-color)}#i18n-switch select option{color:var(--card-text-color-main);background-color:var(--card-background)}html{font-size:62.5%;overflow-y:scroll}*{box-sizing:border-box}body{background:var(--body-background);margin:0;font-family:var(--base-font-family);font-size:1.6rem;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{scrollbar-width:auto;scrollbar-color:var(--scrollbar-thumb)transparent}::-webkit-scrollbar{height:auto}::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb)}::-webkit-scrollbar-track{background-color:transparent}.article-page.hide-sidebar-sm .left-sidebar{display:none}@media(min-width:768px){.article-page.hide-sidebar-sm .left-sidebar{display:inherit}}.article-page .main-article{background:var(--card-background);border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);overflow:hidden}.article-page .main-article .article-header .article-image img{height:auto;width:100%;max-height:45vh;object-fit:cover}.article-page .main-article .article-header .article-details{padding:var(--card-padding);padding-bottom:0}.article-page .main-article .article-header .article-subtitle{font-weight:300;color:var(--card-text-color-secondary);line-height:1.3;margin:0;font-size:1.95rem}.article-page .main-article .article-content{margin:var(--card-padding)0;color:var(--card-text-color-main)}.article-page .main-article .article-content .footnotes{font-family:var(--base-font-family)}.article-page .main-article .article-content img{max-width:100%;height:auto}.article-page .main-article .article-footer{margin:var(--card-padding);margin-top:0}.article-page .main-article .article-footer section:not(:first-child){margin-top:var(--card-padding)}.article-page .main-article .article-footer section{color:var(--card-text-color-tertiary);text-transform:uppercase;display:flex;align-items:center;font-size:1.4rem;gap:15px}.article-page .main-article .article-footer section svg{width:20px;height:20px;stroke-width:1.33}.article-page .main-article .article-footer .article-tags{flex-wrap:wrap;text-transform:unset}.article-page .main-article .article-footer .article-copyright a,.article-page .main-article .article-footer .article-lastmod a{color:var(--body-text-color)}.article-page .main-article .article-footer .article-copyright a.link,.article-page .main-article .article-footer .article-lastmod a.link{box-shadow:unset}.widget--toc{background-color:var(--card-background);border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);display:flex;flex-direction:column;color:var(--card-text-color-main);overflow:hidden}.widget--toc ::-webkit-scrollbar-thumb{background-color:var(--card-separator-color)}.widget--toc #TableOfContents{overflow-x:auto;max-height:75vh}.widget--toc #TableOfContents ol,.widget--toc #TableOfContents ul{margin:0;padding:0}.widget--toc #TableOfContents ol{list-style-type:none;counter-reset:item}.widget--toc #TableOfContents ol li a:first-of-type::before{counter-increment:item;content:counters(item,".")". ";font-weight:700;margin-right:5px}.widget--toc #TableOfContents>ul{padding:0 1em}.widget--toc #TableOfContents li{margin:15px 0 15px 25px;padding:5px}.widget--toc #TableOfContents li>ol,.widget--toc #TableOfContents li>ul{margin-top:10px;padding-left:10px;margin-bottom:-5px}.widget--toc #TableOfContents li>ol>li:last-child,.widget--toc #TableOfContents li>ul>li:last-child{margin-bottom:0}.widget--toc #TableOfContents li.active-class>a{border-left:var(--heading-border-size)solid var(--accent-color);font-weight:700}.widget--toc #TableOfContents ul li.active-class>a{display:block}.widget--toc #TableOfContents>ul>li.active-class>a{margin-left:calc(-25px - 1em);padding-left:calc(25px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li.active-class>a{margin-left:calc(-9px - 1em);padding-left:calc(9px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li.active-class>a{margin-left:calc(-60px - 1em);padding-left:calc(60px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li.active-class>a{margin-left:calc(-44px - 1em);padding-left:calc(44px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li>ul>li.active-class>a{margin-left:calc(-95px - 1em);padding-left:calc(95px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li>ol>li.active-class>a{margin-left:calc(-79px - 1em);padding-left:calc(79px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li>ul>li>ul>li.active-class>a{margin-left:calc(-130px - 1em);padding-left:calc(130px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li>ol>li>ol>li.active-class>a{margin-left:calc(-114px - 1em);padding-left:calc(114px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li>ul>li>ul>li>ul>li.active-class>a{margin-left:calc(-165px - 1em);padding-left:calc(165px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li>ol>li>ol>li>ol>li.active-class>a{margin-left:calc(-149px - 1em);padding-left:calc(149px + 1em - var(--heading-border-size));display:block}.related-content{overflow-x:auto;padding-bottom:15px}.related-content>.flex{float:left}.related-content article{margin-right:15px;flex-shrink:0;overflow:hidden;width:250px;height:150px}.related-content article .article-title{font-size:1.4rem;margin:0}.related-content article.has-image .article-details{padding:20px}.article-content{font-family:var(--article-font-family);font-size:var(--article-font-size);padding:0 var(--card-padding);line-height:var(--article-line-height)}.article-content>p{margin:1.5em 0}.article-content h1,.article-content h2,.article-content h3,.article-content h4,.article-content h5,.article-content h6{margin-inline-start:calc((var(--card-padding)) * -1);padding-inline-start:calc(var(--card-padding) - var(--heading-border-size));border-inline-start:var(--heading-border-size)solid var(--accent-color)}.article-content figure{text-align:center}.article-content figure figcaption{font-size:1.4rem;color:var(--card-text-color-secondary)}.article-content blockquote{position:relative;margin:1.5em 0;border-inline-start:var(--blockquote-border-size)solid var(--card-separator-color);padding:15px calc(var(--card-padding) - var(--blockquote-border-size));background-color:var(--blockquote-background-color)}.article-content blockquote .cite{display:block;text-align:right;font-size:.75em}.article-content blockquote .cite a{text-decoration:underline}.article-content hr{width:100px;margin:40px auto;background:var(--card-text-color-tertiary);height:2px;border:0;opacity:.55}.article-content code{color:var(--code-text-color);background-color:var(--code-background-color);padding:2px 4px;border-radius:var(--tag-border-radius);font-family:var(--code-font-family)}.article-content a,.article-content code{word-break:break-word}.article-content .gallery{position:relative;display:flex;flex-direction:row;justify-content:center;margin:1.5em 0;gap:10px}.article-content .gallery figure{margin:0}.article-content pre{overflow-x:auto;display:block;background-color:var(--pre-background-color);color:var(--pre-text-color);font-family:var(--code-font-family);line-height:1.428571429;word-break:break-all;padding:var(--card-padding)}[dir=rtl] .article-content pre{direction:ltr}.article-content pre code{color:unset;border:none;background:0 0;padding:0}.article-content .highlight{background-color:var(--pre-background-color);padding:var(--card-padding);position:relative}.article-content .highlight:hover .copyCodeButton{opacity:1}[dir=rtl] .article-content .highlight{direction:ltr}.article-content .highlight pre{margin:initial;padding:0;margin:0;width:auto}.article-content .copyCodeButton{position:absolute;top:calc(var(--card-padding));right:calc(var(--card-padding));background:var(--card-background);border:none;box-shadow:var(--shadow-l2);border-radius:var(--tag-border-radius);padding:8px 16px;color:var(--card-text-color-main);cursor:pointer;font-size:14px;opacity:0;transition:opacity .3s ease}.article-content .table-wrapper{padding:0 var(--card-padding);overflow-x:auto;display:block}.article-content table{width:100%;border-collapse:collapse;border-spacing:0;margin-bottom:1.5em;font-size:.96em}.article-content th,.article-content td{text-align:left;padding:4px 8px 4px 10px;border:1px solid var(--table-border-color)}.article-content td{vertical-align:top}.article-content tr:nth-child(even){background-color:var(--tr-even-background-color)}.article-content .twitter-tweet{color:var(--card-text-color-main)}.article-content .video-wrapper{position:relative;width:100%;height:0;padding-bottom:56.25%;overflow:hidden}.article-content .video-wrapper>iframe,.article-content .video-wrapper>video{position:absolute;width:100%;height:100%;left:0;top:0;border:0}.article-content .gitlab-embed-snippets{margin:0!important}.article-content .gitlab-embed-snippets .file-holder.snippet-file-content{margin-block-end:0!important;margin-block-start:0!important;margin-left:calc((var(--card-padding)) * -1)!important;margin-right:calc((var(--card-padding)) * -1)!important;padding:0 var(--card-padding)!important}.article-content blockquote,.article-content figure,.article-content .highlight,.article-content pre,.article-content .gallery,.article-content .video-wrapper,.article-content .table-wrapper,.article-content .s_video_simple{margin-left:calc((var(--card-padding)) * -1);margin-right:calc((var(--card-padding)) * -1);width:calc(100% + var(--card-padding) * 2)}.article-content .katex-display>.katex{overflow-x:auto;overflow-y:hidden}.article-content kbd{border:1px solid var(--kbd-border-color);font-weight:700;font-size:.9em;line-height:1;padding:2px 4px;border-radius:4px;display:inline-block}.section-card{border-radius:var(--card-border-radius);background-color:var(--card-background);padding:var(--small-card-padding);box-shadow:var(--shadow-l1);display:flex;align-items:center;gap:20px;--separation:15px}.section-card .section-term{font-size:2.2rem;margin:0;color:var(--card-text-color-main)}.section-card .section-description{font-weight:400;color:var(--card-text-color-secondary);font-size:1.6rem;margin:0}.section-card .section-details{flex-grow:1;display:flex;flex-direction:column;gap:8px}.section-card .section-image img{width:60px;height:60px}.section-card .section-count{color:var(--card-text-color-tertiary);font-size:1.4rem;margin:0;font-weight:700;text-transform:uppercase}.subsection-list{overflow-x:auto}.subsection-list .article-list--tile{display:flex;padding-bottom:15px}.subsection-list .article-list--tile article{width:250px;height:150px;margin-right:20px;flex-shrink:0}.subsection-list .article-list--tile article .article-title{margin:0;font-size:1.8rem}.subsection-list .article-list--tile article .article-details{padding:20px}.not-found-card{background-color:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--card-border-radius);padding:var(--card-padding)}.search-form{position:relative;--button-size:80px}.search-form.widget{--button-size:60px}.search-form.widget label{font-size:1.3rem;top:10px}.search-form.widget input{font-size:1.5rem;padding:30px 20px 15px}.search-form p{position:relative;margin:0}.search-form label{position:absolute;top:15px;inset-inline-start:20px;font-size:1.4rem;color:var(--card-text-color-tertiary)}.search-form input{padding:40px 20px 20px;border-radius:var(--card-border-radius);background-color:var(--card-background);box-shadow:var(--shadow-l1);color:var(--card-text-color-main);width:100%;border:0;-webkit-appearance:none;transition:box-shadow .3s ease;font-size:1.8rem}.search-form input:focus{outline:0;box-shadow:var(--shadow-l2)}.search-form button{position:absolute;inset-inline-end:0;top:0;height:100%;width:var(--button-size);cursor:pointer;background-color:transparent;border:0;padding:0 10px}.search-form button:focus{outline:0}.search-form button:focus svg{stroke-width:2;color:var(--accent-color)}.search-form button svg{color:var(--card-text-color-secondary);stroke-width:1.33;transition:all .3s ease;width:20px;height:20px}a{text-decoration:none;color:var(--accent-color)}a:hover{color:var(--accent-color-darker)}a.link{box-shadow:0 -2px rgba(var(--link-background-color),var(--link-background-opacity))inset;transition:all .3s ease}a.link:hover{box-shadow:0 calc(-1rem * var(--article-line-height))rgba(var(--link-background-color),var(--link-background-opacity-hover))inset}.section-title{text-transform:uppercase;margin-top:0;margin-bottom:10px;display:block;font-size:1.6rem;font-weight:700;color:var(--body-text-color)}.section-title a{color:var(--body-text-color)}:root{--main-top-padding:30px;--card-border-radius:25px;--tag-border-radius:8px;--section-separation:40px;--code-background-color:#f2f1b0e3;--code-text-color:#5c3400e0;--article-line-height:1.5;--pre-background-color:#f0f0f0;--card-padding:10px}:root[data-scheme=dark]{--code-background-color:#00000075;--code-text-color:#e9d88c}a{word-break:break-all}code{word-break:break-all}.article-page .main-article .article-content img{max-width:96%!important;height:auto!important;border-radius:8px}.article-content blockquote{border-left:2px solid #b6820096!important;background:#ffdd1fb9}[data-scheme=dark] blockquote{border-left:5px solid #c56600de!important;background:#3b2d0127}.highlight{max-width:102%!important;background-color:var(--pre-background-color);padding:var(--card-padding);position:relative;border-radius:20px;margin-left:-7px!important;margin-right:-12px;box-shadow:var(--shadow-l1)!important}.highlight:hover .copyCodeButton{opacity:1}[dir=rtl] .highlight{direction:ltr}.highlight pre{margin:initial;padding:0;margin:0;width:auto}[data-scheme=light] .article-content .highlight{background-color:rgba(255,225,107,.635)}[data-scheme=light] .chroma{color:#38230dd6;background-color:rgba(255,247,209,.244)}[data-scheme=dark] .article-content .highlight{background-color:rgba(33,21,3,.741)}[data-scheme=dark] .chroma{color:#f4f0c0;background-color:rgba(38,20,3,.752)}.article-content .highlight:before{content:"";display:block;background:url(../img/code-header.svg);height:18px;width:100%;background-size:57px;background-repeat:no-repeat;margin-bottom:5px;background-position:-1px 2px}[data-scheme=dark] ::selection{color:#fff;background:#444}[data-scheme=dark] ::-moz-selection{color:#fff;background:#444}[data-scheme=light] ::selection{color:#fff;background:#444}[data-scheme=light] ::-moz-selection{color:#fff;background:#444}a{text-decoration:none;color:var(--accent-color)}a:hover{color:var(--accent-color-darker)}a.link{color:#994311;font-weight:500;padding:0 2px;text-decoration:none;cursor:pointer}a.link:hover{text-decoration:none}[data-scheme=dark] a{text-decoration:none}[data-scheme=dark] a:hover{color:var(--accent-color-darker)}[data-scheme=dark] a.link{color:#fff193e0;font-weight:500;padding:0 2px;text-decoration:none;cursor:pointer}[data-scheme=dark] a.link:hover{text-decoration:none}.article-list article .article-image img{width:100%;height:195px;object-fit:cover}@media(min-width:768px){.article-list article .article-image img{height:300px}}@media(min-width:1280px){.article-list article .article-image img{height:355px}}.main-container{min-height:100vh;align-items:flex-start;padding:10px;gap:var(--section-separation);padding-top:var(--main-top-padding)}@media(min-width:768px){.main-container{padding:0 35px}}.container{margin-left:auto;margin-right:auto}.container .left-sidebar{order:-3;max-width:var(--left-sidebar-max-width)}.container .right-sidebar{padding-left:10px;order:-1;max-width:var(--right-sidebar-max-width)}@media(min-width:1024px){.container .right-sidebar{display:flex;flex-direction:column}}@media(min-width:768px){.container.extended{max-width:1024px;--left-sidebar-max-width:20%;--right-sidebar-max-width:20%}}@media(min-width:1024px){.container.extended{max-width:1280px;--left-sidebar-max-width:21%;--right-sidebar-max-width:19%}}@media(min-width:1280px){.container.extended{max-width:1536px;--left-sidebar-max-width:21%;--right-sidebar-max-width:18%}}@media(min-width:768px){.container.compact{--left-sidebar-max-width:25%;max-width:768px}}@media(min-width:1024px){.container.compact{max-width:1024px;--left-sidebar-max-width:20%}}@media(min-width:1280px){.container.compact{max-width:1280px}}.article-list--compact article .article-image img{width:var(--image-size);height:var(--image-size);object-fit:cover;border-radius:17%}.menu{padding-left:0;list-style:none;line-height:1.2;flex-direction:column;overflow-x:hidden;overflow-y:scroll;flex-grow:1;background-color:var(--card-background);box-shadow:var(--shadow-l2);display:none;margin:0;border-radius:10px;padding:30px}@media(min-width:1280px){.menu{padding:15px 0}}.menu,.menu .menu-bottom-section{gap:30px}@media(min-width:1280px){.menu,.menu .menu-bottom-section{gap:25px}}.menu.show{display:flex}@media(min-width:768px){.menu{align-items:flex-end;display:flex;background-color:transparent;padding:0;box-shadow:none;margin:0}}.menu li{position:relative;vertical-align:middle;padding:0}@media(min-width:768px){.menu li{width:100%}}.menu li svg{stroke-width:1.53;width:20px;height:20px}.menu li a{height:100%;display:inline-flex;align-items:center;color:var(--body-text-color);gap:var(--menu-icon-separation)}.menu li span{flex:1}.menu li.current a{color:var(--accent-color);font-weight:700}.menu::-webkit-scrollbar{display:none}html ::-webkit-scrollbar{width:20px}html ::-webkit-scrollbar-track{background-color:transparent}html ::-webkit-scrollbar-thumb{background-color:#d6dee1;border-radius:20px;border:6px solid transparent;background-clip:content-box}html ::-webkit-scrollbar-thumb:hover{background-color:#a8bbbf}@media(min-width:1024px){.article-list--compact{display:grid;grid-template-columns:1fr 1fr;background:0 0;box-shadow:none;gap:1rem}.article-list--compact article{background:var(--card-background);border:none;box-shadow:var(--shadow-l2);margin-bottom:8px;border-radius:16px}}@media(min-width:1024px){.article-list--compact.links{display:grid;grid-template-columns:1fr 1fr 1fr;background:0 0;box-shadow:none;gap:1rem}.article-list--compact.links article{background:var(--card-background);border:none;box-shadow:var(--shadow-l2);margin-bottom:8px;border-radius:var(--card-border-radius)}.article-list--compact.links article:nth-child(odd){margin-right:8px}}.welcome{color:var(--card-text-color-main);background:var(--card-background);box-shadow:var(--shadow-l2);border-radius:30px;display:inline-block}.shake{display:inline-block;animation:shake 1s;animation-duration:1s;animation-timing-function:ease;animation-delay:0s;animation-iteration-count:1;animation-direction:normal;animation-fill-mode:none;animation-play-state:running;animation-name:shake;animation-timeline:auto;animation-range-start:normal;animation-range-end:normal;animation-delay:2s}@keyframes shake{0%{transform:rotate(0)}25%{transform:rotate(45deg)scale(1.2)}50%{transform:rotate(0)scale(1.2)}75%{transform:rotate(45deg)scale(1.2)}100%{transform:rotate(0)}}.jump-text1{display:inline-block;animation:jump .5s 1}.jump-text2{display:inline-block;animation:jump .5s 1;animation-delay:.1s}.jump-text3{display:inline-block;animation:jump .5s 1;animation-delay:.2s}.jump-text4{display:inline-block;animation:jump .5s 1;animation-delay:.3s}.jump-text5{display:inline-block;animation:jump .5s 1;animation-delay:.4s}.jump-text6{display:inline-block;animation:jump .5s 1;animation-delay:.5s}.jump-text7{display:inline-block;animation:jump .5s 1;animation-delay:.6s}.jump-text8{display:inline-block;animation:jump .5s 1;animation-delay:.7s}.jump-text9{display:inline-block;animation:jump .5s 1;animation-delay:.9s}@keyframes jump{0%{transform:translateY(0)}50%{transform:translateY(-20px)}100%{transform:translateY(0)}}.back-home{background:var(--card-background);border-radius:var(--tag-border-radius);color:var(--card-text-color-tertiary);margin-right:.1rem;margin-top:24px;display:inline-flex;align-items:center;font-size:1.4rem;text-transform:uppercase;padding:10px 20px 10px 15px;transition:box-shadow .3s ease;box-shadow:var(--shadow-l3)}.back-home:hover{box-shadow:var(--shadow-l2)}.back-home svg{margin-right:5px;width:20px;height:20px}.back-home span{font-weight:500;white-space:nowrap}.main-container .right-sidebar{order:2;max-width:var(--right-sidebar-max-width)}@media(min-width:1024px){.main-container .right-sidebar{display:flex}}main.main{order:1;min-width:0;max-width:100%;flex-grow:1;display:flex;flex-direction:column;gap:var(--section-separation)}@media(min-width:768px){main.main{padding-top:var(--main-top-padding)}} \ No newline at end of file diff --git a/scss/style.min.8339095b182485ed09b77272071e808032292516a8d068206a477a38a850094e.css b/scss/style.min.8339095b182485ed09b77272071e808032292516a8d068206a477a38a850094e.css new file mode 100644 index 00000000..9810c219 --- /dev/null +++ b/scss/style.min.8339095b182485ed09b77272071e808032292516a8d068206a477a38a850094e.css @@ -0,0 +1,10 @@ +@charset "UTF-8";/*!* Hugo Theme Stack +* +* @author: Jimmy Cai +* @website: https://jimmycai.com +* @link: https://github.com/CaiJimmy/hugo-theme-stack*/:root{--main-top-padding:35px;--body-background:#f5f5fa;--accent-color:#34495e;--accent-color-darker:#2c3e50;--accent-color-text:#fff;--body-text-color:#707070;--tag-border-radius:4px;--section-separation:40px;--scrollbar-thumb:hsl(0, 0%, 85%);--scrollbar-track:var(--body-background)}@media(min-width:1280px){:root{--main-top-padding:50px}}:root[data-scheme=dark]{--body-background:#303030;--accent-color:#ecf0f1;--accent-color-darker:#bdc3c7;--accent-color-text:#000;--body-text-color:rgba(255, 255, 255, 0.7);--scrollbar-thumb:hsl(0, 0%, 40%);--scrollbar-track:var(--body-background)}:root{--sys-font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", "Droid Sans", "Helvetica Neue";--zh-font-family:"PingFang SC", "Hiragino Sans GB", "Droid Sans Fallback", "Microsoft YaHei";--base-font-family:"Lato", var(--sys-font-family), var(--zh-font-family), sans-serif;--code-font-family:Menlo, Monaco, Consolas, "Courier New", var(--zh-font-family), monospace}:root{--card-background:#fff;--card-background-selected:#eaeaea;--card-text-color-main:#000;--card-text-color-secondary:#747474;--card-text-color-tertiary:#767676;--card-separator-color:rgba(218, 218, 218, 0.5);--card-border-radius:10px;--card-padding:20px;--small-card-padding:25px 20px}@media(min-width:768px){:root{--card-padding:25px}}@media(min-width:1280px){:root{--card-padding:30px}}@media(min-width:768px){:root{--small-card-padding:25px}}:root[data-scheme=dark]{--card-background:#424242;--card-background-selected:rgba(255, 255, 255, 0.16);--card-text-color-main:rgba(255, 255, 255, 0.9);--card-text-color-secondary:rgba(255, 255, 255, 0.7);--card-text-color-tertiary:rgba(255, 255, 255, 0.5);--card-separator-color:rgba(255, 255, 255, 0.12)}:root{--article-font-family:var(--base-font-family);--article-font-size:1.6rem;--article-line-height:1.85}@media(min-width:768px){:root{--article-font-size:1.7rem}}:root{--blockquote-border-size:4px;--blockquote-background-color:rgb(248 248 248);--heading-border-size:4px;--link-background-color:189, 195, 199;--link-background-opacity:0.5;--link-background-opacity-hover:0.7;--pre-background-color:#272822;--pre-text-color:#f8f8f2;--code-background-color:rgba(0, 0, 0, 0.12);--code-text-color:#808080;--table-border-color:#dadada;--tr-even-background-color:#efefee;--kbd-border-color:#dadada}:root[data-scheme=dark]{--code-background-color:#272822;--code-text-color:rgba(255, 255, 255, 0.9);--table-border-color:#717171;--tr-even-background-color:#545454;--blockquote-background-color:rgb(75 75 75)}:root{--shadow-l1:0px 4px 8px rgba(0, 0, 0, 0.04), 0px 0px 2px rgba(0, 0, 0, 0.06), 0px 0px 1px rgba(0, 0, 0, 0.04);--shadow-l2:0px 10px 20px rgba(0, 0, 0, 0.04), 0px 2px 6px rgba(0, 0, 0, 0.04), 0px 0px 1px rgba(0, 0, 0, 0.04);--shadow-l3:0px 10px 20px rgba(0, 0, 0, 0.04), 0px 2px 6px rgba(0, 0, 0, 0.04), 0px 0px 1px rgba(0, 0, 0, 0.04);--shadow-l4:0px 24px 32px rgba(0, 0, 0, 0.04), 0px 16px 24px rgba(0, 0, 0, 0.04), 0px 4px 8px rgba(0, 0, 0, 0.04), + 0px 0px 1px rgba(0, 0, 0, 0.04)}[data-scheme=light]{--pre-text-color:#272822;--pre-background-color:#fafafa}[data-scheme=light] .chroma{color:#272822;background-color:#fafafa}[data-scheme=light] .chroma .err{color:#960050}[data-scheme=light] .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}[data-scheme=light] .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0;width:100%;display:block}[data-scheme=light] .chroma .lntable>tbody{display:block;width:100%}[data-scheme=light] .chroma .lntable>tbody>tr{display:flex;width:100%}[data-scheme=light] .chroma .lntable>tbody>tr>td:last-child{overflow-x:auto}[data-scheme=light] .chroma .hl{display:block;width:100%;background-color:#ffc}[data-scheme=light] .chroma .lnt{margin-right:.4em;padding:0 .4em;color:#7f7f7f;display:block}[data-scheme=light] .chroma .ln{margin-right:.4em;padding:0 .4em;color:#7f7f7f}[data-scheme=light] .chroma .k{color:#00a8c8}[data-scheme=light] .chroma .kc{color:#00a8c8}[data-scheme=light] .chroma .kd{color:#00a8c8}[data-scheme=light] .chroma .kn{color:#f92672}[data-scheme=light] .chroma .kp{color:#00a8c8}[data-scheme=light] .chroma .kr{color:#00a8c8}[data-scheme=light] .chroma .kt{color:#00a8c8}[data-scheme=light] .chroma .n{color:#111}[data-scheme=light] .chroma .na{color:#75af00}[data-scheme=light] .chroma .nb{color:#111}[data-scheme=light] .chroma .bp{color:#111}[data-scheme=light] .chroma .nc{color:#75af00}[data-scheme=light] .chroma .no{color:#00a8c8}[data-scheme=light] .chroma .nd{color:#75af00}[data-scheme=light] .chroma .ni{color:#111}[data-scheme=light] .chroma .ne{color:#75af00}[data-scheme=light] .chroma .nf{color:#75af00}[data-scheme=light] .chroma .fm{color:#111}[data-scheme=light] .chroma .nl{color:#111}[data-scheme=light] .chroma .nn{color:#111}[data-scheme=light] .chroma .nx{color:#75af00}[data-scheme=light] .chroma .py{color:#111}[data-scheme=light] .chroma .nt{color:#f92672}[data-scheme=light] .chroma .nv{color:#111}[data-scheme=light] .chroma .vc{color:#111}[data-scheme=light] .chroma .vg{color:#111}[data-scheme=light] .chroma .vi{color:#111}[data-scheme=light] .chroma .vm{color:#111}[data-scheme=light] .chroma .l{color:#ae81ff}[data-scheme=light] .chroma .ld{color:#d88200}[data-scheme=light] .chroma .s{color:#d88200}[data-scheme=light] .chroma .sa{color:#d88200}[data-scheme=light] .chroma .sb{color:#d88200}[data-scheme=light] .chroma .sc{color:#d88200}[data-scheme=light] .chroma .dl{color:#d88200}[data-scheme=light] .chroma .sd{color:#d88200}[data-scheme=light] .chroma .s2{color:#d88200}[data-scheme=light] .chroma .se{color:#ae81ff}[data-scheme=light] .chroma .sh{color:#d88200}[data-scheme=light] .chroma .si{color:#d88200}[data-scheme=light] .chroma .sx{color:#d88200}[data-scheme=light] .chroma .sr{color:#d88200}[data-scheme=light] .chroma .s1{color:#d88200}[data-scheme=light] .chroma .ss{color:#d88200}[data-scheme=light] .chroma .m{color:#ae81ff}[data-scheme=light] .chroma .mb{color:#ae81ff}[data-scheme=light] .chroma .mf{color:#ae81ff}[data-scheme=light] .chroma .mh{color:#ae81ff}[data-scheme=light] .chroma .mi{color:#ae81ff}[data-scheme=light] .chroma .il{color:#ae81ff}[data-scheme=light] .chroma .mo{color:#ae81ff}[data-scheme=light] .chroma .o{color:#f92672}[data-scheme=light] .chroma .ow{color:#f92672}[data-scheme=light] .chroma .p{color:#111}[data-scheme=light] .chroma .c{color:#75715e}[data-scheme=light] .chroma .ch{color:#75715e}[data-scheme=light] .chroma .cm{color:#75715e}[data-scheme=light] .chroma .c1{color:#75715e}[data-scheme=light] .chroma .cs{color:#75715e}[data-scheme=light] .chroma .cp{color:#75715e}[data-scheme=light] .chroma .cpf{color:#75715e}[data-scheme=light] .chroma .gd{color:#f92672}[data-scheme=light] .chroma .ge{font-style:italic}[data-scheme=light] .chroma .gi{color:#75af00}[data-scheme=light] .chroma .gs{font-weight:700}[data-scheme=light] .chroma .gu{color:#75715e}[data-scheme=dark]{--pre-text-color:#f8f8f2;--pre-background-color:#272822}[data-scheme=dark] .chroma{color:#f8f8f2;background-color:#272822}[data-scheme=dark] .chroma .err{color:#bb0064}[data-scheme=dark] .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}[data-scheme=dark] .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0;width:100%;display:block}[data-scheme=dark] .chroma .lntable>tbody{display:block;width:100%}[data-scheme=dark] .chroma .lntable>tbody>tr{display:flex;width:100%}[data-scheme=dark] .chroma .lntable>tbody>tr>td:last-child{overflow-x:auto}[data-scheme=dark] .chroma .hl{display:block;width:100%;background-color:#ffc}[data-scheme=dark] .chroma .lnt{margin-right:.4em;padding:0 .4em;color:#7f7f7f;display:block}[data-scheme=dark] .chroma .ln{margin-right:.4em;padding:0 .4em;color:#7f7f7f}[data-scheme=dark] .chroma .k{color:#66d9ef}[data-scheme=dark] .chroma .kc{color:#66d9ef}[data-scheme=dark] .chroma .kd{color:#66d9ef}[data-scheme=dark] .chroma .kn{color:#f92672}[data-scheme=dark] .chroma .kp{color:#66d9ef}[data-scheme=dark] .chroma .kr{color:#66d9ef}[data-scheme=dark] .chroma .kt{color:#66d9ef}[data-scheme=dark] .chroma .n{color:#f8f8f2}[data-scheme=dark] .chroma .na{color:#a6e22e}[data-scheme=dark] .chroma .nb{color:#f8f8f2}[data-scheme=dark] .chroma .bp{color:#f8f8f2}[data-scheme=dark] .chroma .nc{color:#a6e22e}[data-scheme=dark] .chroma .no{color:#66d9ef}[data-scheme=dark] .chroma .nd{color:#a6e22e}[data-scheme=dark] .chroma .ni{color:#f8f8f2}[data-scheme=dark] .chroma .ne{color:#a6e22e}[data-scheme=dark] .chroma .nf{color:#a6e22e}[data-scheme=dark] .chroma .fm{color:#f8f8f2}[data-scheme=dark] .chroma .nl{color:#f8f8f2}[data-scheme=dark] .chroma .nn{color:#f8f8f2}[data-scheme=dark] .chroma .nx{color:#a6e22e}[data-scheme=dark] .chroma .py{color:#f8f8f2}[data-scheme=dark] .chroma .nt{color:#f92672}[data-scheme=dark] .chroma .nv{color:#f8f8f2}[data-scheme=dark] .chroma .vc{color:#f8f8f2}[data-scheme=dark] .chroma .vg{color:#f8f8f2}[data-scheme=dark] .chroma .vi{color:#f8f8f2}[data-scheme=dark] .chroma .vm{color:#f8f8f2}[data-scheme=dark] .chroma .l{color:#ae81ff}[data-scheme=dark] .chroma .ld{color:#e6db74}[data-scheme=dark] .chroma .s{color:#e6db74}[data-scheme=dark] .chroma .sa{color:#e6db74}[data-scheme=dark] .chroma .sb{color:#e6db74}[data-scheme=dark] .chroma .sc{color:#e6db74}[data-scheme=dark] .chroma .dl{color:#e6db74}[data-scheme=dark] .chroma .sd{color:#e6db74}[data-scheme=dark] .chroma .s2{color:#e6db74}[data-scheme=dark] .chroma .se{color:#ae81ff}[data-scheme=dark] .chroma .sh{color:#e6db74}[data-scheme=dark] .chroma .si{color:#e6db74}[data-scheme=dark] .chroma .sx{color:#e6db74}[data-scheme=dark] .chroma .sr{color:#e6db74}[data-scheme=dark] .chroma .s1{color:#e6db74}[data-scheme=dark] .chroma .ss{color:#e6db74}[data-scheme=dark] .chroma .m{color:#ae81ff}[data-scheme=dark] .chroma .mb{color:#ae81ff}[data-scheme=dark] .chroma .mf{color:#ae81ff}[data-scheme=dark] .chroma .mh{color:#ae81ff}[data-scheme=dark] .chroma .mi{color:#ae81ff}[data-scheme=dark] .chroma .il{color:#ae81ff}[data-scheme=dark] .chroma .mo{color:#ae81ff}[data-scheme=dark] .chroma .o{color:#f92672}[data-scheme=dark] .chroma .ow{color:#f92672}[data-scheme=dark] .chroma .p{color:#f8f8f2}[data-scheme=dark] .chroma .c{color:#75715e}[data-scheme=dark] .chroma .ch{color:#75715e}[data-scheme=dark] .chroma .cm{color:#75715e}[data-scheme=dark] .chroma .c1{color:#75715e}[data-scheme=dark] .chroma .cs{color:#75715e}[data-scheme=dark] .chroma .cp{color:#75715e}[data-scheme=dark] .chroma .cpf{color:#75715e}[data-scheme=dark] .chroma .gd{color:#f92672}[data-scheme=dark] .chroma .ge{font-style:italic}[data-scheme=dark] .chroma .gi{color:#a6e22e}[data-scheme=dark] .chroma .gs{font-weight:700}[data-scheme=dark] .chroma .gu{color:#75715e}:root{--menu-icon-separation:40px;--container-padding:15px;--widget-separation:var(--section-separation)}.container{margin-left:auto;margin-right:auto}.container .left-sidebar{order:-3;max-width:var(--left-sidebar-max-width)}.container .right-sidebar{order:-1;max-width:var(--right-sidebar-max-width)}@media(min-width:1024px){.container .right-sidebar{display:flex}}@media(min-width:768px){.container.extended{max-width:1024px;--left-sidebar-max-width:25%;--right-sidebar-max-width:30%}}@media(min-width:1024px){.container.extended{max-width:1280px;--left-sidebar-max-width:20%;--right-sidebar-max-width:30%}}@media(min-width:1280px){.container.extended{max-width:1536px;--left-sidebar-max-width:15%;--right-sidebar-max-width:25%}}@media(min-width:768px){.container.compact{--left-sidebar-max-width:25%;max-width:768px}}@media(min-width:1024px){.container.compact{max-width:1024px;--left-sidebar-max-width:20%}}@media(min-width:1280px){.container.compact{max-width:1280px}}.flex{display:flex;flex-direction:row}.flex.column{flex-direction:column}.flex.on-phone--column{flex-direction:column}@media(min-width:768px){.flex.on-phone--column{flex-direction:unset}}.flex .full-width{width:100%}main.main{order:-2;min-width:0;max-width:100%;flex-grow:1;display:flex;flex-direction:column;gap:var(--section-separation)}@media(min-width:768px){main.main{padding-top:var(--main-top-padding)}}.main-container{min-height:100vh;align-items:flex-start;padding:0 15px;gap:var(--section-separation);padding-top:var(--main-top-padding)}@media(min-width:768px){.main-container{padding:0 20px}}/*!normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css*/html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}/*!* Hamburgers +* @description Tasty CSS-animated hamburgers +* @author Jonathan Suh @jonsuh +* @site https://jonsuh.com/hamburgers +* @link https://github.com/jonsuh/hamburgers*/.hamburger{padding-top:10px;display:inline-block;cursor:pointer;transition-property:opacity,filter;transition-duration:.15s;transition-timing-function:linear;font:inherit;color:inherit;text-transform:none;background-color:transparent;border:0;margin:0;overflow:visible}.hamburger:hover{opacity:.7}.hamburger.is-active:hover{opacity:.7}.hamburger.is-active .hamburger-inner,.hamburger.is-active .hamburger-inner::before,.hamburger.is-active .hamburger-inner::after{background-color:#000}.hamburger-box{width:30px;height:24px;display:inline-block;position:relative}.hamburger-inner{display:block;top:50%;margin-top:-2px}.hamburger-inner,.hamburger-inner::before,.hamburger-inner::after{width:30px;height:2px;background-color:var(--card-text-color-main);border-radius:4px;position:absolute;transition-property:transform;transition-duration:.15s;transition-timing-function:ease}.hamburger-inner::before,.hamburger-inner::after{content:"";display:block}.hamburger-inner::before{top:-10px}.hamburger-inner::after{bottom:-10px}.hamburger--spin .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin .hamburger-inner::before{transition:top .1s .25s ease-in,opacity .1s ease-in}.hamburger--spin .hamburger-inner::after{transition:bottom .1s .25s ease-in,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin.is-active .hamburger-inner{transform:rotate(225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin.is-active .hamburger-inner::before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s .12s ease-out}.hamburger--spin.is-active .hamburger-inner::after{bottom:0;transform:rotate(-90deg);transition:bottom .1s ease-out,transform .22s .12s cubic-bezier(.215,.61,.355,1)}#toggle-menu{background:0 0;border:none;position:absolute;right:0;top:0;z-index:2;cursor:pointer;outline:none}[dir=rtl] #toggle-menu{left:0;right:auto}@media(min-width:768px){#toggle-menu{display:none}}#toggle-menu.is-active .hamburger-inner,#toggle-menu.is-active .hamburger-inner::before,#toggle-menu.is-active .hamburger-inner::after{background-color:var(--accent-color)}#main-menu{list-style:none;overflow-y:auto;flex-grow:1;font-size:1.4rem;background-color:var(--card-background);box-shadow:var(--shadow-l1);display:none;margin:0 calc(var(--container-padding) * -1);padding:30px}@media(min-width:1280px){#main-menu{padding:15px 0}}#main-menu,#main-menu .menu-bottom-section ol{flex-direction:column;gap:30px}@media(min-width:1280px){#main-menu,#main-menu .menu-bottom-section ol{gap:25px}}#main-menu.show{display:flex}@media(min-width:768px){#main-menu{align-items:flex-end;display:flex;background-color:transparent;padding:0;box-shadow:none;margin:0}}#main-menu li{position:relative;vertical-align:middle;padding:0}@media(min-width:768px){#main-menu li{width:100%}}#main-menu li svg{stroke:currentColor;stroke-width:1.33;width:20px;height:20px}#main-menu li a{height:100%;display:inline-flex;align-items:center;color:var(--body-text-color);gap:var(--menu-icon-separation)}#main-menu li span{flex:1}#main-menu li.current a{color:var(--accent-color);font-weight:700}#main-menu li.menu-bottom-section{margin-top:auto}#main-menu li.menu-bottom-section ol{display:flex;padding-left:0}.menu-social{list-style:none;padding:0;margin:0;display:flex;flex-direction:row;gap:10px}.menu-social svg{width:24px;height:24px;stroke:var(--body-text-color);stroke-width:1.33}.article-list{display:flex;flex-direction:column;gap:var(--section-separation)}.article-list article{display:flex;flex-direction:column;background-color:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--card-border-radius);overflow:hidden;transition:box-shadow .3s ease}.article-list article:hover{box-shadow:var(--shadow-l2)}.article-list article .article-image img{width:100%;height:150px;object-fit:cover}@media(min-width:768px){.article-list article .article-image img{height:200px}}@media(min-width:1280px){.article-list article .article-image img{height:250px}}.article-list article:nth-child(5n+1) .article-category a{background:#8ea885;color:#fff}.article-list article:nth-child(5n+2) .article-category a{background:#df7988;color:#fff}.article-list article:nth-child(5n+3) .article-category a{background:#0177b8;color:#fff}.article-list article:nth-child(5n+4) .article-category a{background:#ffb900;color:#fff}.article-list article:nth-child(5n+5) .article-category a{background:#6b69d6;color:#fff}.article-details{display:flex;flex-direction:column;justify-content:center;padding:var(--card-padding);gap:15px}.article-title{font-family:var(--article-font-family);font-weight:600;margin:0;color:var(--card-text-color-main);font-size:2.2rem}@media(min-width:1280px){.article-title{font-size:2.4rem}}.article-title a{color:var(--card-text-color-main)}.article-title a:hover{color:var(--card-text-color-main)}.article-subtitle{font-weight:400;color:var(--card-text-color-secondary);line-height:1.5;margin:0;font-size:1.75rem}@media(min-width:1280px){.article-subtitle{font-size:2rem}}.article-title-wrapper{display:flex;flex-direction:column;gap:8px}.article-time,.article-translations{display:flex;color:var(--card-text-color-tertiary);gap:15px}.article-time svg,.article-translations svg{vertical-align:middle;width:20px;height:20px;stroke-width:1.33;flex-shrink:0}.article-time time,.article-time a,.article-translations time,.article-translations a{font-size:1.4rem;color:var(--card-text-color-tertiary)}.article-time>div,.article-translations>div{display:inline-flex;align-items:center;gap:15px}.article-time{flex-wrap:wrap}.article-translations>div{flex-wrap:wrap}.article-category,.article-tags{display:flex;gap:10px;flex-wrap:wrap}.article-category a,.article-tags a{color:var(--accent-color-text);background-color:var(--accent-color);padding:8px 16px;border-radius:var(--tag-border-radius);display:inline-block;font-size:1.4rem;transition:background-color .5s ease}.article-category a:hover,.article-tags a:hover{color:var(--accent-color-text);background-color:var(--accent-color-darker)}.article-list--compact{border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);background-color:var(--card-background);--image-size:50px}@media(min-width:768px){.article-list--compact{--image-size:60px}}.article-list--compact article>a{display:flex;align-items:center;padding:var(--small-card-padding);gap:15px}.article-list--compact article:not(:last-of-type){border-bottom:1.5px solid var(--card-separator-color)}.article-list--compact article .article-details{flex-grow:1;padding:0;min-height:var(--image-size);gap:10px}.article-list--compact article .article-title{margin:0;font-size:1.6rem}@media(min-width:768px){.article-list--compact article .article-title{font-size:1.8rem}}.article-list--compact article .article-image img{width:var(--image-size);height:var(--image-size);object-fit:cover}.article-list--compact article .article-time{font-size:1.4rem}.article-list--compact article .article-preview{font-size:1.4rem;color:var(--card-text-color-tertiary);margin-top:10px;line-height:1.5}.article-list--tile article{border-radius:var(--card-border-radius);overflow:hidden;position:relative;height:350px;width:250px;box-shadow:var(--shadow-l1);transition:box-shadow .3s ease;background-color:var(--card-background)}.article-list--tile article:hover{box-shadow:var(--shadow-l2)}.article-list--tile article.has-image .article-details{background-color:rgba(0,0,0,.25)}.article-list--tile article.has-image .article-title{color:#fff}.article-list--tile article .article-image{position:absolute;top:0;left:0;width:100%;height:100%}.article-list--tile article .article-image img{width:100%;height:100%;object-fit:cover}.article-list--tile article .article-details{border-radius:var(--card-border-radius);position:relative;height:100%;width:100%;display:flex;flex-direction:column;justify-content:flex-end;z-index:2;padding:15px}@media(min-width:640px){.article-list--tile article .article-details{padding:20px}}.article-list--tile article .article-title{font-size:2rem;font-weight:500;color:var(--card-text-color-main)}@media(min-width:640px){.article-list--tile article .article-title{font-size:2.2rem}}.widget{display:flex;flex-direction:column}.widget .widget-icon svg{width:32px;height:32px;stroke-width:1.6;color:var(--body-text-color)}.tagCloud .tagCloud-tags{display:flex;flex-wrap:wrap;gap:10px}.tagCloud .tagCloud-tags a{background:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--tag-border-radius);padding:8px 20px;color:var(--card-text-color-main);font-size:1.4rem;transition:box-shadow .3s ease}.tagCloud .tagCloud-tags a:hover{box-shadow:var(--shadow-l2)}.widget.archives .widget-archive--list{border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);background-color:var(--card-background)}.widget.archives .archives-year:not(:last-of-type){border-bottom:1.5px solid var(--card-separator-color)}.widget.archives .archives-year a{font-size:1.4rem;padding:18px 25px;display:flex}.widget.archives .archives-year a span.year{flex:1;color:var(--card-text-color-main);font-weight:700}.widget.archives .archives-year a span.count{color:var(--card-text-color-tertiary)}footer.site-footer{padding:20px 0 var(--section-separation);font-size:1.4rem;line-height:1.75}footer.site-footer:before{content:"";display:block;height:3px;width:50px;background:var(--body-text-color);margin-bottom:20px}footer.site-footer .copyright{color:var(--accent-color);font-weight:700;margin-bottom:5px}footer.site-footer .powerby{color:var(--body-text-color);font-weight:400;font-size:1.2rem}footer.site-footer .powerby a{color:var(--body-text-color)}.pagination{display:flex;background-color:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--card-border-radius);overflow:hidden;flex-wrap:wrap}.pagination .page-link{padding:16px 32px;display:inline-flex;color:var(--card-text-color-secondary)}.pagination .page-link.current{font-weight:700;background-color:var(--card-background-selected);color:var(--card-text-color-main)}@media(min-width:768px){.sidebar.sticky{position:sticky}}.left-sidebar{display:flex;flex-direction:column;flex-shrink:0;align-self:stretch;gap:var(--sidebar-element-separation);max-width:none;width:100%;position:relative;--sidebar-avatar-size:100px;--sidebar-element-separation:20px;--emoji-size:40px;--emoji-font-size:20px}@media(min-width:768px){.left-sidebar{width:auto;padding-top:var(--main-top-padding);padding-bottom:var(--main-top-padding);max-height:100vh}}@media(min-width:1536px){.left-sidebar{--sidebar-avatar-size:120px;--sidebar-element-separation:25px;--emoji-size:40px}}.left-sidebar.sticky{top:0}.left-sidebar.compact{--sidebar-avatar-size:80px;--emoji-size:30px;--emoji-font-size:15px}@media(min-width:1024px){.left-sidebar.compact header{flex-direction:row}}.left-sidebar.compact header .site-meta{gap:5px}.left-sidebar.compact header .site-name{font-size:1.4rem}@media(min-width:1536px){.left-sidebar.compact header .site-name{font-size:1.75rem}}.left-sidebar.compact header .site-description{font-size:1.4rem}.right-sidebar{width:100%;display:none;flex-direction:column;gap:var(--widget-separation)}.right-sidebar.sticky{top:0}@media(min-width:1024px){.right-sidebar{padding-top:var(--main-top-padding);padding-bottom:var(--main-top-padding)}}.sidebar header{z-index:1;transition:box-shadow .5s ease;display:flex;flex-direction:column;gap:var(--sidebar-element-separation)}@media(min-width:768px){.sidebar header{padding:0}}.sidebar header .site-avatar{position:relative;margin:0;width:var(--sidebar-avatar-size);height:var(--sidebar-avatar-size);flex-shrink:0}.sidebar header .site-avatar .site-logo{width:100%;height:100%;border-radius:100%;box-shadow:var(--shadow-l1)}.sidebar header .site-avatar .emoji{position:absolute;width:var(--emoji-size);height:var(--emoji-size);line-height:var(--emoji-size);border-radius:100%;bottom:0;right:0;text-align:center;font-size:var(--emoji-font-size);background-color:var(--card-background);box-shadow:var(--shadow-l2)}.sidebar header .site-meta{display:flex;flex-direction:column;gap:10px;justify-content:center}.sidebar header .site-name{color:var(--accent-color);margin:0;font-size:1.6rem}@media(min-width:1536px){.sidebar header .site-name{font-size:1.8rem}}.sidebar header .site-description{color:var(--body-text-color);font-weight:400;margin:0;font-size:1.4rem}@media(min-width:1536px){.sidebar header .site-description{font-size:1.6rem}}[data-scheme=dark] #dark-mode-toggle{color:var(--accent-color);font-weight:700}[data-scheme=dark] #dark-mode-toggle .icon-tabler-toggle-left{display:none}[data-scheme=dark] #dark-mode-toggle .icon-tabler-toggle-right{display:unset}#dark-mode-toggle{margin-top:auto;color:var(--body-text-color);display:flex;align-items:center;cursor:pointer;gap:var(--menu-icon-separation)}#dark-mode-toggle .icon-tabler-toggle-right{display:none}#i18n-switch{color:var(--body-text-color);display:inline-flex;align-content:center;gap:var(--menu-icon-separation)}#i18n-switch select{border:0;background-color:transparent;color:var(--body-text-color)}#i18n-switch select option{color:var(--card-text-color-main);background-color:var(--card-background)}html{font-size:62.5%;overflow-y:scroll}*{box-sizing:border-box}body{background:var(--body-background);margin:0;font-family:var(--base-font-family);font-size:1.6rem;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{scrollbar-width:auto;scrollbar-color:var(--scrollbar-thumb)transparent}::-webkit-scrollbar{height:auto}::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb)}::-webkit-scrollbar-track{background-color:transparent}.article-page.hide-sidebar-sm .left-sidebar{display:none}@media(min-width:768px){.article-page.hide-sidebar-sm .left-sidebar{display:inherit}}.article-page .main-article{background:var(--card-background);border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);overflow:hidden}.article-page .main-article .article-header .article-image img{height:auto;width:100%;max-height:45vh;object-fit:cover}.article-page .main-article .article-header .article-details{padding:var(--card-padding);padding-bottom:0}.article-page .main-article .article-header .article-subtitle{font-weight:300;color:var(--card-text-color-secondary);line-height:1.3;margin:0;font-size:1.95rem}.article-page .main-article .article-content{margin:var(--card-padding)0;color:var(--card-text-color-main)}.article-page .main-article .article-content .footnotes{font-family:var(--base-font-family)}.article-page .main-article .article-content img{max-width:100%;height:auto}.article-page .main-article .article-footer{margin:var(--card-padding);margin-top:0}.article-page .main-article .article-footer section:not(:first-child){margin-top:var(--card-padding)}.article-page .main-article .article-footer section{color:var(--card-text-color-tertiary);text-transform:uppercase;display:flex;align-items:center;font-size:1.4rem;gap:15px}.article-page .main-article .article-footer section svg{width:20px;height:20px;stroke-width:1.33}.article-page .main-article .article-footer .article-tags{flex-wrap:wrap;text-transform:unset}.article-page .main-article .article-footer .article-copyright a,.article-page .main-article .article-footer .article-lastmod a{color:var(--body-text-color)}.article-page .main-article .article-footer .article-copyright a.link,.article-page .main-article .article-footer .article-lastmod a.link{box-shadow:unset}.widget--toc{background-color:var(--card-background);border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);display:flex;flex-direction:column;color:var(--card-text-color-main);overflow:hidden}.widget--toc ::-webkit-scrollbar-thumb{background-color:var(--card-separator-color)}.widget--toc #TableOfContents{overflow-x:auto;max-height:75vh}.widget--toc #TableOfContents ol,.widget--toc #TableOfContents ul{margin:0;padding:0}.widget--toc #TableOfContents ol{list-style-type:none;counter-reset:item}.widget--toc #TableOfContents ol li a:first-of-type::before{counter-increment:item;content:counters(item,".")". ";font-weight:700;margin-right:5px}.widget--toc #TableOfContents>ul{padding:0 1em}.widget--toc #TableOfContents li{margin:15px 0 15px 25px;padding:5px}.widget--toc #TableOfContents li>ol,.widget--toc #TableOfContents li>ul{margin-top:10px;padding-left:10px;margin-bottom:-5px}.widget--toc #TableOfContents li>ol>li:last-child,.widget--toc #TableOfContents li>ul>li:last-child{margin-bottom:0}.widget--toc #TableOfContents li.active-class>a{border-left:var(--heading-border-size)solid var(--accent-color);font-weight:700}.widget--toc #TableOfContents ul li.active-class>a{display:block}.widget--toc #TableOfContents>ul>li.active-class>a{margin-left:calc(-25px - 1em);padding-left:calc(25px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li.active-class>a{margin-left:calc(-9px - 1em);padding-left:calc(9px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li.active-class>a{margin-left:calc(-60px - 1em);padding-left:calc(60px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li.active-class>a{margin-left:calc(-44px - 1em);padding-left:calc(44px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li>ul>li.active-class>a{margin-left:calc(-95px - 1em);padding-left:calc(95px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li>ol>li.active-class>a{margin-left:calc(-79px - 1em);padding-left:calc(79px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li>ul>li>ul>li.active-class>a{margin-left:calc(-130px - 1em);padding-left:calc(130px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li>ol>li>ol>li.active-class>a{margin-left:calc(-114px - 1em);padding-left:calc(114px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li>ul>li>ul>li>ul>li.active-class>a{margin-left:calc(-165px - 1em);padding-left:calc(165px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li>ol>li>ol>li>ol>li.active-class>a{margin-left:calc(-149px - 1em);padding-left:calc(149px + 1em - var(--heading-border-size));display:block}.related-content{overflow-x:auto;padding-bottom:15px}.related-content>.flex{float:left}.related-content article{margin-right:15px;flex-shrink:0;overflow:hidden;width:250px;height:150px}.related-content article .article-title{font-size:1.4rem;margin:0}.related-content article.has-image .article-details{padding:20px}.article-content{font-family:var(--article-font-family);font-size:var(--article-font-size);padding:0 var(--card-padding);line-height:var(--article-line-height)}.article-content>p{margin:1.5em 0}.article-content h1,.article-content h2,.article-content h3,.article-content h4,.article-content h5,.article-content h6{margin-inline-start:calc((var(--card-padding)) * -1);padding-inline-start:calc(var(--card-padding) - var(--heading-border-size));border-inline-start:var(--heading-border-size)solid var(--accent-color)}.article-content figure{text-align:center}.article-content figure figcaption{font-size:1.4rem;color:var(--card-text-color-secondary)}.article-content blockquote{position:relative;margin:1.5em 0;border-inline-start:var(--blockquote-border-size)solid var(--card-separator-color);padding:15px calc(var(--card-padding) - var(--blockquote-border-size));background-color:var(--blockquote-background-color)}.article-content blockquote .cite{display:block;text-align:right;font-size:.75em}.article-content blockquote .cite a{text-decoration:underline}.article-content hr{width:100px;margin:40px auto;background:var(--card-text-color-tertiary);height:2px;border:0;opacity:.55}.article-content code{color:var(--code-text-color);background-color:var(--code-background-color);padding:2px 4px;border-radius:var(--tag-border-radius);font-family:var(--code-font-family)}.article-content a,.article-content code{word-break:break-word}.article-content .gallery{position:relative;display:flex;flex-direction:row;justify-content:center;margin:1.5em 0;gap:10px}.article-content .gallery figure{margin:0}.article-content pre{overflow-x:auto;display:block;background-color:var(--pre-background-color);color:var(--pre-text-color);font-family:var(--code-font-family);line-height:1.428571429;word-break:break-all;padding:var(--card-padding)}[dir=rtl] .article-content pre{direction:ltr}.article-content pre code{color:unset;border:none;background:0 0;padding:0}.article-content .highlight{background-color:var(--pre-background-color);padding:var(--card-padding);position:relative}.article-content .highlight:hover .copyCodeButton{opacity:1}[dir=rtl] .article-content .highlight{direction:ltr}.article-content .highlight pre{margin:initial;padding:0;margin:0;width:auto}.article-content .copyCodeButton{position:absolute;top:calc(var(--card-padding));right:calc(var(--card-padding));background:var(--card-background);border:none;box-shadow:var(--shadow-l2);border-radius:var(--tag-border-radius);padding:8px 16px;color:var(--card-text-color-main);cursor:pointer;font-size:14px;opacity:0;transition:opacity .3s ease}.article-content .table-wrapper{padding:0 var(--card-padding);overflow-x:auto;display:block}.article-content table{width:100%;border-collapse:collapse;border-spacing:0;margin-bottom:1.5em;font-size:.96em}.article-content th,.article-content td{text-align:left;padding:4px 8px 4px 10px;border:1px solid var(--table-border-color)}.article-content td{vertical-align:top}.article-content tr:nth-child(even){background-color:var(--tr-even-background-color)}.article-content .twitter-tweet{color:var(--card-text-color-main)}.article-content .video-wrapper{position:relative;width:100%;height:0;padding-bottom:56.25%;overflow:hidden}.article-content .video-wrapper>iframe,.article-content .video-wrapper>video{position:absolute;width:100%;height:100%;left:0;top:0;border:0}.article-content .gitlab-embed-snippets{margin:0!important}.article-content .gitlab-embed-snippets .file-holder.snippet-file-content{margin-block-end:0!important;margin-block-start:0!important;margin-left:calc((var(--card-padding)) * -1)!important;margin-right:calc((var(--card-padding)) * -1)!important;padding:0 var(--card-padding)!important}.article-content blockquote,.article-content figure,.article-content .highlight,.article-content pre,.article-content .gallery,.article-content .video-wrapper,.article-content .table-wrapper,.article-content .s_video_simple{margin-left:calc((var(--card-padding)) * -1);margin-right:calc((var(--card-padding)) * -1);width:calc(100% + var(--card-padding) * 2)}.article-content .katex-display>.katex{overflow-x:auto;overflow-y:hidden}.article-content kbd{border:1px solid var(--kbd-border-color);font-weight:700;font-size:.9em;line-height:1;padding:2px 4px;border-radius:4px;display:inline-block}.section-card{border-radius:var(--card-border-radius);background-color:var(--card-background);padding:var(--small-card-padding);box-shadow:var(--shadow-l1);display:flex;align-items:center;gap:20px;--separation:15px}.section-card .section-term{font-size:2.2rem;margin:0;color:var(--card-text-color-main)}.section-card .section-description{font-weight:400;color:var(--card-text-color-secondary);font-size:1.6rem;margin:0}.section-card .section-details{flex-grow:1;display:flex;flex-direction:column;gap:8px}.section-card .section-image img{width:60px;height:60px}.section-card .section-count{color:var(--card-text-color-tertiary);font-size:1.4rem;margin:0;font-weight:700;text-transform:uppercase}.subsection-list{overflow-x:auto}.subsection-list .article-list--tile{display:flex;padding-bottom:15px}.subsection-list .article-list--tile article{width:250px;height:150px;margin-right:20px;flex-shrink:0}.subsection-list .article-list--tile article .article-title{margin:0;font-size:1.8rem}.subsection-list .article-list--tile article .article-details{padding:20px}.not-found-card{background-color:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--card-border-radius);padding:var(--card-padding)}.search-form{position:relative;--button-size:80px}.search-form.widget{--button-size:60px}.search-form.widget label{font-size:1.3rem;top:10px}.search-form.widget input{font-size:1.5rem;padding:30px 20px 15px}.search-form p{position:relative;margin:0}.search-form label{position:absolute;top:15px;inset-inline-start:20px;font-size:1.4rem;color:var(--card-text-color-tertiary)}.search-form input{padding:40px 20px 20px;border-radius:var(--card-border-radius);background-color:var(--card-background);box-shadow:var(--shadow-l1);color:var(--card-text-color-main);width:100%;border:0;-webkit-appearance:none;transition:box-shadow .3s ease;font-size:1.8rem}.search-form input:focus{outline:0;box-shadow:var(--shadow-l2)}.search-form button{position:absolute;inset-inline-end:0;top:0;height:100%;width:var(--button-size);cursor:pointer;background-color:transparent;border:0;padding:0 10px}.search-form button:focus{outline:0}.search-form button:focus svg{stroke-width:2;color:var(--accent-color)}.search-form button svg{color:var(--card-text-color-secondary);stroke-width:1.33;transition:all .3s ease;width:20px;height:20px}a{text-decoration:none;color:var(--accent-color)}a:hover{color:var(--accent-color-darker)}a.link{box-shadow:0 -2px rgba(var(--link-background-color),var(--link-background-opacity))inset;transition:all .3s ease}a.link:hover{box-shadow:0 calc(-1rem * var(--article-line-height))rgba(var(--link-background-color),var(--link-background-opacity-hover))inset}.section-title{text-transform:uppercase;margin-top:0;margin-bottom:10px;display:block;font-size:1.6rem;font-weight:700;color:var(--body-text-color)}.section-title a{color:var(--body-text-color)}:root{--main-top-padding:30px;--card-border-radius:25px;--tag-border-radius:8px;--section-separation:40px;--code-background-color:#f2f1b0e3;--code-text-color:#5c3400e0;--article-line-height:1.5;--pre-background-color:#f0f0f0;--card-padding:10px}:root[data-scheme=dark]{--code-background-color:#00000075;--code-text-color:#e9d88c}a{word-break:break-all}code{word-break:break-all}.article-page .main-article .article-content img{max-width:96%!important;height:auto!important;border-radius:8px}.article-content blockquote{border-left:2px solid #b6820096!important;background:#ffdd1fb9}[data-scheme=dark] blockquote{border-left:5px solid #c56600de!important;background:#3b2d0127}.highlight{max-width:102%!important;background-color:var(--pre-background-color);padding:var(--card-padding);position:relative;border-radius:20px;margin-left:-7px!important;margin-right:-12px;box-shadow:var(--shadow-l1)!important}.highlight:hover .copyCodeButton{opacity:1}[dir=rtl] .highlight{direction:ltr}.highlight pre{margin:initial;padding:0;margin:0;width:auto}[data-scheme=light] .article-content .highlight{background-color:rgba(255,225,107,.635)}[data-scheme=light] .chroma{color:#38230dd6;background-color:rgba(255,247,209,.244)}[data-scheme=dark] .article-content .highlight{background-color:rgba(33,21,3,.741)}[data-scheme=dark] .chroma{color:#f4f0c0;background-color:rgba(38,20,3,.752)}.article-content .highlight:before{content:"";display:block;background:url(../img/code-header.svg);height:18px;width:100%;background-size:57px;background-repeat:no-repeat;margin-bottom:5px;background-position:-1px 2px}[data-scheme=dark] ::selection{color:#fff;background:#444}[data-scheme=dark] ::-moz-selection{color:#fff;background:#444}[data-scheme=light] ::selection{color:#fff;background:#444}[data-scheme=light] ::-moz-selection{color:#fff;background:#444}a{text-decoration:none;color:var(--accent-color)}a:hover{color:var(--accent-color-darker)}a.link{color:#994311;font-weight:500;padding:0 2px;text-decoration:none;cursor:pointer}a.link:hover{text-decoration:none}[data-scheme=dark] a{text-decoration:none}[data-scheme=dark] a:hover{color:var(--accent-color-darker)}[data-scheme=dark] a.link{color:#fff193e0;font-weight:500;padding:0 2px;text-decoration:none;cursor:pointer}[data-scheme=dark] a.link:hover{text-decoration:none}.article-list article .article-image img{width:100%;height:195px;object-fit:cover}@media(min-width:768px){.article-list article .article-image img{height:300px}}@media(min-width:1280px){.article-list article .article-image img{height:355px}}.main-container{min-height:100vh;align-items:flex-start;padding:10px;gap:var(--section-separation);padding-top:var(--main-top-padding)}@media(min-width:768px){.main-container{padding:0 35px}}.container{margin-left:auto;margin-right:auto}.container .left-sidebar{order:-3;max-width:var(--left-sidebar-max-width)}.container .right-sidebar{padding:0;order:-1;max-width:var(--right-sidebar-max-width)}@media(min-width:1024px){.container .right-sidebar{display:flex;flex-direction:column}}@media(min-width:768px){.container.extended{max-width:1024px;--left-sidebar-max-width:20%;--right-sidebar-max-width:20%}}@media(min-width:1024px){.container.extended{max-width:1280px;--left-sidebar-max-width:21%;--right-sidebar-max-width:19%}}@media(min-width:1280px){.container.extended{max-width:1536px;--left-sidebar-max-width:21%;--right-sidebar-max-width:18%}}@media(min-width:768px){.container.compact{--left-sidebar-max-width:25%;max-width:768px}}@media(min-width:1024px){.container.compact{max-width:1024px;--left-sidebar-max-width:20%}}@media(min-width:1280px){.container.compact{max-width:1280px}}.article-list--compact article .article-image img{width:var(--image-size);height:var(--image-size);object-fit:cover;border-radius:17%}.menu{padding-left:0;list-style:none;line-height:1.2;flex-direction:column;overflow-x:hidden;overflow-y:scroll;flex-grow:1;background-color:var(--card-background);box-shadow:var(--shadow-l2);display:none;margin:0;border-radius:10px;padding:30px}@media(min-width:1280px){.menu{padding:15px 0}}.menu,.menu .menu-bottom-section{gap:30px}@media(min-width:1280px){.menu,.menu .menu-bottom-section{gap:25px}}.menu.show{display:flex}@media(min-width:768px){.menu{align-items:flex-end;display:flex;background-color:transparent;padding:0;box-shadow:none;margin:0}}.menu li{position:relative;vertical-align:middle;padding:0}@media(min-width:768px){.menu li{width:100%}}.menu li svg{stroke-width:1.53;width:20px;height:20px}.menu li a{height:100%;display:inline-flex;align-items:center;color:var(--body-text-color);gap:var(--menu-icon-separation)}.menu li span{flex:1}.menu li.current a{color:var(--accent-color);font-weight:700}.menu::-webkit-scrollbar{display:none}html ::-webkit-scrollbar{width:20px}html ::-webkit-scrollbar-track{background-color:transparent}html ::-webkit-scrollbar-thumb{background-color:#d6dee1;border-radius:20px;border:6px solid transparent;background-clip:content-box}html ::-webkit-scrollbar-thumb:hover{background-color:#a8bbbf}@media(min-width:1024px){.article-list--compact{display:grid;grid-template-columns:1fr 1fr;background:0 0;box-shadow:none;gap:1rem}.article-list--compact article{background:var(--card-background);border:none;box-shadow:var(--shadow-l2);margin-bottom:8px;border-radius:16px}}@media(min-width:1024px){.article-list--compact.links{display:grid;grid-template-columns:1fr 1fr 1fr;background:0 0;box-shadow:none;gap:1rem}.article-list--compact.links article{background:var(--card-background);border:none;box-shadow:var(--shadow-l2);margin-bottom:8px;border-radius:var(--card-border-radius)}.article-list--compact.links article:nth-child(odd){margin-right:8px}}.welcome{color:var(--card-text-color-main);background:var(--card-background);box-shadow:var(--shadow-l2);border-radius:30px;display:inline-block}.shake{display:inline-block;animation:shake 1s;animation-duration:1s;animation-timing-function:ease;animation-delay:0s;animation-iteration-count:1;animation-direction:normal;animation-fill-mode:none;animation-play-state:running;animation-name:shake;animation-timeline:auto;animation-range-start:normal;animation-range-end:normal;animation-delay:2s}@keyframes shake{0%{transform:rotate(0)}25%{transform:rotate(45deg)scale(1.2)}50%{transform:rotate(0)scale(1.2)}75%{transform:rotate(45deg)scale(1.2)}100%{transform:rotate(0)}}.jump-text1{display:inline-block;animation:jump .5s 1}.jump-text2{display:inline-block;animation:jump .5s 1;animation-delay:.1s}.jump-text3{display:inline-block;animation:jump .5s 1;animation-delay:.2s}.jump-text4{display:inline-block;animation:jump .5s 1;animation-delay:.3s}.jump-text5{display:inline-block;animation:jump .5s 1;animation-delay:.4s}.jump-text6{display:inline-block;animation:jump .5s 1;animation-delay:.5s}.jump-text7{display:inline-block;animation:jump .5s 1;animation-delay:.6s}.jump-text8{display:inline-block;animation:jump .5s 1;animation-delay:.7s}.jump-text9{display:inline-block;animation:jump .5s 1;animation-delay:.9s}@keyframes jump{0%{transform:translateY(0)}50%{transform:translateY(-20px)}100%{transform:translateY(0)}}.back-home{background:var(--card-background);border-radius:var(--tag-border-radius);color:var(--card-text-color-tertiary);margin-right:.1rem;margin-top:24px;display:inline-flex;align-items:center;font-size:1.4rem;text-transform:uppercase;padding:10px 20px 10px 15px;transition:box-shadow .3s ease;box-shadow:var(--shadow-l3)}.back-home:hover{box-shadow:var(--shadow-l2)}.back-home svg{margin-right:5px;width:20px;height:20px}.back-home span{font-weight:500;white-space:nowrap}.main-container .right-sidebar{order:2;max-width:var(--right-sidebar-max-width)}@media(min-width:1024px){.main-container .right-sidebar{display:flex}}main.main{order:1;min-width:0;max-width:100%;flex-grow:1;display:flex;flex-direction:column;gap:var(--section-separation)}@media(min-width:768px){main.main{padding-top:var(--main-top-padding)}} \ No newline at end of file diff --git a/scss/style.min.d0ae89ab8ae9da728fcae8cb3ad00b279033b8d5a82aca4e8228c01903e4bdf7.css b/scss/style.min.d0ae89ab8ae9da728fcae8cb3ad00b279033b8d5a82aca4e8228c01903e4bdf7.css new file mode 100644 index 00000000..f95a04d6 --- /dev/null +++ b/scss/style.min.d0ae89ab8ae9da728fcae8cb3ad00b279033b8d5a82aca4e8228c01903e4bdf7.css @@ -0,0 +1,10 @@ +@charset "UTF-8";/*!* Hugo Theme Stack +* +* @author: Jimmy Cai +* @website: https://jimmycai.com +* @link: https://github.com/CaiJimmy/hugo-theme-stack*/:root{--main-top-padding:35px;--body-background:#f5f5fa;--accent-color:#34495e;--accent-color-darker:#2c3e50;--accent-color-text:#fff;--body-text-color:#707070;--tag-border-radius:4px;--section-separation:40px;--scrollbar-thumb:hsl(0, 0%, 85%);--scrollbar-track:var(--body-background)}@media(min-width:1280px){:root{--main-top-padding:50px}}:root[data-scheme=dark]{--body-background:#303030;--accent-color:#ecf0f1;--accent-color-darker:#bdc3c7;--accent-color-text:#000;--body-text-color:rgba(255, 255, 255, 0.7);--scrollbar-thumb:hsl(0, 0%, 40%);--scrollbar-track:var(--body-background)}:root{--sys-font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", "Droid Sans", "Helvetica Neue";--zh-font-family:"PingFang SC", "Hiragino Sans GB", "Droid Sans Fallback", "Microsoft YaHei";--base-font-family:"Lato", var(--sys-font-family), var(--zh-font-family), sans-serif;--code-font-family:Menlo, Monaco, Consolas, "Courier New", var(--zh-font-family), monospace}:root{--card-background:#fff;--card-background-selected:#eaeaea;--card-text-color-main:#000;--card-text-color-secondary:#747474;--card-text-color-tertiary:#767676;--card-separator-color:rgba(218, 218, 218, 0.5);--card-border-radius:10px;--card-padding:20px;--small-card-padding:25px 20px}@media(min-width:768px){:root{--card-padding:25px}}@media(min-width:1280px){:root{--card-padding:30px}}@media(min-width:768px){:root{--small-card-padding:25px}}:root[data-scheme=dark]{--card-background:#424242;--card-background-selected:rgba(255, 255, 255, 0.16);--card-text-color-main:rgba(255, 255, 255, 0.9);--card-text-color-secondary:rgba(255, 255, 255, 0.7);--card-text-color-tertiary:rgba(255, 255, 255, 0.5);--card-separator-color:rgba(255, 255, 255, 0.12)}:root{--article-font-family:var(--base-font-family);--article-font-size:1.6rem;--article-line-height:1.85}@media(min-width:768px){:root{--article-font-size:1.7rem}}:root{--blockquote-border-size:4px;--blockquote-background-color:rgb(248 248 248);--heading-border-size:4px;--link-background-color:189, 195, 199;--link-background-opacity:0.5;--link-background-opacity-hover:0.7;--pre-background-color:#272822;--pre-text-color:#f8f8f2;--code-background-color:rgba(0, 0, 0, 0.12);--code-text-color:#808080;--table-border-color:#dadada;--tr-even-background-color:#efefee;--kbd-border-color:#dadada}:root[data-scheme=dark]{--code-background-color:#272822;--code-text-color:rgba(255, 255, 255, 0.9);--table-border-color:#717171;--tr-even-background-color:#545454;--blockquote-background-color:rgb(75 75 75)}:root{--shadow-l1:0px 4px 8px rgba(0, 0, 0, 0.04), 0px 0px 2px rgba(0, 0, 0, 0.06), 0px 0px 1px rgba(0, 0, 0, 0.04);--shadow-l2:0px 10px 20px rgba(0, 0, 0, 0.04), 0px 2px 6px rgba(0, 0, 0, 0.04), 0px 0px 1px rgba(0, 0, 0, 0.04);--shadow-l3:0px 10px 20px rgba(0, 0, 0, 0.04), 0px 2px 6px rgba(0, 0, 0, 0.04), 0px 0px 1px rgba(0, 0, 0, 0.04);--shadow-l4:0px 24px 32px rgba(0, 0, 0, 0.04), 0px 16px 24px rgba(0, 0, 0, 0.04), 0px 4px 8px rgba(0, 0, 0, 0.04), + 0px 0px 1px rgba(0, 0, 0, 0.04)}[data-scheme=light]{--pre-text-color:#272822;--pre-background-color:#fafafa}[data-scheme=light] .chroma{color:#272822;background-color:#fafafa}[data-scheme=light] .chroma .err{color:#960050}[data-scheme=light] .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}[data-scheme=light] .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0;width:100%;display:block}[data-scheme=light] .chroma .lntable>tbody{display:block;width:100%}[data-scheme=light] .chroma .lntable>tbody>tr{display:flex;width:100%}[data-scheme=light] .chroma .lntable>tbody>tr>td:last-child{overflow-x:auto}[data-scheme=light] .chroma .hl{display:block;width:100%;background-color:#ffc}[data-scheme=light] .chroma .lnt{margin-right:.4em;padding:0 .4em;color:#7f7f7f;display:block}[data-scheme=light] .chroma .ln{margin-right:.4em;padding:0 .4em;color:#7f7f7f}[data-scheme=light] .chroma .k{color:#00a8c8}[data-scheme=light] .chroma .kc{color:#00a8c8}[data-scheme=light] .chroma .kd{color:#00a8c8}[data-scheme=light] .chroma .kn{color:#f92672}[data-scheme=light] .chroma .kp{color:#00a8c8}[data-scheme=light] .chroma .kr{color:#00a8c8}[data-scheme=light] .chroma .kt{color:#00a8c8}[data-scheme=light] .chroma .n{color:#111}[data-scheme=light] .chroma .na{color:#75af00}[data-scheme=light] .chroma .nb{color:#111}[data-scheme=light] .chroma .bp{color:#111}[data-scheme=light] .chroma .nc{color:#75af00}[data-scheme=light] .chroma .no{color:#00a8c8}[data-scheme=light] .chroma .nd{color:#75af00}[data-scheme=light] .chroma .ni{color:#111}[data-scheme=light] .chroma .ne{color:#75af00}[data-scheme=light] .chroma .nf{color:#75af00}[data-scheme=light] .chroma .fm{color:#111}[data-scheme=light] .chroma .nl{color:#111}[data-scheme=light] .chroma .nn{color:#111}[data-scheme=light] .chroma .nx{color:#75af00}[data-scheme=light] .chroma .py{color:#111}[data-scheme=light] .chroma .nt{color:#f92672}[data-scheme=light] .chroma .nv{color:#111}[data-scheme=light] .chroma .vc{color:#111}[data-scheme=light] .chroma .vg{color:#111}[data-scheme=light] .chroma .vi{color:#111}[data-scheme=light] .chroma .vm{color:#111}[data-scheme=light] .chroma .l{color:#ae81ff}[data-scheme=light] .chroma .ld{color:#d88200}[data-scheme=light] .chroma .s{color:#d88200}[data-scheme=light] .chroma .sa{color:#d88200}[data-scheme=light] .chroma .sb{color:#d88200}[data-scheme=light] .chroma .sc{color:#d88200}[data-scheme=light] .chroma .dl{color:#d88200}[data-scheme=light] .chroma .sd{color:#d88200}[data-scheme=light] .chroma .s2{color:#d88200}[data-scheme=light] .chroma .se{color:#ae81ff}[data-scheme=light] .chroma .sh{color:#d88200}[data-scheme=light] .chroma .si{color:#d88200}[data-scheme=light] .chroma .sx{color:#d88200}[data-scheme=light] .chroma .sr{color:#d88200}[data-scheme=light] .chroma .s1{color:#d88200}[data-scheme=light] .chroma .ss{color:#d88200}[data-scheme=light] .chroma .m{color:#ae81ff}[data-scheme=light] .chroma .mb{color:#ae81ff}[data-scheme=light] .chroma .mf{color:#ae81ff}[data-scheme=light] .chroma .mh{color:#ae81ff}[data-scheme=light] .chroma .mi{color:#ae81ff}[data-scheme=light] .chroma .il{color:#ae81ff}[data-scheme=light] .chroma .mo{color:#ae81ff}[data-scheme=light] .chroma .o{color:#f92672}[data-scheme=light] .chroma .ow{color:#f92672}[data-scheme=light] .chroma .p{color:#111}[data-scheme=light] .chroma .c{color:#75715e}[data-scheme=light] .chroma .ch{color:#75715e}[data-scheme=light] .chroma .cm{color:#75715e}[data-scheme=light] .chroma .c1{color:#75715e}[data-scheme=light] .chroma .cs{color:#75715e}[data-scheme=light] .chroma .cp{color:#75715e}[data-scheme=light] .chroma .cpf{color:#75715e}[data-scheme=light] .chroma .gd{color:#f92672}[data-scheme=light] .chroma .ge{font-style:italic}[data-scheme=light] .chroma .gi{color:#75af00}[data-scheme=light] .chroma .gs{font-weight:700}[data-scheme=light] .chroma .gu{color:#75715e}[data-scheme=dark]{--pre-text-color:#f8f8f2;--pre-background-color:#272822}[data-scheme=dark] .chroma{color:#f8f8f2;background-color:#272822}[data-scheme=dark] .chroma .err{color:#bb0064}[data-scheme=dark] .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}[data-scheme=dark] .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0;width:100%;display:block}[data-scheme=dark] .chroma .lntable>tbody{display:block;width:100%}[data-scheme=dark] .chroma .lntable>tbody>tr{display:flex;width:100%}[data-scheme=dark] .chroma .lntable>tbody>tr>td:last-child{overflow-x:auto}[data-scheme=dark] .chroma .hl{display:block;width:100%;background-color:#ffc}[data-scheme=dark] .chroma .lnt{margin-right:.4em;padding:0 .4em;color:#7f7f7f;display:block}[data-scheme=dark] .chroma .ln{margin-right:.4em;padding:0 .4em;color:#7f7f7f}[data-scheme=dark] .chroma .k{color:#66d9ef}[data-scheme=dark] .chroma .kc{color:#66d9ef}[data-scheme=dark] .chroma .kd{color:#66d9ef}[data-scheme=dark] .chroma .kn{color:#f92672}[data-scheme=dark] .chroma .kp{color:#66d9ef}[data-scheme=dark] .chroma .kr{color:#66d9ef}[data-scheme=dark] .chroma .kt{color:#66d9ef}[data-scheme=dark] .chroma .n{color:#f8f8f2}[data-scheme=dark] .chroma .na{color:#a6e22e}[data-scheme=dark] .chroma .nb{color:#f8f8f2}[data-scheme=dark] .chroma .bp{color:#f8f8f2}[data-scheme=dark] .chroma .nc{color:#a6e22e}[data-scheme=dark] .chroma .no{color:#66d9ef}[data-scheme=dark] .chroma .nd{color:#a6e22e}[data-scheme=dark] .chroma .ni{color:#f8f8f2}[data-scheme=dark] .chroma .ne{color:#a6e22e}[data-scheme=dark] .chroma .nf{color:#a6e22e}[data-scheme=dark] .chroma .fm{color:#f8f8f2}[data-scheme=dark] .chroma .nl{color:#f8f8f2}[data-scheme=dark] .chroma .nn{color:#f8f8f2}[data-scheme=dark] .chroma .nx{color:#a6e22e}[data-scheme=dark] .chroma .py{color:#f8f8f2}[data-scheme=dark] .chroma .nt{color:#f92672}[data-scheme=dark] .chroma .nv{color:#f8f8f2}[data-scheme=dark] .chroma .vc{color:#f8f8f2}[data-scheme=dark] .chroma .vg{color:#f8f8f2}[data-scheme=dark] .chroma .vi{color:#f8f8f2}[data-scheme=dark] .chroma .vm{color:#f8f8f2}[data-scheme=dark] .chroma .l{color:#ae81ff}[data-scheme=dark] .chroma .ld{color:#e6db74}[data-scheme=dark] .chroma .s{color:#e6db74}[data-scheme=dark] .chroma .sa{color:#e6db74}[data-scheme=dark] .chroma .sb{color:#e6db74}[data-scheme=dark] .chroma .sc{color:#e6db74}[data-scheme=dark] .chroma .dl{color:#e6db74}[data-scheme=dark] .chroma .sd{color:#e6db74}[data-scheme=dark] .chroma .s2{color:#e6db74}[data-scheme=dark] .chroma .se{color:#ae81ff}[data-scheme=dark] .chroma .sh{color:#e6db74}[data-scheme=dark] .chroma .si{color:#e6db74}[data-scheme=dark] .chroma .sx{color:#e6db74}[data-scheme=dark] .chroma .sr{color:#e6db74}[data-scheme=dark] .chroma .s1{color:#e6db74}[data-scheme=dark] .chroma .ss{color:#e6db74}[data-scheme=dark] .chroma .m{color:#ae81ff}[data-scheme=dark] .chroma .mb{color:#ae81ff}[data-scheme=dark] .chroma .mf{color:#ae81ff}[data-scheme=dark] .chroma .mh{color:#ae81ff}[data-scheme=dark] .chroma .mi{color:#ae81ff}[data-scheme=dark] .chroma .il{color:#ae81ff}[data-scheme=dark] .chroma .mo{color:#ae81ff}[data-scheme=dark] .chroma .o{color:#f92672}[data-scheme=dark] .chroma .ow{color:#f92672}[data-scheme=dark] .chroma .p{color:#f8f8f2}[data-scheme=dark] .chroma .c{color:#75715e}[data-scheme=dark] .chroma .ch{color:#75715e}[data-scheme=dark] .chroma .cm{color:#75715e}[data-scheme=dark] .chroma .c1{color:#75715e}[data-scheme=dark] .chroma .cs{color:#75715e}[data-scheme=dark] .chroma .cp{color:#75715e}[data-scheme=dark] .chroma .cpf{color:#75715e}[data-scheme=dark] .chroma .gd{color:#f92672}[data-scheme=dark] .chroma .ge{font-style:italic}[data-scheme=dark] .chroma .gi{color:#a6e22e}[data-scheme=dark] .chroma .gs{font-weight:700}[data-scheme=dark] .chroma .gu{color:#75715e}:root{--menu-icon-separation:40px;--container-padding:15px;--widget-separation:var(--section-separation)}.container{margin-left:auto;margin-right:auto}.container .left-sidebar{order:-3;max-width:var(--left-sidebar-max-width)}.container .right-sidebar{order:-1;max-width:var(--right-sidebar-max-width)}@media(min-width:1024px){.container .right-sidebar{display:flex}}@media(min-width:768px){.container.extended{max-width:1024px;--left-sidebar-max-width:25%;--right-sidebar-max-width:30%}}@media(min-width:1024px){.container.extended{max-width:1280px;--left-sidebar-max-width:20%;--right-sidebar-max-width:30%}}@media(min-width:1280px){.container.extended{max-width:1536px;--left-sidebar-max-width:15%;--right-sidebar-max-width:25%}}@media(min-width:768px){.container.compact{--left-sidebar-max-width:25%;max-width:768px}}@media(min-width:1024px){.container.compact{max-width:1024px;--left-sidebar-max-width:20%}}@media(min-width:1280px){.container.compact{max-width:1280px}}.flex{display:flex;flex-direction:row}.flex.column{flex-direction:column}.flex.on-phone--column{flex-direction:column}@media(min-width:768px){.flex.on-phone--column{flex-direction:unset}}.flex .full-width{width:100%}main.main{order:-2;min-width:0;max-width:100%;flex-grow:1;display:flex;flex-direction:column;gap:var(--section-separation)}@media(min-width:768px){main.main{padding-top:var(--main-top-padding)}}.main-container{min-height:100vh;align-items:flex-start;padding:0 15px;gap:var(--section-separation);padding-top:var(--main-top-padding)}@media(min-width:768px){.main-container{padding:0 20px}}/*!normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css*/html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}/*!* Hamburgers +* @description Tasty CSS-animated hamburgers +* @author Jonathan Suh @jonsuh +* @site https://jonsuh.com/hamburgers +* @link https://github.com/jonsuh/hamburgers*/.hamburger{padding-top:10px;display:inline-block;cursor:pointer;transition-property:opacity,filter;transition-duration:.15s;transition-timing-function:linear;font:inherit;color:inherit;text-transform:none;background-color:transparent;border:0;margin:0;overflow:visible}.hamburger:hover{opacity:.7}.hamburger.is-active:hover{opacity:.7}.hamburger.is-active .hamburger-inner,.hamburger.is-active .hamburger-inner::before,.hamburger.is-active .hamburger-inner::after{background-color:#000}.hamburger-box{width:30px;height:24px;display:inline-block;position:relative}.hamburger-inner{display:block;top:50%;margin-top:-2px}.hamburger-inner,.hamburger-inner::before,.hamburger-inner::after{width:30px;height:2px;background-color:var(--card-text-color-main);border-radius:4px;position:absolute;transition-property:transform;transition-duration:.15s;transition-timing-function:ease}.hamburger-inner::before,.hamburger-inner::after{content:"";display:block}.hamburger-inner::before{top:-10px}.hamburger-inner::after{bottom:-10px}.hamburger--spin .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin .hamburger-inner::before{transition:top .1s .25s ease-in,opacity .1s ease-in}.hamburger--spin .hamburger-inner::after{transition:bottom .1s .25s ease-in,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin.is-active .hamburger-inner{transform:rotate(225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin.is-active .hamburger-inner::before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s .12s ease-out}.hamburger--spin.is-active .hamburger-inner::after{bottom:0;transform:rotate(-90deg);transition:bottom .1s ease-out,transform .22s .12s cubic-bezier(.215,.61,.355,1)}#toggle-menu{background:0 0;border:none;position:absolute;right:0;top:0;z-index:2;cursor:pointer;outline:none}[dir=rtl] #toggle-menu{left:0;right:auto}@media(min-width:768px){#toggle-menu{display:none}}#toggle-menu.is-active .hamburger-inner,#toggle-menu.is-active .hamburger-inner::before,#toggle-menu.is-active .hamburger-inner::after{background-color:var(--accent-color)}#main-menu{list-style:none;overflow-y:auto;flex-grow:1;font-size:1.4rem;background-color:var(--card-background);box-shadow:var(--shadow-l1);display:none;margin:0 calc(var(--container-padding) * -1);padding:30px}@media(min-width:1280px){#main-menu{padding:15px 0}}#main-menu,#main-menu .menu-bottom-section ol{flex-direction:column;gap:30px}@media(min-width:1280px){#main-menu,#main-menu .menu-bottom-section ol{gap:25px}}#main-menu.show{display:flex}@media(min-width:768px){#main-menu{align-items:flex-end;display:flex;background-color:transparent;padding:0;box-shadow:none;margin:0}}#main-menu li{position:relative;vertical-align:middle;padding:0}@media(min-width:768px){#main-menu li{width:100%}}#main-menu li svg{stroke:currentColor;stroke-width:1.33;width:20px;height:20px}#main-menu li a{height:100%;display:inline-flex;align-items:center;color:var(--body-text-color);gap:var(--menu-icon-separation)}#main-menu li span{flex:1}#main-menu li.current a{color:var(--accent-color);font-weight:700}#main-menu li.menu-bottom-section{margin-top:auto}#main-menu li.menu-bottom-section ol{display:flex;padding-left:0}.menu-social{list-style:none;padding:0;margin:0;display:flex;flex-direction:row;gap:10px}.menu-social svg{width:24px;height:24px;stroke:var(--body-text-color);stroke-width:1.33}.article-list{display:flex;flex-direction:column;gap:var(--section-separation)}.article-list article{display:flex;flex-direction:column;background-color:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--card-border-radius);overflow:hidden;transition:box-shadow .3s ease}.article-list article:hover{box-shadow:var(--shadow-l2)}.article-list article .article-image img{width:100%;height:150px;object-fit:cover}@media(min-width:768px){.article-list article .article-image img{height:200px}}@media(min-width:1280px){.article-list article .article-image img{height:250px}}.article-list article:nth-child(5n+1) .article-category a{background:#8ea885;color:#fff}.article-list article:nth-child(5n+2) .article-category a{background:#df7988;color:#fff}.article-list article:nth-child(5n+3) .article-category a{background:#0177b8;color:#fff}.article-list article:nth-child(5n+4) .article-category a{background:#ffb900;color:#fff}.article-list article:nth-child(5n+5) .article-category a{background:#6b69d6;color:#fff}.article-details{display:flex;flex-direction:column;justify-content:center;padding:var(--card-padding);gap:15px}.article-title{font-family:var(--article-font-family);font-weight:600;margin:0;color:var(--card-text-color-main);font-size:2.2rem}@media(min-width:1280px){.article-title{font-size:2.4rem}}.article-title a{color:var(--card-text-color-main)}.article-title a:hover{color:var(--card-text-color-main)}.article-subtitle{font-weight:400;color:var(--card-text-color-secondary);line-height:1.5;margin:0;font-size:1.75rem}@media(min-width:1280px){.article-subtitle{font-size:2rem}}.article-title-wrapper{display:flex;flex-direction:column;gap:8px}.article-time,.article-translations{display:flex;color:var(--card-text-color-tertiary);gap:15px}.article-time svg,.article-translations svg{vertical-align:middle;width:20px;height:20px;stroke-width:1.33;flex-shrink:0}.article-time time,.article-time a,.article-translations time,.article-translations a{font-size:1.4rem;color:var(--card-text-color-tertiary)}.article-time>div,.article-translations>div{display:inline-flex;align-items:center;gap:15px}.article-time{flex-wrap:wrap}.article-translations>div{flex-wrap:wrap}.article-category,.article-tags{display:flex;gap:10px;flex-wrap:wrap}.article-category a,.article-tags a{color:var(--accent-color-text);background-color:var(--accent-color);padding:8px 16px;border-radius:var(--tag-border-radius);display:inline-block;font-size:1.4rem;transition:background-color .5s ease}.article-category a:hover,.article-tags a:hover{color:var(--accent-color-text);background-color:var(--accent-color-darker)}.article-list--compact{border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);background-color:var(--card-background);--image-size:50px}@media(min-width:768px){.article-list--compact{--image-size:60px}}.article-list--compact article>a{display:flex;align-items:center;padding:var(--small-card-padding);gap:15px}.article-list--compact article:not(:last-of-type){border-bottom:1.5px solid var(--card-separator-color)}.article-list--compact article .article-details{flex-grow:1;padding:0;min-height:var(--image-size);gap:10px}.article-list--compact article .article-title{margin:0;font-size:1.6rem}@media(min-width:768px){.article-list--compact article .article-title{font-size:1.8rem}}.article-list--compact article .article-image img{width:var(--image-size);height:var(--image-size);object-fit:cover}.article-list--compact article .article-time{font-size:1.4rem}.article-list--compact article .article-preview{font-size:1.4rem;color:var(--card-text-color-tertiary);margin-top:10px;line-height:1.5}.article-list--tile article{border-radius:var(--card-border-radius);overflow:hidden;position:relative;height:350px;width:250px;box-shadow:var(--shadow-l1);transition:box-shadow .3s ease;background-color:var(--card-background)}.article-list--tile article:hover{box-shadow:var(--shadow-l2)}.article-list--tile article.has-image .article-details{background-color:rgba(0,0,0,.25)}.article-list--tile article.has-image .article-title{color:#fff}.article-list--tile article .article-image{position:absolute;top:0;left:0;width:100%;height:100%}.article-list--tile article .article-image img{width:100%;height:100%;object-fit:cover}.article-list--tile article .article-details{border-radius:var(--card-border-radius);position:relative;height:100%;width:100%;display:flex;flex-direction:column;justify-content:flex-end;z-index:2;padding:15px}@media(min-width:640px){.article-list--tile article .article-details{padding:20px}}.article-list--tile article .article-title{font-size:2rem;font-weight:500;color:var(--card-text-color-main)}@media(min-width:640px){.article-list--tile article .article-title{font-size:2.2rem}}.widget{display:flex;flex-direction:column}.widget .widget-icon svg{width:32px;height:32px;stroke-width:1.6;color:var(--body-text-color)}.tagCloud .tagCloud-tags{display:flex;flex-wrap:wrap;gap:10px}.tagCloud .tagCloud-tags a{background:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--tag-border-radius);padding:8px 20px;color:var(--card-text-color-main);font-size:1.4rem;transition:box-shadow .3s ease}.tagCloud .tagCloud-tags a:hover{box-shadow:var(--shadow-l2)}.widget.archives .widget-archive--list{border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);background-color:var(--card-background)}.widget.archives .archives-year:not(:last-of-type){border-bottom:1.5px solid var(--card-separator-color)}.widget.archives .archives-year a{font-size:1.4rem;padding:18px 25px;display:flex}.widget.archives .archives-year a span.year{flex:1;color:var(--card-text-color-main);font-weight:700}.widget.archives .archives-year a span.count{color:var(--card-text-color-tertiary)}footer.site-footer{padding:20px 0 var(--section-separation);font-size:1.4rem;line-height:1.75}footer.site-footer:before{content:"";display:block;height:3px;width:50px;background:var(--body-text-color);margin-bottom:20px}footer.site-footer .copyright{color:var(--accent-color);font-weight:700;margin-bottom:5px}footer.site-footer .powerby{color:var(--body-text-color);font-weight:400;font-size:1.2rem}footer.site-footer .powerby a{color:var(--body-text-color)}.pagination{display:flex;background-color:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--card-border-radius);overflow:hidden;flex-wrap:wrap}.pagination .page-link{padding:16px 32px;display:inline-flex;color:var(--card-text-color-secondary)}.pagination .page-link.current{font-weight:700;background-color:var(--card-background-selected);color:var(--card-text-color-main)}@media(min-width:768px){.sidebar.sticky{position:sticky}}.left-sidebar{display:flex;flex-direction:column;flex-shrink:0;align-self:stretch;gap:var(--sidebar-element-separation);max-width:none;width:100%;position:relative;--sidebar-avatar-size:100px;--sidebar-element-separation:20px;--emoji-size:40px;--emoji-font-size:20px}@media(min-width:768px){.left-sidebar{width:auto;padding-top:var(--main-top-padding);padding-bottom:var(--main-top-padding);max-height:100vh}}@media(min-width:1536px){.left-sidebar{--sidebar-avatar-size:120px;--sidebar-element-separation:25px;--emoji-size:40px}}.left-sidebar.sticky{top:0}.left-sidebar.compact{--sidebar-avatar-size:80px;--emoji-size:30px;--emoji-font-size:15px}@media(min-width:1024px){.left-sidebar.compact header{flex-direction:row}}.left-sidebar.compact header .site-meta{gap:5px}.left-sidebar.compact header .site-name{font-size:1.4rem}@media(min-width:1536px){.left-sidebar.compact header .site-name{font-size:1.75rem}}.left-sidebar.compact header .site-description{font-size:1.4rem}.right-sidebar{width:100%;display:none;flex-direction:column;gap:var(--widget-separation)}.right-sidebar.sticky{top:0}@media(min-width:1024px){.right-sidebar{padding-top:var(--main-top-padding);padding-bottom:var(--main-top-padding)}}.sidebar header{z-index:1;transition:box-shadow .5s ease;display:flex;flex-direction:column;gap:var(--sidebar-element-separation)}@media(min-width:768px){.sidebar header{padding:0}}.sidebar header .site-avatar{position:relative;margin:0;width:var(--sidebar-avatar-size);height:var(--sidebar-avatar-size);flex-shrink:0}.sidebar header .site-avatar .site-logo{width:100%;height:100%;border-radius:100%;box-shadow:var(--shadow-l1)}.sidebar header .site-avatar .emoji{position:absolute;width:var(--emoji-size);height:var(--emoji-size);line-height:var(--emoji-size);border-radius:100%;bottom:0;right:0;text-align:center;font-size:var(--emoji-font-size);background-color:var(--card-background);box-shadow:var(--shadow-l2)}.sidebar header .site-meta{display:flex;flex-direction:column;gap:10px;justify-content:center}.sidebar header .site-name{color:var(--accent-color);margin:0;font-size:1.6rem}@media(min-width:1536px){.sidebar header .site-name{font-size:1.8rem}}.sidebar header .site-description{color:var(--body-text-color);font-weight:400;margin:0;font-size:1.4rem}@media(min-width:1536px){.sidebar header .site-description{font-size:1.6rem}}[data-scheme=dark] #dark-mode-toggle{color:var(--accent-color);font-weight:700}[data-scheme=dark] #dark-mode-toggle .icon-tabler-toggle-left{display:none}[data-scheme=dark] #dark-mode-toggle .icon-tabler-toggle-right{display:unset}#dark-mode-toggle{margin-top:auto;color:var(--body-text-color);display:flex;align-items:center;cursor:pointer;gap:var(--menu-icon-separation)}#dark-mode-toggle .icon-tabler-toggle-right{display:none}#i18n-switch{color:var(--body-text-color);display:inline-flex;align-content:center;gap:var(--menu-icon-separation)}#i18n-switch select{border:0;background-color:transparent;color:var(--body-text-color)}#i18n-switch select option{color:var(--card-text-color-main);background-color:var(--card-background)}html{font-size:62.5%;overflow-y:scroll}*{box-sizing:border-box}body{background:var(--body-background);margin:0;font-family:var(--base-font-family);font-size:1.6rem;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{scrollbar-width:auto;scrollbar-color:var(--scrollbar-thumb)transparent}::-webkit-scrollbar{height:auto}::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb)}::-webkit-scrollbar-track{background-color:transparent}.article-page.hide-sidebar-sm .left-sidebar{display:none}@media(min-width:768px){.article-page.hide-sidebar-sm .left-sidebar{display:inherit}}.article-page .main-article{background:var(--card-background);border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);overflow:hidden}.article-page .main-article .article-header .article-image img{height:auto;width:100%;max-height:45vh;object-fit:cover}.article-page .main-article .article-header .article-details{padding:var(--card-padding);padding-bottom:0}.article-page .main-article .article-header .article-subtitle{font-weight:300;color:var(--card-text-color-secondary);line-height:1.3;margin:0;font-size:1.95rem}.article-page .main-article .article-content{margin:var(--card-padding)0;color:var(--card-text-color-main)}.article-page .main-article .article-content .footnotes{font-family:var(--base-font-family)}.article-page .main-article .article-content img{max-width:100%;height:auto}.article-page .main-article .article-footer{margin:var(--card-padding);margin-top:0}.article-page .main-article .article-footer section:not(:first-child){margin-top:var(--card-padding)}.article-page .main-article .article-footer section{color:var(--card-text-color-tertiary);text-transform:uppercase;display:flex;align-items:center;font-size:1.4rem;gap:15px}.article-page .main-article .article-footer section svg{width:20px;height:20px;stroke-width:1.33}.article-page .main-article .article-footer .article-tags{flex-wrap:wrap;text-transform:unset}.article-page .main-article .article-footer .article-copyright a,.article-page .main-article .article-footer .article-lastmod a{color:var(--body-text-color)}.article-page .main-article .article-footer .article-copyright a.link,.article-page .main-article .article-footer .article-lastmod a.link{box-shadow:unset}.widget--toc{background-color:var(--card-background);border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);display:flex;flex-direction:column;color:var(--card-text-color-main);overflow:hidden}.widget--toc ::-webkit-scrollbar-thumb{background-color:var(--card-separator-color)}.widget--toc #TableOfContents{overflow-x:auto;max-height:75vh}.widget--toc #TableOfContents ol,.widget--toc #TableOfContents ul{margin:0;padding:0}.widget--toc #TableOfContents ol{list-style-type:none;counter-reset:item}.widget--toc #TableOfContents ol li a:first-of-type::before{counter-increment:item;content:counters(item,".")". ";font-weight:700;margin-right:5px}.widget--toc #TableOfContents>ul{padding:0 1em}.widget--toc #TableOfContents li{margin:15px 0 15px 25px;padding:5px}.widget--toc #TableOfContents li>ol,.widget--toc #TableOfContents li>ul{margin-top:10px;padding-left:10px;margin-bottom:-5px}.widget--toc #TableOfContents li>ol>li:last-child,.widget--toc #TableOfContents li>ul>li:last-child{margin-bottom:0}.widget--toc #TableOfContents li.active-class>a{border-left:var(--heading-border-size)solid var(--accent-color);font-weight:700}.widget--toc #TableOfContents ul li.active-class>a{display:block}.widget--toc #TableOfContents>ul>li.active-class>a{margin-left:calc(-25px - 1em);padding-left:calc(25px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li.active-class>a{margin-left:calc(-9px - 1em);padding-left:calc(9px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li.active-class>a{margin-left:calc(-60px - 1em);padding-left:calc(60px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li.active-class>a{margin-left:calc(-44px - 1em);padding-left:calc(44px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li>ul>li.active-class>a{margin-left:calc(-95px - 1em);padding-left:calc(95px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li>ol>li.active-class>a{margin-left:calc(-79px - 1em);padding-left:calc(79px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li>ul>li>ul>li.active-class>a{margin-left:calc(-130px - 1em);padding-left:calc(130px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li>ol>li>ol>li.active-class>a{margin-left:calc(-114px - 1em);padding-left:calc(114px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li>ul>li>ul>li>ul>li.active-class>a{margin-left:calc(-165px - 1em);padding-left:calc(165px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li>ol>li>ol>li>ol>li.active-class>a{margin-left:calc(-149px - 1em);padding-left:calc(149px + 1em - var(--heading-border-size));display:block}.related-content{overflow-x:auto;padding-bottom:15px}.related-content>.flex{float:left}.related-content article{margin-right:15px;flex-shrink:0;overflow:hidden;width:250px;height:150px}.related-content article .article-title{font-size:1.4rem;margin:0}.related-content article.has-image .article-details{padding:20px}.article-content{font-family:var(--article-font-family);font-size:var(--article-font-size);padding:0 var(--card-padding);line-height:var(--article-line-height)}.article-content>p{margin:1.5em 0}.article-content h1,.article-content h2,.article-content h3,.article-content h4,.article-content h5,.article-content h6{margin-inline-start:calc((var(--card-padding)) * -1);padding-inline-start:calc(var(--card-padding) - var(--heading-border-size));border-inline-start:var(--heading-border-size)solid var(--accent-color)}.article-content figure{text-align:center}.article-content figure figcaption{font-size:1.4rem;color:var(--card-text-color-secondary)}.article-content blockquote{position:relative;margin:1.5em 0;border-inline-start:var(--blockquote-border-size)solid var(--card-separator-color);padding:15px calc(var(--card-padding) - var(--blockquote-border-size));background-color:var(--blockquote-background-color)}.article-content blockquote .cite{display:block;text-align:right;font-size:.75em}.article-content blockquote .cite a{text-decoration:underline}.article-content hr{width:100px;margin:40px auto;background:var(--card-text-color-tertiary);height:2px;border:0;opacity:.55}.article-content code{color:var(--code-text-color);background-color:var(--code-background-color);padding:2px 4px;border-radius:var(--tag-border-radius);font-family:var(--code-font-family)}.article-content a,.article-content code{word-break:break-word}.article-content .gallery{position:relative;display:flex;flex-direction:row;justify-content:center;margin:1.5em 0;gap:10px}.article-content .gallery figure{margin:0}.article-content pre{overflow-x:auto;display:block;background-color:var(--pre-background-color);color:var(--pre-text-color);font-family:var(--code-font-family);line-height:1.428571429;word-break:break-all;padding:var(--card-padding)}[dir=rtl] .article-content pre{direction:ltr}.article-content pre code{color:unset;border:none;background:0 0;padding:0}.article-content .highlight{background-color:var(--pre-background-color);padding:var(--card-padding);position:relative}.article-content .highlight:hover .copyCodeButton{opacity:1}[dir=rtl] .article-content .highlight{direction:ltr}.article-content .highlight pre{margin:initial;padding:0;margin:0;width:auto}.article-content .copyCodeButton{position:absolute;top:calc(var(--card-padding));right:calc(var(--card-padding));background:var(--card-background);border:none;box-shadow:var(--shadow-l2);border-radius:var(--tag-border-radius);padding:8px 16px;color:var(--card-text-color-main);cursor:pointer;font-size:14px;opacity:0;transition:opacity .3s ease}.article-content .table-wrapper{padding:0 var(--card-padding);overflow-x:auto;display:block}.article-content table{width:100%;border-collapse:collapse;border-spacing:0;margin-bottom:1.5em;font-size:.96em}.article-content th,.article-content td{text-align:left;padding:4px 8px 4px 10px;border:1px solid var(--table-border-color)}.article-content td{vertical-align:top}.article-content tr:nth-child(even){background-color:var(--tr-even-background-color)}.article-content .twitter-tweet{color:var(--card-text-color-main)}.article-content .video-wrapper{position:relative;width:100%;height:0;padding-bottom:56.25%;overflow:hidden}.article-content .video-wrapper>iframe,.article-content .video-wrapper>video{position:absolute;width:100%;height:100%;left:0;top:0;border:0}.article-content .gitlab-embed-snippets{margin:0!important}.article-content .gitlab-embed-snippets .file-holder.snippet-file-content{margin-block-end:0!important;margin-block-start:0!important;margin-left:calc((var(--card-padding)) * -1)!important;margin-right:calc((var(--card-padding)) * -1)!important;padding:0 var(--card-padding)!important}.article-content blockquote,.article-content figure,.article-content .highlight,.article-content pre,.article-content .gallery,.article-content .video-wrapper,.article-content .table-wrapper,.article-content .s_video_simple{margin-left:calc((var(--card-padding)) * -1);margin-right:calc((var(--card-padding)) * -1);width:calc(100% + var(--card-padding) * 2)}.article-content .katex-display>.katex{overflow-x:auto;overflow-y:hidden}.article-content kbd{border:1px solid var(--kbd-border-color);font-weight:700;font-size:.9em;line-height:1;padding:2px 4px;border-radius:4px;display:inline-block}.section-card{border-radius:var(--card-border-radius);background-color:var(--card-background);padding:var(--small-card-padding);box-shadow:var(--shadow-l1);display:flex;align-items:center;gap:20px;--separation:15px}.section-card .section-term{font-size:2.2rem;margin:0;color:var(--card-text-color-main)}.section-card .section-description{font-weight:400;color:var(--card-text-color-secondary);font-size:1.6rem;margin:0}.section-card .section-details{flex-grow:1;display:flex;flex-direction:column;gap:8px}.section-card .section-image img{width:60px;height:60px}.section-card .section-count{color:var(--card-text-color-tertiary);font-size:1.4rem;margin:0;font-weight:700;text-transform:uppercase}.subsection-list{overflow-x:auto}.subsection-list .article-list--tile{display:flex;padding-bottom:15px}.subsection-list .article-list--tile article{width:250px;height:150px;margin-right:20px;flex-shrink:0}.subsection-list .article-list--tile article .article-title{margin:0;font-size:1.8rem}.subsection-list .article-list--tile article .article-details{padding:20px}.not-found-card{background-color:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--card-border-radius);padding:var(--card-padding)}.search-form{position:relative;--button-size:80px}.search-form.widget{--button-size:60px}.search-form.widget label{font-size:1.3rem;top:10px}.search-form.widget input{font-size:1.5rem;padding:30px 20px 15px}.search-form p{position:relative;margin:0}.search-form label{position:absolute;top:15px;inset-inline-start:20px;font-size:1.4rem;color:var(--card-text-color-tertiary)}.search-form input{padding:40px 20px 20px;border-radius:var(--card-border-radius);background-color:var(--card-background);box-shadow:var(--shadow-l1);color:var(--card-text-color-main);width:100%;border:0;-webkit-appearance:none;transition:box-shadow .3s ease;font-size:1.8rem}.search-form input:focus{outline:0;box-shadow:var(--shadow-l2)}.search-form button{position:absolute;inset-inline-end:0;top:0;height:100%;width:var(--button-size);cursor:pointer;background-color:transparent;border:0;padding:0 10px}.search-form button:focus{outline:0}.search-form button:focus svg{stroke-width:2;color:var(--accent-color)}.search-form button svg{color:var(--card-text-color-secondary);stroke-width:1.33;transition:all .3s ease;width:20px;height:20px}a{text-decoration:none;color:var(--accent-color)}a:hover{color:var(--accent-color-darker)}a.link{box-shadow:0 -2px rgba(var(--link-background-color),var(--link-background-opacity))inset;transition:all .3s ease}a.link:hover{box-shadow:0 calc(-1rem * var(--article-line-height))rgba(var(--link-background-color),var(--link-background-opacity-hover))inset}.section-title{text-transform:uppercase;margin-top:0;margin-bottom:10px;display:block;font-size:1.6rem;font-weight:700;color:var(--body-text-color)}.section-title a{color:var(--body-text-color)}:root{--main-top-padding:30px;--card-border-radius:25px;--tag-border-radius:8px;--section-separation:40px;--code-background-color:#f2f1b0e3;--code-text-color:#5c3400e0;--article-line-height:1.5;--pre-background-color:#f0f0f0;--card-padding:10px}:root[data-scheme=dark]{--code-background-color:#00000075;--code-text-color:#e9d88c}a{word-break:break-all}code{word-break:break-all}.article-page .main-article .article-content img{max-width:96%!important;height:auto!important;border-radius:8px}.article-content blockquote{border-left:2px solid #b6820096!important;background:#ffdd1fb9}[data-scheme=dark] blockquote{border-left:5px solid #c56600de!important;background:#3b2d0127}.highlight{max-width:102%!important;background-color:var(--pre-background-color);padding:var(--card-padding);position:relative;border-radius:20px;margin-left:-7px!important;margin-right:-12px;box-shadow:var(--shadow-l1)!important}.highlight:hover .copyCodeButton{opacity:1}[dir=rtl] .highlight{direction:ltr}.highlight pre{margin:initial;padding:0;margin:0;width:auto}[data-scheme=light] .article-content .highlight{background-color:rgba(255,225,107,.635)}[data-scheme=light] .chroma{color:#38230dd6;background-color:rgba(255,247,209,.244)}[data-scheme=dark] .article-content .highlight{background-color:rgba(33,21,3,.741)}[data-scheme=dark] .chroma{color:#f4f0c0;background-color:rgba(38,20,3,.752)}.article-content .highlight:before{content:"";display:block;background:url(../img/code-header.svg);height:18px;width:100%;background-size:57px;background-repeat:no-repeat;margin-bottom:5px;background-position:-1px 2px}[data-scheme=dark] ::selection{color:#fff;background:#444}[data-scheme=dark] ::-moz-selection{color:#fff;background:#444}[data-scheme=light] ::selection{color:#fff;background:#444}[data-scheme=light] ::-moz-selection{color:#fff;background:#444}a{text-decoration:none;color:var(--accent-color)}a:hover{color:var(--accent-color-darker)}a.link{color:#994311;font-weight:500;padding:0 2px;text-decoration:none;cursor:pointer}a.link:hover{text-decoration:none}[data-scheme=dark] a{text-decoration:none}[data-scheme=dark] a:hover{color:var(--accent-color-darker)}[data-scheme=dark] a.link{color:#fff193e0;font-weight:500;padding:0 2px;text-decoration:none;cursor:pointer}[data-scheme=dark] a.link:hover{text-decoration:none}.article-list article .article-image img{width:100%;height:195px;object-fit:cover}@media(min-width:768px){.article-list article .article-image img{height:300px}}@media(min-width:1280px){.article-list article .article-image img{height:355px}}.main-container{min-height:100vh;align-items:flex-start;padding:10px;gap:var(--section-separation);padding-top:var(--main-top-padding)}@media(min-width:768px){.main-container{padding:0 35px}}.container{margin-left:auto;margin-right:auto}.container .left-sidebar{order:-3;max-width:var(--left-sidebar-max-width)}.container .right-sidebar{padding-left:9px;order:-1;max-width:var(--right-sidebar-max-width)}@media(min-width:1024px){.container .right-sidebar{display:flex;flex-direction:column}}@media(min-width:768px){.container.extended{max-width:1024px;--left-sidebar-max-width:20%;--right-sidebar-max-width:20%}}@media(min-width:1024px){.container.extended{max-width:1280px;--left-sidebar-max-width:21%;--right-sidebar-max-width:19%}}@media(min-width:1280px){.container.extended{max-width:1536px;--left-sidebar-max-width:21%;--right-sidebar-max-width:18%}}@media(min-width:768px){.container.compact{--left-sidebar-max-width:25%;max-width:768px}}@media(min-width:1024px){.container.compact{max-width:1024px;--left-sidebar-max-width:20%}}@media(min-width:1280px){.container.compact{max-width:1280px}}.article-list--compact article .article-image img{width:var(--image-size);height:var(--image-size);object-fit:cover;border-radius:17%}.menu{padding-left:0;list-style:none;line-height:1.2;flex-direction:column;overflow-x:hidden;overflow-y:scroll;flex-grow:1;background-color:var(--card-background);box-shadow:var(--shadow-l2);display:none;margin:0;border-radius:10px;padding:30px}@media(min-width:1280px){.menu{padding:15px 0}}.menu,.menu .menu-bottom-section{gap:30px}@media(min-width:1280px){.menu,.menu .menu-bottom-section{gap:25px}}.menu.show{display:flex}@media(min-width:768px){.menu{align-items:flex-end;display:flex;background-color:transparent;padding:0;box-shadow:none;margin:0}}.menu li{position:relative;vertical-align:middle;padding:0}@media(min-width:768px){.menu li{width:100%}}.menu li svg{stroke-width:1.53;width:20px;height:20px}.menu li a{height:100%;display:inline-flex;align-items:center;color:var(--body-text-color);gap:var(--menu-icon-separation)}.menu li span{flex:1}.menu li.current a{color:var(--accent-color);font-weight:700}.menu::-webkit-scrollbar{display:none}html ::-webkit-scrollbar{width:20px}html ::-webkit-scrollbar-track{background-color:transparent}html ::-webkit-scrollbar-thumb{background-color:#d6dee1;border-radius:20px;border:6px solid transparent;background-clip:content-box}html ::-webkit-scrollbar-thumb:hover{background-color:#a8bbbf}@media(min-width:1024px){.article-list--compact{display:grid;grid-template-columns:1fr 1fr;background:0 0;box-shadow:none;gap:1rem}.article-list--compact article{background:var(--card-background);border:none;box-shadow:var(--shadow-l2);margin-bottom:8px;border-radius:16px}}@media(min-width:1024px){.article-list--compact.links{display:grid;grid-template-columns:1fr 1fr 1fr;background:0 0;box-shadow:none;gap:1rem}.article-list--compact.links article{background:var(--card-background);border:none;box-shadow:var(--shadow-l2);margin-bottom:8px;border-radius:var(--card-border-radius)}.article-list--compact.links article:nth-child(odd){margin-right:8px}}.welcome{color:var(--card-text-color-main);background:var(--card-background);box-shadow:var(--shadow-l2);border-radius:30px;display:inline-block}.shake{display:inline-block;animation:shake 1s;animation-duration:1s;animation-timing-function:ease;animation-delay:0s;animation-iteration-count:1;animation-direction:normal;animation-fill-mode:none;animation-play-state:running;animation-name:shake;animation-timeline:auto;animation-range-start:normal;animation-range-end:normal;animation-delay:2s}@keyframes shake{0%{transform:rotate(0)}25%{transform:rotate(45deg)scale(1.2)}50%{transform:rotate(0)scale(1.2)}75%{transform:rotate(45deg)scale(1.2)}100%{transform:rotate(0)}}.jump-text1{display:inline-block;animation:jump .5s 1}.jump-text2{display:inline-block;animation:jump .5s 1;animation-delay:.1s}.jump-text3{display:inline-block;animation:jump .5s 1;animation-delay:.2s}.jump-text4{display:inline-block;animation:jump .5s 1;animation-delay:.3s}.jump-text5{display:inline-block;animation:jump .5s 1;animation-delay:.4s}.jump-text6{display:inline-block;animation:jump .5s 1;animation-delay:.5s}.jump-text7{display:inline-block;animation:jump .5s 1;animation-delay:.6s}.jump-text8{display:inline-block;animation:jump .5s 1;animation-delay:.7s}.jump-text9{display:inline-block;animation:jump .5s 1;animation-delay:.9s}@keyframes jump{0%{transform:translateY(0)}50%{transform:translateY(-20px)}100%{transform:translateY(0)}}.back-home{background:var(--card-background);border-radius:var(--tag-border-radius);color:var(--card-text-color-tertiary);margin-right:.1rem;margin-top:24px;display:inline-flex;align-items:center;font-size:1.4rem;text-transform:uppercase;padding:10px 20px 10px 15px;transition:box-shadow .3s ease;box-shadow:var(--shadow-l3)}.back-home:hover{box-shadow:var(--shadow-l2)}.back-home svg{margin-right:5px;width:20px;height:20px}.back-home span{font-weight:500;white-space:nowrap}.main-container .right-sidebar{order:2;max-width:var(--right-sidebar-max-width)}@media(min-width:1024px){.main-container .right-sidebar{display:flex}}main.main{order:1;min-width:0;max-width:100%;flex-grow:1;display:flex;flex-direction:column;gap:var(--section-separation)}@media(min-width:768px){main.main{padding-top:var(--main-top-padding)}} \ No newline at end of file diff --git a/scss/style.min.d21ad7d4113a0172fb14edaff8aa0ba056e5fc6e8b5f50149e0fb9c2f1b38903.css b/scss/style.min.d21ad7d4113a0172fb14edaff8aa0ba056e5fc6e8b5f50149e0fb9c2f1b38903.css new file mode 100644 index 00000000..90e62db5 --- /dev/null +++ b/scss/style.min.d21ad7d4113a0172fb14edaff8aa0ba056e5fc6e8b5f50149e0fb9c2f1b38903.css @@ -0,0 +1,10 @@ +@charset "UTF-8";/*!* Hugo Theme Stack +* +* @author: Jimmy Cai +* @website: https://jimmycai.com +* @link: https://github.com/CaiJimmy/hugo-theme-stack*/:root{--main-top-padding:35px;--body-background:#f5f5fa;--accent-color:#34495e;--accent-color-darker:#2c3e50;--accent-color-text:#fff;--body-text-color:#707070;--tag-border-radius:4px;--section-separation:40px;--scrollbar-thumb:hsl(0, 0%, 85%);--scrollbar-track:var(--body-background)}@media(min-width:1280px){:root{--main-top-padding:50px}}:root[data-scheme=dark]{--body-background:#303030;--accent-color:#ecf0f1;--accent-color-darker:#bdc3c7;--accent-color-text:#000;--body-text-color:rgba(255, 255, 255, 0.7);--scrollbar-thumb:hsl(0, 0%, 40%);--scrollbar-track:var(--body-background)}:root{--sys-font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", "Droid Sans", "Helvetica Neue";--zh-font-family:"PingFang SC", "Hiragino Sans GB", "Droid Sans Fallback", "Microsoft YaHei";--base-font-family:"Lato", var(--sys-font-family), var(--zh-font-family), sans-serif;--code-font-family:Menlo, Monaco, Consolas, "Courier New", var(--zh-font-family), monospace}:root{--card-background:#fff;--card-background-selected:#eaeaea;--card-text-color-main:#000;--card-text-color-secondary:#747474;--card-text-color-tertiary:#767676;--card-separator-color:rgba(218, 218, 218, 0.5);--card-border-radius:10px;--card-padding:20px;--small-card-padding:25px 20px}@media(min-width:768px){:root{--card-padding:25px}}@media(min-width:1280px){:root{--card-padding:30px}}@media(min-width:768px){:root{--small-card-padding:25px}}:root[data-scheme=dark]{--card-background:#424242;--card-background-selected:rgba(255, 255, 255, 0.16);--card-text-color-main:rgba(255, 255, 255, 0.9);--card-text-color-secondary:rgba(255, 255, 255, 0.7);--card-text-color-tertiary:rgba(255, 255, 255, 0.5);--card-separator-color:rgba(255, 255, 255, 0.12)}:root{--article-font-family:var(--base-font-family);--article-font-size:1.6rem;--article-line-height:1.85}@media(min-width:768px){:root{--article-font-size:1.7rem}}:root{--blockquote-border-size:4px;--blockquote-background-color:rgb(248 248 248);--heading-border-size:4px;--link-background-color:189, 195, 199;--link-background-opacity:0.5;--link-background-opacity-hover:0.7;--pre-background-color:#272822;--pre-text-color:#f8f8f2;--code-background-color:rgba(0, 0, 0, 0.12);--code-text-color:#808080;--table-border-color:#dadada;--tr-even-background-color:#efefee;--kbd-border-color:#dadada}:root[data-scheme=dark]{--code-background-color:#272822;--code-text-color:rgba(255, 255, 255, 0.9);--table-border-color:#717171;--tr-even-background-color:#545454;--blockquote-background-color:rgb(75 75 75)}:root{--shadow-l1:0px 4px 8px rgba(0, 0, 0, 0.04), 0px 0px 2px rgba(0, 0, 0, 0.06), 0px 0px 1px rgba(0, 0, 0, 0.04);--shadow-l2:0px 10px 20px rgba(0, 0, 0, 0.04), 0px 2px 6px rgba(0, 0, 0, 0.04), 0px 0px 1px rgba(0, 0, 0, 0.04);--shadow-l3:0px 10px 20px rgba(0, 0, 0, 0.04), 0px 2px 6px rgba(0, 0, 0, 0.04), 0px 0px 1px rgba(0, 0, 0, 0.04);--shadow-l4:0px 24px 32px rgba(0, 0, 0, 0.04), 0px 16px 24px rgba(0, 0, 0, 0.04), 0px 4px 8px rgba(0, 0, 0, 0.04), + 0px 0px 1px rgba(0, 0, 0, 0.04)}[data-scheme=light]{--pre-text-color:#272822;--pre-background-color:#fafafa}[data-scheme=light] .chroma{color:#272822;background-color:#fafafa}[data-scheme=light] .chroma .err{color:#960050}[data-scheme=light] .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}[data-scheme=light] .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0;width:100%;display:block}[data-scheme=light] .chroma .lntable>tbody{display:block;width:100%}[data-scheme=light] .chroma .lntable>tbody>tr{display:flex;width:100%}[data-scheme=light] .chroma .lntable>tbody>tr>td:last-child{overflow-x:auto}[data-scheme=light] .chroma .hl{display:block;width:100%;background-color:#ffc}[data-scheme=light] .chroma .lnt{margin-right:.4em;padding:0 .4em;color:#7f7f7f;display:block}[data-scheme=light] .chroma .ln{margin-right:.4em;padding:0 .4em;color:#7f7f7f}[data-scheme=light] .chroma .k{color:#00a8c8}[data-scheme=light] .chroma .kc{color:#00a8c8}[data-scheme=light] .chroma .kd{color:#00a8c8}[data-scheme=light] .chroma .kn{color:#f92672}[data-scheme=light] .chroma .kp{color:#00a8c8}[data-scheme=light] .chroma .kr{color:#00a8c8}[data-scheme=light] .chroma .kt{color:#00a8c8}[data-scheme=light] .chroma .n{color:#111}[data-scheme=light] .chroma .na{color:#75af00}[data-scheme=light] .chroma .nb{color:#111}[data-scheme=light] .chroma .bp{color:#111}[data-scheme=light] .chroma .nc{color:#75af00}[data-scheme=light] .chroma .no{color:#00a8c8}[data-scheme=light] .chroma .nd{color:#75af00}[data-scheme=light] .chroma .ni{color:#111}[data-scheme=light] .chroma .ne{color:#75af00}[data-scheme=light] .chroma .nf{color:#75af00}[data-scheme=light] .chroma .fm{color:#111}[data-scheme=light] .chroma .nl{color:#111}[data-scheme=light] .chroma .nn{color:#111}[data-scheme=light] .chroma .nx{color:#75af00}[data-scheme=light] .chroma .py{color:#111}[data-scheme=light] .chroma .nt{color:#f92672}[data-scheme=light] .chroma .nv{color:#111}[data-scheme=light] .chroma .vc{color:#111}[data-scheme=light] .chroma .vg{color:#111}[data-scheme=light] .chroma .vi{color:#111}[data-scheme=light] .chroma .vm{color:#111}[data-scheme=light] .chroma .l{color:#ae81ff}[data-scheme=light] .chroma .ld{color:#d88200}[data-scheme=light] .chroma .s{color:#d88200}[data-scheme=light] .chroma .sa{color:#d88200}[data-scheme=light] .chroma .sb{color:#d88200}[data-scheme=light] .chroma .sc{color:#d88200}[data-scheme=light] .chroma .dl{color:#d88200}[data-scheme=light] .chroma .sd{color:#d88200}[data-scheme=light] .chroma .s2{color:#d88200}[data-scheme=light] .chroma .se{color:#ae81ff}[data-scheme=light] .chroma .sh{color:#d88200}[data-scheme=light] .chroma .si{color:#d88200}[data-scheme=light] .chroma .sx{color:#d88200}[data-scheme=light] .chroma .sr{color:#d88200}[data-scheme=light] .chroma .s1{color:#d88200}[data-scheme=light] .chroma .ss{color:#d88200}[data-scheme=light] .chroma .m{color:#ae81ff}[data-scheme=light] .chroma .mb{color:#ae81ff}[data-scheme=light] .chroma .mf{color:#ae81ff}[data-scheme=light] .chroma .mh{color:#ae81ff}[data-scheme=light] .chroma .mi{color:#ae81ff}[data-scheme=light] .chroma .il{color:#ae81ff}[data-scheme=light] .chroma .mo{color:#ae81ff}[data-scheme=light] .chroma .o{color:#f92672}[data-scheme=light] .chroma .ow{color:#f92672}[data-scheme=light] .chroma .p{color:#111}[data-scheme=light] .chroma .c{color:#75715e}[data-scheme=light] .chroma .ch{color:#75715e}[data-scheme=light] .chroma .cm{color:#75715e}[data-scheme=light] .chroma .c1{color:#75715e}[data-scheme=light] .chroma .cs{color:#75715e}[data-scheme=light] .chroma .cp{color:#75715e}[data-scheme=light] .chroma .cpf{color:#75715e}[data-scheme=light] .chroma .gd{color:#f92672}[data-scheme=light] .chroma .ge{font-style:italic}[data-scheme=light] .chroma .gi{color:#75af00}[data-scheme=light] .chroma .gs{font-weight:700}[data-scheme=light] .chroma .gu{color:#75715e}[data-scheme=dark]{--pre-text-color:#f8f8f2;--pre-background-color:#272822}[data-scheme=dark] .chroma{color:#f8f8f2;background-color:#272822}[data-scheme=dark] .chroma .err{color:#bb0064}[data-scheme=dark] .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}[data-scheme=dark] .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0;width:100%;display:block}[data-scheme=dark] .chroma .lntable>tbody{display:block;width:100%}[data-scheme=dark] .chroma .lntable>tbody>tr{display:flex;width:100%}[data-scheme=dark] .chroma .lntable>tbody>tr>td:last-child{overflow-x:auto}[data-scheme=dark] .chroma .hl{display:block;width:100%;background-color:#ffc}[data-scheme=dark] .chroma .lnt{margin-right:.4em;padding:0 .4em;color:#7f7f7f;display:block}[data-scheme=dark] .chroma .ln{margin-right:.4em;padding:0 .4em;color:#7f7f7f}[data-scheme=dark] .chroma .k{color:#66d9ef}[data-scheme=dark] .chroma .kc{color:#66d9ef}[data-scheme=dark] .chroma .kd{color:#66d9ef}[data-scheme=dark] .chroma .kn{color:#f92672}[data-scheme=dark] .chroma .kp{color:#66d9ef}[data-scheme=dark] .chroma .kr{color:#66d9ef}[data-scheme=dark] .chroma .kt{color:#66d9ef}[data-scheme=dark] .chroma .n{color:#f8f8f2}[data-scheme=dark] .chroma .na{color:#a6e22e}[data-scheme=dark] .chroma .nb{color:#f8f8f2}[data-scheme=dark] .chroma .bp{color:#f8f8f2}[data-scheme=dark] .chroma .nc{color:#a6e22e}[data-scheme=dark] .chroma .no{color:#66d9ef}[data-scheme=dark] .chroma .nd{color:#a6e22e}[data-scheme=dark] .chroma .ni{color:#f8f8f2}[data-scheme=dark] .chroma .ne{color:#a6e22e}[data-scheme=dark] .chroma .nf{color:#a6e22e}[data-scheme=dark] .chroma .fm{color:#f8f8f2}[data-scheme=dark] .chroma .nl{color:#f8f8f2}[data-scheme=dark] .chroma .nn{color:#f8f8f2}[data-scheme=dark] .chroma .nx{color:#a6e22e}[data-scheme=dark] .chroma .py{color:#f8f8f2}[data-scheme=dark] .chroma .nt{color:#f92672}[data-scheme=dark] .chroma .nv{color:#f8f8f2}[data-scheme=dark] .chroma .vc{color:#f8f8f2}[data-scheme=dark] .chroma .vg{color:#f8f8f2}[data-scheme=dark] .chroma .vi{color:#f8f8f2}[data-scheme=dark] .chroma .vm{color:#f8f8f2}[data-scheme=dark] .chroma .l{color:#ae81ff}[data-scheme=dark] .chroma .ld{color:#e6db74}[data-scheme=dark] .chroma .s{color:#e6db74}[data-scheme=dark] .chroma .sa{color:#e6db74}[data-scheme=dark] .chroma .sb{color:#e6db74}[data-scheme=dark] .chroma .sc{color:#e6db74}[data-scheme=dark] .chroma .dl{color:#e6db74}[data-scheme=dark] .chroma .sd{color:#e6db74}[data-scheme=dark] .chroma .s2{color:#e6db74}[data-scheme=dark] .chroma .se{color:#ae81ff}[data-scheme=dark] .chroma .sh{color:#e6db74}[data-scheme=dark] .chroma .si{color:#e6db74}[data-scheme=dark] .chroma .sx{color:#e6db74}[data-scheme=dark] .chroma .sr{color:#e6db74}[data-scheme=dark] .chroma .s1{color:#e6db74}[data-scheme=dark] .chroma .ss{color:#e6db74}[data-scheme=dark] .chroma .m{color:#ae81ff}[data-scheme=dark] .chroma .mb{color:#ae81ff}[data-scheme=dark] .chroma .mf{color:#ae81ff}[data-scheme=dark] .chroma .mh{color:#ae81ff}[data-scheme=dark] .chroma .mi{color:#ae81ff}[data-scheme=dark] .chroma .il{color:#ae81ff}[data-scheme=dark] .chroma .mo{color:#ae81ff}[data-scheme=dark] .chroma .o{color:#f92672}[data-scheme=dark] .chroma .ow{color:#f92672}[data-scheme=dark] .chroma .p{color:#f8f8f2}[data-scheme=dark] .chroma .c{color:#75715e}[data-scheme=dark] .chroma .ch{color:#75715e}[data-scheme=dark] .chroma .cm{color:#75715e}[data-scheme=dark] .chroma .c1{color:#75715e}[data-scheme=dark] .chroma .cs{color:#75715e}[data-scheme=dark] .chroma .cp{color:#75715e}[data-scheme=dark] .chroma .cpf{color:#75715e}[data-scheme=dark] .chroma .gd{color:#f92672}[data-scheme=dark] .chroma .ge{font-style:italic}[data-scheme=dark] .chroma .gi{color:#a6e22e}[data-scheme=dark] .chroma .gs{font-weight:700}[data-scheme=dark] .chroma .gu{color:#75715e}:root{--menu-icon-separation:40px;--container-padding:15px;--widget-separation:var(--section-separation)}.container{margin-left:auto;margin-right:auto}.container .left-sidebar{order:-3;max-width:var(--left-sidebar-max-width)}.container .right-sidebar{order:-1;max-width:var(--right-sidebar-max-width)}@media(min-width:1024px){.container .right-sidebar{display:flex}}@media(min-width:768px){.container.extended{max-width:1024px;--left-sidebar-max-width:25%;--right-sidebar-max-width:30%}}@media(min-width:1024px){.container.extended{max-width:1280px;--left-sidebar-max-width:20%;--right-sidebar-max-width:30%}}@media(min-width:1280px){.container.extended{max-width:1536px;--left-sidebar-max-width:15%;--right-sidebar-max-width:25%}}@media(min-width:768px){.container.compact{--left-sidebar-max-width:25%;max-width:768px}}@media(min-width:1024px){.container.compact{max-width:1024px;--left-sidebar-max-width:20%}}@media(min-width:1280px){.container.compact{max-width:1280px}}.flex{display:flex;flex-direction:row}.flex.column{flex-direction:column}.flex.on-phone--column{flex-direction:column}@media(min-width:768px){.flex.on-phone--column{flex-direction:unset}}.flex .full-width{width:100%}main.main{order:-2;min-width:0;max-width:100%;flex-grow:1;display:flex;flex-direction:column;gap:var(--section-separation)}@media(min-width:768px){main.main{padding-top:var(--main-top-padding)}}.main-container{min-height:100vh;align-items:flex-start;padding:0 15px;gap:var(--section-separation);padding-top:var(--main-top-padding)}@media(min-width:768px){.main-container{padding:0 20px}}/*!normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css*/html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}/*!* Hamburgers +* @description Tasty CSS-animated hamburgers +* @author Jonathan Suh @jonsuh +* @site https://jonsuh.com/hamburgers +* @link https://github.com/jonsuh/hamburgers*/.hamburger{padding-top:10px;display:inline-block;cursor:pointer;transition-property:opacity,filter;transition-duration:.15s;transition-timing-function:linear;font:inherit;color:inherit;text-transform:none;background-color:transparent;border:0;margin:0;overflow:visible}.hamburger:hover{opacity:.7}.hamburger.is-active:hover{opacity:.7}.hamburger.is-active .hamburger-inner,.hamburger.is-active .hamburger-inner::before,.hamburger.is-active .hamburger-inner::after{background-color:#000}.hamburger-box{width:30px;height:24px;display:inline-block;position:relative}.hamburger-inner{display:block;top:50%;margin-top:-2px}.hamburger-inner,.hamburger-inner::before,.hamburger-inner::after{width:30px;height:2px;background-color:var(--card-text-color-main);border-radius:4px;position:absolute;transition-property:transform;transition-duration:.15s;transition-timing-function:ease}.hamburger-inner::before,.hamburger-inner::after{content:"";display:block}.hamburger-inner::before{top:-10px}.hamburger-inner::after{bottom:-10px}.hamburger--spin .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin .hamburger-inner::before{transition:top .1s .25s ease-in,opacity .1s ease-in}.hamburger--spin .hamburger-inner::after{transition:bottom .1s .25s ease-in,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin.is-active .hamburger-inner{transform:rotate(225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin.is-active .hamburger-inner::before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s .12s ease-out}.hamburger--spin.is-active .hamburger-inner::after{bottom:0;transform:rotate(-90deg);transition:bottom .1s ease-out,transform .22s .12s cubic-bezier(.215,.61,.355,1)}#toggle-menu{background:0 0;border:none;position:absolute;right:0;top:0;z-index:2;cursor:pointer;outline:none}[dir=rtl] #toggle-menu{left:0;right:auto}@media(min-width:768px){#toggle-menu{display:none}}#toggle-menu.is-active .hamburger-inner,#toggle-menu.is-active .hamburger-inner::before,#toggle-menu.is-active .hamburger-inner::after{background-color:var(--accent-color)}#main-menu{list-style:none;overflow-y:auto;flex-grow:1;font-size:1.4rem;background-color:var(--card-background);box-shadow:var(--shadow-l1);display:none;margin:0 calc(var(--container-padding) * -1);padding:30px}@media(min-width:1280px){#main-menu{padding:15px 0}}#main-menu,#main-menu .menu-bottom-section ol{flex-direction:column;gap:30px}@media(min-width:1280px){#main-menu,#main-menu .menu-bottom-section ol{gap:25px}}#main-menu.show{display:flex}@media(min-width:768px){#main-menu{align-items:flex-end;display:flex;background-color:transparent;padding:0;box-shadow:none;margin:0}}#main-menu li{position:relative;vertical-align:middle;padding:0}@media(min-width:768px){#main-menu li{width:100%}}#main-menu li svg{stroke:currentColor;stroke-width:1.33;width:20px;height:20px}#main-menu li a{height:100%;display:inline-flex;align-items:center;color:var(--body-text-color);gap:var(--menu-icon-separation)}#main-menu li span{flex:1}#main-menu li.current a{color:var(--accent-color);font-weight:700}#main-menu li.menu-bottom-section{margin-top:auto}#main-menu li.menu-bottom-section ol{display:flex;padding-left:0}.menu-social{list-style:none;padding:0;margin:0;display:flex;flex-direction:row;gap:10px}.menu-social svg{width:24px;height:24px;stroke:var(--body-text-color);stroke-width:1.33}.article-list{display:flex;flex-direction:column;gap:var(--section-separation)}.article-list article{display:flex;flex-direction:column;background-color:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--card-border-radius);overflow:hidden;transition:box-shadow .3s ease}.article-list article:hover{box-shadow:var(--shadow-l2)}.article-list article .article-image img{width:100%;height:150px;object-fit:cover}@media(min-width:768px){.article-list article .article-image img{height:200px}}@media(min-width:1280px){.article-list article .article-image img{height:250px}}.article-list article:nth-child(5n+1) .article-category a{background:#8ea885;color:#fff}.article-list article:nth-child(5n+2) .article-category a{background:#df7988;color:#fff}.article-list article:nth-child(5n+3) .article-category a{background:#0177b8;color:#fff}.article-list article:nth-child(5n+4) .article-category a{background:#ffb900;color:#fff}.article-list article:nth-child(5n+5) .article-category a{background:#6b69d6;color:#fff}.article-details{display:flex;flex-direction:column;justify-content:center;padding:var(--card-padding);gap:15px}.article-title{font-family:var(--article-font-family);font-weight:600;margin:0;color:var(--card-text-color-main);font-size:2.2rem}@media(min-width:1280px){.article-title{font-size:2.4rem}}.article-title a{color:var(--card-text-color-main)}.article-title a:hover{color:var(--card-text-color-main)}.article-subtitle{font-weight:400;color:var(--card-text-color-secondary);line-height:1.5;margin:0;font-size:1.75rem}@media(min-width:1280px){.article-subtitle{font-size:2rem}}.article-title-wrapper{display:flex;flex-direction:column;gap:8px}.article-time,.article-translations{display:flex;color:var(--card-text-color-tertiary);gap:15px}.article-time svg,.article-translations svg{vertical-align:middle;width:20px;height:20px;stroke-width:1.33;flex-shrink:0}.article-time time,.article-time a,.article-translations time,.article-translations a{font-size:1.4rem;color:var(--card-text-color-tertiary)}.article-time>div,.article-translations>div{display:inline-flex;align-items:center;gap:15px}.article-time{flex-wrap:wrap}.article-translations>div{flex-wrap:wrap}.article-category,.article-tags{display:flex;gap:10px;flex-wrap:wrap}.article-category a,.article-tags a{color:var(--accent-color-text);background-color:var(--accent-color);padding:8px 16px;border-radius:var(--tag-border-radius);display:inline-block;font-size:1.4rem;transition:background-color .5s ease}.article-category a:hover,.article-tags a:hover{color:var(--accent-color-text);background-color:var(--accent-color-darker)}.article-list--compact{border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);background-color:var(--card-background);--image-size:50px}@media(min-width:768px){.article-list--compact{--image-size:60px}}.article-list--compact article>a{display:flex;align-items:center;padding:var(--small-card-padding);gap:15px}.article-list--compact article:not(:last-of-type){border-bottom:1.5px solid var(--card-separator-color)}.article-list--compact article .article-details{flex-grow:1;padding:0;min-height:var(--image-size);gap:10px}.article-list--compact article .article-title{margin:0;font-size:1.6rem}@media(min-width:768px){.article-list--compact article .article-title{font-size:1.8rem}}.article-list--compact article .article-image img{width:var(--image-size);height:var(--image-size);object-fit:cover}.article-list--compact article .article-time{font-size:1.4rem}.article-list--compact article .article-preview{font-size:1.4rem;color:var(--card-text-color-tertiary);margin-top:10px;line-height:1.5}.article-list--tile article{border-radius:var(--card-border-radius);overflow:hidden;position:relative;height:350px;width:250px;box-shadow:var(--shadow-l1);transition:box-shadow .3s ease;background-color:var(--card-background)}.article-list--tile article:hover{box-shadow:var(--shadow-l2)}.article-list--tile article.has-image .article-details{background-color:rgba(0,0,0,.25)}.article-list--tile article.has-image .article-title{color:#fff}.article-list--tile article .article-image{position:absolute;top:0;left:0;width:100%;height:100%}.article-list--tile article .article-image img{width:100%;height:100%;object-fit:cover}.article-list--tile article .article-details{border-radius:var(--card-border-radius);position:relative;height:100%;width:100%;display:flex;flex-direction:column;justify-content:flex-end;z-index:2;padding:15px}@media(min-width:640px){.article-list--tile article .article-details{padding:20px}}.article-list--tile article .article-title{font-size:2rem;font-weight:500;color:var(--card-text-color-main)}@media(min-width:640px){.article-list--tile article .article-title{font-size:2.2rem}}.widget{display:flex;flex-direction:column}.widget .widget-icon svg{width:32px;height:32px;stroke-width:1.6;color:var(--body-text-color)}.tagCloud .tagCloud-tags{display:flex;flex-wrap:wrap;gap:10px}.tagCloud .tagCloud-tags a{background:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--tag-border-radius);padding:8px 20px;color:var(--card-text-color-main);font-size:1.4rem;transition:box-shadow .3s ease}.tagCloud .tagCloud-tags a:hover{box-shadow:var(--shadow-l2)}.widget.archives .widget-archive--list{border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);background-color:var(--card-background)}.widget.archives .archives-year:not(:last-of-type){border-bottom:1.5px solid var(--card-separator-color)}.widget.archives .archives-year a{font-size:1.4rem;padding:18px 25px;display:flex}.widget.archives .archives-year a span.year{flex:1;color:var(--card-text-color-main);font-weight:700}.widget.archives .archives-year a span.count{color:var(--card-text-color-tertiary)}footer.site-footer{padding:20px 0 var(--section-separation);font-size:1.4rem;line-height:1.75}footer.site-footer:before{content:"";display:block;height:3px;width:50px;background:var(--body-text-color);margin-bottom:20px}footer.site-footer .copyright{color:var(--accent-color);font-weight:700;margin-bottom:5px}footer.site-footer .powerby{color:var(--body-text-color);font-weight:400;font-size:1.2rem}footer.site-footer .powerby a{color:var(--body-text-color)}.pagination{display:flex;background-color:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--card-border-radius);overflow:hidden;flex-wrap:wrap}.pagination .page-link{padding:16px 32px;display:inline-flex;color:var(--card-text-color-secondary)}.pagination .page-link.current{font-weight:700;background-color:var(--card-background-selected);color:var(--card-text-color-main)}@media(min-width:768px){.sidebar.sticky{position:sticky}}.left-sidebar{display:flex;flex-direction:column;flex-shrink:0;align-self:stretch;gap:var(--sidebar-element-separation);max-width:none;width:100%;position:relative;--sidebar-avatar-size:100px;--sidebar-element-separation:20px;--emoji-size:40px;--emoji-font-size:20px}@media(min-width:768px){.left-sidebar{width:auto;padding-top:var(--main-top-padding);padding-bottom:var(--main-top-padding);max-height:100vh}}@media(min-width:1536px){.left-sidebar{--sidebar-avatar-size:120px;--sidebar-element-separation:25px;--emoji-size:40px}}.left-sidebar.sticky{top:0}.left-sidebar.compact{--sidebar-avatar-size:80px;--emoji-size:30px;--emoji-font-size:15px}@media(min-width:1024px){.left-sidebar.compact header{flex-direction:row}}.left-sidebar.compact header .site-meta{gap:5px}.left-sidebar.compact header .site-name{font-size:1.4rem}@media(min-width:1536px){.left-sidebar.compact header .site-name{font-size:1.75rem}}.left-sidebar.compact header .site-description{font-size:1.4rem}.right-sidebar{width:100%;display:none;flex-direction:column;gap:var(--widget-separation)}.right-sidebar.sticky{top:0}@media(min-width:1024px){.right-sidebar{padding-top:var(--main-top-padding);padding-bottom:var(--main-top-padding)}}.sidebar header{z-index:1;transition:box-shadow .5s ease;display:flex;flex-direction:column;gap:var(--sidebar-element-separation)}@media(min-width:768px){.sidebar header{padding:0}}.sidebar header .site-avatar{position:relative;margin:0;width:var(--sidebar-avatar-size);height:var(--sidebar-avatar-size);flex-shrink:0}.sidebar header .site-avatar .site-logo{width:100%;height:100%;border-radius:100%;box-shadow:var(--shadow-l1)}.sidebar header .site-avatar .emoji{position:absolute;width:var(--emoji-size);height:var(--emoji-size);line-height:var(--emoji-size);border-radius:100%;bottom:0;right:0;text-align:center;font-size:var(--emoji-font-size);background-color:var(--card-background);box-shadow:var(--shadow-l2)}.sidebar header .site-meta{display:flex;flex-direction:column;gap:10px;justify-content:center}.sidebar header .site-name{color:var(--accent-color);margin:0;font-size:1.6rem}@media(min-width:1536px){.sidebar header .site-name{font-size:1.8rem}}.sidebar header .site-description{color:var(--body-text-color);font-weight:400;margin:0;font-size:1.4rem}@media(min-width:1536px){.sidebar header .site-description{font-size:1.6rem}}[data-scheme=dark] #dark-mode-toggle{color:var(--accent-color);font-weight:700}[data-scheme=dark] #dark-mode-toggle .icon-tabler-toggle-left{display:none}[data-scheme=dark] #dark-mode-toggle .icon-tabler-toggle-right{display:unset}#dark-mode-toggle{margin-top:auto;color:var(--body-text-color);display:flex;align-items:center;cursor:pointer;gap:var(--menu-icon-separation)}#dark-mode-toggle .icon-tabler-toggle-right{display:none}#i18n-switch{color:var(--body-text-color);display:inline-flex;align-content:center;gap:var(--menu-icon-separation)}#i18n-switch select{border:0;background-color:transparent;color:var(--body-text-color)}#i18n-switch select option{color:var(--card-text-color-main);background-color:var(--card-background)}html{font-size:62.5%;overflow-y:scroll}*{box-sizing:border-box}body{background:var(--body-background);margin:0;font-family:var(--base-font-family);font-size:1.6rem;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{scrollbar-width:auto;scrollbar-color:var(--scrollbar-thumb)transparent}::-webkit-scrollbar{height:auto}::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb)}::-webkit-scrollbar-track{background-color:transparent}.article-page.hide-sidebar-sm .left-sidebar{display:none}@media(min-width:768px){.article-page.hide-sidebar-sm .left-sidebar{display:inherit}}.article-page .main-article{background:var(--card-background);border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);overflow:hidden}.article-page .main-article .article-header .article-image img{height:auto;width:100%;max-height:45vh;object-fit:cover}.article-page .main-article .article-header .article-details{padding:var(--card-padding);padding-bottom:0}.article-page .main-article .article-header .article-subtitle{font-weight:300;color:var(--card-text-color-secondary);line-height:1.3;margin:0;font-size:1.95rem}.article-page .main-article .article-content{margin:var(--card-padding)0;color:var(--card-text-color-main)}.article-page .main-article .article-content .footnotes{font-family:var(--base-font-family)}.article-page .main-article .article-content img{max-width:100%;height:auto}.article-page .main-article .article-footer{margin:var(--card-padding);margin-top:0}.article-page .main-article .article-footer section:not(:first-child){margin-top:var(--card-padding)}.article-page .main-article .article-footer section{color:var(--card-text-color-tertiary);text-transform:uppercase;display:flex;align-items:center;font-size:1.4rem;gap:15px}.article-page .main-article .article-footer section svg{width:20px;height:20px;stroke-width:1.33}.article-page .main-article .article-footer .article-tags{flex-wrap:wrap;text-transform:unset}.article-page .main-article .article-footer .article-copyright a,.article-page .main-article .article-footer .article-lastmod a{color:var(--body-text-color)}.article-page .main-article .article-footer .article-copyright a.link,.article-page .main-article .article-footer .article-lastmod a.link{box-shadow:unset}.widget--toc{background-color:var(--card-background);border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);display:flex;flex-direction:column;color:var(--card-text-color-main);overflow:hidden}.widget--toc ::-webkit-scrollbar-thumb{background-color:var(--card-separator-color)}.widget--toc #TableOfContents{overflow-x:auto;max-height:75vh}.widget--toc #TableOfContents ol,.widget--toc #TableOfContents ul{margin:0;padding:0}.widget--toc #TableOfContents ol{list-style-type:none;counter-reset:item}.widget--toc #TableOfContents ol li a:first-of-type::before{counter-increment:item;content:counters(item,".")". ";font-weight:700;margin-right:5px}.widget--toc #TableOfContents>ul{padding:0 1em}.widget--toc #TableOfContents li{margin:15px 0 15px 25px;padding:5px}.widget--toc #TableOfContents li>ol,.widget--toc #TableOfContents li>ul{margin-top:10px;padding-left:10px;margin-bottom:-5px}.widget--toc #TableOfContents li>ol>li:last-child,.widget--toc #TableOfContents li>ul>li:last-child{margin-bottom:0}.widget--toc #TableOfContents li.active-class>a{border-left:var(--heading-border-size)solid var(--accent-color);font-weight:700}.widget--toc #TableOfContents ul li.active-class>a{display:block}.widget--toc #TableOfContents>ul>li.active-class>a{margin-left:calc(-25px - 1em);padding-left:calc(25px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li.active-class>a{margin-left:calc(-9px - 1em);padding-left:calc(9px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li.active-class>a{margin-left:calc(-60px - 1em);padding-left:calc(60px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li.active-class>a{margin-left:calc(-44px - 1em);padding-left:calc(44px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li>ul>li.active-class>a{margin-left:calc(-95px - 1em);padding-left:calc(95px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li>ol>li.active-class>a{margin-left:calc(-79px - 1em);padding-left:calc(79px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li>ul>li>ul>li.active-class>a{margin-left:calc(-130px - 1em);padding-left:calc(130px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li>ol>li>ol>li.active-class>a{margin-left:calc(-114px - 1em);padding-left:calc(114px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li>ul>li>ul>li>ul>li.active-class>a{margin-left:calc(-165px - 1em);padding-left:calc(165px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li>ol>li>ol>li>ol>li.active-class>a{margin-left:calc(-149px - 1em);padding-left:calc(149px + 1em - var(--heading-border-size));display:block}.related-content{overflow-x:auto;padding-bottom:15px}.related-content>.flex{float:left}.related-content article{margin-right:15px;flex-shrink:0;overflow:hidden;width:250px;height:150px}.related-content article .article-title{font-size:1.4rem;margin:0}.related-content article.has-image .article-details{padding:20px}.article-content{font-family:var(--article-font-family);font-size:var(--article-font-size);padding:0 var(--card-padding);line-height:var(--article-line-height)}.article-content>p{margin:1.5em 0}.article-content h1,.article-content h2,.article-content h3,.article-content h4,.article-content h5,.article-content h6{margin-inline-start:calc((var(--card-padding)) * -1);padding-inline-start:calc(var(--card-padding) - var(--heading-border-size));border-inline-start:var(--heading-border-size)solid var(--accent-color)}.article-content figure{text-align:center}.article-content figure figcaption{font-size:1.4rem;color:var(--card-text-color-secondary)}.article-content blockquote{position:relative;margin:1.5em 0;border-inline-start:var(--blockquote-border-size)solid var(--card-separator-color);padding:15px calc(var(--card-padding) - var(--blockquote-border-size));background-color:var(--blockquote-background-color)}.article-content blockquote .cite{display:block;text-align:right;font-size:.75em}.article-content blockquote .cite a{text-decoration:underline}.article-content hr{width:100px;margin:40px auto;background:var(--card-text-color-tertiary);height:2px;border:0;opacity:.55}.article-content code{color:var(--code-text-color);background-color:var(--code-background-color);padding:2px 4px;border-radius:var(--tag-border-radius);font-family:var(--code-font-family)}.article-content a,.article-content code{word-break:break-word}.article-content .gallery{position:relative;display:flex;flex-direction:row;justify-content:center;margin:1.5em 0;gap:10px}.article-content .gallery figure{margin:0}.article-content pre{overflow-x:auto;display:block;background-color:var(--pre-background-color);color:var(--pre-text-color);font-family:var(--code-font-family);line-height:1.428571429;word-break:break-all;padding:var(--card-padding)}[dir=rtl] .article-content pre{direction:ltr}.article-content pre code{color:unset;border:none;background:0 0;padding:0}.article-content .highlight{background-color:var(--pre-background-color);padding:var(--card-padding);position:relative}.article-content .highlight:hover .copyCodeButton{opacity:1}[dir=rtl] .article-content .highlight{direction:ltr}.article-content .highlight pre{margin:initial;padding:0;margin:0;width:auto}.article-content .copyCodeButton{position:absolute;top:calc(var(--card-padding));right:calc(var(--card-padding));background:var(--card-background);border:none;box-shadow:var(--shadow-l2);border-radius:var(--tag-border-radius);padding:8px 16px;color:var(--card-text-color-main);cursor:pointer;font-size:14px;opacity:0;transition:opacity .3s ease}.article-content .table-wrapper{padding:0 var(--card-padding);overflow-x:auto;display:block}.article-content table{width:100%;border-collapse:collapse;border-spacing:0;margin-bottom:1.5em;font-size:.96em}.article-content th,.article-content td{text-align:left;padding:4px 8px 4px 10px;border:1px solid var(--table-border-color)}.article-content td{vertical-align:top}.article-content tr:nth-child(even){background-color:var(--tr-even-background-color)}.article-content .twitter-tweet{color:var(--card-text-color-main)}.article-content .video-wrapper{position:relative;width:100%;height:0;padding-bottom:56.25%;overflow:hidden}.article-content .video-wrapper>iframe,.article-content .video-wrapper>video{position:absolute;width:100%;height:100%;left:0;top:0;border:0}.article-content .gitlab-embed-snippets{margin:0!important}.article-content .gitlab-embed-snippets .file-holder.snippet-file-content{margin-block-end:0!important;margin-block-start:0!important;margin-left:calc((var(--card-padding)) * -1)!important;margin-right:calc((var(--card-padding)) * -1)!important;padding:0 var(--card-padding)!important}.article-content blockquote,.article-content figure,.article-content .highlight,.article-content pre,.article-content .gallery,.article-content .video-wrapper,.article-content .table-wrapper,.article-content .s_video_simple{margin-left:calc((var(--card-padding)) * -1);margin-right:calc((var(--card-padding)) * -1);width:calc(100% + var(--card-padding) * 2)}.article-content .katex-display>.katex{overflow-x:auto;overflow-y:hidden}.article-content kbd{border:1px solid var(--kbd-border-color);font-weight:700;font-size:.9em;line-height:1;padding:2px 4px;border-radius:4px;display:inline-block}.section-card{border-radius:var(--card-border-radius);background-color:var(--card-background);padding:var(--small-card-padding);box-shadow:var(--shadow-l1);display:flex;align-items:center;gap:20px;--separation:15px}.section-card .section-term{font-size:2.2rem;margin:0;color:var(--card-text-color-main)}.section-card .section-description{font-weight:400;color:var(--card-text-color-secondary);font-size:1.6rem;margin:0}.section-card .section-details{flex-grow:1;display:flex;flex-direction:column;gap:8px}.section-card .section-image img{width:60px;height:60px}.section-card .section-count{color:var(--card-text-color-tertiary);font-size:1.4rem;margin:0;font-weight:700;text-transform:uppercase}.subsection-list{overflow-x:auto}.subsection-list .article-list--tile{display:flex;padding-bottom:15px}.subsection-list .article-list--tile article{width:250px;height:150px;margin-right:20px;flex-shrink:0}.subsection-list .article-list--tile article .article-title{margin:0;font-size:1.8rem}.subsection-list .article-list--tile article .article-details{padding:20px}.not-found-card{background-color:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--card-border-radius);padding:var(--card-padding)}.search-form{position:relative;--button-size:80px}.search-form.widget{--button-size:60px}.search-form.widget label{font-size:1.3rem;top:10px}.search-form.widget input{font-size:1.5rem;padding:30px 20px 15px}.search-form p{position:relative;margin:0}.search-form label{position:absolute;top:15px;inset-inline-start:20px;font-size:1.4rem;color:var(--card-text-color-tertiary)}.search-form input{padding:40px 20px 20px;border-radius:var(--card-border-radius);background-color:var(--card-background);box-shadow:var(--shadow-l1);color:var(--card-text-color-main);width:100%;border:0;-webkit-appearance:none;transition:box-shadow .3s ease;font-size:1.8rem}.search-form input:focus{outline:0;box-shadow:var(--shadow-l2)}.search-form button{position:absolute;inset-inline-end:0;top:0;height:100%;width:var(--button-size);cursor:pointer;background-color:transparent;border:0;padding:0 10px}.search-form button:focus{outline:0}.search-form button:focus svg{stroke-width:2;color:var(--accent-color)}.search-form button svg{color:var(--card-text-color-secondary);stroke-width:1.33;transition:all .3s ease;width:20px;height:20px}a{text-decoration:none;color:var(--accent-color)}a:hover{color:var(--accent-color-darker)}a.link{box-shadow:0 -2px rgba(var(--link-background-color),var(--link-background-opacity))inset;transition:all .3s ease}a.link:hover{box-shadow:0 calc(-1rem * var(--article-line-height))rgba(var(--link-background-color),var(--link-background-opacity-hover))inset}.section-title{text-transform:uppercase;margin-top:0;margin-bottom:10px;display:block;font-size:1.6rem;font-weight:700;color:var(--body-text-color)}.section-title a{color:var(--body-text-color)}:root{--main-top-padding:30px;--card-border-radius:25px;--tag-border-radius:8px;--section-separation:40px;--code-background-color:#f2f1b0e3;--code-text-color:#5c3400e0;--article-line-height:1.5;--pre-background-color:#f0f0f0;--card-padding:10px}:root[data-scheme=dark]{--code-background-color:#00000075;--code-text-color:#e9d88c}a{word-break:break-all}code{word-break:break-all}.article-page .main-article .article-content img{max-width:96%!important;height:auto!important;border-radius:8px}.article-content blockquote{border-left:2px solid #b6820096!important;background:#ffdd1fb9}[data-scheme=dark] blockquote{border-left:5px solid #c56600de!important;background:#3b2d0127}.highlight{max-width:102%!important;background-color:var(--pre-background-color);padding:var(--card-padding);position:relative;border-radius:20px;margin-left:-7px!important;margin-right:-12px;box-shadow:var(--shadow-l1)!important}.highlight:hover .copyCodeButton{opacity:1}[dir=rtl] .highlight{direction:ltr}.highlight pre{margin:initial;padding:0;margin:0;width:auto}[data-scheme=light] .article-content .highlight{background-color:rgba(255,225,107,.635)}[data-scheme=light] .chroma{color:#38230dd6;background-color:rgba(255,247,209,.244)}[data-scheme=dark] .article-content .highlight{background-color:rgba(33,21,3,.741)}[data-scheme=dark] .chroma{color:#f4f0c0;background-color:rgba(38,20,3,.752)}.article-content .highlight:before{content:"";display:block;background:url(../img/code-header.svg);height:18px;width:100%;background-size:57px;background-repeat:no-repeat;margin-bottom:5px;background-position:-1px 2px}[data-scheme=dark] ::selection{color:#fff;background:#444}[data-scheme=dark] ::-moz-selection{color:#fff;background:#444}[data-scheme=light] ::selection{color:#fff;background:#444}[data-scheme=light] ::-moz-selection{color:#fff;background:#444}a{text-decoration:none;color:var(--accent-color)}a:hover{color:var(--accent-color-darker)}a.link{color:#994311;font-weight:500;padding:0 2px;text-decoration:none;cursor:pointer}a.link:hover{text-decoration:none}[data-scheme=dark] a{text-decoration:none}[data-scheme=dark] a:hover{color:var(--accent-color-darker)}[data-scheme=dark] a.link{color:#fff193e0;font-weight:500;padding:0 2px;text-decoration:none;cursor:pointer}[data-scheme=dark] a.link:hover{text-decoration:none}.article-list article .article-image img{width:100%;height:195px;object-fit:cover}@media(min-width:768px){.article-list article .article-image img{height:300px}}@media(min-width:1280px){.article-list article .article-image img{height:355px}}.main-container{min-height:100vh;align-items:flex-start;padding:10px;gap:var(--section-separation);padding-top:var(--main-top-padding)}@media(min-width:768px){.main-container{padding:0 35px}}.container{margin-left:auto;margin-right:auto}.container .left-sidebar{order:-3;max-width:var(--left-sidebar-max-width)}.container .right-sidebar{order:-1;max-width:var(--right-sidebar-max-width)}@media(min-width:1024px){.container .right-sidebar{display:flex;flex-direction:column}}@media(min-width:768px){.container.extended{max-width:1024px;--left-sidebar-max-width:20%;--right-sidebar-max-width:20%}}@media(min-width:1024px){.container.extended{max-width:1280px;--left-sidebar-max-width:21%;--right-sidebar-max-width:%}}@media(min-width:1280px){.container.extended{max-width:1536px;--left-sidebar-max-width:21%;--right-sidebar-max-width:18%}}@media(min-width:768px){.container.compact{--left-sidebar-max-width:25%;max-width:768px}}@media(min-width:1024px){.container.compact{max-width:1024px;--left-sidebar-max-width:20%}}@media(min-width:1280px){.container.compact{max-width:1280px}}.article-list--compact article .article-image img{width:var(--image-size);height:var(--image-size);object-fit:cover;border-radius:17%}.menu{padding-left:0;list-style:none;line-height:1.2;flex-direction:column;overflow-x:hidden;overflow-y:scroll;flex-grow:1;background-color:var(--card-background);box-shadow:var(--shadow-l2);display:none;margin:0;border-radius:10px;padding:30px}@media(min-width:1280px){.menu{padding:15px 0}}.menu,.menu .menu-bottom-section{gap:30px}@media(min-width:1280px){.menu,.menu .menu-bottom-section{gap:25px}}.menu.show{display:flex}@media(min-width:768px){.menu{align-items:flex-end;display:flex;background-color:transparent;padding:0;box-shadow:none;margin:0}}.menu li{position:relative;vertical-align:middle;padding:0}@media(min-width:768px){.menu li{width:100%}}.menu li svg{stroke-width:1.53;width:20px;height:20px}.menu li a{height:100%;display:inline-flex;align-items:center;color:var(--body-text-color);gap:var(--menu-icon-separation)}.menu li span{flex:1}.menu li.current a{color:var(--accent-color);font-weight:700}.menu::-webkit-scrollbar{display:none}html ::-webkit-scrollbar{width:20px}html ::-webkit-scrollbar-track{background-color:transparent}html ::-webkit-scrollbar-thumb{background-color:#d6dee1;border-radius:20px;border:6px solid transparent;background-clip:content-box}html ::-webkit-scrollbar-thumb:hover{background-color:#a8bbbf}@media(min-width:1024px){.article-list--compact{display:grid;grid-template-columns:1fr 1fr;background:0 0;box-shadow:none;gap:1rem}.article-list--compact article{background:var(--card-background);border:none;box-shadow:var(--shadow-l2);margin-bottom:8px;border-radius:16px}}@media(min-width:1024px){.article-list--compact.links{display:grid;grid-template-columns:1fr 1fr 1fr;background:0 0;box-shadow:none;gap:1rem}.article-list--compact.links article{background:var(--card-background);border:none;box-shadow:var(--shadow-l2);margin-bottom:8px;border-radius:var(--card-border-radius)}.article-list--compact.links article:nth-child(odd){margin-right:8px}}.welcome{color:var(--card-text-color-main);background:var(--card-background);box-shadow:var(--shadow-l2);border-radius:30px;display:inline-block}.shake{display:inline-block;animation:shake 1s;animation-duration:1s;animation-timing-function:ease;animation-delay:0s;animation-iteration-count:1;animation-direction:normal;animation-fill-mode:none;animation-play-state:running;animation-name:shake;animation-timeline:auto;animation-range-start:normal;animation-range-end:normal;animation-delay:2s}@keyframes shake{0%{transform:rotate(0)}25%{transform:rotate(45deg)scale(1.2)}50%{transform:rotate(0)scale(1.2)}75%{transform:rotate(45deg)scale(1.2)}100%{transform:rotate(0)}}.jump-text1{display:inline-block;animation:jump .5s 1}.jump-text2{display:inline-block;animation:jump .5s 1;animation-delay:.1s}.jump-text3{display:inline-block;animation:jump .5s 1;animation-delay:.2s}.jump-text4{display:inline-block;animation:jump .5s 1;animation-delay:.3s}.jump-text5{display:inline-block;animation:jump .5s 1;animation-delay:.4s}.jump-text6{display:inline-block;animation:jump .5s 1;animation-delay:.5s}.jump-text7{display:inline-block;animation:jump .5s 1;animation-delay:.6s}.jump-text8{display:inline-block;animation:jump .5s 1;animation-delay:.7s}.jump-text9{display:inline-block;animation:jump .5s 1;animation-delay:.9s}@keyframes jump{0%{transform:translateY(0)}50%{transform:translateY(-20px)}100%{transform:translateY(0)}}.back-home{background:var(--card-background);border-radius:var(--tag-border-radius);color:var(--card-text-color-tertiary);margin-right:.1rem;margin-top:24px;display:inline-flex;align-items:center;font-size:1.4rem;text-transform:uppercase;padding:10px 20px 10px 15px;transition:box-shadow .3s ease;box-shadow:var(--shadow-l3)}.back-home:hover{box-shadow:var(--shadow-l2)}.back-home svg{margin-right:5px;width:20px;height:20px}.back-home span{font-weight:500;white-space:nowrap}.main-container .right-sidebar{order:2;max-width:var(--right-sidebar-max-width)}@media(min-width:1024px){.main-container .right-sidebar{display:flex}}main.main{order:1;min-width:0;max-width:100%;flex-grow:1;display:flex;flex-direction:column;gap:var(--section-separation)}@media(min-width:768px){main.main{padding-top:var(--main-top-padding)}} \ No newline at end of file diff --git a/scss/style.min.e8603dcfdd23f4acfa64b58568ed8f4e5704344676ef05a72e81c2534375afec.css b/scss/style.min.e8603dcfdd23f4acfa64b58568ed8f4e5704344676ef05a72e81c2534375afec.css new file mode 100644 index 00000000..1f686ae5 --- /dev/null +++ b/scss/style.min.e8603dcfdd23f4acfa64b58568ed8f4e5704344676ef05a72e81c2534375afec.css @@ -0,0 +1,10 @@ +@charset "UTF-8";/*!* Hugo Theme Stack +* +* @author: Jimmy Cai +* @website: https://jimmycai.com +* @link: https://github.com/CaiJimmy/hugo-theme-stack*/:root{--main-top-padding:35px;--body-background:#f5f5fa;--accent-color:#34495e;--accent-color-darker:#2c3e50;--accent-color-text:#fff;--body-text-color:#707070;--tag-border-radius:4px;--section-separation:40px;--scrollbar-thumb:hsl(0, 0%, 85%);--scrollbar-track:var(--body-background)}@media(min-width:1280px){:root{--main-top-padding:50px}}:root[data-scheme=dark]{--body-background:#303030;--accent-color:#ecf0f1;--accent-color-darker:#bdc3c7;--accent-color-text:#000;--body-text-color:rgba(255, 255, 255, 0.7);--scrollbar-thumb:hsl(0, 0%, 40%);--scrollbar-track:var(--body-background)}:root{--sys-font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", "Droid Sans", "Helvetica Neue";--zh-font-family:"PingFang SC", "Hiragino Sans GB", "Droid Sans Fallback", "Microsoft YaHei";--base-font-family:"Lato", var(--sys-font-family), var(--zh-font-family), sans-serif;--code-font-family:Menlo, Monaco, Consolas, "Courier New", var(--zh-font-family), monospace}:root{--card-background:#fff;--card-background-selected:#eaeaea;--card-text-color-main:#000;--card-text-color-secondary:#747474;--card-text-color-tertiary:#767676;--card-separator-color:rgba(218, 218, 218, 0.5);--card-border-radius:10px;--card-padding:20px;--small-card-padding:25px 20px}@media(min-width:768px){:root{--card-padding:25px}}@media(min-width:1280px){:root{--card-padding:30px}}@media(min-width:768px){:root{--small-card-padding:25px}}:root[data-scheme=dark]{--card-background:#424242;--card-background-selected:rgba(255, 255, 255, 0.16);--card-text-color-main:rgba(255, 255, 255, 0.9);--card-text-color-secondary:rgba(255, 255, 255, 0.7);--card-text-color-tertiary:rgba(255, 255, 255, 0.5);--card-separator-color:rgba(255, 255, 255, 0.12)}:root{--article-font-family:var(--base-font-family);--article-font-size:1.6rem;--article-line-height:1.85}@media(min-width:768px){:root{--article-font-size:1.7rem}}:root{--blockquote-border-size:4px;--blockquote-background-color:rgb(248 248 248);--heading-border-size:4px;--link-background-color:189, 195, 199;--link-background-opacity:0.5;--link-background-opacity-hover:0.7;--pre-background-color:#272822;--pre-text-color:#f8f8f2;--code-background-color:rgba(0, 0, 0, 0.12);--code-text-color:#808080;--table-border-color:#dadada;--tr-even-background-color:#efefee;--kbd-border-color:#dadada}:root[data-scheme=dark]{--code-background-color:#272822;--code-text-color:rgba(255, 255, 255, 0.9);--table-border-color:#717171;--tr-even-background-color:#545454;--blockquote-background-color:rgb(75 75 75)}:root{--shadow-l1:0px 4px 8px rgba(0, 0, 0, 0.04), 0px 0px 2px rgba(0, 0, 0, 0.06), 0px 0px 1px rgba(0, 0, 0, 0.04);--shadow-l2:0px 10px 20px rgba(0, 0, 0, 0.04), 0px 2px 6px rgba(0, 0, 0, 0.04), 0px 0px 1px rgba(0, 0, 0, 0.04);--shadow-l3:0px 10px 20px rgba(0, 0, 0, 0.04), 0px 2px 6px rgba(0, 0, 0, 0.04), 0px 0px 1px rgba(0, 0, 0, 0.04);--shadow-l4:0px 24px 32px rgba(0, 0, 0, 0.04), 0px 16px 24px rgba(0, 0, 0, 0.04), 0px 4px 8px rgba(0, 0, 0, 0.04), + 0px 0px 1px rgba(0, 0, 0, 0.04)}[data-scheme=light]{--pre-text-color:#272822;--pre-background-color:#fafafa}[data-scheme=light] .chroma{color:#272822;background-color:#fafafa}[data-scheme=light] .chroma .err{color:#960050}[data-scheme=light] .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}[data-scheme=light] .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0;width:100%;display:block}[data-scheme=light] .chroma .lntable>tbody{display:block;width:100%}[data-scheme=light] .chroma .lntable>tbody>tr{display:flex;width:100%}[data-scheme=light] .chroma .lntable>tbody>tr>td:last-child{overflow-x:auto}[data-scheme=light] .chroma .hl{display:block;width:100%;background-color:#ffc}[data-scheme=light] .chroma .lnt{margin-right:.4em;padding:0 .4em;color:#7f7f7f;display:block}[data-scheme=light] .chroma .ln{margin-right:.4em;padding:0 .4em;color:#7f7f7f}[data-scheme=light] .chroma .k{color:#00a8c8}[data-scheme=light] .chroma .kc{color:#00a8c8}[data-scheme=light] .chroma .kd{color:#00a8c8}[data-scheme=light] .chroma .kn{color:#f92672}[data-scheme=light] .chroma .kp{color:#00a8c8}[data-scheme=light] .chroma .kr{color:#00a8c8}[data-scheme=light] .chroma .kt{color:#00a8c8}[data-scheme=light] .chroma .n{color:#111}[data-scheme=light] .chroma .na{color:#75af00}[data-scheme=light] .chroma .nb{color:#111}[data-scheme=light] .chroma .bp{color:#111}[data-scheme=light] .chroma .nc{color:#75af00}[data-scheme=light] .chroma .no{color:#00a8c8}[data-scheme=light] .chroma .nd{color:#75af00}[data-scheme=light] .chroma .ni{color:#111}[data-scheme=light] .chroma .ne{color:#75af00}[data-scheme=light] .chroma .nf{color:#75af00}[data-scheme=light] .chroma .fm{color:#111}[data-scheme=light] .chroma .nl{color:#111}[data-scheme=light] .chroma .nn{color:#111}[data-scheme=light] .chroma .nx{color:#75af00}[data-scheme=light] .chroma .py{color:#111}[data-scheme=light] .chroma .nt{color:#f92672}[data-scheme=light] .chroma .nv{color:#111}[data-scheme=light] .chroma .vc{color:#111}[data-scheme=light] .chroma .vg{color:#111}[data-scheme=light] .chroma .vi{color:#111}[data-scheme=light] .chroma .vm{color:#111}[data-scheme=light] .chroma .l{color:#ae81ff}[data-scheme=light] .chroma .ld{color:#d88200}[data-scheme=light] .chroma .s{color:#d88200}[data-scheme=light] .chroma .sa{color:#d88200}[data-scheme=light] .chroma .sb{color:#d88200}[data-scheme=light] .chroma .sc{color:#d88200}[data-scheme=light] .chroma .dl{color:#d88200}[data-scheme=light] .chroma .sd{color:#d88200}[data-scheme=light] .chroma .s2{color:#d88200}[data-scheme=light] .chroma .se{color:#ae81ff}[data-scheme=light] .chroma .sh{color:#d88200}[data-scheme=light] .chroma .si{color:#d88200}[data-scheme=light] .chroma .sx{color:#d88200}[data-scheme=light] .chroma .sr{color:#d88200}[data-scheme=light] .chroma .s1{color:#d88200}[data-scheme=light] .chroma .ss{color:#d88200}[data-scheme=light] .chroma .m{color:#ae81ff}[data-scheme=light] .chroma .mb{color:#ae81ff}[data-scheme=light] .chroma .mf{color:#ae81ff}[data-scheme=light] .chroma .mh{color:#ae81ff}[data-scheme=light] .chroma .mi{color:#ae81ff}[data-scheme=light] .chroma .il{color:#ae81ff}[data-scheme=light] .chroma .mo{color:#ae81ff}[data-scheme=light] .chroma .o{color:#f92672}[data-scheme=light] .chroma .ow{color:#f92672}[data-scheme=light] .chroma .p{color:#111}[data-scheme=light] .chroma .c{color:#75715e}[data-scheme=light] .chroma .ch{color:#75715e}[data-scheme=light] .chroma .cm{color:#75715e}[data-scheme=light] .chroma .c1{color:#75715e}[data-scheme=light] .chroma .cs{color:#75715e}[data-scheme=light] .chroma .cp{color:#75715e}[data-scheme=light] .chroma .cpf{color:#75715e}[data-scheme=light] .chroma .gd{color:#f92672}[data-scheme=light] .chroma .ge{font-style:italic}[data-scheme=light] .chroma .gi{color:#75af00}[data-scheme=light] .chroma .gs{font-weight:700}[data-scheme=light] .chroma .gu{color:#75715e}[data-scheme=dark]{--pre-text-color:#f8f8f2;--pre-background-color:#272822}[data-scheme=dark] .chroma{color:#f8f8f2;background-color:#272822}[data-scheme=dark] .chroma .err{color:#bb0064}[data-scheme=dark] .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}[data-scheme=dark] .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0;width:100%;display:block}[data-scheme=dark] .chroma .lntable>tbody{display:block;width:100%}[data-scheme=dark] .chroma .lntable>tbody>tr{display:flex;width:100%}[data-scheme=dark] .chroma .lntable>tbody>tr>td:last-child{overflow-x:auto}[data-scheme=dark] .chroma .hl{display:block;width:100%;background-color:#ffc}[data-scheme=dark] .chroma .lnt{margin-right:.4em;padding:0 .4em;color:#7f7f7f;display:block}[data-scheme=dark] .chroma .ln{margin-right:.4em;padding:0 .4em;color:#7f7f7f}[data-scheme=dark] .chroma .k{color:#66d9ef}[data-scheme=dark] .chroma .kc{color:#66d9ef}[data-scheme=dark] .chroma .kd{color:#66d9ef}[data-scheme=dark] .chroma .kn{color:#f92672}[data-scheme=dark] .chroma .kp{color:#66d9ef}[data-scheme=dark] .chroma .kr{color:#66d9ef}[data-scheme=dark] .chroma .kt{color:#66d9ef}[data-scheme=dark] .chroma .n{color:#f8f8f2}[data-scheme=dark] .chroma .na{color:#a6e22e}[data-scheme=dark] .chroma .nb{color:#f8f8f2}[data-scheme=dark] .chroma .bp{color:#f8f8f2}[data-scheme=dark] .chroma .nc{color:#a6e22e}[data-scheme=dark] .chroma .no{color:#66d9ef}[data-scheme=dark] .chroma .nd{color:#a6e22e}[data-scheme=dark] .chroma .ni{color:#f8f8f2}[data-scheme=dark] .chroma .ne{color:#a6e22e}[data-scheme=dark] .chroma .nf{color:#a6e22e}[data-scheme=dark] .chroma .fm{color:#f8f8f2}[data-scheme=dark] .chroma .nl{color:#f8f8f2}[data-scheme=dark] .chroma .nn{color:#f8f8f2}[data-scheme=dark] .chroma .nx{color:#a6e22e}[data-scheme=dark] .chroma .py{color:#f8f8f2}[data-scheme=dark] .chroma .nt{color:#f92672}[data-scheme=dark] .chroma .nv{color:#f8f8f2}[data-scheme=dark] .chroma .vc{color:#f8f8f2}[data-scheme=dark] .chroma .vg{color:#f8f8f2}[data-scheme=dark] .chroma .vi{color:#f8f8f2}[data-scheme=dark] .chroma .vm{color:#f8f8f2}[data-scheme=dark] .chroma .l{color:#ae81ff}[data-scheme=dark] .chroma .ld{color:#e6db74}[data-scheme=dark] .chroma .s{color:#e6db74}[data-scheme=dark] .chroma .sa{color:#e6db74}[data-scheme=dark] .chroma .sb{color:#e6db74}[data-scheme=dark] .chroma .sc{color:#e6db74}[data-scheme=dark] .chroma .dl{color:#e6db74}[data-scheme=dark] .chroma .sd{color:#e6db74}[data-scheme=dark] .chroma .s2{color:#e6db74}[data-scheme=dark] .chroma .se{color:#ae81ff}[data-scheme=dark] .chroma .sh{color:#e6db74}[data-scheme=dark] .chroma .si{color:#e6db74}[data-scheme=dark] .chroma .sx{color:#e6db74}[data-scheme=dark] .chroma .sr{color:#e6db74}[data-scheme=dark] .chroma .s1{color:#e6db74}[data-scheme=dark] .chroma .ss{color:#e6db74}[data-scheme=dark] .chroma .m{color:#ae81ff}[data-scheme=dark] .chroma .mb{color:#ae81ff}[data-scheme=dark] .chroma .mf{color:#ae81ff}[data-scheme=dark] .chroma .mh{color:#ae81ff}[data-scheme=dark] .chroma .mi{color:#ae81ff}[data-scheme=dark] .chroma .il{color:#ae81ff}[data-scheme=dark] .chroma .mo{color:#ae81ff}[data-scheme=dark] .chroma .o{color:#f92672}[data-scheme=dark] .chroma .ow{color:#f92672}[data-scheme=dark] .chroma .p{color:#f8f8f2}[data-scheme=dark] .chroma .c{color:#75715e}[data-scheme=dark] .chroma .ch{color:#75715e}[data-scheme=dark] .chroma .cm{color:#75715e}[data-scheme=dark] .chroma .c1{color:#75715e}[data-scheme=dark] .chroma .cs{color:#75715e}[data-scheme=dark] .chroma .cp{color:#75715e}[data-scheme=dark] .chroma .cpf{color:#75715e}[data-scheme=dark] .chroma .gd{color:#f92672}[data-scheme=dark] .chroma .ge{font-style:italic}[data-scheme=dark] .chroma .gi{color:#a6e22e}[data-scheme=dark] .chroma .gs{font-weight:700}[data-scheme=dark] .chroma .gu{color:#75715e}:root{--menu-icon-separation:40px;--container-padding:15px;--widget-separation:var(--section-separation)}.container{margin-left:auto;margin-right:auto}.container .left-sidebar{order:-3;max-width:var(--left-sidebar-max-width)}.container .right-sidebar{order:-1;max-width:var(--right-sidebar-max-width)}@media(min-width:1024px){.container .right-sidebar{display:flex}}@media(min-width:768px){.container.extended{max-width:1024px;--left-sidebar-max-width:25%;--right-sidebar-max-width:30%}}@media(min-width:1024px){.container.extended{max-width:1280px;--left-sidebar-max-width:20%;--right-sidebar-max-width:30%}}@media(min-width:1280px){.container.extended{max-width:1536px;--left-sidebar-max-width:15%;--right-sidebar-max-width:25%}}@media(min-width:768px){.container.compact{--left-sidebar-max-width:25%;max-width:768px}}@media(min-width:1024px){.container.compact{max-width:1024px;--left-sidebar-max-width:20%}}@media(min-width:1280px){.container.compact{max-width:1280px}}.flex{display:flex;flex-direction:row}.flex.column{flex-direction:column}.flex.on-phone--column{flex-direction:column}@media(min-width:768px){.flex.on-phone--column{flex-direction:unset}}.flex .full-width{width:100%}main.main{order:-2;min-width:0;max-width:100%;flex-grow:1;display:flex;flex-direction:column;gap:var(--section-separation)}@media(min-width:768px){main.main{padding-top:var(--main-top-padding)}}.main-container{min-height:100vh;align-items:flex-start;padding:0 15px;gap:var(--section-separation);padding-top:var(--main-top-padding)}@media(min-width:768px){.main-container{padding:0 20px}}/*!normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css*/html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}/*!* Hamburgers +* @description Tasty CSS-animated hamburgers +* @author Jonathan Suh @jonsuh +* @site https://jonsuh.com/hamburgers +* @link https://github.com/jonsuh/hamburgers*/.hamburger{padding-top:10px;display:inline-block;cursor:pointer;transition-property:opacity,filter;transition-duration:.15s;transition-timing-function:linear;font:inherit;color:inherit;text-transform:none;background-color:transparent;border:0;margin:0;overflow:visible}.hamburger:hover{opacity:.7}.hamburger.is-active:hover{opacity:.7}.hamburger.is-active .hamburger-inner,.hamburger.is-active .hamburger-inner::before,.hamburger.is-active .hamburger-inner::after{background-color:#000}.hamburger-box{width:30px;height:24px;display:inline-block;position:relative}.hamburger-inner{display:block;top:50%;margin-top:-2px}.hamburger-inner,.hamburger-inner::before,.hamburger-inner::after{width:30px;height:2px;background-color:var(--card-text-color-main);border-radius:4px;position:absolute;transition-property:transform;transition-duration:.15s;transition-timing-function:ease}.hamburger-inner::before,.hamburger-inner::after{content:"";display:block}.hamburger-inner::before{top:-10px}.hamburger-inner::after{bottom:-10px}.hamburger--spin .hamburger-inner{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin .hamburger-inner::before{transition:top .1s .25s ease-in,opacity .1s ease-in}.hamburger--spin .hamburger-inner::after{transition:bottom .1s .25s ease-in,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin.is-active .hamburger-inner{transform:rotate(225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin.is-active .hamburger-inner::before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s .12s ease-out}.hamburger--spin.is-active .hamburger-inner::after{bottom:0;transform:rotate(-90deg);transition:bottom .1s ease-out,transform .22s .12s cubic-bezier(.215,.61,.355,1)}#toggle-menu{background:0 0;border:none;position:absolute;right:0;top:0;z-index:2;cursor:pointer;outline:none}[dir=rtl] #toggle-menu{left:0;right:auto}@media(min-width:768px){#toggle-menu{display:none}}#toggle-menu.is-active .hamburger-inner,#toggle-menu.is-active .hamburger-inner::before,#toggle-menu.is-active .hamburger-inner::after{background-color:var(--accent-color)}#main-menu{list-style:none;overflow-y:auto;flex-grow:1;font-size:1.4rem;background-color:var(--card-background);box-shadow:var(--shadow-l1);display:none;margin:0 calc(var(--container-padding) * -1);padding:30px}@media(min-width:1280px){#main-menu{padding:15px 0}}#main-menu,#main-menu .menu-bottom-section ol{flex-direction:column;gap:30px}@media(min-width:1280px){#main-menu,#main-menu .menu-bottom-section ol{gap:25px}}#main-menu.show{display:flex}@media(min-width:768px){#main-menu{align-items:flex-end;display:flex;background-color:transparent;padding:0;box-shadow:none;margin:0}}#main-menu li{position:relative;vertical-align:middle;padding:0}@media(min-width:768px){#main-menu li{width:100%}}#main-menu li svg{stroke:currentColor;stroke-width:1.33;width:20px;height:20px}#main-menu li a{height:100%;display:inline-flex;align-items:center;color:var(--body-text-color);gap:var(--menu-icon-separation)}#main-menu li span{flex:1}#main-menu li.current a{color:var(--accent-color);font-weight:700}#main-menu li.menu-bottom-section{margin-top:auto}#main-menu li.menu-bottom-section ol{display:flex;padding-left:0}.menu-social{list-style:none;padding:0;margin:0;display:flex;flex-direction:row;gap:10px}.menu-social svg{width:24px;height:24px;stroke:var(--body-text-color);stroke-width:1.33}.article-list{display:flex;flex-direction:column;gap:var(--section-separation)}.article-list article{display:flex;flex-direction:column;background-color:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--card-border-radius);overflow:hidden;transition:box-shadow .3s ease}.article-list article:hover{box-shadow:var(--shadow-l2)}.article-list article .article-image img{width:100%;height:150px;object-fit:cover}@media(min-width:768px){.article-list article .article-image img{height:200px}}@media(min-width:1280px){.article-list article .article-image img{height:250px}}.article-list article:nth-child(5n+1) .article-category a{background:#8ea885;color:#fff}.article-list article:nth-child(5n+2) .article-category a{background:#df7988;color:#fff}.article-list article:nth-child(5n+3) .article-category a{background:#0177b8;color:#fff}.article-list article:nth-child(5n+4) .article-category a{background:#ffb900;color:#fff}.article-list article:nth-child(5n+5) .article-category a{background:#6b69d6;color:#fff}.article-details{display:flex;flex-direction:column;justify-content:center;padding:var(--card-padding);gap:15px}.article-title{font-family:var(--article-font-family);font-weight:600;margin:0;color:var(--card-text-color-main);font-size:2.2rem}@media(min-width:1280px){.article-title{font-size:2.4rem}}.article-title a{color:var(--card-text-color-main)}.article-title a:hover{color:var(--card-text-color-main)}.article-subtitle{font-weight:400;color:var(--card-text-color-secondary);line-height:1.5;margin:0;font-size:1.75rem}@media(min-width:1280px){.article-subtitle{font-size:2rem}}.article-title-wrapper{display:flex;flex-direction:column;gap:8px}.article-time,.article-translations{display:flex;color:var(--card-text-color-tertiary);gap:15px}.article-time svg,.article-translations svg{vertical-align:middle;width:20px;height:20px;stroke-width:1.33;flex-shrink:0}.article-time time,.article-time a,.article-translations time,.article-translations a{font-size:1.4rem;color:var(--card-text-color-tertiary)}.article-time>div,.article-translations>div{display:inline-flex;align-items:center;gap:15px}.article-time{flex-wrap:wrap}.article-translations>div{flex-wrap:wrap}.article-category,.article-tags{display:flex;gap:10px;flex-wrap:wrap}.article-category a,.article-tags a{color:var(--accent-color-text);background-color:var(--accent-color);padding:8px 16px;border-radius:var(--tag-border-radius);display:inline-block;font-size:1.4rem;transition:background-color .5s ease}.article-category a:hover,.article-tags a:hover{color:var(--accent-color-text);background-color:var(--accent-color-darker)}.article-list--compact{border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);background-color:var(--card-background);--image-size:50px}@media(min-width:768px){.article-list--compact{--image-size:60px}}.article-list--compact article>a{display:flex;align-items:center;padding:var(--small-card-padding);gap:15px}.article-list--compact article:not(:last-of-type){border-bottom:1.5px solid var(--card-separator-color)}.article-list--compact article .article-details{flex-grow:1;padding:0;min-height:var(--image-size);gap:10px}.article-list--compact article .article-title{margin:0;font-size:1.6rem}@media(min-width:768px){.article-list--compact article .article-title{font-size:1.8rem}}.article-list--compact article .article-image img{width:var(--image-size);height:var(--image-size);object-fit:cover}.article-list--compact article .article-time{font-size:1.4rem}.article-list--compact article .article-preview{font-size:1.4rem;color:var(--card-text-color-tertiary);margin-top:10px;line-height:1.5}.article-list--tile article{border-radius:var(--card-border-radius);overflow:hidden;position:relative;height:350px;width:250px;box-shadow:var(--shadow-l1);transition:box-shadow .3s ease;background-color:var(--card-background)}.article-list--tile article:hover{box-shadow:var(--shadow-l2)}.article-list--tile article.has-image .article-details{background-color:rgba(0,0,0,.25)}.article-list--tile article.has-image .article-title{color:#fff}.article-list--tile article .article-image{position:absolute;top:0;left:0;width:100%;height:100%}.article-list--tile article .article-image img{width:100%;height:100%;object-fit:cover}.article-list--tile article .article-details{border-radius:var(--card-border-radius);position:relative;height:100%;width:100%;display:flex;flex-direction:column;justify-content:flex-end;z-index:2;padding:15px}@media(min-width:640px){.article-list--tile article .article-details{padding:20px}}.article-list--tile article .article-title{font-size:2rem;font-weight:500;color:var(--card-text-color-main)}@media(min-width:640px){.article-list--tile article .article-title{font-size:2.2rem}}.widget{display:flex;flex-direction:column}.widget .widget-icon svg{width:32px;height:32px;stroke-width:1.6;color:var(--body-text-color)}.tagCloud .tagCloud-tags{display:flex;flex-wrap:wrap;gap:10px}.tagCloud .tagCloud-tags a{background:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--tag-border-radius);padding:8px 20px;color:var(--card-text-color-main);font-size:1.4rem;transition:box-shadow .3s ease}.tagCloud .tagCloud-tags a:hover{box-shadow:var(--shadow-l2)}.widget.archives .widget-archive--list{border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);background-color:var(--card-background)}.widget.archives .archives-year:not(:last-of-type){border-bottom:1.5px solid var(--card-separator-color)}.widget.archives .archives-year a{font-size:1.4rem;padding:18px 25px;display:flex}.widget.archives .archives-year a span.year{flex:1;color:var(--card-text-color-main);font-weight:700}.widget.archives .archives-year a span.count{color:var(--card-text-color-tertiary)}footer.site-footer{padding:20px 0 var(--section-separation);font-size:1.4rem;line-height:1.75}footer.site-footer:before{content:"";display:block;height:3px;width:50px;background:var(--body-text-color);margin-bottom:20px}footer.site-footer .copyright{color:var(--accent-color);font-weight:700;margin-bottom:5px}footer.site-footer .powerby{color:var(--body-text-color);font-weight:400;font-size:1.2rem}footer.site-footer .powerby a{color:var(--body-text-color)}.pagination{display:flex;background-color:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--card-border-radius);overflow:hidden;flex-wrap:wrap}.pagination .page-link{padding:16px 32px;display:inline-flex;color:var(--card-text-color-secondary)}.pagination .page-link.current{font-weight:700;background-color:var(--card-background-selected);color:var(--card-text-color-main)}@media(min-width:768px){.sidebar.sticky{position:sticky}}.left-sidebar{display:flex;flex-direction:column;flex-shrink:0;align-self:stretch;gap:var(--sidebar-element-separation);max-width:none;width:100%;position:relative;--sidebar-avatar-size:100px;--sidebar-element-separation:20px;--emoji-size:40px;--emoji-font-size:20px}@media(min-width:768px){.left-sidebar{width:auto;padding-top:var(--main-top-padding);padding-bottom:var(--main-top-padding);max-height:100vh}}@media(min-width:1536px){.left-sidebar{--sidebar-avatar-size:120px;--sidebar-element-separation:25px;--emoji-size:40px}}.left-sidebar.sticky{top:0}.left-sidebar.compact{--sidebar-avatar-size:80px;--emoji-size:30px;--emoji-font-size:15px}@media(min-width:1024px){.left-sidebar.compact header{flex-direction:row}}.left-sidebar.compact header .site-meta{gap:5px}.left-sidebar.compact header .site-name{font-size:1.4rem}@media(min-width:1536px){.left-sidebar.compact header .site-name{font-size:1.75rem}}.left-sidebar.compact header .site-description{font-size:1.4rem}.right-sidebar{width:100%;display:none;flex-direction:column;gap:var(--widget-separation)}.right-sidebar.sticky{top:0}@media(min-width:1024px){.right-sidebar{padding-top:var(--main-top-padding);padding-bottom:var(--main-top-padding)}}.sidebar header{z-index:1;transition:box-shadow .5s ease;display:flex;flex-direction:column;gap:var(--sidebar-element-separation)}@media(min-width:768px){.sidebar header{padding:0}}.sidebar header .site-avatar{position:relative;margin:0;width:var(--sidebar-avatar-size);height:var(--sidebar-avatar-size);flex-shrink:0}.sidebar header .site-avatar .site-logo{width:100%;height:100%;border-radius:100%;box-shadow:var(--shadow-l1)}.sidebar header .site-avatar .emoji{position:absolute;width:var(--emoji-size);height:var(--emoji-size);line-height:var(--emoji-size);border-radius:100%;bottom:0;right:0;text-align:center;font-size:var(--emoji-font-size);background-color:var(--card-background);box-shadow:var(--shadow-l2)}.sidebar header .site-meta{display:flex;flex-direction:column;gap:10px;justify-content:center}.sidebar header .site-name{color:var(--accent-color);margin:0;font-size:1.6rem}@media(min-width:1536px){.sidebar header .site-name{font-size:1.8rem}}.sidebar header .site-description{color:var(--body-text-color);font-weight:400;margin:0;font-size:1.4rem}@media(min-width:1536px){.sidebar header .site-description{font-size:1.6rem}}[data-scheme=dark] #dark-mode-toggle{color:var(--accent-color);font-weight:700}[data-scheme=dark] #dark-mode-toggle .icon-tabler-toggle-left{display:none}[data-scheme=dark] #dark-mode-toggle .icon-tabler-toggle-right{display:unset}#dark-mode-toggle{margin-top:auto;color:var(--body-text-color);display:flex;align-items:center;cursor:pointer;gap:var(--menu-icon-separation)}#dark-mode-toggle .icon-tabler-toggle-right{display:none}#i18n-switch{color:var(--body-text-color);display:inline-flex;align-content:center;gap:var(--menu-icon-separation)}#i18n-switch select{border:0;background-color:transparent;color:var(--body-text-color)}#i18n-switch select option{color:var(--card-text-color-main);background-color:var(--card-background)}html{font-size:62.5%;overflow-y:scroll}*{box-sizing:border-box}body{background:var(--body-background);margin:0;font-family:var(--base-font-family);font-size:1.6rem;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{scrollbar-width:auto;scrollbar-color:var(--scrollbar-thumb)transparent}::-webkit-scrollbar{height:auto}::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb)}::-webkit-scrollbar-track{background-color:transparent}.article-page.hide-sidebar-sm .left-sidebar{display:none}@media(min-width:768px){.article-page.hide-sidebar-sm .left-sidebar{display:inherit}}.article-page .main-article{background:var(--card-background);border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);overflow:hidden}.article-page .main-article .article-header .article-image img{height:auto;width:100%;max-height:45vh;object-fit:cover}.article-page .main-article .article-header .article-details{padding:var(--card-padding);padding-bottom:0}.article-page .main-article .article-header .article-subtitle{font-weight:300;color:var(--card-text-color-secondary);line-height:1.3;margin:0;font-size:1.95rem}.article-page .main-article .article-content{margin:var(--card-padding)0;color:var(--card-text-color-main)}.article-page .main-article .article-content .footnotes{font-family:var(--base-font-family)}.article-page .main-article .article-content img{max-width:100%;height:auto}.article-page .main-article .article-footer{margin:var(--card-padding);margin-top:0}.article-page .main-article .article-footer section:not(:first-child){margin-top:var(--card-padding)}.article-page .main-article .article-footer section{color:var(--card-text-color-tertiary);text-transform:uppercase;display:flex;align-items:center;font-size:1.4rem;gap:15px}.article-page .main-article .article-footer section svg{width:20px;height:20px;stroke-width:1.33}.article-page .main-article .article-footer .article-tags{flex-wrap:wrap;text-transform:unset}.article-page .main-article .article-footer .article-copyright a,.article-page .main-article .article-footer .article-lastmod a{color:var(--body-text-color)}.article-page .main-article .article-footer .article-copyright a.link,.article-page .main-article .article-footer .article-lastmod a.link{box-shadow:unset}.widget--toc{background-color:var(--card-background);border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);display:flex;flex-direction:column;color:var(--card-text-color-main);overflow:hidden}.widget--toc ::-webkit-scrollbar-thumb{background-color:var(--card-separator-color)}.widget--toc #TableOfContents{overflow-x:auto;max-height:75vh}.widget--toc #TableOfContents ol,.widget--toc #TableOfContents ul{margin:0;padding:0}.widget--toc #TableOfContents ol{list-style-type:none;counter-reset:item}.widget--toc #TableOfContents ol li a:first-of-type::before{counter-increment:item;content:counters(item,".")". ";font-weight:700;margin-right:5px}.widget--toc #TableOfContents>ul{padding:0 1em}.widget--toc #TableOfContents li{margin:15px 0 15px 25px;padding:5px}.widget--toc #TableOfContents li>ol,.widget--toc #TableOfContents li>ul{margin-top:10px;padding-left:10px;margin-bottom:-5px}.widget--toc #TableOfContents li>ol>li:last-child,.widget--toc #TableOfContents li>ul>li:last-child{margin-bottom:0}.widget--toc #TableOfContents li.active-class>a{border-left:var(--heading-border-size)solid var(--accent-color);font-weight:700}.widget--toc #TableOfContents ul li.active-class>a{display:block}.widget--toc #TableOfContents>ul>li.active-class>a{margin-left:calc(-25px - 1em);padding-left:calc(25px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li.active-class>a{margin-left:calc(-9px - 1em);padding-left:calc(9px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li.active-class>a{margin-left:calc(-60px - 1em);padding-left:calc(60px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li.active-class>a{margin-left:calc(-44px - 1em);padding-left:calc(44px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li>ul>li.active-class>a{margin-left:calc(-95px - 1em);padding-left:calc(95px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li>ol>li.active-class>a{margin-left:calc(-79px - 1em);padding-left:calc(79px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li>ul>li>ul>li.active-class>a{margin-left:calc(-130px - 1em);padding-left:calc(130px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li>ol>li>ol>li.active-class>a{margin-left:calc(-114px - 1em);padding-left:calc(114px + 1em - var(--heading-border-size));display:block}.widget--toc #TableOfContents>ul>li>ul>li>ul>li>ul>li>ul>li.active-class>a{margin-left:calc(-165px - 1em);padding-left:calc(165px + 1em - var(--heading-border-size))}.widget--toc #TableOfContents>ol>li>ol>li>ol>li>ol>li>ol>li.active-class>a{margin-left:calc(-149px - 1em);padding-left:calc(149px + 1em - var(--heading-border-size));display:block}.related-content{overflow-x:auto;padding-bottom:15px}.related-content>.flex{float:left}.related-content article{margin-right:15px;flex-shrink:0;overflow:hidden;width:250px;height:150px}.related-content article .article-title{font-size:1.4rem;margin:0}.related-content article.has-image .article-details{padding:20px}.article-content{font-family:var(--article-font-family);font-size:var(--article-font-size);padding:0 var(--card-padding);line-height:var(--article-line-height)}.article-content>p{margin:1.5em 0}.article-content h1,.article-content h2,.article-content h3,.article-content h4,.article-content h5,.article-content h6{margin-inline-start:calc((var(--card-padding)) * -1);padding-inline-start:calc(var(--card-padding) - var(--heading-border-size));border-inline-start:var(--heading-border-size)solid var(--accent-color)}.article-content figure{text-align:center}.article-content figure figcaption{font-size:1.4rem;color:var(--card-text-color-secondary)}.article-content blockquote{position:relative;margin:1.5em 0;border-inline-start:var(--blockquote-border-size)solid var(--card-separator-color);padding:15px calc(var(--card-padding) - var(--blockquote-border-size));background-color:var(--blockquote-background-color)}.article-content blockquote .cite{display:block;text-align:right;font-size:.75em}.article-content blockquote .cite a{text-decoration:underline}.article-content hr{width:100px;margin:40px auto;background:var(--card-text-color-tertiary);height:2px;border:0;opacity:.55}.article-content code{color:var(--code-text-color);background-color:var(--code-background-color);padding:2px 4px;border-radius:var(--tag-border-radius);font-family:var(--code-font-family)}.article-content a,.article-content code{word-break:break-word}.article-content .gallery{position:relative;display:flex;flex-direction:row;justify-content:center;margin:1.5em 0;gap:10px}.article-content .gallery figure{margin:0}.article-content pre{overflow-x:auto;display:block;background-color:var(--pre-background-color);color:var(--pre-text-color);font-family:var(--code-font-family);line-height:1.428571429;word-break:break-all;padding:var(--card-padding)}[dir=rtl] .article-content pre{direction:ltr}.article-content pre code{color:unset;border:none;background:0 0;padding:0}.article-content .highlight{background-color:var(--pre-background-color);padding:var(--card-padding);position:relative}.article-content .highlight:hover .copyCodeButton{opacity:1}[dir=rtl] .article-content .highlight{direction:ltr}.article-content .highlight pre{margin:initial;padding:0;margin:0;width:auto}.article-content .copyCodeButton{position:absolute;top:calc(var(--card-padding));right:calc(var(--card-padding));background:var(--card-background);border:none;box-shadow:var(--shadow-l2);border-radius:var(--tag-border-radius);padding:8px 16px;color:var(--card-text-color-main);cursor:pointer;font-size:14px;opacity:0;transition:opacity .3s ease}.article-content .table-wrapper{padding:0 var(--card-padding);overflow-x:auto;display:block}.article-content table{width:100%;border-collapse:collapse;border-spacing:0;margin-bottom:1.5em;font-size:.96em}.article-content th,.article-content td{text-align:left;padding:4px 8px 4px 10px;border:1px solid var(--table-border-color)}.article-content td{vertical-align:top}.article-content tr:nth-child(even){background-color:var(--tr-even-background-color)}.article-content .twitter-tweet{color:var(--card-text-color-main)}.article-content .video-wrapper{position:relative;width:100%;height:0;padding-bottom:56.25%;overflow:hidden}.article-content .video-wrapper>iframe,.article-content .video-wrapper>video{position:absolute;width:100%;height:100%;left:0;top:0;border:0}.article-content .gitlab-embed-snippets{margin:0!important}.article-content .gitlab-embed-snippets .file-holder.snippet-file-content{margin-block-end:0!important;margin-block-start:0!important;margin-left:calc((var(--card-padding)) * -1)!important;margin-right:calc((var(--card-padding)) * -1)!important;padding:0 var(--card-padding)!important}.article-content blockquote,.article-content figure,.article-content .highlight,.article-content pre,.article-content .gallery,.article-content .video-wrapper,.article-content .table-wrapper,.article-content .s_video_simple{margin-left:calc((var(--card-padding)) * -1);margin-right:calc((var(--card-padding)) * -1);width:calc(100% + var(--card-padding) * 2)}.article-content .katex-display>.katex{overflow-x:auto;overflow-y:hidden}.article-content kbd{border:1px solid var(--kbd-border-color);font-weight:700;font-size:.9em;line-height:1;padding:2px 4px;border-radius:4px;display:inline-block}.section-card{border-radius:var(--card-border-radius);background-color:var(--card-background);padding:var(--small-card-padding);box-shadow:var(--shadow-l1);display:flex;align-items:center;gap:20px;--separation:15px}.section-card .section-term{font-size:2.2rem;margin:0;color:var(--card-text-color-main)}.section-card .section-description{font-weight:400;color:var(--card-text-color-secondary);font-size:1.6rem;margin:0}.section-card .section-details{flex-grow:1;display:flex;flex-direction:column;gap:8px}.section-card .section-image img{width:60px;height:60px}.section-card .section-count{color:var(--card-text-color-tertiary);font-size:1.4rem;margin:0;font-weight:700;text-transform:uppercase}.subsection-list{overflow-x:auto}.subsection-list .article-list--tile{display:flex;padding-bottom:15px}.subsection-list .article-list--tile article{width:250px;height:150px;margin-right:20px;flex-shrink:0}.subsection-list .article-list--tile article .article-title{margin:0;font-size:1.8rem}.subsection-list .article-list--tile article .article-details{padding:20px}.not-found-card{background-color:var(--card-background);box-shadow:var(--shadow-l1);border-radius:var(--card-border-radius);padding:var(--card-padding)}.search-form{position:relative;--button-size:80px}.search-form.widget{--button-size:60px}.search-form.widget label{font-size:1.3rem;top:10px}.search-form.widget input{font-size:1.5rem;padding:30px 20px 15px}.search-form p{position:relative;margin:0}.search-form label{position:absolute;top:15px;inset-inline-start:20px;font-size:1.4rem;color:var(--card-text-color-tertiary)}.search-form input{padding:40px 20px 20px;border-radius:var(--card-border-radius);background-color:var(--card-background);box-shadow:var(--shadow-l1);color:var(--card-text-color-main);width:100%;border:0;-webkit-appearance:none;transition:box-shadow .3s ease;font-size:1.8rem}.search-form input:focus{outline:0;box-shadow:var(--shadow-l2)}.search-form button{position:absolute;inset-inline-end:0;top:0;height:100%;width:var(--button-size);cursor:pointer;background-color:transparent;border:0;padding:0 10px}.search-form button:focus{outline:0}.search-form button:focus svg{stroke-width:2;color:var(--accent-color)}.search-form button svg{color:var(--card-text-color-secondary);stroke-width:1.33;transition:all .3s ease;width:20px;height:20px}a{text-decoration:none;color:var(--accent-color)}a:hover{color:var(--accent-color-darker)}a.link{box-shadow:0 -2px rgba(var(--link-background-color),var(--link-background-opacity))inset;transition:all .3s ease}a.link:hover{box-shadow:0 calc(-1rem * var(--article-line-height))rgba(var(--link-background-color),var(--link-background-opacity-hover))inset}.section-title{text-transform:uppercase;margin-top:0;margin-bottom:10px;display:block;font-size:1.6rem;font-weight:700;color:var(--body-text-color)}.section-title a{color:var(--body-text-color)}:root{--main-top-padding:30px;--card-border-radius:25px;--tag-border-radius:8px;--section-separation:40px;--code-background-color:#f2f1b0e3;--code-text-color:#5c3400e0;--article-line-height:1.5;--pre-background-color:#f0f0f0;--card-padding:10px}:root[data-scheme=dark]{--code-background-color:#00000075;--code-text-color:#e9d88c}a{word-break:break-all}code{word-break:break-all}.article-page .main-article .article-content img{max-width:96%!important;height:auto!important;border-radius:8px}.article-content blockquote{border-left:2px solid #b6820096!important;background:#ffdd1fb9}[data-scheme=dark] blockquote{border-left:5px solid #c56600de!important;background:#3b2d0127}.highlight{max-width:102%!important;background-color:var(--pre-background-color);padding:var(--card-padding);position:relative;border-radius:20px;margin-left:-7px!important;margin-right:-12px;box-shadow:var(--shadow-l1)!important}.highlight:hover .copyCodeButton{opacity:1}[dir=rtl] .highlight{direction:ltr}.highlight pre{margin:initial;padding:0;margin:0;width:auto}[data-scheme=light] .article-content .highlight{background-color:rgba(255,225,107,.635)}[data-scheme=light] .chroma{color:#38230dd6;background-color:rgba(255,247,209,.244)}[data-scheme=dark] .article-content .highlight{background-color:rgba(33,21,3,.741)}[data-scheme=dark] .chroma{color:#f4f0c0;background-color:rgba(38,20,3,.752)}.article-content .highlight:before{content:"";display:block;background:url(../img/code-header.svg);height:18px;width:100%;background-size:57px;background-repeat:no-repeat;margin-bottom:5px;background-position:-1px 2px}[data-scheme=dark] ::selection{color:#fff;background:#444}[data-scheme=dark] ::-moz-selection{color:#fff;background:#444}[data-scheme=light] ::selection{color:#fff;background:#444}[data-scheme=light] ::-moz-selection{color:#fff;background:#444}a{text-decoration:none;color:var(--accent-color)}a:hover{color:var(--accent-color-darker)}a.link{color:#994311;font-weight:500;padding:0 2px;text-decoration:none;cursor:pointer}a.link:hover{text-decoration:none}[data-scheme=dark] a{text-decoration:none}[data-scheme=dark] a:hover{color:var(--accent-color-darker)}[data-scheme=dark] a.link{color:#fff193e0;font-weight:500;padding:0 2px;text-decoration:none;cursor:pointer}[data-scheme=dark] a.link:hover{text-decoration:none}.article-list article .article-image img{width:100%;height:195px;object-fit:cover}@media(min-width:768px){.article-list article .article-image img{height:300px}}@media(min-width:1280px){.article-list article .article-image img{height:355px}}.main-container{min-height:100vh;align-items:flex-start;padding:10px;gap:var(--section-separation);padding-top:var(--main-top-padding)}@media(min-width:768px){.main-container{padding:0 35px}}.container{margin-left:auto;margin-right:auto}.container .left-sidebar{order:-3;max-width:var(--left-sidebar-max-width)}.container .right-sidebar{padding-left:px;order:-1;max-width:var(--right-sidebar-max-width)}@media(min-width:1024px){.container .right-sidebar{display:flex;flex-direction:column}}@media(min-width:768px){.container.extended{max-width:1024px;--left-sidebar-max-width:20%;--right-sidebar-max-width:20%}}@media(min-width:1024px){.container.extended{max-width:1280px;--left-sidebar-max-width:21%;--right-sidebar-max-width:19%}}@media(min-width:1280px){.container.extended{max-width:1536px;--left-sidebar-max-width:21%;--right-sidebar-max-width:18%}}@media(min-width:768px){.container.compact{--left-sidebar-max-width:25%;max-width:768px}}@media(min-width:1024px){.container.compact{max-width:1024px;--left-sidebar-max-width:20%}}@media(min-width:1280px){.container.compact{max-width:1280px}}.article-list--compact article .article-image img{width:var(--image-size);height:var(--image-size);object-fit:cover;border-radius:17%}.menu{padding-left:0;list-style:none;line-height:1.2;flex-direction:column;overflow-x:hidden;overflow-y:scroll;flex-grow:1;background-color:var(--card-background);box-shadow:var(--shadow-l2);display:none;margin:0;border-radius:10px;padding:30px}@media(min-width:1280px){.menu{padding:15px 0}}.menu,.menu .menu-bottom-section{gap:30px}@media(min-width:1280px){.menu,.menu .menu-bottom-section{gap:25px}}.menu.show{display:flex}@media(min-width:768px){.menu{align-items:flex-end;display:flex;background-color:transparent;padding:0;box-shadow:none;margin:0}}.menu li{position:relative;vertical-align:middle;padding:0}@media(min-width:768px){.menu li{width:100%}}.menu li svg{stroke-width:1.53;width:20px;height:20px}.menu li a{height:100%;display:inline-flex;align-items:center;color:var(--body-text-color);gap:var(--menu-icon-separation)}.menu li span{flex:1}.menu li.current a{color:var(--accent-color);font-weight:700}.menu::-webkit-scrollbar{display:none}html ::-webkit-scrollbar{width:20px}html ::-webkit-scrollbar-track{background-color:transparent}html ::-webkit-scrollbar-thumb{background-color:#d6dee1;border-radius:20px;border:6px solid transparent;background-clip:content-box}html ::-webkit-scrollbar-thumb:hover{background-color:#a8bbbf}@media(min-width:1024px){.article-list--compact{display:grid;grid-template-columns:1fr 1fr;background:0 0;box-shadow:none;gap:1rem}.article-list--compact article{background:var(--card-background);border:none;box-shadow:var(--shadow-l2);margin-bottom:8px;border-radius:16px}}@media(min-width:1024px){.article-list--compact.links{display:grid;grid-template-columns:1fr 1fr 1fr;background:0 0;box-shadow:none;gap:1rem}.article-list--compact.links article{background:var(--card-background);border:none;box-shadow:var(--shadow-l2);margin-bottom:8px;border-radius:var(--card-border-radius)}.article-list--compact.links article:nth-child(odd){margin-right:8px}}.welcome{color:var(--card-text-color-main);background:var(--card-background);box-shadow:var(--shadow-l2);border-radius:30px;display:inline-block}.shake{display:inline-block;animation:shake 1s;animation-duration:1s;animation-timing-function:ease;animation-delay:0s;animation-iteration-count:1;animation-direction:normal;animation-fill-mode:none;animation-play-state:running;animation-name:shake;animation-timeline:auto;animation-range-start:normal;animation-range-end:normal;animation-delay:2s}@keyframes shake{0%{transform:rotate(0)}25%{transform:rotate(45deg)scale(1.2)}50%{transform:rotate(0)scale(1.2)}75%{transform:rotate(45deg)scale(1.2)}100%{transform:rotate(0)}}.jump-text1{display:inline-block;animation:jump .5s 1}.jump-text2{display:inline-block;animation:jump .5s 1;animation-delay:.1s}.jump-text3{display:inline-block;animation:jump .5s 1;animation-delay:.2s}.jump-text4{display:inline-block;animation:jump .5s 1;animation-delay:.3s}.jump-text5{display:inline-block;animation:jump .5s 1;animation-delay:.4s}.jump-text6{display:inline-block;animation:jump .5s 1;animation-delay:.5s}.jump-text7{display:inline-block;animation:jump .5s 1;animation-delay:.6s}.jump-text8{display:inline-block;animation:jump .5s 1;animation-delay:.7s}.jump-text9{display:inline-block;animation:jump .5s 1;animation-delay:.9s}@keyframes jump{0%{transform:translateY(0)}50%{transform:translateY(-20px)}100%{transform:translateY(0)}}.back-home{background:var(--card-background);border-radius:var(--tag-border-radius);color:var(--card-text-color-tertiary);margin-right:.1rem;margin-top:24px;display:inline-flex;align-items:center;font-size:1.4rem;text-transform:uppercase;padding:10px 20px 10px 15px;transition:box-shadow .3s ease;box-shadow:var(--shadow-l3)}.back-home:hover{box-shadow:var(--shadow-l2)}.back-home svg{margin-right:5px;width:20px;height:20px}.back-home span{font-weight:500;white-space:nowrap}.main-container .right-sidebar{order:2;max-width:var(--right-sidebar-max-width)}@media(min-width:1024px){.main-container .right-sidebar{display:flex}}main.main{order:1;min-width:0;max-width:100%;flex-grow:1;display:flex;flex-direction:column;gap:var(--section-separation)}@media(min-width:768px){main.main{padding-top:var(--main-top-padding)}} \ No newline at end of file diff --git a/search/index.html b/search/index.html index 2f9f66fd..b11b90b1 100644 --- a/search/index.html +++ b/search/index.html @@ -1,5 +1,5 @@ 文章搜尋 -

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git a/search/index.json b/search/index.json index 1739adbd..02efb153 100644 --- a/search/index.json +++ b/search/index.json @@ -1 +1 @@ -[{"content":"openai + chatgpt + gpts\nGPT = Good Personal Tool\n前情提要:\nOpenAI 最近推出了一項新功能 GPTs\n允許用戶根據自己的需求客製化 GPT 模型。\n這項功能目前(11/12)僅提供付費用戶開放使用\n此篇整理筆者製作以及覺得有趣的主題應用\n資訊主題 .NET 開發人員助手 https://chat.openai.com/g/g-CoQmELkAS-net-kai-fa-ren-yuan-zhu-shou\n針對經驗豐富的開發人員提供進階的 .NET 建議\n製作人: HUANG PAO HSI\nhttps://www.facebook.com/will.fans/\n網址閱讀助手 https://chat.openai.com/g/g-Rwn8vtRF2-wang-zhi-wen-jian-yue-du-zhu-shou\n製作人:sd0.tech https://www.facebook.com/yuhaooo.p\n中立批評 GPT https://chat.openai.com/g/g-S3rIhfQkr-zhong-li-pi-pan-gpt\n製作人:LU CHE YU https://www.facebook.com/joeylu0627\n新聞報導 GPT https://chat.openai.com/g/g-xLQFz72P8-xin-wen-bao-dao-gpt\n娛樂主題 RPG GPT 悲慘世界 RPG https://chat.openai.com/g/g-OSVW9rZqu-bei-can-shi-jie-rpg\n製作人:LU CHE YU https://www.facebook.com/joeylu0627\n設計主題 視覺成像GPT 才華洋溢的平面設計師 |By YIIN SHANG JYH\nhttps://chat.openai.com/g/g-qQzgIhqV7-shi-jue-cheng-xiang\n製作人:https://www.facebook.com/allanyiin\n設計靈感GPT https://chat.openai.com/g/g-2t4pST9p0-she-ji-ling-gan-gpt\nOpenAI 客製化GPT使用指南產生器 基本溝通原則 語言使用:請全程以繁體中文,台灣用語進行對談。 規則修改與優化:請幫我修改優化此___GPT,在既有的規則設定下進行修改。 時間管理:若是因為時間限制,請詢問用戶是否繼續等待或是先提供已經掌握的資訊。 主題限制:若是用戶提問不相關的主題,將拒絕回答並闡述我的角色設定。 進階互動原則 資訊準確性:確保所有提供的資訊都是準確且最新的。如果資訊來源有限或不確定,應明確告知用戶。 用戶隱私保護:尊重用戶隱私,不要求或儲存用戶的個人資訊。 內容適宜性:避免提供或傳播任何不適宜、冒犯性或不適合特定年齡群的內容。 互動態度:保持尊重和專業的態度,即使在處理複雜或敏感的問題時。 技術操作指南 功能使用:清楚指導用戶如何使用特定的GPT功能或命令。 錯誤處理:在面對錯誤或不理想的輸出時,提供指導和建議以協助用戶解決問題。 持續學習:鼓勵用戶提供回饋,以便不斷改進和優化GPT模型的表現。 ","date":"2023-11-12T03:33:42+08:00","image":"https://wastu01.github.io/article/openai-custom-gpts-collection/custome-chatgpt-gpts_hu16897564425675368955.png","permalink":"https://wastu01.github.io/article/openai-custom-gpts-collection/","title":"OpenAI ChatGPT 客製化聊天機器人 GPTs"},{"content":"前端 + CSS 樣式 + 模板 +\nCSS 樣式彙整-前端筆記 在學期間初學網頁設計整理的語法/好用工具\ncss reset\nhttps://meyerweb.com/eric/tools/css/reset/\ncss 優先順序\nhttps://www.oxxostudio.tw/articles/201405/css-specificity.html\nCodepen 線上編輯器:\nhttps://codepen.io/mrwang01/\n假圖假字圖片 假字、假圖產生器整理\nhttps://fakeimg.pl/\n1 2 \u0026lt;img src=\u0026#34;https://fakeimg.pl/350x200/ff0000,128/000,255\u0026#34;\u0026gt; \u0026lt;img src=\u0026#34;https://fakeimg.pl/寬x高/顏色(HEX 色碼),亮度/黑字,255\u0026#34;\u0026gt; 實際應用:\n模板的部分,可自行搜尋相關 Vscode 擴充套件\nHTML 模板 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 \u0026lt;!DOCTYPE html\u0026gt; \u0026lt;html lang=\u0026#34;en\u0026#34; \u0026gt; \u0026lt;head\u0026gt; \u0026lt;meta charset=\u0026#34;UTF-8\u0026#34;\u0026gt; \u0026lt;title\u0026gt;title\u0026lt;/title\u0026gt; \u0026lt;meta name=\u0026#34;viewport\u0026#34; content=\u0026#34;width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no\u0026#34;\u0026gt; \u0026lt;link rel=\u0026#34;stylesheet\u0026#34; href=\u0026#34;index.css\u0026#34;\u0026gt; //需創立 index.css \u0026lt;/head\u0026gt; \u0026lt;body\u0026gt; \u0026lt;div class=\u0026#34;style\u0026#34;\u0026gt; \u0026lt;h1\u0026gt;我是區塊元素\u0026lt;/h1\u0026gt; \u0026lt;/div\u0026gt; \u0026lt;/body\u0026gt; \u0026lt;script src=\u0026#34;index.js\u0026#34;\u0026gt;\u0026lt;/script\u0026gt; //需創立 index.js \u0026lt;/script\u0026gt; \u0026lt;/html\u0026gt; CSS模板 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 @import url(https://fonts.googleapis.com/earlyaccess/notosanstc.css); * { font-family: \u0026#34;Noto Sans TC\u0026#34;; } body { background-color: red; } html, body { display: flex; justify-content: center; align-items: center; } 字體單位設定 參考文章:一次搞懂 CSS 字體單位:px、em、rem 和 %\n( 作者還有很多實用前端技術文章 )\npx : 絕對單位 固定 pixel em : 相對單位 只跟根元素相乘 自己x祖先(或預設) rem: 相對單位 與該父元素相乘 自己x老爸x老爸的老爸 overflow 1 2 3 4 5 6 7 8 9 10 11 12 13 overflow: auto; //自動捲軸 //如果要顯示超出內容,,可以加上 title Attribute text-overflow: ellipsis; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; //只顯示三行 box-sizing:border-box; border-radius: border-radius: 左上 右上 右下 左下 ;\nHtml iframe frameborder=\u0026ldquo;0\u0026rdquo; ──不顯示邊框 frameborder=\u0026ldquo;1\u0026rdquo; ──要顯示邊框\nscrolling=\u0026ldquo;no\u0026rdquo; ──代表不顯示 scrolling=\u0026ldquo;auto\u0026rdquo; ──則代表根據網頁大小自動顯示。\nSVG Icons 編輯模式可查看原始程式碼\nOpen source free SVG icons\nIcon to Font IcoMoon──將icon轉成Font的平台\nhttps://icomoon.io/app/#/select\nButton 1.基本按鈕樣式\nSee the Pen CSS-Button樣式 by mrwang01 (@mrwang01) on CodePen. 2.完美的按鈕並不存ㄗ\u0026hellip;\nSee the Pen CSS Tricks button style by Noel Peña (@noelpena) on CodePen. button(單純按鈕)、reset(清空表單)、submit(送出表單)\n1 2 3 4 5 6 7 \u0026lt;input type=\u0026#34;button\u0026#34; value=\u0026#34;按鈕值\u0026#34; name=\u0026#34;按鈕名稱\u0026#34; style=\u0026#34;按鈕樣式\u0026#34;\u0026gt; input{ border:0; color:#fff; background-color:#003C9D; border-radius:10px;} 大小寫轉換 1 2 3 \u0026lt;p style=\u0026#34;text-transform:uppercase;\u0026#34;\u0026gt;Ework Design\u0026lt;/p\u0026gt; \u0026lt;p style=\u0026#34;text-transform:lowercase;\u0026#34;\u0026gt;Ework Design\u0026lt;/p\u0026gt; \u0026lt;p style=\u0026#34;text-transform:capitalize;\u0026#34;\u0026gt;ework design\u0026lt;/p\u0026gt; \u0026lt; dl \u0026gt; \u0026lt; dt \u0026gt; \u0026lt; dd \u0026gt; 1 2 3 4 5 6 \u0026lt;dl\u0026gt; \u0026lt;dt\u0026gt;項目標題一\u0026lt;/dt\u0026gt; \u0026lt;dd\u0026gt;這裡是項目敘述一 ...\u0026lt;/dd\u0026gt; \u0026lt;dt\u0026gt;項目標題二\u0026lt;/dt\u0026gt; \u0026lt;dd\u0026gt;這裡是項目敘述二 ...\u0026lt;/dd\u0026gt; \u0026lt;/dl\u0026gt; 垂直置中 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1. display:flex; align-items:center;(垂直置中) justify-content:center;(水平置中) 2. display:table-cell; /*假表格*/ 3. transform:translateY(-50%); /*子元素加 position:relative*/ /*CSS3位移*/ 4. calc 動態計算(算數學) 課堂老師提起的 參考文章:\nhttps://www.oxxostudio.tw/articles/201408/css-vertical-align.html\nhttps://www.oxxostudio.tw/articles/201502/css-vertical-align-7methods.html\nInput 美化 1 2 3 4 5 6 7 8 9 10 input[type=\u0026#34;text\u0026#34;] { padding:9px 35px; border:3px black solid; cursor:pointer; -webkit-border-radius: 5px; border-radius: 5px; } flexbox 詳細原理:圖解:CSS Flex 屬性一點也不難\njustify-content 主軸對齊 主軸線預設左到右\n圖片參考:\nCSS3的flexbox版面配置-flex container(容器)可用的屬性\n錨點偽類 以:為開頭,方便精準控制\n1 2 hover 要在 link visted 之後 active 要在 hover之後 -child first-child:第一個子元素 last-child:最後一個子元素 nth-child(數字):第幾個子元素 nth-child(2n):挑出偶數的元素(2的倍數) nth-child(2n+1):挑出奇數的元素 nth-last-child(數字):從後面數來第幾個子元素 only-child:只有一個子元素 p\u0026gt;span : \u0026lt;p\u0026gt; 中的第一個 \u0026lt;span\u0026gt;\n其他變化一樣規則\n學習資源: Day 02 HTML/CSS 點擊超連結會經歷的偽類選取器(Pseudo-classes)\n偽元素 Pseudo-elements ::before ::after e.g 滑鼠滑過(hover)改變顏色可用\n1 2 3 .xxx:hover::before{ background-color:#7f7f7f; } 詳細參數設定: CSS 偽元素 ( before 與 after )\nHover 圖床不見了 imgur 上傳的 mp4\nhttps://i.imgur.com/CRfi2St.mp4\n按鈕 hover 樣式:\n用 pug sass 製作的按鈕範例,系上學長製作的範例\nhttps://codepen.io/mrwang01/pen/VRaWvM\n偽元素+hover+animation 極致應用:\nhttps://codepen.io/argyleink/pen/poEjvpd\nSee the Pen CSS mouse-out transition effect by Adam Argyle (@argyleink) on CodePen. calc() 數值運算 calc() 用來定位該元素\n1 2 width: calc(50% + 8px) /* 50% 的寬度 + 8px */ 置中方式之一\n1 2 3 4 .text { position: absolute; left: calc(40px); width: calc(100% - 80px); 但是記得要加上或扣除 border、padding 的部分 算數學\nRWD-Tablet 後台電商購物清單 簡潔的表單設計 https://codepen.io/AllThingsSmitty/pen/MyqmdM 多樣商品列表清單 https://codepen.io/pumii/pen/WNxvNGg 客製化 web fonts icon 實習期間修改 bootstrap 模版發現到的東西 https://icomoon.io/app/#/select 資料來源:自己做web fonts icons\n圖片輪播 Carousel bootstrap 元件 https://bootstrap5.hexschool.com/docs/5.0/components/carousel/\njQuery - Owl Carousel 教學文章: https://ithelp.ithome.com.tw/articles/10247358\n基本款: https://codepen.io/pumii/pen/yLJeZvg\n好看的輪播圖片樣式: https://codepen.io/fadzrinmadu/pen/RwryOVN\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 loop: true, // 循環播放 margin: 10, // 外距 10px nav: true, // 顯示點點 responsive: { 0: { items: 1 // 螢幕大小為 0~600 顯示 1 個項目 }, 600: { items: 3 // 螢幕大小為 600~1000 顯示 3 個項目 }, 1000: { items: 5 // 螢幕大小為 1000 以上 顯示 5 個項目 } } 陰影 box-shadow 好看的陰影\nSee the Pen Material Design Box Shadows by Samuel Thornton (@sdthornton) on CodePen. https://codepen.io/sdthornton/pen/wBZdXq\n陰影做動畫 酷炫的功能 實用性未知\nhttps://ithelp.ithome.com.tw/articles/10220686\nSee the Pen demo-box-shadow by yachen (@yachen) on CodePen. 此篇文章原自寫於 Hackmd 平台,轉移至此的文章\n","date":"2023-11-07T08:04:28+08:00","image":"https://wastu01.github.io/article/html-css-style-template/css-style-html_hu10382837006656481234.png","permalink":"https://wastu01.github.io/article/html-css-style-template/","title":"CSS 樣式彙整-前端筆記"},{"content":"AI 生成提示詞彙整|咒語關鍵字\nRunwayml Gen1 / Gen2 文字/圖片生成影片\n1 Red Lamborghini driving at high speed in the tunnel, night, Rainy Day, Telephoto Lens 影片效果:\n1 Talking to camera, man, American style, --upscale 影片效果:\n1 space suit walking on mars, university background, chaos, lava 影片效果:\n1 @Gen-2 Fast Cinematic Tracking shot of a fast driving red vintage ford mustang driving down a wet road, explosions and fire, intense action city scene, haze, professional teal \u0026amp; orange color grading, epic cinematic lighting, nighttime, Shot on Alexa Mini, Cookie S4/i --i --u --c 12 影片效果:\nAdobe Firefly 文字材質提示詞 1 2 3 文字+在白色背景上用黑色無襯線字型製作,中間有一個小貓的輪廓 Text+made with black sans-serif font on a white background, with a small cat silhouette in the center 點我看更多貓咪 文字生成圖片提示詞 1 2 3 4 5 6 7 8 9 Firefly_future+street, robot architecture, minimalistic, abstract, mist, vector, flat, unreal engine, by jewel tones, painting style, morning, fog_photo,wide_angle,concept_art_24964 Firefly_Asia,+Taiwan, street, motorcycle, architecture, minimalistic, abstract, mist, vector, flat, unreal engine, by jewel tones, painting style, morning, fog, blue and grey, 4k_art,low_lighting,hyper_realistic,3d_36809 prompt 參考來源: [https://twitter.com/ciguleva](https://twitter.com/ciguleva) 城市街景 台灣 日本 機器人\n各國風格街景概念圖\n汽車 電影鏡頭 調色 城市\n1 Firefly_explosions,+fire, intense action city scene, haze, professional teal, color grading, epic cinematic lighting, nighttime, Shot on Audi race car, Cookie S4_I, Fast Cinematic Tracking shot of a fast driving gray vintage ford mustang driving Midjourney Stable Diffusion 文字生成圖像\n1 2 3 4 5 6 7 青花瓷 parameters shukezouma, negative space, , shuimobysim, \u0026lt;lora:shukezouma_v1_1:0.8\u0026gt;, portrait of a woman standing, A person waiting for their love, admiring the beauty of Chinese blue and white porcelain. standing in a dimly lit room, gazing at a stunning piece of white porcelain on display. a room decorate with antique chinese furniture, atmosphere is tranquil and peaceful. detailed porcelain piece, a pure white background on blue designs, a mesmerizing eyes. a illustration that mimics traditional chinese brushwork, with precise lines and bold strokes. detailed of the porcelain and the person\u0026#39;s facial expression. Negative prompt: (worst quality:2), (low quality:2), (normal quality:2), lowres, normal quality, skin spots, acnes, skin blemishes, age spot, glans, (watermark:2), Steps: 22, Sampler: DPM++ SDE Karras, CFG scale: 5, Seed: 3358592551, Size: 512x768, Model hash: f2511737a, Model: chilloutmix ","date":"2023-10-28T22:56:02+08:00","image":"https://wastu01.github.io/article/ai-text-prompts-all-in-one/firefly-aigc_hu1453199177544856750.jpg","permalink":"https://wastu01.github.io/article/ai-text-prompts-all-in-one/","title":"AI 生成提示詞彙整|咒語關鍵字"},{"content":"python tessract ocr 辨識文字\nTesseract 使用&安裝&訓練 簡單驗證碼去噪 灰度二值化 無意間找到網址是固定的 教育部某平台之簡易驗證碼\n雖然可以爬好幾10xxx張,但是看了資訊安全政策好像會被 ban 所以弄了一個驗證碼產生器,自製訓練庫,好處是可自定義演算法,本機端即可儲存圖片。\n實際操作畫面如下:\n\u0026mdash; 工商服務板塊 \u0026mdash;\n人工智慧課堂企劃報告,老師說明 OCR 這個目前由 Google 維護的識別引擎,用途為辨識掃描的文件/圖片中的文字,提供實務上業界的應用,掃描健檢報告數據,將數據存入資料庫。\n我們這組的想法是應用於農民可拍照上傳產品外包裝編號查看農藥用途。\n實做起來遇到一些問題微調操作\n所以做個紀錄有了這篇筆記整理 📝\n安裝 Tessract / 語言包 安裝環境: MacOS\nHomebrew 安裝\n1 homebrew install tesseract https://formulae.brew.sh/formula/tesseract\n1 homebrew install tesseract-lang https://formulae.brew.sh/formula/tesseract-lang\n語言包一次打包 / 需要的再匯入\n位置大概是這邊:/usr/local/Cellar/tesseract/4.x/share/tessdata\n編譯安裝問題 1 Error: invalid option: --with-training-tools 要安裝訓練模型時,發現 tesseract 最新4.x版本 homebrew 沒有訓練模型相關指令\n撰寫文章當下根據網路文章 找到了解決方法需自行編譯 build,make install\n參考下列文章(感謝文章作者)\nhttps://juejin.im/post/6844904097863188487\n可下載 python 的相關模組 1 2 3 pip install pillow pip install pytesseract 詳細教學:\nhttps://lufor129.medium.com/pytesseract-辨識圖片中的文字-b1024f678fac\nhttps://blog.csdn.net/huitailangyz/article/details/80390090\n查看安裝版本 1 2 3 4 5 6 7 8 tesseract 4.1.1 leptonica-1.80.0 libgif 5.2.1 : libjpeg 9d : libpng 1.6.37 : libtiff 4.1.0 : zlib 1.2.11 : libwebp 1.1.0 : libopenjp2 2.3.1 Found AVX2 Found AVX Found FMA Found SSE 參數設定 列出可使用的語言包\n1 tesseract --list-langs chi_tra 繁體\nchi_tra_vert 繁體,直排\n-l 辨識語言 / 預設是英文 default \u0026ldquo;eng\u0026rdquo;\n設定圖片辨識引擎\n\u0026ndash;oem : OCR Engine modes, 演算法類型 / 目前沒了解這塊用預設 1 2 3 4 5 6 7 tesseract --help-oem OCR Engine modes: 0 Legacy engine only. 1 Neural nets LSTM engine only. 2 Legacy + LSTM engines. 3 Default, based on what is available. 參考文章解釋:\n为了识别包含单个字符的图像,我们通常使用卷积神经网络(CNN)。 任意长度的文本是一系列字符,这类问题可以通过RNNs解决,LSTM是RNN的一种常用形式\nPSM 判別語句類型模式 \u0026ndash;psm : 判別語句類型模式 / 大陸翻譯:自动页面分割模式 常用說明\n0:定向脚本监测(OSD) 1: 使用OSD自动分页 2 :自动分页,但是不使用OSD或OCR 3 :全自动分页,但是没有使用OSD(默认) 4 :假设可变大小的一个文本列。 5 :假设垂直对齐文本的单个统一块。 6 :假设一个统一的文本块。 7 :將圖片視為一行文字句子。 8 :將圖片視為一個『單字』。 9 :將圖像視為『環狀字』。 10 :將圖片視為一個『字母』。 參數不懂的沿用參考文章簡體中文翻譯\nPSM 參數詳細說明: https://pyimagesearch.com/2021/11/15/tesseract-page-segmentation-modes-psms-explained-how-to-improve-your-ocr-accuracy/\n辨識效果測試 執行畫面:\n簡易驗證碼:\n較複雜驗證碼: 登入系統驗證碼\n線條干擾誤判斷成 - 符號\n圖片預處理 / 提升辨識度 再來就是要測試一些更難辨識的照片跟訓練了\n官方文檔解釋: https://tesseract-ocr.github.io/tessdoc/ImproveQuality.html#image-processing\n每個Image都有不同的標記, 需要乾淨能夠辨識標記的物件\nOpenCV 套件預先處理圖片\n辨識原則:\n至少為300 DPI為最佳 白底黑字,字體清晰 去噪,灰度图二值化 轉灰度原理:\nmode 取值可為下列幾種\n其中會用到的為 1 . L\nimgry.mode binary.mode\n1 2 3 4 5 6 7 8 9 · 1 (1-bit pixels, black and white, stored with one pixel per byte) · L (8-bit pixels, black and white) · P (8-bit pixels, mapped to any other mode using a colour palette) · RGB (3x8-bit pixels, true colour) · RGBA (4x8-bit pixels, true colour with transparency mask) · CMYK (4x8-bit pixels, colour separation) · YCbCr (3x8-bit pixels, colour video format) · I (32-bit signed integer pixels) · F (32-bit floating point pixels) opencv :\nhttps://lufor129.medium.com/pytesseract-辨識圖片中的文字-b1024f678fac\n常見錯誤: https://zhuanlan.zhihu.com/p/35590364\n套件記得載 1 2 3 4 5 6 7 # opencv 方式讀取圖檔轉灰度 imgcv = cv2.imread(\u0026#39;CaptchaImage.jpg\u0026#39;, cv2.IMREAD_GRAYSCALE) type(imgcv) cv2.imshow(\u0026#39;CaptchaImage\u0026#39;, imgcv) cv2.imwrite(\u0026#39;output/gray05.tiff\u0026#39;, imgcv) cv2.waitKey(0) cv2.destroyAllWindows() cv2.threshold 常用參數\ncv2.THRESH_BINARY(黑白兩值) cv2.THRESH_BINARY_INV(黑白二值反轉) cv2.THRESH_TRUNC (得到的圖像為多像素值) 尚待釐清 多像素值定義 灰度轉二值化(去噪):\n1 2 3 4 5 6 7 8 9 10 11 print \u0026#39;binary mode: \u0026#39;, binary.mode print binary.getpixel((0, 0)) co = binary.getcolors() print co #輸出 ---------------------------------------- binary mode: 1 0 #左上角為黑色 [(503, 0), (1993, 1)] 共有幾個黑與白像素點 判斷文字位置:\nhttps://youtu.be/6DjFscX4I_c?t=502\n訓練文字辨識,手動標註\njTessBoxEditor / VietOCR-4.5 手動標記|工人智慧\n下載位置:\nhttps://sourceforge.net/projects/vietocr/\n軟體資訊:\n使用語法總覽 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Usage: tesseract --help | --help-extra | --version tesseract --list-langs tesseract imagename outputbase [options...] [configfile...] OCR options: -l LANG[+LANG] Specify language(s) used for OCR. NOTE: These options must occur before any configfile. Single options: --help Show this help message. --help-extra Show extra help for advanced users. --version Show version information. --list-langs List available languages for tesseract engine. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Page segmentation modes: 0 Orientation and script detection (OSD) only. 1 Automatic page segmentation with OSD. 2 Automatic page segmentation, but no OSD, or OCR. (not implemented) 3 Fully automatic page segmentation, but no OSD. (Default) 4 Assume a single column of text of variable sizes. 5 Assume a single uniform block of vertically aligned text. 6 Assume a single uniform block of text. 7 Treat the image as a single text line. 8 Treat the image as a single word. 9 Treat the image as a single word in a circle. 10 Treat the image as a single character. 11 Sparse text. Find as much text as possible in no particular order. 12 Sparse text with OSD. 13 Raw line. Treat the image as a single text line, bypassing hacks that are Tesseract-specific. OCR Engine modes: 0 Legacy engine only. 1 Neural nets LSTM engine only. 2 Legacy + LSTM engines. 3 Default, based on what is available. Single options: -h, --help Show minimal help message. --help-extra Show extra help for advanced users. --help-psm Show page segmentation modes. --help-oem Show OCR Engine modes. -v, --version Show version information. --list-langs List available languages for tesseract engine. --print-parameters Print tesseract parameters. 未完待續,下方整理了一些相關文章,有興趣的同學可以參考。\n參考文章 簡單的製作驗證碼範例: https://ithelp.ithome.com.tw/articles/10159457\n[ 實用心得 ] Tesseract-OCR\nhttps://medium.com/@b98606021/實用心得-tesseract-ocr\nmac上文字识别(Tesseract-OCR for mac )\nhttps://blog.csdn.net/u010670689/article/details/78374623\nImage Processing in OpenCV\nImage Thresholding\n使用Tesseract训练lang文件并OCR识别集装箱号\nhttps://www.jianshu.com/p/5f847d8089ce\nTesseract-OCR 實現光學漢字識別(語言包解釋)\nhttps://www.itread01.com/content/1577329506.html\npython 读取、保存、二值化、灰度化图片+opencv处理图片的方法\nhttps://blog.csdn.net/JohinieLi/article/details/69389980\n設置限定詞(會降低識別率)\ntessdata/configs/digits 沒找到\nhttps://blog.csdn.net/ADebugMan/article/details/100592200\n檔案放置區: Tesseract-OCR 辨識& 驗證碼分析及實作\n圖片辨識結合自動回覆機器人 此為大學專案進行的學習成果\n如有發現任何參數錯誤,歡迎留言通知\n","date":"2023-10-27T10:37:31+08:00","image":"https://i.imgur.com/ORSlEI8.png","permalink":"https://wastu01.github.io/article/python-tesseract-ocr/","title":"Tesseract 使用 安裝 訓練"},{"content":"新竹縣 芎林 木屋 寵物友善\n新竹縣芎林柴木屋咖啡 寵物友善/景觀餐廳 地理位置位處飛鳳山旁邊的一個小山丘上,徒中會經過一家餐廳橘子碰\n入口處會看到明顯的標誌,下坡後有個小小停車場可停放車輛\n店內有親切的店狗阿柴Charmy,還有新來的店貓咪咪 Mimi\n小木屋 小木屋擺設著寵物為主題的作品跟裝飾 🐶 💡 🐱\n暖色調的小木屋,以及很親人的柴犬\n座位採用日式榻榻米風格,為開放式廚房,窗戶可以遠眺風景 ⛰️\n室外也有座位以及躺椅供人休憩\n菜單 每日提供限量特餐\n當日用餐提供的是\n・紅酒燉牛肉 ・三杯雞 ・梅干燉肉 ・紅咖哩輕食餐(售完)\n特餐皆可加價升級沙拉\n梅乾燉肉套餐\n兩份雞翅 肉質偏硬,微辣,可搭配飲品解膩\n咖啡飲品\n提供免費 wifi ,提供洗手間可以盥洗\n店內寵物 柴犬 ℂ𝕙𝕒𝕣𝕞𝕪 \u0026amp; 橘貓 𝕄𝕚𝕞𝕚\n門口附有秘境地圖:\n在一個轉彎處有個寫前往飛鳳山的小牌子,往上走會看到有聖誕燈泡一路往上延伸\n中途的指示牌,若想繼續前往步行,須留意店家營業時間,大門會上鎖\n離開前發現有一台電動 youbike\nRespect !\n店面資訊 地址:新竹縣芎林鄉永興村王爺坑81-3號\n營業時間為每日早上十點至下午五點,週二、週三為公休\n付款方式:付現 / Line Pay 電子支付\n官方網站:https://shibaloghouse.ego.tw\n粉絲專頁:https://www.facebook.com/shibaloghouse\n最新資訊以官方為主。\n空拍畫面 ","date":"2023-10-21T15:53:06+08:00","image":"https://wastu01.github.io/article/shibaloghouse-caffe-hsinchucity/shibaloghouse-caffe-cover_hu16588719778707105942.jpg","permalink":"https://wastu01.github.io/article/shibaloghouse-caffe-hsinchucity/","title":"新竹縣芎林柴木屋咖啡 寵物友善/景觀餐廳"},{"content":"Adobe Firefly 文字生成圖片效果 llllasd\n使用軟體:adoobe firelfy\u0026mdash;AI 工具\n動機:年初申請到 Adobe firefly 文字生成圖片的前期測試用戶,實測效果如何\n最新 Adobe Firefly 官方消息: https://helpx.adobe.com/firefly/using/whats-new.html\n1014 更新: Firefly image 2.0 / 以及 Adobe Illustrator 內建 AI 向量圖形\n0523 開放所有人使用 需登入\n0512 firefly beta 1.3 版本更新 可收藏生成圖片\n參數設定 2023.03.30有公開的 (目前已內建成選項)\n1 2 [outline-strength=80] 1-100 adjusts the creativity on text effects. Higher number will give you a tighter fit to the outline. Lower numbers will give you the more swirly effects. [avoid=green, cars] Adobe Firefly Discord 社群:https://discord.com/invite/adobefirefly\nAdobe 03/29 更新內容:https://blog.adobe.com/en/publish/2023/03/29/adobe-firefly-beta-updates\n文字生成圖片 Prompt 小技巧:增加多一點細節\nAI影片生成參考圖片\n畫面展示 中國特色 街景 台灣演員街拍 貓咪開太空船 室內植栽 大棕熊送蘋果 圖片構想參考自:用AI做繪本: 大棕熊送蘋果\n狗狗太空人 Prompt :\na cute shiba inu astronaut in a red and white space suit, yellow background, digital art\n貓貓開車 Prompt :\na cat driving 橘貓 貓爪握方向盤 鏡頭:經過 側臉\n華人彈古箏 Prompt :\na Chinese man play Guzheng\nDALL・E 有正確顯示樂器 adobe firefly 顯示的是吉他\n螢火蟲森林 Prompt :\nDigital painting of a beautiful forest with shining lights, a calm pond and mist and fireflies in studio ghibli style\n室內植栽 Prompt :\nDigital painting of a beautiful forest with shining lights, a calm pond and mist and fireflies in studio ghibli style\n未來感城市 Prompt :\na future cyberpunk city art\n在咖啡廳寫文章的女記者 Prompt :\nA female journalist writing articles typing on a computer in a coffee shop surrounded by other people working\nprompt 來自 Midjourney 製作好的封面圖\nAdobe Firefly 文字效果: OpenAI ChatGPT 生成提示詞\nAdobe Firefly 生成圖片\nRunwayml Gen1 生成影片\n結合三種不同的 AI 生成工具製作的效果:\n歡迎點擊前往觀看更多\nMy HackMD : https://hackmd.io/@DCT\nMy Medium : https://medium.com/mr-wang\nMy Blog : https://wastu01.github.io/\n","date":"2023-10-18T09:47:30+08:00","image":"https://wastu01.github.io/article/adobe-firefly-text-to-image/adobe-firefly-text-to-image_hu6160066669116791463.jpg","permalink":"https://wastu01.github.io/article/adobe-firefly-text-to-image/","title":"Adobe Firefly 文字生成圖片 實測"},{"content":"Canva 魔法媒體工具 文字生成影片 Runway Canva 推出新的影片生成工具: Magic Studio\n將 Gen-2 整合到 Canva 的 Magic Media App\n允許使用者在欄位中輸入文字生成長達 4 秒的影片\n目前僅限 Canvas 付費用戶使用\n以下是文件示範展示:\n魔法文案工具 一鍵生成文案 AI 生成設計的文案 文案舉例說明並附上AI生成影片 canva 新功能實測簡報展示: 使用 Canva 設計製作 影片主題:使用 Canva 文字生成影片 歡迎點擊前往觀看更多\nMy HackMD : https://hackmd.io/@DCT\nMy Medium : https://medium.com/mr-wang\nMy Blog : https://wastu01.github.io/\n","date":"2023-10-16T00:00:00Z","image":"https://wastu01.github.io/article/canva-magic/Canva-text-to-video_hu16655593140200098276.png","permalink":"https://wastu01.github.io/article/canva-magic/","title":"Canva 魔法媒體工具 文字生成影片 Runway"},{"content":" OpenAI ChatGPT 圖片生成/分析圖片 實測 實際用 GPT-4 AI 生成圖片/解析圖片資訊\n另外測試 ChatGPT 能否分析圖片並生成程式碼完成網頁設計。\n想講結論:可以,但需要花時間來回修正想要的結果\nhttps://github.com/wastu01/ChatGPT4-Generate-Html\nDALL-E 3 文字生成圖片 提示詞:\n1 Cinematic render of an intense action scene in a city at night, featuring a dark-colored vintage Ford Mustang speeding on a damp road, surrounded by fiery explosions, haze, and dramatic teal \u0026amp; orange lighting. 效果圖:\n提示詞:生成一張 1280x640 比例的 social preview 有關於 網頁版本 Apple 風格的計算機,圖片仿造蘋果公司的風格\n1 Digital representation of a web calculator, imbued with Apple design principles, juxtaposed against a background evocative of Apple renowned product introduction visuals. 效果圖:\n分析圖片 這是一個計算器的界面設計。以下是該界面的特點:\n顏色配色: 主要以深色背景為主,搭配明亮的按鈕顏色。 視窗左上角: 有三個顏色點,通常表示應用程式的最小化、最大化和關閉按鈕。 數字按鈕: 從0到9,供使用者輸入數字。 運算子按鈕: 有加(+)、減(-)、乘(x)、除(÷)以及其他功能鍵,如正負號切換(+/-)、百分比(%)等。 控制按鈕: 有「AC」按鈕,通常用於清除輸入或結果。 螢幕顯示: 目前為0,這是計算器的初始值。 整體來說,這個設計相當簡潔,主要功能都能夠快速識別,應該很容易上手使用。\n製作網頁 實測結果,要一次全部完成較進階任務偶爾會卡住,分批處理會比較好\n請幫我以此為樣式製作出網頁,並能夠點擊進行運算\n1.一個外觀類似Apple計算機的HTML介面。\n2.使用CSS來設計計算機的外觀,使其看起來像Apple的計算機。\n3.使用JavaScript處理按鈕點擊事件以實現計算功能,並將計算結果顯示在計算機螢幕上。\n4.包括外部的CSS和JavaScript文件,以確保代碼結構整潔。\n我們先處理外觀介面的部分,計算的功能稍待再執行\niOS-Calculator-Web\n網頁版計算機,模仿 iOS裝置計算機外觀的介面,使用HTML與ChatGPT製作。\nMy HackMD : https://hackmd.io/@DCT\nMy Medium : https://medium.com/mr-wang\nMy Blog : https://wastu01.github.io/\n","date":"2023-10-15T00:00:00Z","image":"https://wastu01.github.io/article/chatgpt-dalle3-text-to-image/apple_hu5976346505076266259.png","permalink":"https://wastu01.github.io/article/chatgpt-dalle3-text-to-image/","title":"OpenAI ChatGPT 圖片生成/分析圖片 實測"},{"content":"地點 303新竹縣湖口鄉綠藻 - 茶香步道\n新聞報導 空拍畫面 湖口茶香步道 ","date":"2023-10-06T00:00:00Z","image":"https://wastu01.github.io/article/aerial-photography-hsinchucity/img/LINE_ALBUM_%E6%B9%96%E5%8F%A3%E8%8C%B6%E9%A6%99%E6%AD%A5%E9%81%93_231006_8_hu13520419670805601683.jpg","permalink":"https://wastu01.github.io/article/aerial-photography-hsinchucity/","title":"2023-10-06-新竹湖口後山祕境-茶香步道"},{"content":" 🔝 3D建模 Blender\nhttps://www.youtube.com/@11305205219/videos\nBehance : https://www.behance.net/gallery/96577587/_ 3DSmax\nBehance : https://www.behance.net/gallery/113360331/Fan-Modeling\n2D動畫 愛死機器人 Remake 校園防毒守門員-國中篇「飲料的誘惑」| 教育部國民及學前教育署 ","date":"2023-10-03T08:50:29+08:00","image":"https://wastu01.github.io/article/my-digital-works-in-youtube/youtube-channel_hu11696109911142002400.png","permalink":"https://wastu01.github.io/article/my-digital-works-in-youtube/","title":"多媒體創作區"},{"content":"Python + PM25 + AQI\n此篇是透過 Python 爬取 AQI 空氣品質指標的資料,再篩選出我們熟悉的細懸浮微粒 PM2.5數據儲存成檔案。\n2024 可搭配 ChatGPT/ClaudeAI 提問如何用 Python 爬取 PM2.5,(或是使用 AutoGPT 設定明確目標執行爬蟲),剩下來的時間了解資料結構該如何轉換,思考如何應用在日常生活中,例如用折線圖呈現產出一天內空氣品質變化,結合 IFTTT 超過多少會提醒用戶之類的,並將資料搜集彙整顯示趨勢圖,以供後續研究。\n2023-0826 更新:因工作緣故收到國家科學及技術委員會來函,配合本署組改為環境部,本署環境資料關放平臺、環境資源資料交換平臺及環境資源資料交換重構平臺自112年8月22日起變更網址及應用程式介面( Application ProgrammingInterface, API),各平臺API維持新、舊API URL平行服務三個月,請於112年11月22日期限前內完成 API URL 更新。\n課堂作業:透過 Pythob 爬取空氣品質 PM2.5 數據,練習如何抓取政府資料開放平台公開資料,解析 JSON 檔案並做檔案處理。\n資料型態 我們資料取得的是 JSON 格式\nrequests 獲取資料後將 Json 解析成字典 Dictionary\n檢視 Json 的擴充工具 (chrome): https://chrome.google.com/webstore/detail/jsonview/\n常見的資料格式 : JSON、CSV、XML\n可參考此篇說明:認識 Web API、HTTP 和 JSON 資料交換格式\n資訊擷取來源 https://data.gov.tw/ 後來發現有更好用 最新試行版(已正式上架)的\n環保署環境資料開放平台開放資料 API\n註冊 API Key 後可以篩選更多參數來撈資料\n要解析資料的來源網址結構如下:\n每小時提供各測站之空氣品質指標(AQI)\nhttps://data.epa.gov.tw/api/v1/aqx_p_432?offset=0\u0026amp;limit=80\u0026amp;api_key=https://youtu.be/dQw4w9WgXcQ 資料集名稱先記好比較快找到\n網站提供的註冊 API 使用說明: https://data.moenv.gov.tw/paradigm\n也提供了手冊講解如何使用參數,Python 程式範例可供參考\n( API 網址記得更換到最新版本)\n實作過程 1 2 3 4 5 6 7 8 9 10 import requests aqi_url = \u0026#34;https://data.epa.gov.tw/api/v1/aqx_p_432?offset=0\u0026amp;limit=80\u0026amp;api_key=自行註冊\u0026#34; response = requests.get(aqi_url) aqi = response.json()[\u0026#39;records\u0026#39;] print(response.status_code) ### 200 正常回傳 ### 404 回傳錯誤 print(type(response)) print(type(aqi)) 資料結構轉換說明 整個流程:request \u0026ndash;\u0026gt; get json \u0026ndash;\u0026gt; convert to list \u0026mdash;\u0026gt; dict \u0026ndash;\u0026gt; key get value\nrequest 獲得資料,用 json() 方法,將 JSON 格式的資料的資料轉成 Python 可以操作的資料型態『字典』,再從 key (record) 取得我們想要的數據 (value) 。\n資料結構如下 :\n1 2 key = \u0026#34;record\u0026#34; value = [{\u0026#34;sitename\u0026#34;:\u0026#34;各縣市\u0026#34;,\u0026#34;pm2.5\u0026#34;:\u0026#34;10\u0026#34;,其他數據},{同樣格式}] value (aqi) 最外層是 list 資料型態,裡面每一個元素是 list 資料型態,我們再透過 key (sitename,pm2.5) 取 value (各縣市,10)。\n*這也代表 list 裡面可以放入不同類型的物件,如 dict、str、int 等。\n讀取資料的實作過程可以搭配\n1 2 print(type(data)) print(dir(requests)) 了解有什麼方法可以用,資料型態是什麼\n資料輸出 檔案處理 “r” 唯讀模式\n“w” 寫入模式(覆寫)\n“a” 寫入模式(續寫)\nwith open(\u0026quot;data_pm25.txt\u0026quot;, \u0026quot;w\u0026quot;, encoding=\u0026quot;utf-8\u0026quot;) as file:\n再用 for 把資料寫入 file 當中\n1 2 3 f = open(\u0026#39;file.txt\u0026#39;, \u0026#39;w\u0026#39;) f.write(\u0026#34;file-write\u0026#34;) f.close() 檔案讀寫,rwa\u0026quot;+\u0026quot; 模式\n可以都測試看看\nw+ 先讀再寫會:?\na+ 先寫再讀會:?\n進階思考:\nQ : 如何儲存連續的紀錄?\n參考資料 輕鬆學習 Python | 資料分析\n輕鬆學習 Python:透過 API 擷取網站資料\nPython 初學第十二講—檔案處理\n補充:ChatGPT 指令大全 https://www.explainthis.io/zh-hant/chatgpt\n本篇文章自 index.coderbridge 平台移轉此處\n並重新將資料型態的部分重新說明,補完當初沒有理解清楚的部分。\n","date":"2023-10-03T00:00:00Z","image":"https://wastu01.github.io/article/python-pm25-aqi-opendata/Air-Quality-Index-Data-Set-Introduction_hu8563379587031062915.png","permalink":"https://wastu01.github.io/article/python-pm25-aqi-opendata/","title":"Python-爬取空氣品質-PM2.5-AQI"}] \ No newline at end of file +[{"content":"小註記 + 重點!\n此篇為之前人工智慧課程發想的 Python 應用專題,因最近於職訓課程再次接觸 Python Pandas, Numpy,比較深入了解如何將文字、圖片數據做處理跟轉換,搭配大型語言模型輔助開發,將專案重新 Review \u0026amp; Rewrite。\n1.Pandas 資料處理排序\n2.Numpy 讀取圖片遮罩\n3.新增自定義圖片遮罩\n4.使用中研院的斷詞模型\n理想目標:擴大文本搜尋範圍,改善斷詞結果,在網頁前端直接生成文字雲,方便分享至社群平台。\n輸出結果:\n中文文字斷詞模型初期筆者採用 Jieba 簡體中文為主開發的模型,現在改用中研院開源的中文斷詞模型:\njieba 匯入模組 1 2 3 4 5 6 7 pip install pandas pip install GoogleNews pip install matplotlib pip install Pillow pip install numpy pip install scipy pip install wordcloud 參考資料 專案程式碼 ","date":"2024-09-29T19:00:00+08:00","image":"https://picsum.photos/800/600.webp?random=60742c9d","permalink":"https://wastu01.github.io/article/python-wordcloud-word/","title":"Python-WordCloud 文字雲視覺化應用 新聞關鍵字分析"},{"content":"金山街,坐落於新竹科學園區的旁邊,這條街道因其獨特的地理位置和特殊的客群,被稱為「新手村」。在這裡,餐廳輪轉率相當高,幾乎一個月就會有新店家,也許是因爲店面租金以及假日沒什麼人產生的特殊現象。\n金山街便利商店地圖:\n底下紀錄一些筆者覺得有趣/值得紀錄的店家\n金山一街 金山一街 Google Map\n決鬥學院卡片專賣店 https://maps.app.goo.gl/FgDFd2H7YF1T9G7s6\n金山二街 金山二街 Google Map\n金山三街 金山三街 Google Map\n新竹小飛豬空拍機 只有路過尚未進門參觀,店門口小小的招牌\n網站:https://flypig.cyberbiz.co/\n位置:新竹市東區金山三街6號\n金山五街 金山五街 Google Map\nbook11 寵物友善餐廳(已歇業) 位置不在主街,跟著老弟好奇進去 結果看了菜單:手邊的錢只夠喝一杯菊花茶 根據評論所述,目前並無營業。\n玩具人生 似乎是賣一番賞的店家,尚未進去參觀\n位置:新竹市東區金山五街12號\n金山六街 金山六街 Google Map\n小鮮肉湯包 販賣湯包、蒸餃,傳統台式料理\n自己付錢找錢,青菜種類多元:A菜 地瓜葉 胡瓜\u0026hellip;\n推薦餐點:蕃茄蛋花湯\n位置:新竹市東區金山六街28號\n福榮麵坊 清大退休教授經營的店面\n以前位置在金山另外一條街\n提供工作機會給需要幫助的孩子\n餐點沒有說到特別好吃\n但環境乾淨,下午兩點過後還沒吃午餐的選項之一\n位置:新竹市東區金山六街48號\n金山七街 金山七街 Google Map\n北側:\n朵安可DORANK-金山總店: 飲料滿特別的,推薦水果風味 有到台中一級戰區展店\n位置:新竹市東區金山七街16號\n香港大來燒臘-金山二代店: 販賣港式燒臘,總店位於南大路,初期用餐體驗還不錯,但配菜鮮少更換\nhttps://maps.app.goo.gl/1AQ3LAWiErJgEzdK6\n南側:\n曉芳泰式: 稀有老店,綠咖喱是偏水的那種\nhttps://maps.app.goo.gl/MEB4t7eDbQA9M7hS7\n素食園: 提供單點以及自助餐形式、內用附湯,口味清淡\n推薦餐點:藥膳麵線\nhttps://maps.app.goo.gl/j8Vs7J17zKcMfVUA9\n金山八街 Feed Burger 2.0 美式雜貨店 Feed Burger 2.0 美式雜貨店\n金山街特色餐廳,專賣美式漢堡\n環境比原來 1.0 的店面好很多\n人潮眾多時要等~~~等一下\n點了花生醬碎堅果 \u0026amp; 焦糖洋蔥 \u0026amp; 牛魔丸\n(漢堡皮/焦糖/漢堡肉/洋蔥/漢堡皮)\n雖然忙中有錯 但肉煎的不錯吃\n價格稍貴 但竹科人應該吃得起\n歷史:前身為八街麵食館\n可不可熟成紅茶 新竹金山店 (前身為 Bubble Tea 前前身為 日出茶太 ) https://maps.app.goo.gl/tPtVnwg7dZ3V21XRA\n蟬吃茶 天然茶飲-竹科店: 茶味十足,健康取向(類似曾經的水韻堂 https://ppt.cc/wJxO )\n2024 合約到期即將結束營業,另外在台北吳興街有展店\nhttps://maps.app.goo.gl/xjK3Nf9jvRXNSmrMA\n金山九街 金山九街 Google Map\n北側:\n發發新竹金山牧場 發發 新竹金山牧場\n官方網站:發發牧場\n2024/05/24 現在為一家以優格作為特色飲品的飲料店 發發牧場\n有內用空間 可電子支付 店員介紹詳細服務很好👍\n裝潢風格飲料包裝適合打卡拍照 價格偏貴 但竹科人應該可接受\n歷史軌跡:\n前身為圈圈微森\n前前身是某家賣焗烤的\n外面有鋼琴椅子可坐著等候\n南側:\n滿嘴拉麵 前身為大海拉麵(已搬去隔壁巷子轉角)\n整體裝潢沒有變動,多了自助飲料區,品項多了醬油口味\n京冠美食館 專賣鴨肉,便宜大碗,內用座位很多\n糰糰 早餐店 兩個女生經營的早餐店,有賣清粥瘦肉粥,紫米飯糰\nhttps://maps.app.goo.gl/GQPHKLtqhzvhEfoG7\n金山十街 蒸餃無雙 https://maps.app.goo.gl/Z4F92kNn9vE4yVzHA\n便宜大碗\n敲好食 https://maps.app.goo.gl/LumEc4GHQpkHUHrMA\n精緻料理,想象中此價格應該會配套餐\n店門口有賣地瓜球\n大海拉麵 麵條可以選粗細\n湯頭可以選濃淡\n原本店家在隔壁巷子的滿嘴拉麵,後來搬到轉角處\n(去過台中吃過拉麵,就覺得大海還好)\n粵萊叉燒舖 販售單人形式的叉燒,搭配美乃滋,份量適中,價格適中。\n位置:新竹市東區金山十街100號\n金山十一街 異國料理街\n此街道有大馬料理,韓式料理,泰式料理,文青料理,傳統台式\n金街傳統料理 炒飯/湯品 都還不錯\n七里川滾麵 很養生\n價格適中,竹科人可接受\nDaima 大馬南洋料理 較為道地的馬來西亞料理,販售肉骨茶、海南雞飯、娘惹糕\n口味用料跟初期有差異,但還是挺道地的,五顆星推薦\n位置:新竹市東區金山十一街37號\n泰速泰式料理 竹科店 相比其他異國街為新開的異國料理\n口味偏台式,價格平價,推薦綠咖哩\n金山十二街 金城蘭州牛肉拉麵 年輕師傅手打現桿拉麵,麵體有嚼勁\n淡淡的麵體味道,肉偏薄,份量小\n新開的店家 多多支持\n金山十三街 德記川味精緻麵典 價格中上,餐點份量偏小 推薦餐點:紹子皮蛋麵、牛肉麵、口水雞、小菜\n金山十五街 金山十六街 金山十七街 金山十八街 金山十九街 金山二十街 金山二十一街 金山二十二街 金山二十三街 金山二十五街 金山二十六街 金山二十七街 金山北一街 金山北二街 金山北三街 金山東一街 金山東二街 金山東三街 金山東街 其他 用漫畫講述理科工程師領域知識的創作者: 金山街文學社\n在地提供藝術創作空間的店家: 一五一六才藝創作工作坊\n金山街人文美食地圖: https://www.1516artstudio.com/2022/10/blog-post.html?lr=1\n金山街籃球場空拍紀錄:\n有許多店家尚未記載,不定期更新~\n","date":"2023-11-24T15:25:17+08:00","image":"https://wastu01.github.io/article/%E6%96%B0%E7%AB%B9%E9%87%91%E5%B1%B1%E8%A1%97%E6%96%B0%E6%89%8B%E6%9D%91%E9%9A%A8%E6%89%8B%E8%A8%98/Jingshan-street-map_hu5071829790574946726.png","permalink":"https://wastu01.github.io/article/%E6%96%B0%E7%AB%B9%E9%87%91%E5%B1%B1%E8%A1%97%E6%96%B0%E6%89%8B%E6%9D%91%E9%9A%A8%E6%89%8B%E8%A8%98/","title":"新竹金山街新手村隨手記"},{"content":"openai + chatgpt + gpts\nGPT = Good Personal Tool\n前情提要:\nOpenAI 最近推出了一項新功能 GPTs\n允許用戶根據自己的需求客製化 GPT 模型。\n這項功能目前(11/12)僅提供付費用戶開放使用\n此篇整理筆者製作以及覺得有趣的主題應用\n資訊主題 .NET 開發人員助手 https://chat.openai.com/g/g-CoQmELkAS-net-kai-fa-ren-yuan-zhu-shou\n針對經驗豐富的開發人員提供進階的 .NET 建議\n製作人: HUANG PAO HSI\nhttps://www.facebook.com/will.fans/\n網址閱讀助手 https://chat.openai.com/g/g-Rwn8vtRF2-wang-zhi-wen-jian-yue-du-zhu-shou\n製作人:sd0.tech https://www.facebook.com/yuhaooo.p\n中立批評 GPT https://chat.openai.com/g/g-S3rIhfQkr-zhong-li-pi-pan-gpt\n製作人:LU CHE YU https://www.facebook.com/joeylu0627\n新聞報導 GPT https://chat.openai.com/g/g-xLQFz72P8-xin-wen-bao-dao-gpt\n娛樂主題 RPG GPT 悲慘世界 RPG https://chat.openai.com/g/g-OSVW9rZqu-bei-can-shi-jie-rpg\n製作人:LU CHE YU https://www.facebook.com/joeylu0627\n設計主題 視覺成像GPT 才華洋溢的平面設計師 |By YIIN SHANG JYH\nhttps://chat.openai.com/g/g-qQzgIhqV7-shi-jue-cheng-xiang\n製作人:https://www.facebook.com/allanyiin\n設計靈感GPT https://chat.openai.com/g/g-2t4pST9p0-she-ji-ling-gan-gpt\nOpenAI 客製化GPT使用指南產生器 基本溝通原則 語言使用:請全程以繁體中文,台灣用語進行對談。 規則修改與優化:請幫我修改優化此___GPT,在既有的規則設定下進行修改。 時間管理:若是因為時間限制,請詢問用戶是否繼續等待或是先提供已經掌握的資訊。 主題限制:若是用戶提問不相關的主題,將拒絕回答並闡述我的角色設定。 進階互動原則 資訊準確性:確保所有提供的資訊都是準確且最新的。如果資訊來源有限或不確定,應明確告知用戶。 用戶隱私保護:尊重用戶隱私,不要求或儲存用戶的個人資訊。 內容適宜性:避免提供或傳播任何不適宜、冒犯性或不適合特定年齡群的內容。 互動態度:保持尊重和專業的態度,即使在處理複雜或敏感的問題時。 技術操作指南 功能使用:清楚指導用戶如何使用特定的GPT功能或命令。 錯誤處理:在面對錯誤或不理想的輸出時,提供指導和建議以協助用戶解決問題。 持續學習:鼓勵用戶提供回饋,以便不斷改進和優化GPT模型的表現。 ","date":"2023-11-12T03:33:42+08:00","image":"https://wastu01.github.io/article/openai-custom-gpts-collection/custome-chatgpt-gpts_hu16897564425675368955.png","permalink":"https://wastu01.github.io/article/openai-custom-gpts-collection/","title":"OpenAI ChatGPT 客製化聊天機器人 GPTs"},{"content":"前端 + CSS 樣式 + 模板 +\nCSS 樣式彙整-前端筆記 在學期間初學網頁設計整理的語法/好用工具\ncss reset\nhttps://meyerweb.com/eric/tools/css/reset/\ncss 優先順序\nhttps://www.oxxostudio.tw/articles/201405/css-specificity.html\nCodepen 線上編輯器:\nhttps://codepen.io/mrwang01/\n假圖假字圖片 假字、假圖產生器整理\nhttps://fakeimg.pl/\n1 2 \u0026lt;img src=\u0026#34;https://fakeimg.pl/350x200/ff0000,128/000,255\u0026#34;\u0026gt; \u0026lt;img src=\u0026#34;https://fakeimg.pl/寬x高/顏色(HEX 色碼),亮度/黑字,255\u0026#34;\u0026gt; 實際應用:\n模板的部分,可自行搜尋相關 Vscode 擴充套件\nHTML 模板 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 \u0026lt;!DOCTYPE html\u0026gt; \u0026lt;html lang=\u0026#34;en\u0026#34; \u0026gt; \u0026lt;head\u0026gt; \u0026lt;meta charset=\u0026#34;UTF-8\u0026#34;\u0026gt; \u0026lt;title\u0026gt;title\u0026lt;/title\u0026gt; \u0026lt;meta name=\u0026#34;viewport\u0026#34; content=\u0026#34;width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no\u0026#34;\u0026gt; \u0026lt;link rel=\u0026#34;stylesheet\u0026#34; href=\u0026#34;index.css\u0026#34;\u0026gt; //需創立 index.css \u0026lt;/head\u0026gt; \u0026lt;body\u0026gt; \u0026lt;div class=\u0026#34;style\u0026#34;\u0026gt; \u0026lt;h1\u0026gt;我是區塊元素\u0026lt;/h1\u0026gt; \u0026lt;/div\u0026gt; \u0026lt;/body\u0026gt; \u0026lt;script src=\u0026#34;index.js\u0026#34;\u0026gt;\u0026lt;/script\u0026gt; //需創立 index.js \u0026lt;/script\u0026gt; \u0026lt;/html\u0026gt; CSS模板 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 @import url(https://fonts.googleapis.com/earlyaccess/notosanstc.css); * { font-family: \u0026#34;Noto Sans TC\u0026#34;; } body { background-color: red; } html, body { display: flex; justify-content: center; align-items: center; } 字體單位設定 參考文章:一次搞懂 CSS 字體單位:px、em、rem 和 %\n( 作者還有很多實用前端技術文章 )\npx : 絕對單位 固定 pixel em : 相對單位 只跟根元素相乘 自己x祖先(或預設) rem: 相對單位 與該父元素相乘 自己x老爸x老爸的老爸 overflow 1 2 3 4 5 6 7 8 9 10 11 12 13 overflow: auto; //自動捲軸 //如果要顯示超出內容,,可以加上 title Attribute text-overflow: ellipsis; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; //只顯示三行 box-sizing:border-box; border-radius: border-radius: 左上 右上 右下 左下 ;\nHtml iframe frameborder=\u0026ldquo;0\u0026rdquo; ──不顯示邊框 frameborder=\u0026ldquo;1\u0026rdquo; ──要顯示邊框\nscrolling=\u0026ldquo;no\u0026rdquo; ──代表不顯示 scrolling=\u0026ldquo;auto\u0026rdquo; ──則代表根據網頁大小自動顯示。\nSVG Icons 編輯模式可查看原始程式碼\nOpen source free SVG icons\nIcon to Font IcoMoon──將icon轉成Font的平台\nhttps://icomoon.io/app/#/select\nButton 1.基本按鈕樣式\nSee the Pen CSS-Button樣式 by mrwang01 (@mrwang01) on CodePen. 2.完美的按鈕並不存ㄗ\u0026hellip;\nSee the Pen CSS Tricks button style by Noel Peña (@noelpena) on CodePen. button(單純按鈕)、reset(清空表單)、submit(送出表單)\n1 2 3 4 5 6 7 \u0026lt;input type=\u0026#34;button\u0026#34; value=\u0026#34;按鈕值\u0026#34; name=\u0026#34;按鈕名稱\u0026#34; style=\u0026#34;按鈕樣式\u0026#34;\u0026gt; input{ border:0; color:#fff; background-color:#003C9D; border-radius:10px;} 大小寫轉換 1 2 3 \u0026lt;p style=\u0026#34;text-transform:uppercase;\u0026#34;\u0026gt;Ework Design\u0026lt;/p\u0026gt; \u0026lt;p style=\u0026#34;text-transform:lowercase;\u0026#34;\u0026gt;Ework Design\u0026lt;/p\u0026gt; \u0026lt;p style=\u0026#34;text-transform:capitalize;\u0026#34;\u0026gt;ework design\u0026lt;/p\u0026gt; \u0026lt; dl \u0026gt; \u0026lt; dt \u0026gt; \u0026lt; dd \u0026gt; 1 2 3 4 5 6 \u0026lt;dl\u0026gt; \u0026lt;dt\u0026gt;項目標題一\u0026lt;/dt\u0026gt; \u0026lt;dd\u0026gt;這裡是項目敘述一 ...\u0026lt;/dd\u0026gt; \u0026lt;dt\u0026gt;項目標題二\u0026lt;/dt\u0026gt; \u0026lt;dd\u0026gt;這裡是項目敘述二 ...\u0026lt;/dd\u0026gt; \u0026lt;/dl\u0026gt; 垂直置中 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1. display:flex; align-items:center;(垂直置中) justify-content:center;(水平置中) 2. display:table-cell; /*假表格*/ 3. transform:translateY(-50%); /*子元素加 position:relative*/ /*CSS3位移*/ 4. calc 動態計算(算數學) 課堂老師提起的 參考文章:\nhttps://www.oxxostudio.tw/articles/201408/css-vertical-align.html\nhttps://www.oxxostudio.tw/articles/201502/css-vertical-align-7methods.html\nInput 美化 1 2 3 4 5 6 7 8 9 10 input[type=\u0026#34;text\u0026#34;] { padding:9px 35px; border:3px black solid; cursor:pointer; -webkit-border-radius: 5px; border-radius: 5px; } flexbox 詳細原理:圖解:CSS Flex 屬性一點也不難\njustify-content 主軸對齊 主軸線預設左到右\n圖片參考:\nCSS3的flexbox版面配置-flex container(容器)可用的屬性\n錨點偽類 以:為開頭,方便精準控制\n1 2 hover 要在 link visted 之後 active 要在 hover之後 -child first-child:第一個子元素 last-child:最後一個子元素 nth-child(數字):第幾個子元素 nth-child(2n):挑出偶數的元素(2的倍數) nth-child(2n+1):挑出奇數的元素 nth-last-child(數字):從後面數來第幾個子元素 only-child:只有一個子元素 p\u0026gt;span : \u0026lt;p\u0026gt; 中的第一個 \u0026lt;span\u0026gt;\n其他變化一樣規則\n學習資源: Day 02 HTML/CSS 點擊超連結會經歷的偽類選取器(Pseudo-classes)\n偽元素 Pseudo-elements ::before ::after e.g 滑鼠滑過(hover)改變顏色可用\n1 2 3 .xxx:hover::before{ background-color:#7f7f7f; } 詳細參數設定: CSS 偽元素 ( before 與 after )\nHover 圖床不見了 imgur 上傳的 mp4\nhttps://i.imgur.com/CRfi2St.mp4\n按鈕 hover 樣式:\n用 pug sass 製作的按鈕範例,系上學長製作的範例\nhttps://codepen.io/mrwang01/pen/VRaWvM\n偽元素+hover+animation 極致應用:\nhttps://codepen.io/argyleink/pen/poEjvpd\nSee the Pen CSS mouse-out transition effect by Adam Argyle (@argyleink) on CodePen. calc() 數值運算 calc() 用來定位該元素\n1 2 width: calc(50% + 8px) /* 50% 的寬度 + 8px */ 置中方式之一\n1 2 3 4 .text { position: absolute; left: calc(40px); width: calc(100% - 80px); 但是記得要加上或扣除 border、padding 的部分 算數學\nRWD-Tablet 後台電商購物清單 簡潔的表單設計 https://codepen.io/AllThingsSmitty/pen/MyqmdM 多樣商品列表清單 https://codepen.io/pumii/pen/WNxvNGg 客製化 web fonts icon 實習期間修改 bootstrap 模版發現到的東西 https://icomoon.io/app/#/select 資料來源:自己做web fonts icons\n圖片輪播 Carousel bootstrap 元件 https://bootstrap5.hexschool.com/docs/5.0/components/carousel/\njQuery - Owl Carousel 教學文章: https://ithelp.ithome.com.tw/articles/10247358\n基本款: https://codepen.io/pumii/pen/yLJeZvg\n好看的輪播圖片樣式: https://codepen.io/fadzrinmadu/pen/RwryOVN\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 loop: true, // 循環播放 margin: 10, // 外距 10px nav: true, // 顯示點點 responsive: { 0: { items: 1 // 螢幕大小為 0~600 顯示 1 個項目 }, 600: { items: 3 // 螢幕大小為 600~1000 顯示 3 個項目 }, 1000: { items: 5 // 螢幕大小為 1000 以上 顯示 5 個項目 } } 陰影 box-shadow 好看的陰影\nSee the Pen Material Design Box Shadows by Samuel Thornton (@sdthornton) on CodePen. https://codepen.io/sdthornton/pen/wBZdXq\n陰影做動畫 酷炫的功能 實用性未知\nhttps://ithelp.ithome.com.tw/articles/10220686\nSee the Pen demo-box-shadow by yachen (@yachen) on CodePen. 此篇文章原自寫於 Hackmd 平台,轉移至此的文章\n","date":"2023-11-07T08:04:28+08:00","image":"https://wastu01.github.io/article/html-css-style-template/css-style-html_hu10382837006656481234.png","permalink":"https://wastu01.github.io/article/html-css-style-template/","title":"CSS 樣式彙整-前端筆記"},{"content":"AI 生成提示詞彙整|咒語關鍵字\nRunwayml Gen1 / Gen2 文字/圖片生成影片\n1 Red Lamborghini driving at high speed in the tunnel, night, Rainy Day, Telephoto Lens 影片效果:\n1 Talking to camera, man, American style, --upscale 影片效果:\n1 space suit walking on mars, university background, chaos, lava 影片效果:\n1 @Gen-2 Fast Cinematic Tracking shot of a fast driving red vintage ford mustang driving down a wet road, explosions and fire, intense action city scene, haze, professional teal \u0026amp; orange color grading, epic cinematic lighting, nighttime, Shot on Alexa Mini, Cookie S4/i --i --u --c 12 影片效果:\nAdobe Firefly 文字材質提示詞 1 2 3 文字+在白色背景上用黑色無襯線字型製作,中間有一個小貓的輪廓 Text+made with black sans-serif font on a white background, with a small cat silhouette in the center 點我看更多貓咪 文字生成圖片提示詞 1 2 3 4 5 6 7 8 9 Firefly_future+street, robot architecture, minimalistic, abstract, mist, vector, flat, unreal engine, by jewel tones, painting style, morning, fog_photo,wide_angle,concept_art_24964 Firefly_Asia,+Taiwan, street, motorcycle, architecture, minimalistic, abstract, mist, vector, flat, unreal engine, by jewel tones, painting style, morning, fog, blue and grey, 4k_art,low_lighting,hyper_realistic,3d_36809 prompt 參考來源: [https://twitter.com/ciguleva](https://twitter.com/ciguleva) 城市街景 台灣 日本 機器人\n各國風格街景概念圖\n汽車 電影鏡頭 調色 城市\n1 Firefly_explosions,+fire, intense action city scene, haze, professional teal, color grading, epic cinematic lighting, nighttime, Shot on Audi race car, Cookie S4_I, Fast Cinematic Tracking shot of a fast driving gray vintage ford mustang driving Midjourney Stable Diffusion 文字生成圖像\n1 2 3 4 5 6 7 青花瓷 parameters shukezouma, negative space, , shuimobysim, \u0026lt;lora:shukezouma_v1_1:0.8\u0026gt;, portrait of a woman standing, A person waiting for their love, admiring the beauty of Chinese blue and white porcelain. standing in a dimly lit room, gazing at a stunning piece of white porcelain on display. a room decorate with antique chinese furniture, atmosphere is tranquil and peaceful. detailed porcelain piece, a pure white background on blue designs, a mesmerizing eyes. a illustration that mimics traditional chinese brushwork, with precise lines and bold strokes. detailed of the porcelain and the person\u0026#39;s facial expression. Negative prompt: (worst quality:2), (low quality:2), (normal quality:2), lowres, normal quality, skin spots, acnes, skin blemishes, age spot, glans, (watermark:2), Steps: 22, Sampler: DPM++ SDE Karras, CFG scale: 5, Seed: 3358592551, Size: 512x768, Model hash: f2511737a, Model: chilloutmix ","date":"2023-10-28T22:56:02+08:00","image":"https://wastu01.github.io/article/ai-text-prompts-all-in-one/firefly-aigc_hu1453199177544856750.jpg","permalink":"https://wastu01.github.io/article/ai-text-prompts-all-in-one/","title":"AI 生成提示詞彙整|咒語關鍵字"},{"content":"python tessract ocr 辨識文字\nTesseract 使用&安裝&訓練 簡單驗證碼去噪 灰度二值化 無意間找到網址是固定的 教育部某平台之簡易驗證碼\n雖然可以爬好幾10xxx張,但是看了資訊安全政策好像會被 ban 所以弄了一個驗證碼產生器,自製訓練庫,好處是可自定義演算法,本機端即可儲存圖片。\n實際操作畫面如下:\n\u0026mdash; 工商服務板塊 \u0026mdash;\n人工智慧課堂企劃報告,老師說明 OCR 這個目前由 Google 維護的識別引擎,用途為辨識掃描的文件/圖片中的文字,提供實務上業界的應用,掃描健檢報告數據,將數據存入資料庫。\n我們這組的想法是應用於農民可拍照上傳產品外包裝編號查看農藥用途。\n實做起來遇到一些問題微調操作\n所以做個紀錄有了這篇筆記整理 📝\n安裝 Tessract / 語言包 安裝環境: MacOS\nHomebrew 安裝\n1 homebrew install tesseract https://formulae.brew.sh/formula/tesseract\n1 homebrew install tesseract-lang https://formulae.brew.sh/formula/tesseract-lang\n語言包一次打包 / 需要的再匯入\n位置大概是這邊:/usr/local/Cellar/tesseract/4.x/share/tessdata\n編譯安裝問題 1 Error: invalid option: --with-training-tools 要安裝訓練模型時,發現 tesseract 最新4.x版本 homebrew 沒有訓練模型相關指令\n撰寫文章當下根據網路文章 找到了解決方法需自行編譯 build,make install\n參考下列文章(感謝文章作者)\nhttps://juejin.im/post/6844904097863188487\n可下載 python 的相關模組 1 2 3 pip install pillow pip install pytesseract 詳細教學:\nhttps://lufor129.medium.com/pytesseract-辨識圖片中的文字-b1024f678fac\nhttps://blog.csdn.net/huitailangyz/article/details/80390090\n查看安裝版本 1 2 3 4 5 6 7 8 tesseract 4.1.1 leptonica-1.80.0 libgif 5.2.1 : libjpeg 9d : libpng 1.6.37 : libtiff 4.1.0 : zlib 1.2.11 : libwebp 1.1.0 : libopenjp2 2.3.1 Found AVX2 Found AVX Found FMA Found SSE 參數設定 列出可使用的語言包\n1 tesseract --list-langs chi_tra 繁體\nchi_tra_vert 繁體,直排\n-l 辨識語言 / 預設是英文 default \u0026ldquo;eng\u0026rdquo;\n設定圖片辨識引擎\n\u0026ndash;oem : OCR Engine modes, 演算法類型 / 目前沒了解這塊用預設 1 2 3 4 5 6 7 tesseract --help-oem OCR Engine modes: 0 Legacy engine only. 1 Neural nets LSTM engine only. 2 Legacy + LSTM engines. 3 Default, based on what is available. 參考文章解釋:\n为了识别包含单个字符的图像,我们通常使用卷积神经网络(CNN)。 任意长度的文本是一系列字符,这类问题可以通过RNNs解决,LSTM是RNN的一种常用形式\nPSM 判別語句類型模式 \u0026ndash;psm : 判別語句類型模式 / 大陸翻譯:自动页面分割模式 常用說明\n0:定向脚本监测(OSD) 1: 使用OSD自动分页 2 :自动分页,但是不使用OSD或OCR 3 :全自动分页,但是没有使用OSD(默认) 4 :假设可变大小的一个文本列。 5 :假设垂直对齐文本的单个统一块。 6 :假设一个统一的文本块。 7 :將圖片視為一行文字句子。 8 :將圖片視為一個『單字』。 9 :將圖像視為『環狀字』。 10 :將圖片視為一個『字母』。 參數不懂的沿用參考文章簡體中文翻譯\nPSM 參數詳細說明: https://pyimagesearch.com/2021/11/15/tesseract-page-segmentation-modes-psms-explained-how-to-improve-your-ocr-accuracy/\n辨識效果測試 執行畫面:\n簡易驗證碼:\n較複雜驗證碼: 登入系統驗證碼\n線條干擾誤判斷成 - 符號\n圖片預處理 / 提升辨識度 再來就是要測試一些更難辨識的照片跟訓練了\n官方文檔解釋: https://tesseract-ocr.github.io/tessdoc/ImproveQuality.html#image-processing\n每個Image都有不同的標記, 需要乾淨能夠辨識標記的物件\nOpenCV 套件預先處理圖片\n辨識原則:\n至少為300 DPI為最佳 白底黑字,字體清晰 去噪,灰度图二值化 轉灰度原理:\nmode 取值可為下列幾種\n其中會用到的為 1 . L\nimgry.mode binary.mode\n1 2 3 4 5 6 7 8 9 · 1 (1-bit pixels, black and white, stored with one pixel per byte) · L (8-bit pixels, black and white) · P (8-bit pixels, mapped to any other mode using a colour palette) · RGB (3x8-bit pixels, true colour) · RGBA (4x8-bit pixels, true colour with transparency mask) · CMYK (4x8-bit pixels, colour separation) · YCbCr (3x8-bit pixels, colour video format) · I (32-bit signed integer pixels) · F (32-bit floating point pixels) opencv :\nhttps://lufor129.medium.com/pytesseract-辨識圖片中的文字-b1024f678fac\n常見錯誤: https://zhuanlan.zhihu.com/p/35590364\n套件記得載 1 2 3 4 5 6 7 # opencv 方式讀取圖檔轉灰度 imgcv = cv2.imread(\u0026#39;CaptchaImage.jpg\u0026#39;, cv2.IMREAD_GRAYSCALE) type(imgcv) cv2.imshow(\u0026#39;CaptchaImage\u0026#39;, imgcv) cv2.imwrite(\u0026#39;output/gray05.tiff\u0026#39;, imgcv) cv2.waitKey(0) cv2.destroyAllWindows() cv2.threshold 常用參數\ncv2.THRESH_BINARY(黑白兩值) cv2.THRESH_BINARY_INV(黑白二值反轉) cv2.THRESH_TRUNC (得到的圖像為多像素值) 尚待釐清 多像素值定義 灰度轉二值化(去噪):\n1 2 3 4 5 6 7 8 9 10 11 print \u0026#39;binary mode: \u0026#39;, binary.mode print binary.getpixel((0, 0)) co = binary.getcolors() print co #輸出 ---------------------------------------- binary mode: 1 0 #左上角為黑色 [(503, 0), (1993, 1)] 共有幾個黑與白像素點 判斷文字位置:\nhttps://youtu.be/6DjFscX4I_c?t=502\n訓練文字辨識,手動標註\njTessBoxEditor / VietOCR-4.5 手動標記|工人智慧\n下載位置:\nhttps://sourceforge.net/projects/vietocr/\n軟體資訊:\n使用語法總覽 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Usage: tesseract --help | --help-extra | --version tesseract --list-langs tesseract imagename outputbase [options...] [configfile...] OCR options: -l LANG[+LANG] Specify language(s) used for OCR. NOTE: These options must occur before any configfile. Single options: --help Show this help message. --help-extra Show extra help for advanced users. --version Show version information. --list-langs List available languages for tesseract engine. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Page segmentation modes: 0 Orientation and script detection (OSD) only. 1 Automatic page segmentation with OSD. 2 Automatic page segmentation, but no OSD, or OCR. (not implemented) 3 Fully automatic page segmentation, but no OSD. (Default) 4 Assume a single column of text of variable sizes. 5 Assume a single uniform block of vertically aligned text. 6 Assume a single uniform block of text. 7 Treat the image as a single text line. 8 Treat the image as a single word. 9 Treat the image as a single word in a circle. 10 Treat the image as a single character. 11 Sparse text. Find as much text as possible in no particular order. 12 Sparse text with OSD. 13 Raw line. Treat the image as a single text line, bypassing hacks that are Tesseract-specific. OCR Engine modes: 0 Legacy engine only. 1 Neural nets LSTM engine only. 2 Legacy + LSTM engines. 3 Default, based on what is available. Single options: -h, --help Show minimal help message. --help-extra Show extra help for advanced users. --help-psm Show page segmentation modes. --help-oem Show OCR Engine modes. -v, --version Show version information. --list-langs List available languages for tesseract engine. --print-parameters Print tesseract parameters. 未完待續,下方整理了一些相關文章,有興趣的同學可以參考。\n參考文章 簡單的製作驗證碼範例: https://ithelp.ithome.com.tw/articles/10159457\n[ 實用心得 ] Tesseract-OCR\nhttps://medium.com/@b98606021/實用心得-tesseract-ocr\nmac上文字识别(Tesseract-OCR for mac )\nhttps://blog.csdn.net/u010670689/article/details/78374623\nImage Processing in OpenCV\nImage Thresholding\n使用Tesseract训练lang文件并OCR识别集装箱号\nhttps://www.jianshu.com/p/5f847d8089ce\nTesseract-OCR 實現光學漢字識別(語言包解釋)\nhttps://www.itread01.com/content/1577329506.html\npython 读取、保存、二值化、灰度化图片+opencv处理图片的方法\nhttps://blog.csdn.net/JohinieLi/article/details/69389980\n設置限定詞(會降低識別率)\ntessdata/configs/digits 沒找到\nhttps://blog.csdn.net/ADebugMan/article/details/100592200\n檔案放置區: Tesseract-OCR 辨識& 驗證碼分析及實作\n圖片辨識結合自動回覆機器人 此為大學專案進行的學習成果\n如有發現任何參數錯誤,歡迎留言通知\n","date":"2023-10-27T10:37:31+08:00","image":"https://i.imgur.com/ORSlEI8.png","permalink":"https://wastu01.github.io/article/python-tesseract-ocr/","title":"Tesseract 使用 安裝 訓練"},{"content":"新竹縣 芎林 木屋 寵物友善\n新竹縣芎林柴木屋咖啡 寵物友善/景觀餐廳 地理位置位處飛鳳山旁邊的一個小山丘上,徒中會經過一家餐廳橘子碰\n入口處會看到明顯的標誌,下坡後有個小小停車場可停放車輛\n店內有親切的店狗阿柴Charmy,還有新來的店貓咪咪 Mimi\n小木屋 小木屋擺設著寵物為主題的作品跟裝飾 🐶 💡 🐱\n暖色調的小木屋,以及很親人的柴犬\n座位採用日式榻榻米風格,為開放式廚房,窗戶可以遠眺風景 ⛰️\n室外也有座位以及躺椅供人休憩\n菜單 每日提供限量特餐\n當日用餐提供的是\n・紅酒燉牛肉 ・三杯雞 ・梅干燉肉 ・紅咖哩輕食餐(售完)\n特餐皆可加價升級沙拉\n梅乾燉肉套餐\n兩份雞翅 肉質偏硬,微辣,可搭配飲品解膩\n咖啡飲品\n提供免費 wifi ,提供洗手間可以盥洗\n店內寵物 柴犬 ℂ𝕙𝕒𝕣𝕞𝕪 \u0026amp; 橘貓 𝕄𝕚𝕞𝕚\n門口附有秘境地圖:\n在一個轉彎處有個寫前往飛鳳山的小牌子,往上走會看到有聖誕燈泡一路往上延伸\n中途的指示牌,若想繼續前往步行,須留意店家營業時間,大門會上鎖\n離開前發現有一台電動 youbike\nRespect !\n店面資訊 地址:新竹縣芎林鄉永興村王爺坑81-3號\n營業時間為每日早上十點至下午五點,週二、週三為公休\n付款方式:付現 / Line Pay 電子支付\n官方網站:https://shibaloghouse.ego.tw\n粉絲專頁:https://www.facebook.com/shibaloghouse\n最新資訊以官方為主。\n空拍畫面 ","date":"2023-10-21T15:53:06+08:00","image":"https://wastu01.github.io/article/shibaloghouse-caffe-hsinchucity/shibaloghouse-caffe-cover_hu16588719778707105942.jpg","permalink":"https://wastu01.github.io/article/shibaloghouse-caffe-hsinchucity/","title":"新竹縣芎林柴木屋咖啡 寵物友善/景觀餐廳"},{"content":"Adobe Firefly 文字生成圖片效果 llllasd\n使用軟體:adoobe firelfy\u0026mdash;AI 工具\n動機:年初申請到 Adobe firefly 文字生成圖片的前期測試用戶,實測效果如何\n最新 Adobe Firefly 官方消息: https://helpx.adobe.com/firefly/using/whats-new.html\n1014 更新: Firefly image 2.0 / 以及 Adobe Illustrator 內建 AI 向量圖形\n0523 開放所有人使用 需登入\n0512 firefly beta 1.3 版本更新 可收藏生成圖片\n參數設定 2023.03.30有公開的 (目前已內建成選項)\n1 2 [outline-strength=80] 1-100 adjusts the creativity on text effects. Higher number will give you a tighter fit to the outline. Lower numbers will give you the more swirly effects. [avoid=green, cars] Adobe Firefly Discord 社群:https://discord.com/invite/adobefirefly\nAdobe 03/29 更新內容:https://blog.adobe.com/en/publish/2023/03/29/adobe-firefly-beta-updates\n文字生成圖片 Prompt 小技巧:增加多一點細節\nAI影片生成參考圖片\n畫面展示 中國特色 街景 台灣演員街拍 貓咪開太空船 室內植栽 大棕熊送蘋果 圖片構想參考自:用AI做繪本: 大棕熊送蘋果\n狗狗太空人 Prompt :\na cute shiba inu astronaut in a red and white space suit, yellow background, digital art\n貓貓開車 Prompt :\na cat driving 橘貓 貓爪握方向盤 鏡頭:經過 側臉\n華人彈古箏 Prompt :\na Chinese man play Guzheng\nDALL・E 有正確顯示樂器 adobe firefly 顯示的是吉他\n螢火蟲森林 Prompt :\nDigital painting of a beautiful forest with shining lights, a calm pond and mist and fireflies in studio ghibli style\n室內植栽 Prompt :\nDigital painting of a beautiful forest with shining lights, a calm pond and mist and fireflies in studio ghibli style\n未來感城市 Prompt :\na future cyberpunk city art\n在咖啡廳寫文章的女記者 Prompt :\nA female journalist writing articles typing on a computer in a coffee shop surrounded by other people working\nprompt 來自 Midjourney 製作好的封面圖\nAdobe Firefly 文字效果: OpenAI ChatGPT 生成提示詞\nAdobe Firefly 生成圖片\nRunwayml Gen1 生成影片\n結合三種不同的 AI 生成工具製作的效果:\n歡迎點擊前往觀看更多\nMy HackMD : https://hackmd.io/@DCT\nMy Medium : https://medium.com/mr-wang\nMy Blog : https://wastu01.github.io/\n","date":"2023-10-18T09:47:30+08:00","image":"https://wastu01.github.io/article/adobe-firefly-text-to-image/adobe-firefly-text-to-image_hu6160066669116791463.jpg","permalink":"https://wastu01.github.io/article/adobe-firefly-text-to-image/","title":"Adobe Firefly 文字生成圖片 實測"},{"content":"Canva 魔法媒體工具 文字生成影片 Runway Canva 推出新的影片生成工具: Magic Studio\n將 Gen-2 整合到 Canva 的 Magic Media App\n允許使用者在欄位中輸入文字生成長達 4 秒的影片\n目前僅限 Canvas 付費用戶使用\n以下是文件示範展示:\n魔法文案工具 一鍵生成文案 AI 生成設計的文案 文案舉例說明並附上AI生成影片 canva 新功能實測簡報展示: 使用 Canva 設計製作 影片主題:使用 Canva 文字生成影片 歡迎點擊前往觀看更多\nMy HackMD : https://hackmd.io/@DCT\nMy Medium : https://medium.com/mr-wang\nMy Blog : https://wastu01.github.io/\n","date":"2023-10-16T00:00:00Z","image":"https://wastu01.github.io/article/canva-magic/Canva-text-to-video_hu16655593140200098276.png","permalink":"https://wastu01.github.io/article/canva-magic/","title":"Canva 魔法媒體工具 文字生成影片 Runway"},{"content":" OpenAI ChatGPT 圖片生成/分析圖片 實測 實際用 GPT-4 AI 生成圖片/解析圖片資訊\n另外測試 ChatGPT 能否分析圖片並生成程式碼完成網頁設計。\n想講結論:可以,但需要花時間來回修正想要的結果\nhttps://github.com/wastu01/ChatGPT4-Generate-Html\nDALL-E 3 文字生成圖片 提示詞:\n1 Cinematic render of an intense action scene in a city at night, featuring a dark-colored vintage Ford Mustang speeding on a damp road, surrounded by fiery explosions, haze, and dramatic teal \u0026amp; orange lighting. 效果圖:\n提示詞:生成一張 1280x640 比例的 social preview 有關於 網頁版本 Apple 風格的計算機,圖片仿造蘋果公司的風格\n1 Digital representation of a web calculator, imbued with Apple design principles, juxtaposed against a background evocative of Apple renowned product introduction visuals. 效果圖:\n分析圖片 這是一個計算器的界面設計。以下是該界面的特點:\n顏色配色: 主要以深色背景為主,搭配明亮的按鈕顏色。 視窗左上角: 有三個顏色點,通常表示應用程式的最小化、最大化和關閉按鈕。 數字按鈕: 從0到9,供使用者輸入數字。 運算子按鈕: 有加(+)、減(-)、乘(x)、除(÷)以及其他功能鍵,如正負號切換(+/-)、百分比(%)等。 控制按鈕: 有「AC」按鈕,通常用於清除輸入或結果。 螢幕顯示: 目前為0,這是計算器的初始值。 整體來說,這個設計相當簡潔,主要功能都能夠快速識別,應該很容易上手使用。\n製作網頁 實測結果,要一次全部完成較進階任務偶爾會卡住,分批處理會比較好\n請幫我以此為樣式製作出網頁,並能夠點擊進行運算\n1.一個外觀類似Apple計算機的HTML介面。\n2.使用CSS來設計計算機的外觀,使其看起來像Apple的計算機。\n3.使用JavaScript處理按鈕點擊事件以實現計算功能,並將計算結果顯示在計算機螢幕上。\n4.包括外部的CSS和JavaScript文件,以確保代碼結構整潔。\n我們先處理外觀介面的部分,計算的功能稍待再執行\niOS-Calculator-Web\n網頁版計算機,模仿 iOS裝置計算機外觀的介面,使用HTML與ChatGPT製作。\nMy HackMD : https://hackmd.io/@DCT\nMy Medium : https://medium.com/mr-wang\nMy Blog : https://wastu01.github.io/\n","date":"2023-10-15T00:00:00Z","image":"https://wastu01.github.io/article/chatgpt-dalle3-text-to-image/apple_hu5976346505076266259.png","permalink":"https://wastu01.github.io/article/chatgpt-dalle3-text-to-image/","title":"OpenAI ChatGPT 圖片生成/分析圖片 實測"},{"content":"地點 303新竹縣湖口鄉綠藻 - 茶香步道\n新聞報導 空拍畫面 湖口茶香步道 ","date":"2023-10-06T00:00:00Z","image":"https://wastu01.github.io/article/aerial-photography-hsinchucity/img/LINE_ALBUM_%E6%B9%96%E5%8F%A3%E8%8C%B6%E9%A6%99%E6%AD%A5%E9%81%93_231006_8_hu13520419670805601683.jpg","permalink":"https://wastu01.github.io/article/aerial-photography-hsinchucity/","title":"2023-10-06-新竹湖口後山祕境-茶香步道"},{"content":" 🔝 3D建模 Blender\nhttps://www.youtube.com/@11305205219/videos\nBehance : https://www.behance.net/gallery/96577587/_ 3DSmax\nBehance : https://www.behance.net/gallery/113360331/Fan-Modeling\n2D動畫 愛死機器人 Remake 校園防毒守門員-國中篇「飲料的誘惑」| 教育部國民及學前教育署 ","date":"2023-10-03T08:50:29+08:00","image":"https://wastu01.github.io/article/my-digital-works-in-youtube/youtube-channel_hu11696109911142002400.png","permalink":"https://wastu01.github.io/article/my-digital-works-in-youtube/","title":"多媒體創作區"},{"content":"Python + PM25 + AQI\n此篇是透過 Python 爬取 AQI 空氣品質指標的資料,再篩選出我們熟悉的細懸浮微粒 PM2.5數據儲存成檔案。\n2024 可搭配 ChatGPT/ClaudeAI 提問如何用 Python 爬取 PM2.5,(或是使用 AutoGPT 設定明確目標執行爬蟲),剩下來的時間了解資料結構該如何轉換,思考如何應用在日常生活中,例如用折線圖呈現產出一天內空氣品質變化,結合 IFTTT 超過多少會提醒用戶之類的,並將資料搜集彙整顯示趨勢圖,以供後續研究。\n2023-0826 更新:因工作緣故收到國家科學及技術委員會來函,配合本署組改為環境部,本署環境資料關放平臺、環境資源資料交換平臺及環境資源資料交換重構平臺自112年8月22日起變更網址及應用程式介面( Application ProgrammingInterface, API),各平臺API維持新、舊API URL平行服務三個月,請於112年11月22日期限前內完成 API URL 更新。\n課堂作業:透過 Pythob 爬取空氣品質 PM2.5 數據,練習如何抓取政府資料開放平台公開資料,解析 JSON 檔案並做檔案處理。\n資料型態 我們資料取得的是 JSON 格式\nrequests 獲取資料後將 Json 解析成字典 Dictionary\n檢視 Json 的擴充工具 (chrome): https://chrome.google.com/webstore/detail/jsonview/\n常見的資料格式 : JSON、CSV、XML\n可參考此篇說明:認識 Web API、HTTP 和 JSON 資料交換格式\n資訊擷取來源 https://data.gov.tw/ 後來發現有更好用 最新試行版(已正式上架)的\n環保署環境資料開放平台開放資料 API\n註冊 API Key 後可以篩選更多參數來撈資料\n要解析資料的來源網址結構如下:\n每小時提供各測站之空氣品質指標(AQI)\nhttps://data.epa.gov.tw/api/v1/aqx_p_432?offset=0\u0026amp;limit=80\u0026amp;api_key=https://youtu.be/dQw4w9WgXcQ 資料集名稱先記好比較快找到\n網站提供的註冊 API 使用說明: https://data.moenv.gov.tw/paradigm\n也提供了手冊講解如何使用參數,Python 程式範例可供參考\n( API 網址記得更換到最新版本)\n實作過程 1 2 3 4 5 6 7 8 9 10 import requests aqi_url = \u0026#34;https://data.epa.gov.tw/api/v1/aqx_p_432?offset=0\u0026amp;limit=80\u0026amp;api_key=自行註冊\u0026#34; response = requests.get(aqi_url) aqi = response.json()[\u0026#39;records\u0026#39;] print(response.status_code) ### 200 正常回傳 ### 404 回傳錯誤 print(type(response)) print(type(aqi)) 資料結構轉換說明 整個流程:request \u0026ndash;\u0026gt; get json \u0026ndash;\u0026gt; convert to list \u0026mdash;\u0026gt; dict \u0026ndash;\u0026gt; key get value\nrequest 獲得資料,用 json() 方法,將 JSON 格式的資料的資料轉成 Python 可以操作的資料型態『字典』,再從 key (record) 取得我們想要的數據 (value) 。\n資料結構如下 :\n1 2 key = \u0026#34;record\u0026#34; value = [{\u0026#34;sitename\u0026#34;:\u0026#34;各縣市\u0026#34;,\u0026#34;pm2.5\u0026#34;:\u0026#34;10\u0026#34;,其他數據},{同樣格式}] value (aqi) 最外層是 list 資料型態,裡面每一個元素是 list 資料型態,我們再透過 key (sitename,pm2.5) 取 value (各縣市,10)。\n*這也代表 list 裡面可以放入不同類型的物件,如 dict、str、int 等。\n讀取資料的實作過程可以搭配\n1 2 print(type(data)) print(dir(requests)) 了解有什麼方法可以用,資料型態是什麼\n資料輸出 檔案處理 “r” 唯讀模式\n“w” 寫入模式(覆寫)\n“a” 寫入模式(續寫)\nwith open(\u0026quot;data_pm25.txt\u0026quot;, \u0026quot;w\u0026quot;, encoding=\u0026quot;utf-8\u0026quot;) as file:\n再用 for 把資料寫入 file 當中\n1 2 3 f = open(\u0026#39;file.txt\u0026#39;, \u0026#39;w\u0026#39;) f.write(\u0026#34;file-write\u0026#34;) f.close() 檔案讀寫,rwa\u0026quot;+\u0026quot; 模式\n可以都測試看看\nw+ 先讀再寫會:?\na+ 先寫再讀會:?\n進階思考:\nQ : 如何儲存連續的紀錄?\n參考資料 輕鬆學習 Python | 資料分析\n輕鬆學習 Python:透過 API 擷取網站資料\nPython 初學第十二講—檔案處理\n補充:ChatGPT 指令大全 https://www.explainthis.io/zh-hant/chatgpt\n本篇文章自 index.coderbridge 平台移轉此處\n並重新將資料型態的部分重新說明,補完當初沒有理解清楚的部分。\n","date":"2023-10-03T00:00:00Z","image":"https://wastu01.github.io/article/python-pm25-aqi-opendata/Air-Quality-Index-Data-Set-Introduction_hu8563379587031062915.png","permalink":"https://wastu01.github.io/article/python-pm25-aqi-opendata/","title":"Python-爬取空氣品質-PM2.5-AQI"}] \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index 5745e18e..d07fd1e8 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1 +1 @@ -https://wastu01.github.io/post/2024-10-08T08:50:29+08:00weekly1https://wastu01.github.io/categories/2024-10-08T08:50:29+08:00weekly1https://wastu01.github.io/tags/chatgpt/2024-09-17T08:42:46+08:00weekly1https://wastu01.github.io/article/openai-custom-gpts-collection/2024-09-17T08:42:46+08:00weekly1https://wastu01.github.io/tags/2024-10-08T08:50:29+08:00weekly1https://wastu01.github.io/tags/css/2024-09-13T22:21:02+08:00weekly1https://wastu01.github.io/article/html-css-style-template/2024-09-13T22:21:02+08:00weekly1https://wastu01.github.io/categories/%E7%B6%B2%E9%A0%81/2024-09-13T22:21:02+08:00weekly1https://wastu01.github.io/tags/%E6%A8%A1%E6%9D%BF/2024-09-13T22:21:02+08:00weekly1https://wastu01.github.io/tags/adobe/2023-12-02T13:15:04+08:00weekly1https://wastu01.github.io/tags/ai/2023-12-02T13:15:04+08:00weekly1https://wastu01.github.io/article/ai-text-prompts-all-in-one/2023-12-02T13:15:04+08:00weekly1https://wastu01.github.io/tags/firefly/2023-12-02T13:15:04+08:00weekly1https://wastu01.github.io/tags/gen2/2023-12-02T13:15:04+08:00weekly1https://wastu01.github.io/tags/midjourney/2023-12-02T13:15:04+08:00weekly1https://wastu01.github.io/tags/runwayml/2023-12-02T13:15:04+08:00weekly1https://wastu01.github.io/tags/stablediffusion/2023-12-02T13:15:04+08:00weekly1https://wastu01.github.io/tags/ocr/2023-10-28T08:47:41+08:00weekly1https://wastu01.github.io/tags/tesseract/2023-10-28T08:47:41+08:00weekly1https://wastu01.github.io/article/python-tesseract-ocr/2023-10-28T08:47:41+08:00weekly1https://wastu01.github.io/tags/%E5%A4%A7%E5%AD%B8%E5%B0%88%E9%A1%8C/2023-10-28T08:47:41+08:00weekly1https://wastu01.github.io/tags/%E5%92%96%E5%95%A1/2023-12-02T13:15:04+08:00weekly1https://wastu01.github.io/categories/%E5%92%96%E5%95%A1%E5%BB%B3/2023-12-02T13:15:04+08:00weekly1https://wastu01.github.io/tags/%E7%A9%B9%E6%9E%97/2023-12-02T13:15:04+08:00weekly1https://wastu01.github.io/tags/%E6%96%B0%E7%AB%B9/2023-12-02T13:15:04+08:00weekly1https://wastu01.github.io/article/shibaloghouse-caffe-hsinchucity/2023-12-02T13:15:04+08:00weekly1https://wastu01.github.io/tags/%E5%AF%B5%E7%89%A9%E5%8F%8B%E5%96%84/2023-12-02T13:15:04+08:00weekly1https://wastu01.github.io/article/adobe-firefly-text-to-image/2023-10-18T09:47:30+08:00weekly1https://wastu01.github.io/tags/canva/2023-10-18T01:08:43+08:00weekly1https://wastu01.github.io/article/canva-magic/2023-10-18T01:08:43+08:00weekly1https://wastu01.github.io/tags/dalle/2024-09-13T22:21:02+08:00weekly1https://wastu01.github.io/article/chatgpt-dalle3-text-to-image/2024-09-13T22:21:02+08:00weekly1https://wastu01.github.io/article/aerial-photography-hsinchucity/2023-10-06T00:00:00+00:00weekly1https://wastu01.github.io/categories/%E6%AD%A5%E9%81%93/2023-10-06T00:00:00+00:00weekly1https://wastu01.github.io/tags/%E7%A9%BA%E6%8B%8D/2023-10-06T00:00:00+00:00weekly1https://wastu01.github.io/tags/ntcu/2024-10-08T08:50:29+08:00weekly1https://wastu01.github.io/tags/youtube/2024-10-08T08:50:29+08:00weekly1https://wastu01.github.io/article/my-digital-works-in-youtube/2024-10-08T08:50:29+08:00weekly1https://wastu01.github.io/tags/aqi/2024-09-28T21:33:14+08:00weekly1https://wastu01.github.io/tags/json/2024-09-28T21:33:14+08:00weekly1https://wastu01.github.io/page/2024-08-17T11:40:09+08:00weekly1https://wastu01.github.io/tags/pm25/2024-09-28T21:33:14+08:00weekly1https://wastu01.github.io/tags/python/2024-09-28T21:33:14+08:00weekly1https://wastu01.github.io/article/python-pm25-aqi-opendata/2024-09-28T21:33:14+08:00weekly1https://wastu01.github.io/wa.01/2023-10-03T00:00:00+00:00weekly1https://wastu01.github.io/archives/2023-10-20T00:00:00+00:00weekly1https://wastu01.github.io/2023-10-18T01:08:43+08:00weekly1https://wastu01.github.io/categories/aigc/2023-10-30T00:03:36+08:00weekly1https://wastu01.github.io/categories/javascript/2023-10-18T01:08:43+08:00weekly1https://wastu01.github.io/categories/python/2023-10-26T23:49:31+08:00weekly1https://wastu01.github.io/categories/youtube/2023-10-26T23:49:31+08:00weekly1https://wastu01.github.io/search/2023-10-17T22:31:54+08:00weekly1https://wastu01.github.io/%E7%A4%BE%E7%BE%A4%E9%80%A3%E7%B5%90/2024-08-17T11:40:09+08:00weekly1https://wastu01.github.io/categories/blog/2023-11-05T14:39:25+08:00weekly1 \ No newline at end of file +https://wastu01.github.io/post/2024-10-08T08:50:29+08:00weekly1https://wastu01.github.io/categories/2024-10-08T08:50:29+08:00weekly1https://wastu01.github.io/tags/google%E6%96%B0%E8%81%9E/2024-10-01T18:25:50+08:00weekly1https://wastu01.github.io/tags/jieba%E6%96%B7%E8%A9%9E/2024-10-01T18:25:50+08:00weekly1https://wastu01.github.io/article/python-wordcloud-word/2024-10-01T18:25:50+08:00weekly1https://wastu01.github.io/tags/2024-10-08T08:50:29+08:00weekly1https://wastu01.github.io/tags/wordcloud%E6%96%87%E5%AD%97%E9%9B%B2/2024-10-01T18:25:50+08:00weekly1https://wastu01.github.io/tags/%E5%A4%A7%E5%AD%B8%E5%B0%88%E9%A1%8C/2024-10-01T18:25:50+08:00weekly1https://wastu01.github.io/article/%E6%96%B0%E7%AB%B9%E9%87%91%E5%B1%B1%E8%A1%97%E6%96%B0%E6%89%8B%E6%9D%91%E9%9A%A8%E6%89%8B%E8%A8%98/2024-10-01T18:25:50+08:00weekly1https://wastu01.github.io/tags/chatgpt/2024-09-17T08:42:46+08:00weekly1https://wastu01.github.io/article/openai-custom-gpts-collection/2024-09-17T08:42:46+08:00weekly1https://wastu01.github.io/tags/css/2024-09-13T22:21:02+08:00weekly1https://wastu01.github.io/article/html-css-style-template/2024-09-13T22:21:02+08:00weekly1https://wastu01.github.io/categories/%E7%B6%B2%E9%A0%81/2024-09-13T22:21:02+08:00weekly1https://wastu01.github.io/tags/%E6%A8%A1%E6%9D%BF/2024-09-13T22:21:02+08:00weekly1https://wastu01.github.io/tags/adobe/2023-12-02T13:15:04+08:00weekly1https://wastu01.github.io/tags/ai/2023-12-02T13:15:04+08:00weekly1https://wastu01.github.io/article/ai-text-prompts-all-in-one/2023-12-02T13:15:04+08:00weekly1https://wastu01.github.io/tags/firefly/2023-12-02T13:15:04+08:00weekly1https://wastu01.github.io/tags/gen2/2023-12-02T13:15:04+08:00weekly1https://wastu01.github.io/tags/midjourney/2023-12-02T13:15:04+08:00weekly1https://wastu01.github.io/tags/runwayml/2023-12-02T13:15:04+08:00weekly1https://wastu01.github.io/tags/stablediffusion/2023-12-02T13:15:04+08:00weekly1https://wastu01.github.io/tags/ocr/2023-10-28T08:47:41+08:00weekly1https://wastu01.github.io/tags/tesseract/2023-10-28T08:47:41+08:00weekly1https://wastu01.github.io/article/python-tesseract-ocr/2023-10-28T08:47:41+08:00weekly1https://wastu01.github.io/tags/%E5%92%96%E5%95%A1/2023-12-02T13:15:04+08:00weekly1https://wastu01.github.io/categories/%E5%92%96%E5%95%A1%E5%BB%B3/2023-12-02T13:15:04+08:00weekly1https://wastu01.github.io/tags/%E7%A9%B9%E6%9E%97/2023-12-02T13:15:04+08:00weekly1https://wastu01.github.io/tags/%E6%96%B0%E7%AB%B9/2023-12-02T13:15:04+08:00weekly1https://wastu01.github.io/article/shibaloghouse-caffe-hsinchucity/2023-12-02T13:15:04+08:00weekly1https://wastu01.github.io/tags/%E5%AF%B5%E7%89%A9%E5%8F%8B%E5%96%84/2023-12-02T13:15:04+08:00weekly1https://wastu01.github.io/article/adobe-firefly-text-to-image/2023-10-18T09:47:30+08:00weekly1https://wastu01.github.io/tags/canva/2023-10-18T01:08:43+08:00weekly1https://wastu01.github.io/article/canva-magic/2023-10-18T01:08:43+08:00weekly1https://wastu01.github.io/tags/dalle/2024-09-13T22:21:02+08:00weekly1https://wastu01.github.io/article/chatgpt-dalle3-text-to-image/2024-09-13T22:21:02+08:00weekly1https://wastu01.github.io/article/aerial-photography-hsinchucity/2023-10-06T00:00:00+00:00weekly1https://wastu01.github.io/categories/%E6%AD%A5%E9%81%93/2023-10-06T00:00:00+00:00weekly1https://wastu01.github.io/tags/%E7%A9%BA%E6%8B%8D/2023-10-06T00:00:00+00:00weekly1https://wastu01.github.io/tags/ntcu/2024-10-08T08:50:29+08:00weekly1https://wastu01.github.io/tags/youtube/2024-10-08T08:50:29+08:00weekly1https://wastu01.github.io/article/my-digital-works-in-youtube/2024-10-08T08:50:29+08:00weekly1https://wastu01.github.io/tags/aqi/2024-09-28T21:33:14+08:00weekly1https://wastu01.github.io/tags/json/2024-09-28T21:33:14+08:00weekly1https://wastu01.github.io/page/2024-08-17T11:40:09+08:00weekly1https://wastu01.github.io/tags/pm25/2024-09-28T21:33:14+08:00weekly1https://wastu01.github.io/tags/python/2024-09-28T21:33:14+08:00weekly1https://wastu01.github.io/article/python-pm25-aqi-opendata/2024-09-28T21:33:14+08:00weekly1https://wastu01.github.io/wa.01/2023-10-03T00:00:00+00:00weekly1https://wastu01.github.io/archives/2023-10-20T00:00:00+00:00weekly1https://wastu01.github.io/2023-10-18T01:08:43+08:00weekly1https://wastu01.github.io/categories/aigc/2023-10-30T00:03:36+08:00weekly1https://wastu01.github.io/categories/javascript/2023-10-18T01:08:43+08:00weekly1https://wastu01.github.io/categories/python/2023-10-26T23:49:31+08:00weekly1https://wastu01.github.io/categories/youtube/2023-10-26T23:49:31+08:00weekly1https://wastu01.github.io/search/2023-10-17T22:31:54+08:00weekly1https://wastu01.github.io/%E7%A4%BE%E7%BE%A4%E9%80%A3%E7%B5%90/2024-08-17T11:40:09+08:00weekly1https://wastu01.github.io/categories/blog/2023-11-05T14:39:25+08:00weekly1 \ No newline at end of file diff --git a/tags/adobe/index.html b/tags/adobe/index.html index 3f282b66..2b6aee8d 100644 --- a/tags/adobe/index.html +++ b/tags/adobe/index.html @@ -1,5 +1,5 @@ Tag: Adobe - Wang's Blog -

Tags

總共 2 篇文章

Adobe

Tags

總共 2 篇文章

Adobe

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git a/tags/ai/index.html b/tags/ai/index.html index fed5b936..6320e492 100644 --- a/tags/ai/index.html +++ b/tags/ai/index.html @@ -1,5 +1,5 @@ Tag: AI - Wang's Blog -

Tags

總共 2 篇文章

AI

Tags

總共 2 篇文章

AI

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git a/tags/aqi/index.html b/tags/aqi/index.html index 138a45c9..e59caed1 100644 --- a/tags/aqi/index.html +++ b/tags/aqi/index.html @@ -1,5 +1,5 @@ Tag: AQI - Wang's Blog -

Tags

總共 1 篇文章

AQI

Tags

總共 1 篇文章

AQI

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git a/tags/canva/index.html b/tags/canva/index.html index 2b3c583b..15ff888e 100644 --- a/tags/canva/index.html +++ b/tags/canva/index.html @@ -1,5 +1,5 @@ Tag: Canva - Wang's Blog -

Tags

總共 1 篇文章

Canva

Tags

總共 1 篇文章

Canva

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git a/tags/chatgpt/index.html b/tags/chatgpt/index.html index 76828ecb..558d7567 100644 --- a/tags/chatgpt/index.html +++ b/tags/chatgpt/index.html @@ -1,5 +1,5 @@ Tag: ChatGPT - Wang's Blog -

Tags

總共 2 篇文章

ChatGPT

Tags

總共 2 篇文章

ChatGPT

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git a/tags/css/index.html b/tags/css/index.html index 498059a1..5fca6210 100644 --- a/tags/css/index.html +++ b/tags/css/index.html @@ -1,5 +1,5 @@ Tag: CSS - Wang's Blog -

Tags

總共 1 篇文章

CSS

Tags

總共 1 篇文章

CSS

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git a/tags/dalle/index.html b/tags/dalle/index.html index 06d05e14..bf59bcfd 100644 --- a/tags/dalle/index.html +++ b/tags/dalle/index.html @@ -1,5 +1,5 @@ Tag: DALLE - Wang's Blog -

Tags

總共 1 篇文章

DALLE

Tags

總共 1 篇文章

DALLE

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git a/tags/firefly/index.html b/tags/firefly/index.html index 9e44d5ac..1efca884 100644 --- a/tags/firefly/index.html +++ b/tags/firefly/index.html @@ -1,5 +1,5 @@ Tag: Firefly - Wang's Blog -

Tags

總共 2 篇文章

Firefly

Tags

總共 2 篇文章

Firefly

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git a/tags/gen2/index.html b/tags/gen2/index.html index 943e2cd9..762730df 100644 --- a/tags/gen2/index.html +++ b/tags/gen2/index.html @@ -1,5 +1,5 @@ Tag: Gen2 - Wang's Blog -

Tags

總共 1 篇文章

Gen2

Tags

總共 1 篇文章

Gen2

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git "a/tags/google\346\226\260\350\201\236/index.html" "b/tags/google\346\226\260\350\201\236/index.html" index 8fb095e4..457b98f7 100644 --- "a/tags/google\346\226\260\350\201\236/index.html" +++ "b/tags/google\346\226\260\350\201\236/index.html" @@ -1,640 +1,28 @@ - - - - -Tag: Google新聞 - Wang's Blog - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
-
-

- - Tags - -

- -
-
-

第 1 頁

-

Google新聞

- -
-
-
- -
- - - -
-
- - -
- 使用 Hugo 建立
- 主題 StackJimmy 設計 -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 已產出:3396字,共 16篇文章

- -

- -
- - -
-
- - - - - +Tag: Google新聞 - Wang's Blog +

Tags

總共 1 篇文章

Google新聞

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git "a/tags/google\346\226\260\350\201\236/index.xml" "b/tags/google\346\226\260\350\201\236/index.xml" index f3e129ee..12f7dff7 100644 --- "a/tags/google\346\226\260\350\201\236/index.xml" +++ "b/tags/google\346\226\260\350\201\236/index.xml" @@ -1,104 +1,46 @@ - - - - Google新聞 on Wang's Blog - http://localhost:1313/tags/google%E6%96%B0%E8%81%9E/ - Recent content in Google新聞 on Wang's Blog - Hugo -- gohugo.io - zh-tw - 版權 Wang - Thu, 19 Sep 2024 11:19:10 +0800 - Python-WordCloud 文字雲視覺化應用 新聞關鍵字分析 - http://localhost:1313/article/2024-09-19-.zh/ - Thu, 19 Sep 2024 11:19:10 +0800 - - http://localhost:1313/article/2024-09-19-.zh/ - <img src="https://picsum.photos/800/600.webp?random=60742c9d" alt="Featured image of post Python-WordCloud 文字雲視覺化應用 新聞關鍵字分析" /><p><kbd>小註記</kbd> + <mark>重點!</mark></p> -<p>此篇為之前人工智慧課程發想的 Python 應用專題,筆者最近於職訓課程再次接觸 Python pandas, numpy 藉由此專案實際將資料操作,加上 ChatGPT AI 輔助開發程式改善斷詞分析成果。</p> -<blockquote> -<p>使用者輸入欲搜尋新聞主題,得到 Google 新聞搜尋文字內容,接續使用 Jieba 套件進行斷詞分析,TF-IDF 算法提取關鍵詞,最終生成文字雲。</p> -</blockquote> -<blockquote> -<p>理想目標:擴大文本搜尋範圍,改善斷詞結果,在網頁前端直接生成文字雲,方便分享至社群平台。</p> -</blockquote> -<p>先上輸出的結果:</p> -<p><img src="http://localhost:1313/img/2021-05-13-%e7%96%ab%e6%83%85.png" - - - - loading="lazy" - - alt="疫情關鍵字文字雲" - - -></p> -<p><img src="http://localhost:1313/img/20240918_%e6%9f%af%e6%96%87%e5%93%b2_relative_scaling30%25.png" - - - - loading="lazy" - - alt="柯文哲關鍵字文字雲" - - -></p> -<p>先備知識:Python 檔案讀取,資料型態轉換,numpy 陣列操作,Pandas 資料排序。</p> -<p>使用 PyPI 取得 Python 第三方套件模組</p> -<ul> -<li><a class="link" href="https://pypi.org/project/GoogleNews/" target="_blank" rel="noopener" - >GoogleNews</a></li> -<li><a class="link" href="https://pypi.org/project/jieba/" target="_blank" rel="noopener" - >jieba</a></li> -<li><a class="link" href="https://pypi.org/project/wordcloud/" target="_blank" rel="noopener" - >wordcloud</a></li> -<li><a class="link" href="https://pypi.org/project/matplotlib/" target="_blank" rel="noopener" - >matplotlib</a></li> -<li><a class="link" href="https://pypi.org/project/Pillow/" target="_blank" rel="noopener" - >PIL</a></li> -<li><a class="link" href="https://pypi.org/project/pandas/" target="_blank" rel="noopener" - >pandas</a></li> -<li><a class="link" href="https://pypi.org/project/numpy/" target="_blank" rel="noopener" - >numpy</a></li> -<li><a class="link" href="https://pypi.org/project/scipy/" target="_blank" rel="noopener" - >scipy</a></li> -</ul> -<blockquote> -<p>匯入模組</p> -</blockquote> -<div class="highlight"><div class="chroma"> -<table class="lntable"><tr><td class="lntd"> -<pre tabindex="0" class="chroma"><code><span class="lnt">1 -</span><span class="lnt">2 -</span><span class="lnt">3 -</span><span class="lnt">4 -</span><span class="lnt">5 -</span><span class="lnt">6 -</span><span class="lnt">7 -</span><span class="lnt">8 -</span></code></pre></td> -<td class="lntd"> -<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">pandas</span> -</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">jieba</span> -</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">GoogleNews</span> -</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">matplotlib</span> -</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">Pillow</span> -</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">numpy</span> -</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">scipy</span> -</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">wordcloud</span> -</span></span></code></pre></td></tr></table> -</div> -</div><div class="video-wrapper"> - <iframe loading="lazy" - src="https://www.youtube.com/embed/HhRdDJgdjiw" - allowfullscreen - title="YouTube Video" - > - </iframe> -</div> - -<h2 id="參考資料">參考資料 -</h2> - - - - +Google新聞 on Wang's Bloghttps://wastu01.github.io/tags/google%E6%96%B0%E8%81%9E/Recent content in Google新聞 on Wang's BlogHugo -- gohugo.iozh-tw版權 WangSun, 29 Sep 2024 19:00:00 +0800Python-WordCloud 文字雲視覺化應用 新聞關鍵字分析https://wastu01.github.io/article/python-wordcloud-word/Sun, 29 Sep 2024 19:00:00 +0800https://wastu01.github.io/article/python-wordcloud-word/<img src="https://picsum.photos/800/600.webp?random=60742c9d" alt="Featured image of post Python-WordCloud 文字雲視覺化應用 新聞關鍵字分析" /><p><kbd>小註記</kbd> + <mark>重點!</mark></p> +<p>此篇為之前人工智慧課程發想的 Python 應用專題,因最近於職訓課程再次接觸 Python Pandas, Numpy,比較深入了解如何將文字、圖片數據做處理跟轉換,搭配大型語言模型輔助開發,將專案重新 Review &amp; Rewrite。</p> +<p>1.Pandas 資料處理排序</p> +<p>2.Numpy 讀取圖片遮罩</p> +<p>3.新增自定義圖片遮罩</p> +<p>4.使用中研院的斷詞模型</p> +<p><strong>理想目標:擴大文本搜尋範圍,改善斷詞結果,在網頁前端直接生成文字雲,方便分享至社群平台。</strong></p> +<p>輸出結果:</p> +<p><img src="https://wastu01.github.io/img/%e7%96%ab%e6%83%85%e6%96%b0%e8%81%9e%e9%97%9c%e9%8d%b5%e5%ad%97%e6%96%87%e5%ad%97%e9%9b%b2.png" +loading="lazy" +alt="疫情關鍵字文字雲" +></p> +<p><img src="https://wastu01.github.io/img/%e6%9f%af%e6%96%87%e5%93%b2%e6%96%b0%e8%81%9e%e9%97%9c%e9%8d%b5%e5%ad%97%e6%96%87%e5%ad%97%e9%9b%b2.png" +loading="lazy" +alt="柯文哲關鍵字文字雲" +></p> +<p>中文文字斷詞模型初期筆者採用 Jieba 簡體中文為主開發的模型,現在改用中研院開源的中文斷詞模型:</p> +<ul> +<li><a class="link" href="https://pypi.org/project/jieba/" target="_blank" rel="noopener" +>jieba</a></li> +<li></li> +</ul> +<h2 id="匯入模組">匯入模組 +</h2><div class="highlight"><div class="chroma"> +<table class="lntable"><tr><td class="lntd"> +<pre tabindex="0" class="chroma"><code><span class="lnt">1 +</span><span class="lnt">2 +</span><span class="lnt">3 +</span><span class="lnt">4 +</span><span class="lnt">5 +</span><span class="lnt">6 +</span><span class="lnt">7 +</span></code></pre></td> +<td class="lntd"> +<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">pandas</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">GoogleNews</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">matplotlib</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">Pillow</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">numpy</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">scipy</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">wordcloud</span> +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="參考資料">參考資料 +</h2><h2 id="專案程式碼">專案程式碼 +</h2> \ No newline at end of file diff --git "a/tags/google\346\226\260\350\201\236/page/1/index.html" "b/tags/google\346\226\260\350\201\236/page/1/index.html" index dc3af3e8..025b2f39 100644 --- "a/tags/google\346\226\260\350\201\236/page/1/index.html" +++ "b/tags/google\346\226\260\350\201\236/page/1/index.html" @@ -1,10 +1,2 @@ - - - - http://localhost:1313/tags/google%E6%96%B0%E8%81%9E/ - - - - - - +https://wastu01.github.io/tags/google%E6%96%B0%E8%81%9E/ + \ No newline at end of file diff --git a/tags/hugo/index.html b/tags/hugo/index.html index e48a6680..358ef448 100644 --- a/tags/hugo/index.html +++ b/tags/hugo/index.html @@ -6,7 +6,7 @@ - + @@ -33,9 +33,7 @@

段落

總共 26 篇文章

Tags

段落

總共 29 篇文章

Tags

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git a/tags/index.xml b/tags/index.xml index 89b92e9f..48380fc3 100644 --- a/tags/index.xml +++ b/tags/index.xml @@ -1 +1 @@ -Tags on Wang's Bloghttps://wastu01.github.io/tags/Recent content in Tags on Wang's BlogHugo -- gohugo.iozh-tw版權 WangSun, 12 Nov 2023 03:33:42 +0800ChatGPThttps://wastu01.github.io/tags/chatgpt/Sun, 12 Nov 2023 03:33:42 +0800https://wastu01.github.io/tags/chatgpt/CSShttps://wastu01.github.io/tags/css/Tue, 07 Nov 2023 08:04:28 +0800https://wastu01.github.io/tags/css/模板https://wastu01.github.io/tags/%E6%A8%A1%E6%9D%BF/Tue, 07 Nov 2023 08:04:28 +0800https://wastu01.github.io/tags/%E6%A8%A1%E6%9D%BF/Adobehttps://wastu01.github.io/tags/adobe/Sat, 28 Oct 2023 22:56:02 +0800https://wastu01.github.io/tags/adobe/AIhttps://wastu01.github.io/tags/ai/Sat, 28 Oct 2023 22:56:02 +0800https://wastu01.github.io/tags/ai/Fireflyhttps://wastu01.github.io/tags/firefly/Sat, 28 Oct 2023 22:56:02 +0800https://wastu01.github.io/tags/firefly/Gen2https://wastu01.github.io/tags/gen2/Sat, 28 Oct 2023 22:56:02 +0800https://wastu01.github.io/tags/gen2/Midjourneyhttps://wastu01.github.io/tags/midjourney/Sat, 28 Oct 2023 22:56:02 +0800https://wastu01.github.io/tags/midjourney/Runwaymlhttps://wastu01.github.io/tags/runwayml/Sat, 28 Oct 2023 22:56:02 +0800https://wastu01.github.io/tags/runwayml/Stablediffusionhttps://wastu01.github.io/tags/stablediffusion/Sat, 28 Oct 2023 22:56:02 +0800https://wastu01.github.io/tags/stablediffusion/OCRhttps://wastu01.github.io/tags/ocr/Fri, 27 Oct 2023 10:37:31 +0800https://wastu01.github.io/tags/ocr/Tesseracthttps://wastu01.github.io/tags/tesseract/Fri, 27 Oct 2023 10:37:31 +0800https://wastu01.github.io/tags/tesseract/大學專題https://wastu01.github.io/tags/%E5%A4%A7%E5%AD%B8%E5%B0%88%E9%A1%8C/Fri, 27 Oct 2023 10:37:31 +0800https://wastu01.github.io/tags/%E5%A4%A7%E5%AD%B8%E5%B0%88%E9%A1%8C/咖啡https://wastu01.github.io/tags/%E5%92%96%E5%95%A1/Sat, 21 Oct 2023 15:53:06 +0800https://wastu01.github.io/tags/%E5%92%96%E5%95%A1/穹林https://wastu01.github.io/tags/%E7%A9%B9%E6%9E%97/Sat, 21 Oct 2023 15:53:06 +0800https://wastu01.github.io/tags/%E7%A9%B9%E6%9E%97/新竹https://wastu01.github.io/tags/%E6%96%B0%E7%AB%B9/Sat, 21 Oct 2023 15:53:06 +0800https://wastu01.github.io/tags/%E6%96%B0%E7%AB%B9/寵物友善https://wastu01.github.io/tags/%E5%AF%B5%E7%89%A9%E5%8F%8B%E5%96%84/Sat, 21 Oct 2023 15:53:06 +0800https://wastu01.github.io/tags/%E5%AF%B5%E7%89%A9%E5%8F%8B%E5%96%84/Canvahttps://wastu01.github.io/tags/canva/Mon, 16 Oct 2023 00:00:00 +0000https://wastu01.github.io/tags/canva/DALLEhttps://wastu01.github.io/tags/dalle/Sun, 15 Oct 2023 00:00:00 +0000https://wastu01.github.io/tags/dalle/空拍https://wastu01.github.io/tags/%E7%A9%BA%E6%8B%8D/Fri, 06 Oct 2023 00:00:00 +0000https://wastu01.github.io/tags/%E7%A9%BA%E6%8B%8D/Ntcuhttps://wastu01.github.io/tags/ntcu/Tue, 03 Oct 2023 08:50:29 +0800https://wastu01.github.io/tags/ntcu/Youtubehttps://wastu01.github.io/tags/youtube/Tue, 03 Oct 2023 08:50:29 +0800https://wastu01.github.io/tags/youtube/AQIhttps://wastu01.github.io/tags/aqi/Tue, 03 Oct 2023 00:00:00 +0000https://wastu01.github.io/tags/aqi/Jsonhttps://wastu01.github.io/tags/json/Tue, 03 Oct 2023 00:00:00 +0000https://wastu01.github.io/tags/json/Pm25https://wastu01.github.io/tags/pm25/Tue, 03 Oct 2023 00:00:00 +0000https://wastu01.github.io/tags/pm25/Pythonhttps://wastu01.github.io/tags/python/Tue, 03 Oct 2023 00:00:00 +0000https://wastu01.github.io/tags/python/ \ No newline at end of file +Tags on Wang's Bloghttps://wastu01.github.io/tags/Recent content in Tags on Wang's BlogHugo -- gohugo.iozh-tw版權 WangSun, 29 Sep 2024 19:00:00 +0800Google新聞https://wastu01.github.io/tags/google%E6%96%B0%E8%81%9E/Sun, 29 Sep 2024 19:00:00 +0800https://wastu01.github.io/tags/google%E6%96%B0%E8%81%9E/Jieba斷詞https://wastu01.github.io/tags/jieba%E6%96%B7%E8%A9%9E/Sun, 29 Sep 2024 19:00:00 +0800https://wastu01.github.io/tags/jieba%E6%96%B7%E8%A9%9E/Wordcloud文字雲https://wastu01.github.io/tags/wordcloud%E6%96%87%E5%AD%97%E9%9B%B2/Sun, 29 Sep 2024 19:00:00 +0800https://wastu01.github.io/tags/wordcloud%E6%96%87%E5%AD%97%E9%9B%B2/大學專題https://wastu01.github.io/tags/%E5%A4%A7%E5%AD%B8%E5%B0%88%E9%A1%8C/Sun, 29 Sep 2024 19:00:00 +0800https://wastu01.github.io/tags/%E5%A4%A7%E5%AD%B8%E5%B0%88%E9%A1%8C/ChatGPThttps://wastu01.github.io/tags/chatgpt/Sun, 12 Nov 2023 03:33:42 +0800https://wastu01.github.io/tags/chatgpt/CSShttps://wastu01.github.io/tags/css/Tue, 07 Nov 2023 08:04:28 +0800https://wastu01.github.io/tags/css/模板https://wastu01.github.io/tags/%E6%A8%A1%E6%9D%BF/Tue, 07 Nov 2023 08:04:28 +0800https://wastu01.github.io/tags/%E6%A8%A1%E6%9D%BF/Adobehttps://wastu01.github.io/tags/adobe/Sat, 28 Oct 2023 22:56:02 +0800https://wastu01.github.io/tags/adobe/AIhttps://wastu01.github.io/tags/ai/Sat, 28 Oct 2023 22:56:02 +0800https://wastu01.github.io/tags/ai/Fireflyhttps://wastu01.github.io/tags/firefly/Sat, 28 Oct 2023 22:56:02 +0800https://wastu01.github.io/tags/firefly/Gen2https://wastu01.github.io/tags/gen2/Sat, 28 Oct 2023 22:56:02 +0800https://wastu01.github.io/tags/gen2/Midjourneyhttps://wastu01.github.io/tags/midjourney/Sat, 28 Oct 2023 22:56:02 +0800https://wastu01.github.io/tags/midjourney/Runwaymlhttps://wastu01.github.io/tags/runwayml/Sat, 28 Oct 2023 22:56:02 +0800https://wastu01.github.io/tags/runwayml/Stablediffusionhttps://wastu01.github.io/tags/stablediffusion/Sat, 28 Oct 2023 22:56:02 +0800https://wastu01.github.io/tags/stablediffusion/OCRhttps://wastu01.github.io/tags/ocr/Fri, 27 Oct 2023 10:37:31 +0800https://wastu01.github.io/tags/ocr/Tesseracthttps://wastu01.github.io/tags/tesseract/Fri, 27 Oct 2023 10:37:31 +0800https://wastu01.github.io/tags/tesseract/咖啡https://wastu01.github.io/tags/%E5%92%96%E5%95%A1/Sat, 21 Oct 2023 15:53:06 +0800https://wastu01.github.io/tags/%E5%92%96%E5%95%A1/穹林https://wastu01.github.io/tags/%E7%A9%B9%E6%9E%97/Sat, 21 Oct 2023 15:53:06 +0800https://wastu01.github.io/tags/%E7%A9%B9%E6%9E%97/新竹https://wastu01.github.io/tags/%E6%96%B0%E7%AB%B9/Sat, 21 Oct 2023 15:53:06 +0800https://wastu01.github.io/tags/%E6%96%B0%E7%AB%B9/寵物友善https://wastu01.github.io/tags/%E5%AF%B5%E7%89%A9%E5%8F%8B%E5%96%84/Sat, 21 Oct 2023 15:53:06 +0800https://wastu01.github.io/tags/%E5%AF%B5%E7%89%A9%E5%8F%8B%E5%96%84/Canvahttps://wastu01.github.io/tags/canva/Mon, 16 Oct 2023 00:00:00 +0000https://wastu01.github.io/tags/canva/DALLEhttps://wastu01.github.io/tags/dalle/Sun, 15 Oct 2023 00:00:00 +0000https://wastu01.github.io/tags/dalle/空拍https://wastu01.github.io/tags/%E7%A9%BA%E6%8B%8D/Fri, 06 Oct 2023 00:00:00 +0000https://wastu01.github.io/tags/%E7%A9%BA%E6%8B%8D/Ntcuhttps://wastu01.github.io/tags/ntcu/Tue, 03 Oct 2023 08:50:29 +0800https://wastu01.github.io/tags/ntcu/Youtubehttps://wastu01.github.io/tags/youtube/Tue, 03 Oct 2023 08:50:29 +0800https://wastu01.github.io/tags/youtube/AQIhttps://wastu01.github.io/tags/aqi/Tue, 03 Oct 2023 00:00:00 +0000https://wastu01.github.io/tags/aqi/Jsonhttps://wastu01.github.io/tags/json/Tue, 03 Oct 2023 00:00:00 +0000https://wastu01.github.io/tags/json/Pm25https://wastu01.github.io/tags/pm25/Tue, 03 Oct 2023 00:00:00 +0000https://wastu01.github.io/tags/pm25/Pythonhttps://wastu01.github.io/tags/python/Tue, 03 Oct 2023 00:00:00 +0000https://wastu01.github.io/tags/python/ \ No newline at end of file diff --git "a/tags/jieba\346\226\267\350\251\236/index.html" "b/tags/jieba\346\226\267\350\251\236/index.html" index 2d7ed93c..f3bfa53f 100644 --- "a/tags/jieba\346\226\267\350\251\236/index.html" +++ "b/tags/jieba\346\226\267\350\251\236/index.html" @@ -1,640 +1,28 @@ - - - - -Tag: Jieba斷詞 - Wang's Blog - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
-
-

- - Tags - -

- -
-
-

第 1 頁

-

Jieba斷詞

- -
-
-
- -
- - - -
-
- - -
- 使用 Hugo 建立
- 主題 StackJimmy 設計 -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 已產出:3396字,共 16篇文章

- -

- -
- - -
-
- - - - - +Tag: Jieba斷詞 - Wang's Blog +

Tags

總共 1 篇文章

Jieba斷詞

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git "a/tags/jieba\346\226\267\350\251\236/index.xml" "b/tags/jieba\346\226\267\350\251\236/index.xml" index 05fa5a94..6e1032fa 100644 --- "a/tags/jieba\346\226\267\350\251\236/index.xml" +++ "b/tags/jieba\346\226\267\350\251\236/index.xml" @@ -1,104 +1,46 @@ - - - - Jieba斷詞 on Wang's Blog - http://localhost:1313/tags/jieba%E6%96%B7%E8%A9%9E/ - Recent content in Jieba斷詞 on Wang's Blog - Hugo -- gohugo.io - zh-tw - 版權 Wang - Thu, 19 Sep 2024 11:19:10 +0800 - Python-WordCloud 文字雲視覺化應用 新聞關鍵字分析 - http://localhost:1313/article/2024-09-19-.zh/ - Thu, 19 Sep 2024 11:19:10 +0800 - - http://localhost:1313/article/2024-09-19-.zh/ - <img src="https://picsum.photos/800/600.webp?random=60742c9d" alt="Featured image of post Python-WordCloud 文字雲視覺化應用 新聞關鍵字分析" /><p><kbd>小註記</kbd> + <mark>重點!</mark></p> -<p>此篇為之前人工智慧課程發想的 Python 應用專題,筆者最近於職訓課程再次接觸 Python pandas, numpy 藉由此專案實際將資料操作,加上 ChatGPT AI 輔助開發程式改善斷詞分析成果。</p> -<blockquote> -<p>使用者輸入欲搜尋新聞主題,得到 Google 新聞搜尋文字內容,接續使用 Jieba 套件進行斷詞分析,TF-IDF 算法提取關鍵詞,最終生成文字雲。</p> -</blockquote> -<blockquote> -<p>理想目標:擴大文本搜尋範圍,改善斷詞結果,在網頁前端直接生成文字雲,方便分享至社群平台。</p> -</blockquote> -<p>先上輸出的結果:</p> -<p><img src="http://localhost:1313/img/2021-05-13-%e7%96%ab%e6%83%85.png" - - - - loading="lazy" - - alt="疫情關鍵字文字雲" - - -></p> -<p><img src="http://localhost:1313/img/20240918_%e6%9f%af%e6%96%87%e5%93%b2_relative_scaling30%25.png" - - - - loading="lazy" - - alt="柯文哲關鍵字文字雲" - - -></p> -<p>先備知識:Python 檔案讀取,資料型態轉換,numpy 陣列操作,Pandas 資料排序。</p> -<p>使用 PyPI 取得 Python 第三方套件模組</p> -<ul> -<li><a class="link" href="https://pypi.org/project/GoogleNews/" target="_blank" rel="noopener" - >GoogleNews</a></li> -<li><a class="link" href="https://pypi.org/project/jieba/" target="_blank" rel="noopener" - >jieba</a></li> -<li><a class="link" href="https://pypi.org/project/wordcloud/" target="_blank" rel="noopener" - >wordcloud</a></li> -<li><a class="link" href="https://pypi.org/project/matplotlib/" target="_blank" rel="noopener" - >matplotlib</a></li> -<li><a class="link" href="https://pypi.org/project/Pillow/" target="_blank" rel="noopener" - >PIL</a></li> -<li><a class="link" href="https://pypi.org/project/pandas/" target="_blank" rel="noopener" - >pandas</a></li> -<li><a class="link" href="https://pypi.org/project/numpy/" target="_blank" rel="noopener" - >numpy</a></li> -<li><a class="link" href="https://pypi.org/project/scipy/" target="_blank" rel="noopener" - >scipy</a></li> -</ul> -<blockquote> -<p>匯入模組</p> -</blockquote> -<div class="highlight"><div class="chroma"> -<table class="lntable"><tr><td class="lntd"> -<pre tabindex="0" class="chroma"><code><span class="lnt">1 -</span><span class="lnt">2 -</span><span class="lnt">3 -</span><span class="lnt">4 -</span><span class="lnt">5 -</span><span class="lnt">6 -</span><span class="lnt">7 -</span><span class="lnt">8 -</span></code></pre></td> -<td class="lntd"> -<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">pandas</span> -</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">jieba</span> -</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">GoogleNews</span> -</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">matplotlib</span> -</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">Pillow</span> -</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">numpy</span> -</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">scipy</span> -</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">wordcloud</span> -</span></span></code></pre></td></tr></table> -</div> -</div><div class="video-wrapper"> - <iframe loading="lazy" - src="https://www.youtube.com/embed/HhRdDJgdjiw" - allowfullscreen - title="YouTube Video" - > - </iframe> -</div> - -<h2 id="參考資料">參考資料 -</h2> - - - - +Jieba斷詞 on Wang's Bloghttps://wastu01.github.io/tags/jieba%E6%96%B7%E8%A9%9E/Recent content in Jieba斷詞 on Wang's BlogHugo -- gohugo.iozh-tw版權 WangSun, 29 Sep 2024 19:00:00 +0800Python-WordCloud 文字雲視覺化應用 新聞關鍵字分析https://wastu01.github.io/article/python-wordcloud-word/Sun, 29 Sep 2024 19:00:00 +0800https://wastu01.github.io/article/python-wordcloud-word/<img src="https://picsum.photos/800/600.webp?random=60742c9d" alt="Featured image of post Python-WordCloud 文字雲視覺化應用 新聞關鍵字分析" /><p><kbd>小註記</kbd> + <mark>重點!</mark></p> +<p>此篇為之前人工智慧課程發想的 Python 應用專題,因最近於職訓課程再次接觸 Python Pandas, Numpy,比較深入了解如何將文字、圖片數據做處理跟轉換,搭配大型語言模型輔助開發,將專案重新 Review &amp; Rewrite。</p> +<p>1.Pandas 資料處理排序</p> +<p>2.Numpy 讀取圖片遮罩</p> +<p>3.新增自定義圖片遮罩</p> +<p>4.使用中研院的斷詞模型</p> +<p><strong>理想目標:擴大文本搜尋範圍,改善斷詞結果,在網頁前端直接生成文字雲,方便分享至社群平台。</strong></p> +<p>輸出結果:</p> +<p><img src="https://wastu01.github.io/img/%e7%96%ab%e6%83%85%e6%96%b0%e8%81%9e%e9%97%9c%e9%8d%b5%e5%ad%97%e6%96%87%e5%ad%97%e9%9b%b2.png" +loading="lazy" +alt="疫情關鍵字文字雲" +></p> +<p><img src="https://wastu01.github.io/img/%e6%9f%af%e6%96%87%e5%93%b2%e6%96%b0%e8%81%9e%e9%97%9c%e9%8d%b5%e5%ad%97%e6%96%87%e5%ad%97%e9%9b%b2.png" +loading="lazy" +alt="柯文哲關鍵字文字雲" +></p> +<p>中文文字斷詞模型初期筆者採用 Jieba 簡體中文為主開發的模型,現在改用中研院開源的中文斷詞模型:</p> +<ul> +<li><a class="link" href="https://pypi.org/project/jieba/" target="_blank" rel="noopener" +>jieba</a></li> +<li></li> +</ul> +<h2 id="匯入模組">匯入模組 +</h2><div class="highlight"><div class="chroma"> +<table class="lntable"><tr><td class="lntd"> +<pre tabindex="0" class="chroma"><code><span class="lnt">1 +</span><span class="lnt">2 +</span><span class="lnt">3 +</span><span class="lnt">4 +</span><span class="lnt">5 +</span><span class="lnt">6 +</span><span class="lnt">7 +</span></code></pre></td> +<td class="lntd"> +<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">pandas</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">GoogleNews</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">matplotlib</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">Pillow</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">numpy</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">scipy</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">wordcloud</span> +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="參考資料">參考資料 +</h2><h2 id="專案程式碼">專案程式碼 +</h2> \ No newline at end of file diff --git "a/tags/jieba\346\226\267\350\251\236/page/1/index.html" "b/tags/jieba\346\226\267\350\251\236/page/1/index.html" index c53bd26c..6c585a1e 100644 --- "a/tags/jieba\346\226\267\350\251\236/page/1/index.html" +++ "b/tags/jieba\346\226\267\350\251\236/page/1/index.html" @@ -1,10 +1,2 @@ - - - - http://localhost:1313/tags/jieba%E6%96%B7%E8%A9%9E/ - - - - - - +https://wastu01.github.io/tags/jieba%E6%96%B7%E8%A9%9E/ + \ No newline at end of file diff --git a/tags/json/index.html b/tags/json/index.html index 55b8acdb..3d28c473 100644 --- a/tags/json/index.html +++ b/tags/json/index.html @@ -1,5 +1,5 @@ Tag: Json - Wang's Blog -

Tags

總共 1 篇文章

Json

Tags

總共 1 篇文章

Json

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git a/tags/leaflet/index.html b/tags/leaflet/index.html index b8f3fed2..4e05d2fe 100644 --- a/tags/leaflet/index.html +++ b/tags/leaflet/index.html @@ -6,7 +6,7 @@ - + @@ -33,9 +33,7 @@

Tags

總共 1 篇文章

Midjourney

Tags

總共 1 篇文章

Midjourney

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git a/tags/ntcu/index.html b/tags/ntcu/index.html index e620c49e..4ebd4903 100644 --- a/tags/ntcu/index.html +++ b/tags/ntcu/index.html @@ -1,5 +1,5 @@ Tag: Ntcu - Wang's Blog -

Tags

總共 1 篇文章

Ntcu

Tags

總共 1 篇文章

Ntcu

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git a/tags/ocr/index.html b/tags/ocr/index.html index 82f79d90..e504fb55 100644 --- a/tags/ocr/index.html +++ b/tags/ocr/index.html @@ -1,5 +1,5 @@ Tag: OCR - Wang's Blog -

Tags

總共 1 篇文章

OCR

Tags

總共 1 篇文章

OCR

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git a/tags/openstreetmap/index.html b/tags/openstreetmap/index.html index 8b509a4d..25ff3ad3 100644 --- a/tags/openstreetmap/index.html +++ b/tags/openstreetmap/index.html @@ -6,7 +6,7 @@ - + @@ -33,9 +33,7 @@

段落

總共 26 篇文章

Tags

段落

總共 29 篇文章

Tags

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git a/tags/page/3/index.html b/tags/page/3/index.html index b4ad646b..94739e47 100644 --- a/tags/page/3/index.html +++ b/tags/page/3/index.html @@ -1,5 +1,5 @@ Tags -

段落

總共 26 篇文章

Tags

段落

總共 29 篇文章

Tags

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git a/tags/page/4/index.html b/tags/page/4/index.html index 8438bb49..0dcb9543 100644 --- a/tags/page/4/index.html +++ b/tags/page/4/index.html @@ -1,5 +1,5 @@ Tags -

段落

總共 26 篇文章

Tags

段落

總共 29 篇文章

Tags

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git a/tags/pm25/index.html b/tags/pm25/index.html index e46767b1..e361c026 100644 --- a/tags/pm25/index.html +++ b/tags/pm25/index.html @@ -1,5 +1,5 @@ Tag: Pm25 - Wang's Blog -

Tags

總共 1 篇文章

Pm25

Tags

總共 1 篇文章

Pm25

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git a/tags/python/index.html b/tags/python/index.html index 31998939..eb52a0bb 100644 --- a/tags/python/index.html +++ b/tags/python/index.html @@ -1,5 +1,5 @@ Tag: Python - Wang's Blog -

Tags

總共 1 篇文章

Python

Tags

總共 1 篇文章

Python

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git a/tags/runwayml/index.html b/tags/runwayml/index.html index b999e931..583379fe 100644 --- a/tags/runwayml/index.html +++ b/tags/runwayml/index.html @@ -1,5 +1,5 @@ Tag: Runwayml - Wang's Blog -

Tags

總共 2 篇文章

Runwayml

Tags

總共 2 篇文章

Runwayml

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git a/tags/stablediffusion/index.html b/tags/stablediffusion/index.html index 8cb74c70..e2ca0aee 100644 --- a/tags/stablediffusion/index.html +++ b/tags/stablediffusion/index.html @@ -1,5 +1,5 @@ Tag: Stablediffusion - Wang's Blog -

Tags

總共 1 篇文章

Stablediffusion

Tags

總共 1 篇文章

Stablediffusion

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git a/tags/tesseract/index.html b/tags/tesseract/index.html index 3e3fe2e7..c6358ae7 100644 --- a/tags/tesseract/index.html +++ b/tags/tesseract/index.html @@ -1,5 +1,5 @@ Tag: Tesseract - Wang's Blog -

Tags

總共 1 篇文章

Tesseract

Tags

總共 1 篇文章

Tesseract

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git "a/tags/wordcloud\346\226\207\345\255\227\351\233\262/index.html" "b/tags/wordcloud\346\226\207\345\255\227\351\233\262/index.html" index 1e9cc391..3e9beac5 100644 --- "a/tags/wordcloud\346\226\207\345\255\227\351\233\262/index.html" +++ "b/tags/wordcloud\346\226\207\345\255\227\351\233\262/index.html" @@ -1,640 +1,28 @@ - - - - -Tag: Wordcloud文字雲 - Wang's Blog - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
-
-

- - Tags - -

- -
-
-

第 1 頁

-

Wordcloud文字雲

- -
-
-
- -
- - - -
-
- - -
- 使用 Hugo 建立
- 主題 StackJimmy 設計 -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 已產出:3396字,共 16篇文章

- -

- -
- - -
-
- - - - - +Tag: Wordcloud文字雲 - Wang's Blog +

Tags

總共 1 篇文章

Wordcloud文字雲

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git "a/tags/wordcloud\346\226\207\345\255\227\351\233\262/index.xml" "b/tags/wordcloud\346\226\207\345\255\227\351\233\262/index.xml" index e5e3b5bc..e71d794c 100644 --- "a/tags/wordcloud\346\226\207\345\255\227\351\233\262/index.xml" +++ "b/tags/wordcloud\346\226\207\345\255\227\351\233\262/index.xml" @@ -1,104 +1,46 @@ - - - - Wordcloud文字雲 on Wang's Blog - http://localhost:1313/tags/wordcloud%E6%96%87%E5%AD%97%E9%9B%B2/ - Recent content in Wordcloud文字雲 on Wang's Blog - Hugo -- gohugo.io - zh-tw - 版權 Wang - Thu, 19 Sep 2024 11:19:10 +0800 - Python-WordCloud 文字雲視覺化應用 新聞關鍵字分析 - http://localhost:1313/article/2024-09-19-.zh/ - Thu, 19 Sep 2024 11:19:10 +0800 - - http://localhost:1313/article/2024-09-19-.zh/ - <img src="https://picsum.photos/800/600.webp?random=60742c9d" alt="Featured image of post Python-WordCloud 文字雲視覺化應用 新聞關鍵字分析" /><p><kbd>小註記</kbd> + <mark>重點!</mark></p> -<p>此篇為之前人工智慧課程發想的 Python 應用專題,筆者最近於職訓課程再次接觸 Python pandas, numpy 藉由此專案實際將資料操作,加上 ChatGPT AI 輔助開發程式改善斷詞分析成果。</p> -<blockquote> -<p>使用者輸入欲搜尋新聞主題,得到 Google 新聞搜尋文字內容,接續使用 Jieba 套件進行斷詞分析,TF-IDF 算法提取關鍵詞,最終生成文字雲。</p> -</blockquote> -<blockquote> -<p>理想目標:擴大文本搜尋範圍,改善斷詞結果,在網頁前端直接生成文字雲,方便分享至社群平台。</p> -</blockquote> -<p>先上輸出的結果:</p> -<p><img src="http://localhost:1313/img/2021-05-13-%e7%96%ab%e6%83%85.png" - - - - loading="lazy" - - alt="疫情關鍵字文字雲" - - -></p> -<p><img src="http://localhost:1313/img/20240918_%e6%9f%af%e6%96%87%e5%93%b2_relative_scaling30%25.png" - - - - loading="lazy" - - alt="柯文哲關鍵字文字雲" - - -></p> -<p>先備知識:Python 檔案讀取,資料型態轉換,numpy 陣列操作,Pandas 資料排序。</p> -<p>使用 PyPI 取得 Python 第三方套件模組</p> -<ul> -<li><a class="link" href="https://pypi.org/project/GoogleNews/" target="_blank" rel="noopener" - >GoogleNews</a></li> -<li><a class="link" href="https://pypi.org/project/jieba/" target="_blank" rel="noopener" - >jieba</a></li> -<li><a class="link" href="https://pypi.org/project/wordcloud/" target="_blank" rel="noopener" - >wordcloud</a></li> -<li><a class="link" href="https://pypi.org/project/matplotlib/" target="_blank" rel="noopener" - >matplotlib</a></li> -<li><a class="link" href="https://pypi.org/project/Pillow/" target="_blank" rel="noopener" - >PIL</a></li> -<li><a class="link" href="https://pypi.org/project/pandas/" target="_blank" rel="noopener" - >pandas</a></li> -<li><a class="link" href="https://pypi.org/project/numpy/" target="_blank" rel="noopener" - >numpy</a></li> -<li><a class="link" href="https://pypi.org/project/scipy/" target="_blank" rel="noopener" - >scipy</a></li> -</ul> -<blockquote> -<p>匯入模組</p> -</blockquote> -<div class="highlight"><div class="chroma"> -<table class="lntable"><tr><td class="lntd"> -<pre tabindex="0" class="chroma"><code><span class="lnt">1 -</span><span class="lnt">2 -</span><span class="lnt">3 -</span><span class="lnt">4 -</span><span class="lnt">5 -</span><span class="lnt">6 -</span><span class="lnt">7 -</span><span class="lnt">8 -</span></code></pre></td> -<td class="lntd"> -<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">pandas</span> -</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">jieba</span> -</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">GoogleNews</span> -</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">matplotlib</span> -</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">Pillow</span> -</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">numpy</span> -</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">scipy</span> -</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">wordcloud</span> -</span></span></code></pre></td></tr></table> -</div> -</div><div class="video-wrapper"> - <iframe loading="lazy" - src="https://www.youtube.com/embed/HhRdDJgdjiw" - allowfullscreen - title="YouTube Video" - > - </iframe> -</div> - -<h2 id="參考資料">參考資料 -</h2> - - - - +Wordcloud文字雲 on Wang's Bloghttps://wastu01.github.io/tags/wordcloud%E6%96%87%E5%AD%97%E9%9B%B2/Recent content in Wordcloud文字雲 on Wang's BlogHugo -- gohugo.iozh-tw版權 WangSun, 29 Sep 2024 19:00:00 +0800Python-WordCloud 文字雲視覺化應用 新聞關鍵字分析https://wastu01.github.io/article/python-wordcloud-word/Sun, 29 Sep 2024 19:00:00 +0800https://wastu01.github.io/article/python-wordcloud-word/<img src="https://picsum.photos/800/600.webp?random=60742c9d" alt="Featured image of post Python-WordCloud 文字雲視覺化應用 新聞關鍵字分析" /><p><kbd>小註記</kbd> + <mark>重點!</mark></p> +<p>此篇為之前人工智慧課程發想的 Python 應用專題,因最近於職訓課程再次接觸 Python Pandas, Numpy,比較深入了解如何將文字、圖片數據做處理跟轉換,搭配大型語言模型輔助開發,將專案重新 Review &amp; Rewrite。</p> +<p>1.Pandas 資料處理排序</p> +<p>2.Numpy 讀取圖片遮罩</p> +<p>3.新增自定義圖片遮罩</p> +<p>4.使用中研院的斷詞模型</p> +<p><strong>理想目標:擴大文本搜尋範圍,改善斷詞結果,在網頁前端直接生成文字雲,方便分享至社群平台。</strong></p> +<p>輸出結果:</p> +<p><img src="https://wastu01.github.io/img/%e7%96%ab%e6%83%85%e6%96%b0%e8%81%9e%e9%97%9c%e9%8d%b5%e5%ad%97%e6%96%87%e5%ad%97%e9%9b%b2.png" +loading="lazy" +alt="疫情關鍵字文字雲" +></p> +<p><img src="https://wastu01.github.io/img/%e6%9f%af%e6%96%87%e5%93%b2%e6%96%b0%e8%81%9e%e9%97%9c%e9%8d%b5%e5%ad%97%e6%96%87%e5%ad%97%e9%9b%b2.png" +loading="lazy" +alt="柯文哲關鍵字文字雲" +></p> +<p>中文文字斷詞模型初期筆者採用 Jieba 簡體中文為主開發的模型,現在改用中研院開源的中文斷詞模型:</p> +<ul> +<li><a class="link" href="https://pypi.org/project/jieba/" target="_blank" rel="noopener" +>jieba</a></li> +<li></li> +</ul> +<h2 id="匯入模組">匯入模組 +</h2><div class="highlight"><div class="chroma"> +<table class="lntable"><tr><td class="lntd"> +<pre tabindex="0" class="chroma"><code><span class="lnt">1 +</span><span class="lnt">2 +</span><span class="lnt">3 +</span><span class="lnt">4 +</span><span class="lnt">5 +</span><span class="lnt">6 +</span><span class="lnt">7 +</span></code></pre></td> +<td class="lntd"> +<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">pandas</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">GoogleNews</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">matplotlib</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">Pillow</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">numpy</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">scipy</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">wordcloud</span> +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="參考資料">參考資料 +</h2><h2 id="專案程式碼">專案程式碼 +</h2> \ No newline at end of file diff --git "a/tags/wordcloud\346\226\207\345\255\227\351\233\262/page/1/index.html" "b/tags/wordcloud\346\226\207\345\255\227\351\233\262/page/1/index.html" index 0e411fea..5feb2cba 100644 --- "a/tags/wordcloud\346\226\207\345\255\227\351\233\262/page/1/index.html" +++ "b/tags/wordcloud\346\226\207\345\255\227\351\233\262/page/1/index.html" @@ -1,10 +1,2 @@ - - - - http://localhost:1313/tags/wordcloud%E6%96%87%E5%AD%97%E9%9B%B2/ - - - - - - +https://wastu01.github.io/tags/wordcloud%E6%96%87%E5%AD%97%E9%9B%B2/ + \ No newline at end of file diff --git a/tags/youtube/index.html b/tags/youtube/index.html index 1c5406cb..4469f263 100644 --- a/tags/youtube/index.html +++ b/tags/youtube/index.html @@ -1,5 +1,5 @@ Tag: Youtube - Wang's Blog -

Tags

總共 1 篇文章

Youtube

Tags

總共 1 篇文章

Youtube

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git "a/tags/\345\222\226\345\225\241/index.html" "b/tags/\345\222\226\345\225\241/index.html" index 2f39a472..57ce1ba1 100644 --- "a/tags/\345\222\226\345\225\241/index.html" +++ "b/tags/\345\222\226\345\225\241/index.html" @@ -1,5 +1,5 @@ Tag: 咖啡 - Wang's Blog -

Tags

總共 1 篇文章

咖啡

Tags

總共 1 篇文章

咖啡

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git "a/tags/\345\244\247\345\255\270\345\260\210\351\241\214/index.html" "b/tags/\345\244\247\345\255\270\345\260\210\351\241\214/index.html" index 7c67dd20..db24e467 100644 --- "a/tags/\345\244\247\345\255\270\345\260\210\351\241\214/index.html" +++ "b/tags/\345\244\247\345\255\270\345\260\210\351\241\214/index.html" @@ -1,5 +1,5 @@ Tag: 大學專題 - Wang's Blog -

Tags

總共 1 篇文章

大學專題

Tags

總共 2 篇文章

大學專題

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git "a/tags/\345\244\247\345\255\270\345\260\210\351\241\214/index.xml" "b/tags/\345\244\247\345\255\270\345\260\210\351\241\214/index.xml" index 8097c1a1..025f71d9 100644 --- "a/tags/\345\244\247\345\255\270\345\260\210\351\241\214/index.xml" +++ "b/tags/\345\244\247\345\255\270\345\260\210\351\241\214/index.xml" @@ -1,4 +1,49 @@ -大學專題 on Wang's Bloghttps://wastu01.github.io/tags/%E5%A4%A7%E5%AD%B8%E5%B0%88%E9%A1%8C/Recent content in 大學專題 on Wang's BlogHugo -- gohugo.iozh-tw版權 WangFri, 27 Oct 2023 10:37:31 +0800Tesseract 使用 安裝 訓練https://wastu01.github.io/article/python-tesseract-ocr/Fri, 27 Oct 2023 10:37:31 +0800https://wastu01.github.io/article/python-tesseract-ocr/<img src="https://i.imgur.com/ORSlEI8.png" alt="Featured image of post Tesseract 使用 安裝 訓練" /><p><kbd>python</kbd> <kbd>tessract</kbd> <kbd>ocr</kbd> <kbd>辨識文字</kbd></p> +大學專題 on Wang's Bloghttps://wastu01.github.io/tags/%E5%A4%A7%E5%AD%B8%E5%B0%88%E9%A1%8C/Recent content in 大學專題 on Wang's BlogHugo -- gohugo.iozh-tw版權 WangSun, 29 Sep 2024 19:00:00 +0800Python-WordCloud 文字雲視覺化應用 新聞關鍵字分析https://wastu01.github.io/article/python-wordcloud-word/Sun, 29 Sep 2024 19:00:00 +0800https://wastu01.github.io/article/python-wordcloud-word/<img src="https://picsum.photos/800/600.webp?random=60742c9d" alt="Featured image of post Python-WordCloud 文字雲視覺化應用 新聞關鍵字分析" /><p><kbd>小註記</kbd> + <mark>重點!</mark></p> +<p>此篇為之前人工智慧課程發想的 Python 應用專題,因最近於職訓課程再次接觸 Python Pandas, Numpy,比較深入了解如何將文字、圖片數據做處理跟轉換,搭配大型語言模型輔助開發,將專案重新 Review &amp; Rewrite。</p> +<p>1.Pandas 資料處理排序</p> +<p>2.Numpy 讀取圖片遮罩</p> +<p>3.新增自定義圖片遮罩</p> +<p>4.使用中研院的斷詞模型</p> +<p><strong>理想目標:擴大文本搜尋範圍,改善斷詞結果,在網頁前端直接生成文字雲,方便分享至社群平台。</strong></p> +<p>輸出結果:</p> +<p><img src="https://wastu01.github.io/img/%e7%96%ab%e6%83%85%e6%96%b0%e8%81%9e%e9%97%9c%e9%8d%b5%e5%ad%97%e6%96%87%e5%ad%97%e9%9b%b2.png" +loading="lazy" +alt="疫情關鍵字文字雲" +></p> +<p><img src="https://wastu01.github.io/img/%e6%9f%af%e6%96%87%e5%93%b2%e6%96%b0%e8%81%9e%e9%97%9c%e9%8d%b5%e5%ad%97%e6%96%87%e5%ad%97%e9%9b%b2.png" +loading="lazy" +alt="柯文哲關鍵字文字雲" +></p> +<p>中文文字斷詞模型初期筆者採用 Jieba 簡體中文為主開發的模型,現在改用中研院開源的中文斷詞模型:</p> +<ul> +<li><a class="link" href="https://pypi.org/project/jieba/" target="_blank" rel="noopener" +>jieba</a></li> +<li></li> +</ul> +<h2 id="匯入模組">匯入模組 +</h2><div class="highlight"><div class="chroma"> +<table class="lntable"><tr><td class="lntd"> +<pre tabindex="0" class="chroma"><code><span class="lnt">1 +</span><span class="lnt">2 +</span><span class="lnt">3 +</span><span class="lnt">4 +</span><span class="lnt">5 +</span><span class="lnt">6 +</span><span class="lnt">7 +</span></code></pre></td> +<td class="lntd"> +<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">pandas</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">GoogleNews</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">matplotlib</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">Pillow</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">numpy</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">scipy</span> +</span></span><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">wordcloud</span> +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="參考資料">參考資料 +</h2><h2 id="專案程式碼">專案程式碼 +</h2>Tesseract 使用 安裝 訓練https://wastu01.github.io/article/python-tesseract-ocr/Fri, 27 Oct 2023 10:37:31 +0800https://wastu01.github.io/article/python-tesseract-ocr/<img src="https://i.imgur.com/ORSlEI8.png" alt="Featured image of post Tesseract 使用 安裝 訓練" /><p><kbd>python</kbd> <kbd>tessract</kbd> <kbd>ocr</kbd> <kbd>辨識文字</kbd></p> <h1 id="tesseract-使用安裝訓練">Tesseract 使用&安裝&訓練 </h1><h2 id="簡單驗證碼去噪-灰度二值化">簡單驗證碼去噪 灰度二值化 </h2><p>無意間找到網址是固定的 教育部某平台之簡易驗證碼</p> diff --git "a/tags/\345\257\265\347\211\251\345\217\213\345\226\204/index.html" "b/tags/\345\257\265\347\211\251\345\217\213\345\226\204/index.html" index d506b489..34645ebf 100644 --- "a/tags/\345\257\265\347\211\251\345\217\213\345\226\204/index.html" +++ "b/tags/\345\257\265\347\211\251\345\217\213\345\226\204/index.html" @@ -1,5 +1,5 @@ Tag: 寵物友善 - Wang's Blog -

Tags

總共 1 篇文章

寵物友善

Tags

總共 1 篇文章

寵物友善

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git "a/tags/\346\226\260\347\253\271/index.html" "b/tags/\346\226\260\347\253\271/index.html" index 853f265c..8392b537 100644 --- "a/tags/\346\226\260\347\253\271/index.html" +++ "b/tags/\346\226\260\347\253\271/index.html" @@ -1,5 +1,5 @@ Tag: 新竹 - Wang's Blog -

Tags

總共 1 篇文章

新竹

Tags

總共 1 篇文章

新竹

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git "a/tags/\346\250\241\346\235\277/index.html" "b/tags/\346\250\241\346\235\277/index.html" index a0f2c39e..c38d44a7 100644 --- "a/tags/\346\250\241\346\235\277/index.html" +++ "b/tags/\346\250\241\346\235\277/index.html" @@ -1,5 +1,5 @@ Tag: 模板 - Wang's Blog -

Tags

總共 1 篇文章

模板

Tags

總共 1 篇文章

模板

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git "a/tags/\347\251\271\346\236\227/index.html" "b/tags/\347\251\271\346\236\227/index.html" index 78c698ee..31c70309 100644 --- "a/tags/\347\251\271\346\236\227/index.html" +++ "b/tags/\347\251\271\346\236\227/index.html" @@ -1,5 +1,5 @@ Tag: 穹林 - Wang's Blog -

Tags

總共 1 篇文章

穹林

Tags

總共 1 篇文章

穹林

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git "a/tags/\347\251\272\346\213\215/index.html" "b/tags/\347\251\272\346\213\215/index.html" index 885fdf92..6a282420 100644 --- "a/tags/\347\251\272\346\213\215/index.html" +++ "b/tags/\347\251\272\346\213\215/index.html" @@ -1,5 +1,5 @@ Tag: 空拍 - Wang's Blog -

Tags

總共 1 篇文章

空拍

Tags

總共 1 篇文章

空拍

使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章

\ No newline at end of file +2024 版權 Wang
使用 Hugo 建立
主題 StackJimmy 設計
已產出:2831字,共 13篇文章

\ No newline at end of file diff --git a/wa.01/index.html b/wa.01/index.html index f8aa0699..61b9cc66 100644 --- a/wa.01/index.html +++ b/wa.01/index.html @@ -1,5 +1,5 @@ WA.01 -

WA.01

about me

可以叫我多多

這邊主要分享

技術類:網頁、建模、動畫、AIGC

日常類: 步道健走、其他有興趣的主題

偶爾更新,舊文章大部分都是從 HackMD 以及 CoderBridge 轉移過來的。

圖片略縮圖使用 unsplash 圖庫, DALLE,Adobe Firelfy AI 生成圖

此網站自定義風格參照 L1nSn0w 提供的範例


使用 Hugo 建立
主題 StackJimmy 設計
已產出:2559字,共 11篇文章